Collection of functions for working with interlaced content in VapourSynth.

Overview

vsfieldkit

Collection of functions for working with interlaced content in VapourSynth. It does not have any hard dependencies outside of VapourSynth.

Included functions:
vsfieldkit.assume_bff(clip)
vsfieldkit.assume_progressive(clip)
vsfieldkit.assume_tff(clip)
vsfieldkit.double(clip)
vsfieldkit.group_by_combed(clip)
vsfieldkit.group_by_field_order(clip)
vsfieldkit.scan_interlaced(clip)

See the documentation for more information.

Comments
  • Allow EdgeFixer plugin instead of ContinuityFixer

    Allow EdgeFixer plugin instead of ContinuityFixer

    Currently there's no release of ContinuityFixer plugin that works with vsfieldkit. Also, according to the author, EdgeFixer should be used instead: https://github.com/MonoS/VS-ContinuityFixer/issues/2

    enhancement plugins 
    opened by tvasenin 3
  • fill_analog_frame_ends updates

    fill_analog_frame_ends updates

    • Allow overriding the pre-fill mode and gives better error messaging when the fillborders plugin is missing the requested mode. The default mode is now "fillmargins" instead of "fixborders" in order to work with the release version of fillborders.
    • Work with progressive clips cropped by factors smaller than interlaced subsampling.
    • More compatible with code autocompletion via removal of decorators.

    Fixes JustinTArthur/vsfieldkit#4.

    opened by JustinTArthur 0
  • Allow brightening of newly scanned lines in scan_interlaced

    Allow brightening of newly scanned lines in scan_interlaced

    Just as we support decaying old lines to a decay base with decay_factor, we could also allow brightening new lines. Borrowing from audio engineering, calling itattack_factor would compliment the existing decay_factor.

    Based on a suggestion by @Tefad.

    enhancement scan_interlaced 
    opened by JustinTArthur 0
  • fill_analog_frame_ends: mod2 field height required on pre-cropped progressive material.

    fill_analog_frame_ends: mod2 field height required on pre-cropped progressive material.

    In case fill_analog_frame_ends encounters interlaced frames, it always attempts field separation. This breaks when the function is fed a progressive clip that's been cropped to something other than mod2 half-height. Ideally, fill_analog_frame_ends is applied before crops, but we can't guarantee users won't try.

    bug fill_analog_frame_ends 
    opened by JustinTArthur 0
  • Add channel separation repair filter using the BBC PAL Transform

    Add channel separation repair filter using the BBC PAL Transform

    For video that's been transmitted as a PAL composite signal (PAL CVBS or PAL terrestrial broadcast), the compositing of Yʹ, U, and V signals causes crosstalk, projected as rainbowing and dot crawl artifacts in the decoded pictures.

    The BBC Transform PAL Decoder originally conceived by @jim-easterbrook has been celebrated in its ability to better reconstruct the original separate Yʹ, U, and V signals from the composite signal prior to decoding to light/color samples. There's even evidence it can help with NTSC composite video artifacts after reinterpreting the NTSC video as PAL. I'd love to see this concept realized as a VapourSynth filter so it can be used alongside fill_analog_frame_ends and upstream of TFM/VFM or QTGMC.

    To perform this repair in transform space within a VapourSynth filter, we'd want to first construct a pseudo-analog PAL CVBS signal using something like pulse code modulation of 4-times-subcarrier-frequency, run the PAL Transform algorithm on the PCM data, then re-digitize the signal as light/color samples before finally resampling the original clip's format characteristics.

    The open source ld-decode project has implementations of conversions between motion RGB and PAL CVBS PCM data. The open source pyctools-pal project has a Python and Cython implementation of the BBC PAL Transform for PAL CVBS PCM. However, both @atsampson's PAL CVBS conversion code and @jim-easterbrook's PAL transform code in these projects are only licensed to the public under the restrictive GNU Public License. A note for myself and anyone looking to add this to vsfieldkit: please avoid looking at the ld-decode/tools/ld-chroma-decoder or pyctools-pal/src/pyctools/components/pal source directories when working on this task. vsfieldkit is currently licensed to the public under the less restrictive MIT License.

    My first try at this in vsfieldkit would be to open a subprocess to installed ld-chroma-encoder and ld-chroma-decoder executables if the user has installed them. The function would convert to/from the ld-* toolchain native RGB format using typical zimg/core.resize resampling kernels. This could potentially avoid licensing issues, but is likely to be inefficient.

    A C, Rust, or even Python implementation of the CVBS conversion and PAL transform separation for VapourSynth could potentially be done in a separate GPL-licensed project using code or deriving code from ld-decode and/or pyctools-pal.

    enhancement repair 
    opened by JustinTArthur 0
Releases(v1.1.0)
  • v1.1.0(Nov 28, 2022)

    Contains updates to two existing functions.

    vsfieldkit.fill_analog_frame_ends

    • Allows overriding the pre-fill mode and gives better error messaging when the fillborders plugin is missing the requested mode. The default mode is now "fillmargins" instead of "fixborders" in order to work with the release version of fillborders.
    • Works with progressive clips cropped by factors smaller than interlaced subsampling.
    • More compatible with code autocompletion via removal of decorators.

    vsfieldkit.scan_interlaced

    • Can brighten newly-scanned fields via new attack_factor argument.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(May 31, 2022)

  • v1.0.1(May 12, 2022)

    • Adds vsfieldkit.fill_analog_frame_ends for cleaning up half-black lines at the edges of analog frames.
    • vsfieldkit.bob now shifts to account for relative field position by default. Is deprecated in VapourSynth R58+

    1.0.0 was yanked to immediately fix a vsfieldkit.fill_analog_frame_ends bug.

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Apr 17, 2022)

    • New functions for re-interpreting progressive frames encoded with interlaced sub-sampled chroma: vsfieldkit.resample_as_progressive and vsfieldkit.upsample_as_progressive.
    • Adds phosphor decay simulation to vsfieldkit.scan_interlaced
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Mar 2, 2022)

  • v0.1.0(Feb 13, 2022)

