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. |
|
![]() |
|
Thread Tools | Search this Thread | Display Modes |
![]() |
#1 | Link |
Registered User
Join Date: Feb 2022
Location: Austin, TX
Posts: 5
|
vsfieldkit: functions for working with interlaced content
Been processing old home VHSes and DVDs lately and needed some things I hadn't seen in the VapourSynth community yet.
Documentation | Source Code Some notable functions: vsfieldkit.group_by_combed vsfieldkit.group_by_field_order vsfieldkit.resample_as_progressive vsfieldkit.scan_interlaced |
![]() |
![]() |
![]() |
#2 | Link |
Registered User
Join Date: Feb 2022
Location: Austin, TX
Posts: 5
|
scan_interlaced is where I've spent most of my time. It's a frame doubler that draws interlaced fields like an interlaced scan display would, with optional phosphor decay simulation. It was inspired by Juha Jeronen's Phosphor deinterlacer for VLC media player.
![]() Slowed from 59.94 to 10 fps. See how much smoother the right-side looks. scan_interlaced reference and deep dive from the docs. Last edited by JustinTArthur; 18th April 2022 at 08:14. |
![]() |
![]() |
![]() |
#3 | Link |
Registered User
Join Date: Nov 2010
Posts: 11
|
Wow scan_interlaced looks super cool! I really like the deep dive too, both content and format. I've been considering writing some words about ways of handling telecined content and may take some inspiration.
I've been using FrameEval for the example situation presented for vsfieldkit.group_by_combed. I imagine it's about the same performance either way, but maybe worth testing/noting if one way has advantages over the other. Code:
def filter_combed_only(n, f, filter, no_filter): return filter if f.props['_Combed'] == 1 else no_filter no_filter = ... filter = ... clip = no_filter.std.FrameEval(functools.partial(filter_combed_only, filter=filter, no_filter=no_filter), prop_src=no_filter) |
![]() |
![]() |
![]() |
#4 | Link | ||
Registered User
Join Date: Feb 2022
Location: Austin, TX
Posts: 5
|
Quote:
Quote:
vsfieldkit.group_by_combed requests frames itself, forcing your filter stack to process content from the source all the way through your filters so far, blocking until it gets those frames. This makes for an elegant programming experience given there are no callbacks involved, but it's rarely faster. All that said, here are some things it is good for:
I should definitely point more to FrameEval and ModifyFrames in the docs for those funcs and explain the use-cases a bit. Last edited by JustinTArthur; 4th May 2022 at 08:50. Reason: Reverted to original |
||
![]() |
![]() |
![]() |
Tags |
deinterlacing, vapoursynth, vsfieldkit |
Thread Tools | Search this Thread |
Display Modes | |
|
|