Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#1 | Link |
Registered User
Join Date: Apr 2024
Posts: 371
|
Vapoursynth: Telecine with VIVIC
How do I accomplish these tasks in Vapoursynth, or just the last part, at least?
Code:
Automatic comparisons with telecine sources can be improved by utilizing VIVTC's frameprops. The comparison tool can skip frames marked with the Combed property to avoid leftover interlaced frames being left in the comparison. Additionally, decimation differences can be accounted for by utilizing VIVTC's scene change property and avoiding frames +-1 around scene changes. Last edited by jay123210599; 19th January 2025 at 22:07. |
![]() |
![]() |
![]() |
#2 | Link | |
Registered User
Join Date: Oct 2001
Location: Germany
Posts: 7,583
|
Sounds like normal VIVTC usage with a fallback deinterlacer as post-processor for combed frames:
Code:
clip2clip = clip clip2clip = havsfunc.QTGMC(Input=clip2clip, Preset="fast", opencl=True, TFF=True, FPSDivisor=2) clip = core.vivtc.VFM(clip=clip, order=0, field=2, mode=1, mchroma=True, cthresh=9, mi=80, chroma=True, blockx=32, blocky=32, y0=16, y1=16, scthresh=12, micmatch=1, micout=False) # VDecimate helper function def postprocess(n, f, clip, deinterlaced): if f.props['_Combed'] > 0: return deinterlaced else: return clip clip = core.std.FrameEval(clip=clip, eval=functools.partial(postprocess, clip=clip, deinterlaced=clip2clip), prop_src=clip) clip = core.vivtc.VDecimate(clip=clip, cycle=5, chroma=True, dupthresh=1.1, scthresh=15, blockx=64, blocky=64)) This will only work as you intended if: a. VFM is tuned to the source to properly notice the residual combing after field matching b. the chosen deinterlacer is tuned to properly removes the combing. c. you tune the VDecimate setting to the source. Remembering: Quote:
I still prefer using TIVTC. (but sometimes I get better results using VIVTC) Cu Selur Last edited by Selur; 23rd January 2025 at 20:50. |
|
![]() |
![]() |
![]() |
#3 | Link | |
Registered User
Join Date: Oct 2024
Posts: 13
|
Quote:
I'm slightly confused: Take 29.97fps -> 23.976fps for example, theoretically 1 out of 5 frames should be dropped to get the "correct" output, but deinterlacing the combed frames may leave all 5 frames. Will it cause incorrect framerate and/or other problems because frames are now "unevenly distributed"? Or I'm misunderstanding the cause of combed frames. I thought they were frames that automatic IVTCs can't deal with. What if they are truly interlaced frames? Also, I heard of 2-pass ivtc, which seems to output a VFR clip. While it solves the frame rate problem, the implementation does not include a deint step for the residual before Vdecimate. I'm not sure if I should use a similar QTGMC+frameval after that? PS. the implementation refers to https://github.com/DJATOM/VapourSynt...htools.py#L370 |
|
![]() |
![]() |
![]() |
#4 | Link |
Registered User
Join Date: Oct 2001
Location: Germany
Posts: 7,583
|
About your confusion and telecine / 3:2 pull-down, look at https://en.wikipedia.org/wiki/Three-two_pull_down and the 'An illustration of the process' image,...
If your source if truely interlaced or mixed, this is the wrong approach. 2pass ivtc is mainly useful for mixed content, can't say much about it, since I never used it. Just wanted to answer your initial question. ![]() |
![]() |
![]() |
![]() |
Tags |
decimation, interlaced, telecine, vapoursynth, video comparison |
Thread Tools | Search this Thread |
Display Modes | |
|
|