The following warnings occurred:
Warning [2] Trying to access array offset on null - Line: 14 - File: inc/plugins/cookielaw.php(272) : eval()'d code PHP 8.3.12-nmm1 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/cookielaw.php(272) : eval()'d code 14 errorHandler->error_callback
/inc/plugins/cookielaw.php 272 eval
/inc/class_plugins.php 142 cookielaw_global_intermediate
/global.php 100 pluginSystem->run_hooks
/printthread.php 16 require_once
Warning [2] Trying to access array offset on null - Line: 14 - File: inc/plugins/cookielaw.php(272) : eval()'d code PHP 8.3.12-nmm1 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/cookielaw.php(272) : eval()'d code 14 errorHandler->error_callback
/inc/plugins/cookielaw.php 272 eval
/inc/class_plugins.php 142 cookielaw_global_intermediate
/global.php 100 pluginSystem->run_hooks
/printthread.php 16 require_once



Selur's Little Message Board
QTGMC Vaporsynth settings - Printable Version

+- Selur's Little Message Board (https://forum.selur.net)
+-- Forum: Hybrid - Support (https://forum.selur.net/forum-1.html)
+--- Forum: Problems & Questions (https://forum.selur.net/forum-3.html)
+--- Thread: QTGMC Vaporsynth settings (/thread-1739.html)



QTGMC Vaporsynth settings - Rokoko33 - 23.02.2021

Curious if this is correct:
·       Filtering> Deinterlace/Telecine> QTGMC Vapoursynth>Order>changing Input Order from default value “-1” to “1” that is explained as TFF:
 
Input order:
·       Select which field order the content has
·       -1 : from source headers (default).
·       0 : Bottom field first.
·       1 : Top field first.
·       Default: -1,Min: -1,Max: 1
 
I know that video is TFF, but not sure if my HuffYUV video file’s header has set that value, this is why I try to set Input Order manually.
 
Looking in to Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=False) # new fps: 50
 
Does it mean that video will be interpreted not correctly, as BFF, since TTF=False?
 
Changing Input Order to “0” as it explained as BFF.
 
Looking in to Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 50
 
Looks like it is recognized as TFF instead of BFF?
 
Changing Input Order back to default “-1”.
Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 50
 
Looks like it reads file's header and sets TFF.
 
 
Also how to change Sharpness value in QTGMC Deinterlacer, it is grayed out? Does not allow to change it.
I changed QTGMC Denoiser setting parameters under Filtering>Vapoursynth>DeNoise> QTGMC, changing Sharpness value.
Under Filtering> Deinterlace/Telecine> QTGMC Vapoursynth, Sharpness box is still unmarked, grayed out, value is default 1.0 and grayed out.
It means that QTGMC Denoiser setting parameters under DeNoise> QTGMC are taking setting over and are as set, even Sharpness value in QTGMC Deinterlacer is a default and not changed?


RE: QTGMC Vaporsynth settings - Selur - 23.02.2021

Quote:I know that video is TFF, but not sure if my HuffYUV video file’s header has set that value, this is why I try to set Input Order manually.
This way your are not changing the way Hybrid perceives the file you are changing the way QTGMC perceives the file.
Under:
  • Base->Video->Scan Type
  • Base->Show All Data
  • Filtering->(De-)Interlace/Telecine->Deinterlace/Telecine Settings->Input scan type
Hybrid shows how the source is detected.
If you want to overwrite this value, i.e. since your source is badly flagged, your should use:
"Filtering->(De-)Interlace/Telecine->Deinterlace/Telecine Settings-Overwrite input scan type to" and set it to the value you want.

Quote:Looking in to Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=False) # new fps: 50

Does it mean that video will be interpreted not correctly, as BFF, since TTF=False?
This means that Hybrid assumed the source is TFF, but your configured QTGMC to assume the source is BFF.

Quote:Changing Input Order to “0” as it explained as BFF.

Looking in to Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 50

Looks like it is recognized as TFF instead of BFF?
Correct. This is a bug. Smile -> Will fix.

Quote:Changing Input Order back to default “-1”.
Vapoursynth Script:
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=True) # new fps: 50

Looks like it reads file's header and sets TFF.
Correct, when using '-1' Hybrid sets the flag according to the detected input scan type.


Quote:Also how to change Sharpness value in QTGMC Deinterlacer, it is grayed out?
In QTGMC you need to set the preset to 'Custom' to change any of the options covered by presets.
If you set preset to 'Custom' you can select another preset that is the base of your values, but modify the values.
So if you want you settings to be based on 'Preset: Fast' you select:
  • Preset: Custom (left upper corner)
  • Preset: Fast (right side)
  • enable Sharpness
  • change the Sharpness value

