Selur's Little Message Board

Full Version: Script OutputFPS (59.94 fps) and expected fps (29.97) differ!
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hybrid 2024.05.11.1
Version 10.0.19045 Build 19045

1. Placed AVI file (HuffYUV) in Base
2. ProRes - MOV
3. Crop/Resize at default settings
4. Filtering/Deinterlace:
 - Vapoursynth
 - QTGMC (Vapoursynth)
 - [X] Overwrite input scan to top field first
 - Preset: fast
 - Bob
5. Press Vapoursynth Preview
6. Get the following pop-up box: Script OutputFPS (59.94 fps) and expected fps (29.97) differ! Please create a debug output and let Selur know.
7. Press OK
8. Get the following pop-up box: INFO: Script it empty 
9. Press OK
10. Base: press Add to queue; get same pop up error.

What I tried:
The error goes away if I deselect BOB and output at 29.97fps
I tried with several AVI videos all captured with ATI 600.
I tried with ProRes and x264.
I restarted computer.
The error doesn't occur if I use AvisynthPlease, read the 'Infos needed to fix&reproduce bugs,..'-sticky before you post about a problem.
Thanks for the info.
I think I fixed this a few days ago.
=> send you a link to a dev version for testing via pm.
Let me know whether it works with that version.

Cu Selur
I downloaded and installed the dev version. The bug is gone. Thanks!
UPDATE: Next day, the same bug is back. 

So I uninstalled. And reinstalled the dev version. The bug is present again.
If you can share a new debug Output I can look at it after work.
Here is the HybridDebugOutput.zip file.
Your debug output starts with version 2024.05.11.1, I assume the start is old. (so reading 2/3 of the log is a waste,... Sad)
Okay, I see the problem, the frame rate calculation reports:
Code:
adjusted due to interpolate frame rate to: frame rate:  29.97fps, frame count: 242325
whereas the Vapoursynth script does not contain and such adjustment:
Code:
# Import scripts
  import edi_rpow2
  import havsfunc
  import validate
  # Source: 'J:\Temp\Test.avi'
  # Current color space: YUV422P8, bit depth: 8, resolution: 720x480, frame rate: 29.97fps, scanorder: top field first, yuv luminance scale: limited, matrix: 470bg
  # Loading J:\Temp\Test.avi using LWLibavSource
  clip = core.lsmas.LWLibavSource(source="J:/Temp/Test.avi", format="YUV422P8", stream_index=0, cache=0, prefer_hw=0)
  frame = clip.get_frame(0)
  # Setting detected color matrix (470bg).
  clip = core.std.SetFrameProps(clip=clip, _Matrix=5)
  # setting color transfer (170), if it is not set.
  if validate.transferIsInvalid(clip):
    clip = core.std.SetFrameProps(clip=clip, _Transfer=6)
  # setting color primaries info (to 470), if it is not set.
  if validate.primariesIsInvalid(clip):
    clip = core.std.SetFrameProps(clip=clip, _Primaries=5)
  # setting color range to TV (limited) range.
  clip = core.std.SetFrameProps(clip=clip, _ColorRange=1)
  # 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=2) # tff
  # Deinterlacing using QTGMC
  clip = havsfunc.QTGMC(Input=clip, Preset="Slow", InputType=0, TFF=True, TR2=1, Sharpness=0.1, SourceMatch=3, Lossless=2, MatchPreset="Slow", MatchEnhance=0.00) # new fps: 59.94
  # Making sure content is preceived as frame based
  clip = core.std.SetFrameProps(clip=clip, _FieldBased=0) # progressive
  clip = core.std.CropRel(clip=clip, left=12, right=12, top=0, bottom=12)# cropping to 696x468
  # resizing using NNEDI3CL
  # current: 696x468 target: 1606x1080 -> pow: 4
  clip = edi_rpow2.nnedi3cl_rpow2(clip=clip, rfactor=4, nsize=3, nns=4) # 2784x1872
  # adjusting resizing
  clip = core.fmtc.resample(clip=clip, w=1606, h=1080, kernel="lanczos", interlaced=False, interlacedd=False)# before YUV422P8 after YUV422P16
  # adjusting output color from: YUV422P16 to YUV420P8 for x264Model
  clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, range_s="limited", dither_type="error_diffusion")
  # set output frame rate to 59.94fps (progressive)
  clip = core.std.AssumeFPS(clip=clip, fpsnum=60000, fpsden=1001)
  # output
  clip.set_output()

"adjusted due to interpolate frame rate to" should only be used if 'Speed Change->Speed Settings->Interpolate frame rate' is enabled.
=> Why did you enable this? (I will adjust Hybrid to better handle this, but are you sure this is what you wanted? This will slow down the playback speed to half-speed and turn everything to slow motion,...)


Cu Selur
I can't explain why the settings at Filtering>Speed Change were set that way. I don't think I ever visited that tab. And now I tested the same video today, turned on Bob, and I don't get the same error as yesterday. I can't explain this. Thank you for your patience. If it ever happens again, I will visit the Filtering>Speed Change tab to make sure nothing is selected.