Skip to main content

vapoursynth-analog

VapourSynth source and filters plugin for working with digitized analog video and signals.

See documentation for full details including API reference.

High-level Python API

If installed as a Python distribution (e.g. with pip), the vsanalog Python module wraps the plugin's lower-level API with a type-hinted interface that loads the plugin automatically.

The primary function provided by the high-level API is vsanalog.decode_4fsc_video(…), which decodes 4𝑓𝑠𝑐-sampled analog video signals to digital video clips. It reads time-base-corrected captures from ld-decode and vhs-decode (.tbc) as well as the newer CVBS format (.cvbs, or .cvbsy/.cvbsc), detected by file extension, and returns 32-bit float clips: YUV444PS (default), RGBS, GRAYS, or YUV440PS for SECAM. Analytical (NTSC/PAL/SECAM/mono) and neural-network composite decoders are available.

Example:

import vapoursynth as vs
import vsanalog
import vsdeinterlace  # from vsjetpack

src = vsanalog.decode_4fsc_video(
    './Sources/my_home_video.luma.tbc',
    './Sources/my_home_movie.chroma.tbc',
    decoder='ntsc3d'
)
editable = src.resize.Point(format=vs.YUV444P16)
deinterlaced = vsdeinterlace.QTempGaussMC(editable).deinterlace()
deinterlaced.set_output(0)

Low-level VapourSynth Plugin API

Whether installed as a Python distribution or if the plugin library is dropped in a VapourSynth plugins directory, the plugin exposes a namespace named analog available on the vapoursynth.core object. Example:

import vapoursynth as vs
src = vs.core.analog.decode_4fsc_video(
  'my_big_production.tbc',
  dropout_correct=True
)
editable = src.resize.Point(format=vs.YUV444P16)
field_match_ref = src.resize.Point(format=vs.YUV444P8)
field_matched = field_match_ref.vivtc.VFM(clip2=editable)
detelecined = field_matched.vivtc.VDecimate()

Installing

The simplest way to install is via pip into a Python environment such as a venv:

pip install vsanalog

This installs both the native plugin and a Python module with type-hinted wrappers like vsanalog.decode_4fsc_video. The plugin is automatically loaded when you use the Python module.

The wheel bundles the model weights and whatever shared libraries the plugin needs, so VapourSynth (>= R55) is the only thing you install alongside it. It runs the neural decoders on the CPU (Linux), on any DirectX 12 GPU via DirectML with CPU fallback (Windows), or on Apple CoreML (macOS); the CUDA/TensorRT and MIGraphX wheels are too large for PyPI and are published on GitHub Releases instead — CUDA/TensorRT for Linux and Windows, MIGraphX for Linux. They require a CUDA or ROCm 7.x installation to load at all. CUDA ships as a 0cuda12 and a 0cuda13 build, one per toolkit major — pre-Turing cards need 0cuda12, which is as far as NVIDIA's own support for them goes.

Alternatively, obtain or build the plugin for your operating system and place vsanalog.dll, vsanalog.dylib, or vsanalog.so into your VapourSynth plugins directory. The released plugin binaries need only VapourSynth, but they bundle no models and, off macOS, no neural-network decoders.

Implementation Notes

Signal decoding functionality comes from libchromadec, a Qt-free C-ABI library extracted from ld-chroma-decoder. It's pulled in as a Meson git wrap and linked statically, along with the trimmed SQLite it bundles, so this plugin has no Qt or system-SQLite dependency at all. libchromadec supplies the composite separation/transformation decoders (NTSC/PAL/SECAM/mono), the CVBS and TBC readers, dropout masks and corrections, and the neural-network decoders.

To ease legal distribution, this project is available under the GPL 3 license (or a compatible one), matching libchromadec.

Machine learning (Claude Opus 4.5 model) was heavily leveraged in the early development of this plugin to reduce the tedium of gluing the various components together.