Cu Selur

Ps.: send you a link to a dev version which should fix the TFF mixup.


RE: QTGMC Vaporsynth settings - Rokoko33 - 23.02.2021

Thanks, it works now.
 
If I do not use Custom, use QTGMC as deinterlacer with the default grayed out values, and:
·       Filtering> Deinterlace/Telecine> QTGMC Vapoursynth, Sharpness box is unmarked, grayed out, value is default 1.0,
Also:
·       Filtering>Vapoursynth>DeNoise> QTGMC box is unmarked, Sharpness box is unmarked, grayed out, value is default 1.0,

Does it mean that QTGMC’s filtering still is engaged and will be applied in addition to deinterlacing function?


RE: QTGMC Vaporsynth settings - Selur - 23.02.2021

Quote:Does it mean that QTGMC’s filtering still is engaged and will be applied in addition to deinterlacing function?
QTGMC always does filtering in all modes, with all setting combinations.
That's the main point of QTGMC, archiving nice de-interlacing through clever filtering. Wink
Due to the tons of filters that are using in QTGMC it also offers quite a bunch of additional denoising&co options.
-> you might want to read through http://avisynth.nl/index.php/QTGMC and the QTGMC script itself to get a better understanding of it.

When selecting a preset other than custom Hybrid will call QTGMC with just that preset and TFF value, i.e.:
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", TFF=False)
Looking at the source (https://github.com/Selur/VapoursynthScriptsInHybrid/blob/master/havsfunc.py#L857 and following), Sharpness isn't influenced by the presets but get's adjusted to give roughly the same Sharpness for all settings:
# Sharpness defaults. Sharpness default is always 1.0 (0.2 with source-match), but adjusted to give roughly same sharpness for all settings
    if Sharpness is not None and Sharpness <= 0:
        SMode = 0
    if SourceMatch > 0:
        if SLMode is None:
            SLMode = 0 # ***Sharpness limiting disabled by default for source-match***
    else:
        SLMode = SLModeX
    if SLRad <= 0:
        SLMode = 0
    spatialSL = SLMode in [1, 3]
    temporalSL = SLMode in [2, 4]
    if Sharpness is None:
        Sharpness = 0.0 if SMode <= 0 else 0.2 if SourceMatch > 0 else 1.0 # Default sharpness is 1.0, or 0.2 if using source-match
    sharpMul = 2 if temporalSL else 1.5 if spatialSL else 1 # Adjust sharpness based on other settings
    sharpAdj = Sharpness * (sharpMul * (0.2 + TR1 * 0.15 + TR2 * 0.25) + (0.1 if SMode == 1 else 0)) # [This needs a bit more refinement]
    if SMode <= 0:
        Sbb = 0
see: (https://github.com/Selur/VapoursynthScriptsInHybrid/blob/master/havsfunc.py#L1068)
Side note: The value used later during the resharpen phase of QTGMCs workflow is 'sharpAdj'.

Cu Selur


RE: QTGMC Vaporsynth settings - Rokoko33 - 24.02.2021

Great. I like Hybrid more and more.
It is like new mobile phone, takes some time to get in to some menus and setting specifics Smile 

 
One more thing, asking for an advice:
I am in 60fps country.
 
Using Hybrid QTGMC deinterlaces video, Bob makes it 50fps, next step to convert to 60fps using one of methods:
 
1. Let the Blu Ray, HW player to perform 50fps to 60fps convert during playback, but I am not sure if this is better than SW based tools.
 
2. Hybrid, Change to 60fps Interpolating frames using Vapoursynt or using FFmpeg:
·       Filtering>Vapoursynth>Frame> Interpolation>Frame Interpolation>:
      A. Interframe/SVP>Set FPS to 60fps
      or
      B. MVToolsFPS>Set FPS to 60fps

·       Filtering>Speed Change>Speed Settings->Interpolate frame rate' to '60fps'.
 
3. Hybrid, Change to 60fps Inserting duplicate frames to achieve wanted frame rate:
·       Filtering->Speed Change->Speed Settings->Scale output frame rate' to '60fps', which will insert duplicate frames.
 
What is a preferred way to convert 50fps to 60fps from these options?


RE: QTGMC Vaporsynth settings - Selur - 24.02.2021

Usually using frame interpolation is the way to go.
Depending on the source SVP or MVToolsFPS will produce less artifacts, but both should work fine.
Adding duplicates isn't a way I would use.

Cu Selur