Log in

View Full Version : QTGMC shenanigans


szwab
14th November 2025, 03:07
Hey everyone,

I'm completely stumped by a persistent QTGMC error and I've exhausted every troubleshooting step I can think of. I'm hoping someone here might have an idea what's going on.

My goal is to deinterlace a 1080i TS file, do some filtering, and then use AutoOverlay to combine it with a filtered 720p MKV. The problem is that the script fails immediately with an "Invalid arguments to function 'QTGMC'" error.

The most confusing part is that a preview generated in Hybrid, using the exact same plugins and settings, works perfectly fine. The error only happens when I try to run the .avs script externally through my system-wide AviSynth+ installation (latest version) and VirtualDub2 (64-bit).

Here's everything I've tried so far:

- The error happens even with the simplest possible call. This line fails with the same error: `main = temp.QTGMC(Preset="Placebo")`
- I've confirmed I'm using a 64-bit host (VirtualDub2) with the 64-bit plugins from the Hybrid folder.
- I've installed the complete Visual C++ Redistributable Runtimes (All-in-One) and restarted.
- I tried forcing the input colorspace immediately after loading the source, using `ConvertToYV12(interlaced=true)`.
- I even replaced Hybrid's `QTGMC.avsi` with the latest official version from avisynth.nl.

Nothing has changed the result.

Here is the full script I'm trying to run. Any ideas would be greatly appreciated.


LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\LoadDll.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\flash3kyuu_deband.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\aWarpSharpMT.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\VariableBlur.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\Deblock.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\DctFilter.dll")
LoadCPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\yadif.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\TDeint.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\FFT3DFilter.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\eedi3.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\EEDI2.dll")
LoadDLL("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\libfftw3f-3.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\D2VSource.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\TIVTC.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\dfttest.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\AddGrainC.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\nnedi3.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\neo-fft3d.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\mvtools2.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\masktools2.dll")
LoadPlugin("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\RgTools.dll")
LoadPlugin("C:\Program Files (x86)\AviSynth+\plugins64+\AvsFilterNet.dll")
LoadNetPlugin("C:\Program Files (x86)\AviSynth+\plugins64+\AutoOverlay_netautoload.dll")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\mtmodes.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\BalanceBorders.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\GrainFactory3mod.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\LSFmod.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\ExTools.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\Deblock_QED_MT2.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\SMDegrain.avsi")
Import("C:\Program Files\Hybrid\64bit\Avisynth\avisynthPlugins\Zs_RF_Shared.avsi")
Import("C:\Program Files (x86)\AviSynth+\plugins64+\QTGMC.avsi")


1080i = LWLibavVideoSource("C:\Users\jopro\Downloads\bt projekte\vid_1029837442356038.ts")
720p = LWLibavVideoSource("C:\Users\jopro\Downloads\bt projekte\Spring.Subway.2002.720p.HDTV.x264-NGB.mkv")
mask = ImageSource("C:\Users\jopro\Downloads\bt projekte\ts_logo_mask.bmp")


#colorspace conv
temp = 1080i.ConvertToYV12(interlaced=true).Crop(0,2,0,0).AssumeTFF()

#1080i sauce
main = temp.QTGMC(Preset="Placebo", InputType=0, TR2=3, SourceMatch=3, Lossless=2, MatchPreset="Slower", MatchPreset2="Slower", EZKeepGrain=4.00, NoisePreset="Slower", ediThreads=2).SelectEven()

ref = main.QTGMC(preset="Very Slow", ediThreads=2, FPSDivisor=2, PrevGlobals="Replace")

filtered_1080i = main.TFM(mode=5,slow=2,clip2=ref)
\ .BalanceBorders(4,4,4,4)
\ .Deblock_QED(quant1=55,quant2=45,aOff1=5,bOff1=5,aOff2=5,bOff2=5,uv=1)
\ .LSFmod()
\ .Spline36Resize(1280,720)


#720p source
OverlayEngine.
filtered_720p = 720p.ConvertToYV12()
\ .InpaintDelogo(Loc="64,40,202,104", "C:\Users\jopro\Downloads\bt projekte\logo_mask.bmp", Automask=0, Mode="Both", Analyze=1, IntSpd=4, InterpM=-1, iTune=-5)
\ .Deblock_QED(quant1=55,quant2=45,aOff1=5,bOff1=5,aOff2=5,bOff2=5,uv=1)
\ .LSFmod()


#merge
engine = OverlayEngine(filtered_1080i, filtered_720p)
engine.OverlayRender(filtered_1080i, filtered_720p, preset="FullFrame", overlayMask=mask)

Prefetch(3)
return last


Again, thanks

Selur
14th November 2025, 03:51
You have you tried using the QTGMC script that comes with Hybrid?

szwab
14th November 2025, 04:16
You have you tried using the QTGMC script that comes with Hybrid?

Yep. QTGMC inside of Hybrid works which makes this all the more puzzling. I generated the lines for both qtgmc and tfm in hybrid so the syntax should be right. I also tried calling the qtgmc plugin in the hybrid installation folder in the script in virtualdub with the same result.

Selur
16th November 2025, 07:09
QTGMC inside of Hybrid works which makes this all the more puzzling
That indicates that the other QTGMC you used changed.
Since you didn't share what versions of QTGMC you are using, you might want to look at the script code yourself.

szwab
16th November 2025, 16:09
That indicates that the other QTGMC you used changed.
Since you didn't share what versions of QTGMC you are using, you might want to look at the script code yourself.

My bad! I'm using v3.383s from avisynth.nl.

I don't think that the issue is that there have been any changes to QTGMC, because when I call QTGMC inside the Hybrid installation folder, I still get the same error.

Selur
16th November 2025, 16:31
Does it make a difference if you add "ClearAutoloadDirs()" at the start of your script?

szwab
16th November 2025, 21:42
Does it make a difference if you add "ClearAutoloadDirs()" at the start of your script?
Unfortunately not except that I had to manually load LSmashSource and ImageSeq sources.

Selur
21st November 2025, 17:50
Still, to avoid collisions with automatically loaded dlls, I would recommend to keep 'ClearAutoloadDirs()'.

Also in your case:
ref = main.QTGMC(preset="Very Slow", ediThreads=2, FPSDivisor=2, PrevGlobals="Reuse")
would make sense.

But maybe first start with a simple script like:
ClearAutoloadDirs()
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\LSMASHSource.dll")
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\nnedi3.dll")
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\mvtools2.dll")
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\masktools2.dll")
LoadPlugin("F:\Hybrid\64bit\Avisynth\avisynthPlugins\RgTools.dll")
Import("F:\Hybrid\64bit\Avisynth\avisynthPlugins\mtmodes.avsi")
Import("F:\Hybrid\64bit\Avisynth\avisynthPlugins\Zs_RF_Shared.avsi")
Import("F:\Hybrid\64bit\Avisynth\avisynthPlugins\QTGMC.avsi")


LWLibavVideoSource("C:\Users\jopro\Downloads\bt projekte\vid_1029837442356038.ts")
AssumeBFF()
QTGMC(Preset="Fast", ediThreads=2)
PreFetch(3)
return last
If that works, extend it bit by bit, to see what's causing the issue.
It that already fails, post the complete error message.