Hello, I've ran into an issue with my first SD NTSC capture: AJA's ControlRoom produces 486px (vertical) file, but VapourSynth crashes with division error
Error message:
What was done: I've inserted # requires mod 2 before QTGMC. Same behavior, but padding is visible in the generated .vpy script
A snippet from .vpy generated script:
Hybrid 2025.11.09.1 was used, I've never ran into such issue before
Error message:
File "src\\cython\\vapoursynth.pyx", line 3123, in vapoursynth.Function.__call__
vapoursynth.Error: Analyse: failed to retrieve first frame from super clip. Error message: Resize error 1027: image dimensions must be divisible by subsampling factorWhat was done: I've inserted # requires mod 2 before QTGMC. Same behavior, but padding is visible in the generated .vpy script
A snippet from .vpy generated script:
# Current color space: YUV422P10, bit depth: 10, resolution: 720x486, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 170m, transfer: bt.709, primaries: bt.601 ntsc, format: prores
# Loading I:\kseniya_tape1_ntsc.mov using BestSource)
clip = core.bs.VideoSource(source="I:/kseniya_tape1_ntsc.mov", cachepath="I:/TEMP/kseniya_tape1_ntsc_bestSource", track=0, hwdevice="cuda")
frame = clip.get_frame(0)
# setting color matrix to 170m.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_ST170_M)
# 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_BT470_BG), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT470_BG)
# setting color range to TV (limited) range.
clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED)
# making sure frame rate is set to 29.97fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# Converting to target color sampling
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, dither_type="error_diffusion")
# making sure the detected scan type is set (detected: top field first)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_TOP) # tff
original = clip
# adjusting color format to YUV422P8 for custom section
clip = core.resize.Bicubic(clip=clip, format=vs.YUV422P8)
[clip] = beforeDeinterlace(clip)
# clip current meta; color space: YUV422P8, bit depth: 8, resolution: 720x486, fps: 29.97, color matrix: 170m, yuv luminance scale: limited, scanorder: top field first, full height: true
clip = core.std.AddBorders(clip=clip, left=0, right=0, top=0, bottom=2) # add borders to archive mod 4 (vsQTGMC) - 720x488
# Deinterlacing using QTGMC
clip = qtgmc.QTGMC(Input=clip, Preset="Medium", InputType=0, TFF=True, TR2=0, SourceMatch=1, Lossless=0, opencl=True) # new fps: 59.94
clip = core.std.Crop(clip=clip, left=0, right=0, top=0, bottom=2) # removing added borders from mod requirement (vsQTGMC) - 720x486
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
original = core.std.AddBorders(clip=original, left=0, right=0, top=0, bottom=2) # add borders to archive mod 4 (vsQTGMC) - 720x488
# Deinterlacing using QTGMC
original = qtgmc.QTGMC(original, Preset="Fast", TFF=True, opencl=True)# new fps: 59.94
original = core.std.Crop(clip=original, left=0, right=0, top=0, bottom=2) # removing added borders from mod requirement (vsQTGMC) - 720x486
# Making sure content is preceived as frame based
original = core.std.SetFrameProps(clip=original, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
# adjusting output color from: YUV422P8 to YUV420P8 for NVEncModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8)
# add histogram
clip = core.hist.Classic(clip)
original = core.hist.Classic(original)
original = core.text.Text(clip=original,text="Original",scale=1,alignment=7)
clip = core.text.Text(clip=clip,text="Filtered",scale=1,alignment=7)
stacked = core.std.StackHorizontal([original,clip])
# adjusted resizing to achieve PAR 1:1 for preview
# resizing for preview to square pixel to 1310x742
stacked = core.resize.Bicubic(clip=stacked, width=1310, height=742)
# set output frame rate to 59.94fps (progressive)
stacked = core.std.AssumeFPS(clip=stacked, fpsnum=60000, fpsden=1001)Hybrid 2025.11.09.1 was used, I've never ran into such issue before

