Sorry, forget that.
On MacOS the only nnedi variant available was nnnedi3cl, which is why GPU (in the QTGMC settings) is active, but disabled.
Hybrid does ship with it:
and it should be automatically used.
Not sure why it does not on your system, does work fine here:
I'm not at hoem today so, I can't test on my system atm. will try to do some testing tomorrow after work and report back.
Cu Selur
On MacOS the only nnedi variant available was nnnedi3cl, which is why GPU (in the QTGMC settings) is active, but disabled.
Hybrid does ship with it:
selur@Mac-mini-von-Georg ~ % cd Hybrid/Hybrid.app/Contents/MacOS/vsfilters/
selur@Mac-mini-von-Georg vsfilters % ls -lah
total 100256
drwxr-xr-x 57 selur staff 1,8K 21 März 14:42 .
drwxr-xr-x@ 42 selur staff 1,3K 9 Apr. 15:13 ..
-rwxr-xr-x@ 1 selur staff 17M 21 März 14:42 bestsource.dylib
drwxr-xr-x 7 selur staff 224B 15 Feb. 2025 GLSL
drwxr-xr-x 71 selur staff 2,2K 15 Feb. 2025 GLSL-Resizers
-rw-r--r--@ 1 selur staff 604K 21 März 14:42 libadaptivegrain_rs.dylib
-rwxr-xr-x@ 1 selur staff 51K 21 März 14:42 libaddgrain.dylib
-rwxr-xr-x@ 1 selur staff 85K 21 März 14:42 libaddnoise.dylib
-rwxr-xr-x@ 1 selur staff 83K 21 März 14:42 libawarpsharp2.dylib
-rwxr-xr-x@ 1 selur staff 67K 21 März 14:42 libbilateral.dylib
-rwxr-xr-x@ 1 selur staff 67K 21 März 14:42 libbwdif.dylib
-rwxr-xr-x@ 1 selur staff 51K 21 März 14:42 libcas.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libcnr2.dylib
-rwxr-xr-x@ 1 selur staff 81K 21 März 14:42 libcolorbars.dylib
-rwxr-xr-x@ 1 selur staff 102K 21 März 14:42 libctmf.dylib
-rwxr-xr-x@ 1 selur staff 70K 21 März 14:42 libcurve.dylib
-rwxr-xr-x@ 1 selur staff 1,3M 21 März 14:42 libdctfilter.dylib
-rwxr-xr-x@ 1 selur staff 52K 21 März 14:42 libdeblock.dylib
-rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libdecross.dylib
-rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libdedot.dylib
-rwxr-xr-x@ 1 selur staff 164K 21 März 14:42 libdegrainmedian.dylib
-rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libdfttest.dylib
-rwxr-xr-x@ 1 selur staff 120K 21 März 14:42 libeedi2.dylib
-rw-r--r-- 1 selur staff 370K 8 Feb. 2025 libEEDI3_static.a
-rwxr-xr-x@ 1 selur staff 106K 21 März 14:42 libeedi3m.dylib
-rwxr-xr-x@ 1 selur staff 1,5M 21 März 14:42 libfft3dfilter.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libfieldhint.dylib
-rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libfillborders.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libfluxsmooth.dylib
-rwxr-xr-x@ 1 selur staff 4,3M 21 März 14:42 libfmtconv.dylib
-rwxr-xr-x@ 1 selur staff 147K 21 März 14:42 libfrfun7.dylib
-rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libhistogram.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libhqdn3d.dylib
-rwxr-xr-x@ 1 selur staff 49K 21 März 14:42 libminideen.dylib
-rwxr-xr-x@ 1 selur staff 52K 21 März 14:42 libmiscfilters.dylib
-rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libmotionmask.dylib
-rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libmsmoosh.dylib
-rwxr-xr-x@ 1 selur staff 4,0M 21 März 14:42 libmvtools.dylib
-rwxr-xr-x@ 1 selur staff 88K 21 März 14:42 libnnedi3.dylib
-rwxr-xr-x@ 1 selur staff 56K 21 März 14:42 libnoisegen.dylib
-rwxr-xr-x@ 1 selur staff 108K 21 März 14:42 libqrcodesource.dylib
-rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libsangnom.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libssiq.dylib
-rwxr-xr-x@ 1 selur staff 115K 21 März 14:42 libtbilateral.dylib
-rwxr-xr-x@ 1 selur staff 106K 21 März 14:42 libtcanny.dylib
-rwxr-xr-x@ 1 selur staff 82K 21 März 14:42 libtcomb.dylib
-rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libtedgemask.dylib
-rwxr-xr-x@ 1 selur staff 50K 21 März 14:42 libtemporalmedian.dylib
-rwxr-xr-x@ 1 selur staff 380K 21 März 14:42 libtivtc.dylib
-rwxr-xr-x@ 1 selur staff 33K 21 März 14:42 libtonemap.dylib
-rwxr-xr-x@ 1 selur staff 68K 21 März 14:42 libttempsmooth.dylib
-rwxr-xr-x@ 1 selur staff 66K 21 März 14:42 libvivtc.dylib
-rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libvszip.dylib
-rwxr-xr-x@ 1 selur staff 1,4M 21 März 14:42 libzsmooth.dylib
drwxr-xr-x 78 selur staff 2,4K 24 Nov. 2024 models
-rw-r--r-- 1 selur staff 13M 15 Nov. 2024 nnedi3_weights.bin
-rwxr-xr-x@ 1 selur staff 134K 21 März 14:42 vscube.dyliband it should be automatically used.
Not sure why it does not on your system, does work fine here:
# Imports
import sys
import os
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
core.std.LoadAllPlugins('/Users/selur/workspace/Hybrid/Hybrid.app/Contents/MacOS/vsfilters')
# Import scripts folder
scriptPath = '/Users/selur/workspace/Hybrid/Hybrid.app/Contents/MacOS/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Import scripts
import qtgmc
import validate
# Source: '/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4'
# Current color space: YUV420P8, bit depth: 8, resolution: 1280x720, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 709, transfer: bt.709, primaries: bt.709, format: AVC
# Loading '/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4' using BestSource
clip = core.bs.VideoSource(source="/Users/selur/Desktop/Randy Hansen - Voodoo Chile.mp4", cachepath="/Users/selur/tmp/Randy Hansen - Voodoo Chile_bestSource", track=0)
frame = clip.get_frame(0)
# setting color matrix to 709.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT709)
# setting color transfer (vs.TRANSFER_BT709), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT709)
# setting color primaries info (to vs.PRIMARIES_BT709), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT709)
# setting color range to TV (limited) range.
prop_name = '_Range' if core.core_version.release_major >= 74 else '_ColorRange'
clip = core.std.SetFrameProps(clip=clip, **{prop_name: vs.RANGE_LIMITED})
# making sure frame rate is set to 29.97fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# making sure the detected scan type is set (detected: top field first)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_TOP) # scan type: top field first
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(clip, Preset="Fast", TFF=True) # new fps: 59.94
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
clip = clip[::2] # selecting previously even frames, new fps: 29.97
# output
clip.set_output()I'm not at hoem today so, I can't test on my system atm. will try to do some testing tomorrow after work and report back.
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.