Alternatives

  • jsaowji’s ldzeug2 is an excellent alternative VapourSynth video source for TBC files that pioneered the neural network approaches to separating composited luma and chroma components. vapoursynth-analog now exposes those models too (via libchromadec’s ldzeug2_color_cnn / ldzeug2_luma_sep decoders), alongside asdfqazsnbb’s nnTransform3D. ldzeug2 moves more 4𝑓𝑠𝑐 processing to the Python domain for flexible scripting; it focuses on composite NTSC, ST 170, and Japan format signals.
  • ld-decode-tools comes with an ld-chroma-decoder tool to decode TBC files to component R′G′B′ or Y′Cb′Cr′ stream output for use in command line workflows and an ld-dropout-correct tool for generating a pre-corrected intermediate based on upstream dropout detection.
  • tbc-video-export is a convenient wrapper around ld-chroma-decoder and ffmpeg for producing digital video files from TBC files. It’s handy if you need to deliver a lossless interlaced intermediate to someone else for filtering or color grading.

Metadata

Release files for vsanalog 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vsanalog 0.3.0
File Size Uploaded
vsanalog-0.3.0.tar.gz 198.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for vsanalog 0.3.0
File
vsanalog-0.3.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
vsanalog-0.3.0-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
vsanalog-0.3.0-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
vsanalog-0.3.0-py3-none-macosx_15_0_x86_64.whl Python 3 none macOS 15.0+ x86-64 Details
vsanalog-0.3.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 92.9 MB

Release files / vsanalog-0.3.0.tar.gz

Download URL vsanalog-0.3.0.tar.gz
Size 198.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7b127ed1e29e60c1828938b785b42e98e2d6ae30af74c1fdcae1abc5a6e695ed
BLAKE2b-256 checksum
How to use checksums
860a3a15c3883213052d283b37ec67142f034a1cb1f4a4a297b142c778772d11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / vsanalog-0.3.0-py3-none-win_amd64.whl

Download URL vsanalog-0.3.0-py3-none-win_amd64.whl
Size 30.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
701715c0a04b3fbc2dbe2f2e8e741fdb55bca0151fe0eb3c431e47b1bb4f6380
BLAKE2b-256 checksum
How to use checksums
f0a578f127a08cacd1f601a6d8fdd4c5bb162c0bde45d9033a18e5184453779b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / vsanalog-0.3.0-py3-none-manylinux_2_34_aarch64.whl

Download URL vsanalog-0.3.0-py3-none-manylinux_2_34_aarch64.whl
Size 18.2 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
26d5b4365c90e58c8b186420e8297a0d2d78784e34cf8e41b61510c3b8129d04
BLAKE2b-256 checksum
How to use checksums
18cc9ddfd8383a1e697918ab07b8d56299b6f941197fde598b1ac6c81f6f58c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / vsanalog-0.3.0-py3-none-manylinux_2_28_x86_64.whl

Download URL vsanalog-0.3.0-py3-none-manylinux_2_28_x86_64.whl
Size 22.5 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
927a4d18c5cec3c18446d480cff0cc0ba44c88892e7a6beee8f77da62378ff26
BLAKE2b-256 checksum
How to use checksums
82394e16d22e256d3655a8a604cb2a5935334667a39fcb22a32d3615e2552086
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / vsanalog-0.3.0-py3-none-macosx_15_0_x86_64.whl

Download URL vsanalog-0.3.0-py3-none-macosx_15_0_x86_64.whl
Size 11.5 MB
Tags Python 3 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
9cb03d811d78591506c38af44cea856cac184081838d2371d44942385320a496
BLAKE2b-256 checksum
How to use checksums
409de46923b4db1beac7061466c69cee572e038ee7805bbb7e11c4e4fc80ff6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / vsanalog-0.3.0-py3-none-macosx_14_0_arm64.whl

Download URL vsanalog-0.3.0-py3-none-macosx_14_0_arm64.whl
Size 10.5 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
bae971bbc14f6ff44c966e06b74112761f05413e978344c9bb36b8a5082b8d56
BLAKE2b-256 checksum
How to use checksums
755f21ad26ee15b2b8c01733b7a97e1337c53f7d4560edaab718fab84b70c0df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page