Posts: 83
Threads: 14
Joined: Sep 2021
Cool, thanks. Also like this poster, my GPU usage averages at about 30% with RealCUGAN.
https://forum.videohelp.com/threads/4093...-hybrid%29
Any idea why?
DDD and DeF look horrendous lol
Posts: 83
Threads: 14
Joined: Sep 2021
I became disillusioned with RealCUGAN. It looks a little too unnatural and where are there animation errors like colors outside of lines the mistakes are amplified (it was running too slow anyway).
No Resizer
RealCUGAN
I've decided to run two AA filters (DAA and EEDIAA) on TIVTC, darken the lines, and call it a day (for now).
If anyone has a better method for deinterlacing, please comment.
Posts: 83
Threads: 14
Joined: Sep 2021
UPDATE: I figured it out. Running Stab before TFM fixes the bad deinterlacing. There must have been so much jitter that TFM thought the frames were interlaced.
Looks perfect now running TFM Mode 1.
Posts: 83
Threads: 14
Joined: Sep 2021
@Selur is it generally better in this case to use TDecimate Mode 1 or Mode 7 at 23.976 fps?
Posts: 11.579
Threads: 63
Joined: May 2017
About Stab:
Stab is a filter meant for progressive content so when you move it above the deinterlacers / field-machters, you force Hybrid to either:
a. separate the fields
or
b. deinterlace the content
based on what is configured under Filtering->Vapoursynth->Script->Filter interlace handling.
The default is 'separate fields'. I suspect that in some place the field order is switched or the fields a field is either moved up/down, so it makes sense that Stab might help there to compensate that shift.
I even suspect that it will compensate the normal up/down shift between upper and lower fields.
is it generally better in this case to use TDecimate Mode 1 or Mode 7 at 23.976 fps?
7 is more suited if the pull down pattern might change. (often due to bad edits during authoring/creation of the source)
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 11.579
Threads: 63
Joined: May 2017
Today, 05:32
(This post was last modified: Today, 05:41 by Selur.)
Correction the default isn't 'separate fields', but 'QTGMC(preset="fast")'.
Thus, Stab might not be the fix, but simply applying QTGMC with same frame rate output might be what you are doing to fix your problem.
=> you might want to check what you are actually doing. (seems like there is a bug in the progressive filtering when TFM is used before deinterlacing)
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 83
Threads: 14
Joined: Sep 2021
I just checked what the "Filter interlace handling" value and it was set to QTGMC fast. I did not change it manually.
Did it change automatically to accommodate the Stab order?
Also I'm not sure what that parameter means. Is QTGMC running before Stab and then again after Stab during TIVTC?
Stab before TFM + Filter Interlace Handling (FIH) QTGMC seems to be the only combo that fixes the bad interlacing.
However, looking deeper I found that it breaks the intro, which is progressive content, like you said. In S02E05 it breaks a different progressive scene.
So I guess my solution doesn't work perfectly after all lol.
Bad deinterlacing on progressive sequence (Stab + FIH QTGMC)
Posts: 83
Threads: 14
Joined: Sep 2021
Ok so I've made this post under the wrong assumptions. Checking the source material, the bad deinterlaced frames I thought were from TFM are actually baked into the source material.
I'm now running EEDIAA before TFM and now everything looks good; bad source frames and progressive sequences. I moved Stab back to the default position.
Two example frames from source:
![[Image: vlcsnap-2025-07-14-09h38m51s994.png]](https://i.ibb.co/LDm7G7n8/vlcsnap-2025-07-14-09h38m51s994.png)
Posts: 11.579
Threads: 63
Joined: May 2017
I would probably use:
# Deinterlacing using TIVTC
clip = core.tivtc.TFM(clip=clip)
clip = core.tivtc.TDecimate(clip=clip, blockx=8, blocky=8)# new fps: 23.976
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
# DEBUG: vsTIVTC changed scanorder to: progressive
clip = residual.Vinverse2(clp=clip)
clip = core.std.Crop(clip=clip, left=6, right=6, top=0, bottom=2)# cropping to 708x478
# Fix bright and dark line artifacts near the border of an image using EdgeFixer
clip = core.edgefixer.Continuity(clip=clip,left=2)
# Fix bright and dark line artifacts near the border of an image using BalanceBorders
clip = edge.bbmod(c=clip,cLeft=0,cTop=0,cRight=0,cBottom=4)
# applying dehalo using YAHR
clip = dehalo.YAHR(clip)
clip = dehalo.YAHR(clip)
clip = dehalo.YAHR(clip)
# applying anti aliasing using santiag
clip = antiAliasing.santiag(c=clip, pscrn=2)
clip = core.std.AddBorders(clip=clip, left=2, right=2, top=0, bottom=2) # add borders to archive mod 8 (vsBasicVSRPPFilter) - 712x480
# adjusting color space from YUV420P8 to RGBS for vsBasicVSRPPFilter
clip = core.resize.Bicubic(clip=clip, format=vs.RGBS, matrix_in_s="470bg", range_s="limited")
# clip, new color sampling: RGBS, new bit depth: 32
# Quality enhancement using BasicVSR++
from vsbasicvsrpp import basicvsrpp as BasicVSRPP
clip = BasicVSRPP(clip=clip, model=4)
clip = core.std.Crop(clip=clip, left=2, right=2, top=0, bottom=2) # removing borders (vsBasicVSRPPFilter) - 708x478
the BasicVSR++ at the end is optional and could probably be replaced with some conventional cleaning or applied with a mask since it will remove some fine details otherwise.
with BasivVSR++
![[Image: grafik.png]](https://i.ibb.co/Psdx2pmB/grafik.png)
without BasicVSR++:
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Posts: 83
Threads: 14
Joined: Sep 2021
Can you confirm your script addresses the interlace issue I identified in the previous post? Frame 21064 for reference.
I didn't have luck using vinverse.