Owner
Justin Turner Arthur
Justin Turner Arthur
python's memory-saving dictionary data structure

ConstDict python代替的Dict数据结构 若字典不会增加字段,只读/原字段修改 使用ConstDict可节省内存 Dict()内存主要消耗的地方: 1、Dict扩容机制,预留内存空间 2、Dict也是一个对象,内部会动态维护__dict__,增加slot类属性可以节省内容 节省内存大小

Grenter 1 Nov 03, 2021
Nextstrain build targeted to Omicron

About This repository analyzes viral genomes using Nextstrain to understand how SARS-CoV-2, the virus that is responsible for the COVID-19 pandemic, e

Bedford Lab 9 May 25, 2022
Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım.

Python bilgilerimi eğlenceli bir şekilde hatırlamak ve daha da geliştirmek için The Big Book of Small Python Projects isimli bir kitap almıştım. Bu repo kitaptaki örnek programları çalıştığım oyun al

Burak Selim Senyurt 22 Oct 26, 2022
A script that convert WiiU BotW mods to Switch

UltimateBoTWConverter A script that convert WiiU BotW mods to Switch. It uses every resource I could find under the sun that allows for conversion, wi

11 Nov 08, 2022
flake8 plugin which forbids match statements (PEP 634)

flake8-match flake8 plugin which forbids match statements (PEP 634)

Anthony Sottile 25 Nov 01, 2022
A Notifier Program that Notifies you to relax your eyes Every 15 Minutes👀

Every 15 Minutes is an application that is used to Notify you to Relax your eyes Every 15 Minutes, This is fully made with Python and also with the us

FSP Gang s' Admin 1 Nov 03, 2021
A python script for practicing Toki Pona.

toki.py A python script for practicing Toki Pona. Modified from a hirigana script by ~vilmibm. Example of the script running: $ ./toki.py This script

Dustin 2 Dec 09, 2021
AlexaUsingPython - Alexa will pay attention to your order, as: Hello Alexa, play music, Hello Alexa

AlexaUsingPython - Alexa will pay attention to your order, as: Hello Alexa, play music, Hello Alexa, what's the time? Alexa will pay attention to your order, get it, and afterward do some activity as

Abubakar Sattar 10 Aug 18, 2022
This is the core of the program which takes 5k SYMBOLS and looks back N years to pull in the daily OHLC data of those symbols and saves them to disc.

This is the core of the program which takes 5k SYMBOLS and looks back N years to pull in the daily OHLC data of those symbols and saves them to disc.

Daniel Caine 1 Jan 31, 2022
An OBS script to fuze files together

OBS TEXT FUZE Fuze text files and inject the output into a text source. The Index file directory should be a list of file directorys for the text file

SuperZooper3 1 Dec 27, 2021
This Python3 script will monitor Upwork RSS feed and then email you the results.

Upwork RSS Parser This Python3 script will monitor Upwork RSS feed and then email you the results. Table of Contents General Info Technologies Used Fe

Chris 5 Nov 29, 2021
A web app that is written entirely in Python

University Project About I made this web app to finish a project assigned by my teacher. It is written entirely in Python, thanks to streamlit to make

15 Nov 27, 2022
Extract continuous and discrete relaxation spectra from G(t)

pyReSpect-time Extract continuous and discrete relaxation spectra from stress relaxation modulus G(t). The papers which describe the method and test c

3 Nov 03, 2022
A repository of study materials related to Think Python 2nd Edition by Allen B. Downey. More information about the book can be found here: https://greenteapress.com/wp/think-python-2e/

Intro-To-Python This content is based on the book Think Python 2nd Edition by Allen B. Downey. More information about the book can be found here: http

Brent Eskridge 63 Jan 07, 2023
Minterpy - Multidimensional interpolation in Python.

minterpy is an open-source Python package for a multivariate generalization of the classical Newton and Lagrange interpolation schemes as well as related tasks.

Center for Advanced Systems Understanding 18 Jan 06, 2023
Senior Comprehensive Project For Python

Senior Comprehensive Project Author: Grey Hutchinson My project, which I nicknamed “Murmur”, was to create a research tool that would use neural netwo

1 May 29, 2022
tox-gh is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel

tox-gh is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel. This project is inspired by tox-travis.

tox development team 19 Dec 26, 2022
Hspice-Wave-Generator is a tool used to quickly generate stimuli souces of hspice format

Hspice-Wave-Generator is a tool used to quickly generate stimuli souces of hspice format. All the stimuli sources are based on `pwl` function of HSPICE and the specific complex operations of writing

3 Aug 02, 2022
STAC in Jupyter Notebooks

stac-nb STAC in Jupyter Notebooks Install pip install stac-nb Usage To use stac-nb in a project, start Jupyter Lab (jupyter lab), create a new noteboo

Darren Wiens 32 Oct 04, 2022
Assembly example for CadQuery

Spindle and vacuum attachment This is a model of the vacuum attachment for my Workbee CNC router. There is a mist spray coming from the left hand side

Marcus Boyd 20 Sep 16, 2022