Skip to main content

open-svpflow

PyPI version PyPI downloads CI status Total downloads Last commit

open-svpflow is a drop-in open-source replacement for SVPFlow's VapourSynth plugins in Rust, reverse engineered from version 4.3.0.168. It runs up to 3x faster on CPU and up to 2.6x faster on GPU, adds a few things the original doesn't have, and works in places where the original doesn't.

It started as a side project, mostly to see if I could get couleur's smoothie-rs running in a browser. That became the demo, which runs open-svpflow client-side as WASM with WebGPU (about 2-3x slower than native, since WASM can't use AVX2). It was only meant as a proof of concept, but it grew into another project, interpolini, which is meant as a showcase of how much faster you can get without VapourSynth and Python in the way.

Parity with SVPFlow

  • svpflow1: Super and Analyse, including super-frame pyramids, multi-level predictors, SAD/SATD and chroma costs, and hex2, UMH, and exhaustive motion search.
  • svpflow2: SmoothFps rendering for algorithms 1, 2, 11, 13, 21, 22, and 23, with scene handling, masks, CPU rendering, and the GPU path.
  • AviSynth+ support with the original function names.

Output matches the original byte for byte in everything I've tested, on both CPU and GPU. GPU algorithms 1 and 2 are the exception, since the original reads uninitialized memory there and doesn't even match its own previous run (±1 on about 0.01% of pixels, same as ours). So it should work anywhere SVPFlow already does, whether that's smoothie, SVP itself, mpv or your own scripts.

Benchmarked on a 1080p 200 fps Counter-Strike 2 clip interpolated to 1920 fps with smoothie's settings (Ryzen 5 7600X, RTX 4060, Linux). You can run it yourself with scripts/bench.py:

Preset Path Original open-svpflow Speed vs original
faster CPU 304.2 fps 901.4 fps 2.96x
faster GPU 1262.9 fps 2597.5 fps 2.06x
medium (default) CPU 224.6 fps 620.9 fps 2.76x
medium (default) GPU 324.1 fps 848.6 fps 2.62x

The speedup mainly comes from AVX2/AVX-512 motion search, running part of that search on the GPU (when using GPU mode), and caching work the original redoes for every frame.

On top of SVPFlow

  • VapourSynth API 4 support, so it works on current VapourSynth (R80 and newer can't load the original at all, since it only has API 3).
  • Native I444 input and output.
  • SmoothFpsBlend, which interpolates and frame-blends on the GPU in one go, so it's about 2x faster than blending separately (build with --no-default-features if you don't want it).
  • Halve and DoubleVectors, which let the motion search run on a half-size frame, a lot faster for a small quality loss.
  • A C API for running it without VapourSynth or AviSynth (cargo build --release -p svpflow-capi).

SmoothFps options

All of these are off by default.

  • mask:{peel:true} learns the HUD and its opacity for each pixel from how the scene moves behind it, takes it off before the warp and puts it back after. Tune it with mask:{peel:{limit:6}}.
  • mask:{still:true} finds text, logos and other things that stay in place and keeps them from smearing. Tune it with mask:{still:{limit:4.5,edge:5,tolerance:30}}. svp2.Still(clip, source) does the same for frames from any other interpolator.
  • dedup:0.5 skips a frame that repeats the one before it and stretches the next motion over both frame times. The number is how different two frames can be and still count as a repeat.

Install

pip install open-svpflow

It installs with an assumption that you already have VapourSynth installed in the same Python environment (we deliberately not include it as a dependency). Wheels are available for Windows x64, Linux x64 and arm64, and macOS x64 and arm64.

AviSynth

The plugins also load in AviSynth+ 3.6 or newer:

LoadPlugin("svpflow1_vs.dll")
LoadPlugin("svpflow2_vs.dll")
super = SVSuper("{gpu:1}")
vectors = SVAnalyse(super, "{}")
SVSmoothFps(super, vectors, "{rate:{num:5,den:2}}", mt=8)

Releases

Download the latest nightly builds for Windows, Linux, and macOS from Releases. Versioned releases follow semver and are published to PyPI.

Releases are reproducible and immutable once published. To reproduce the binaries, check out the release commit in a clean directory and use the matching build environment from the build workflow. Run build.sh with the target from the release's BUILD.txt, then compare the files in dist with the extracted release.

Build

Rust 1.88 or newer:

cargo build --release -p svpflow1 -p svpflow2

The plugins end up in target/release: svpflow1_vs.dll and svpflow2_vs.dll on Windows, libsvpflow1_vs.so and libsvpflow2_vs.so on Linux, .dylib on macOS.

Licensed under Apache-2.0.

Metadata

Release files for open-svpflow 0.1.1

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

Built distributions (wheels)

Table of built distributions (wheels) for open-svpflow 0.1.1
File
open_svpflow-0.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
open_svpflow-0.1.1-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details
open_svpflow-0.1.1-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
open_svpflow-0.1.1-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
open_svpflow-0.1.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 4.7 MB

Release files / open_svpflow-0.1.1-py3-none-win_amd64.whl

Download URL open_svpflow-0.1.1-py3-none-win_amd64.whl
Size 958.9 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
f91f212278c2ce46dcf5a60378816347e8e414ecaf52b7553a98dbcbacacb738
BLAKE2b-256 checksum
How to use checksums
e6411d57fc9a493ed6963acb29f60300d618510e51496423e05c12486610fdee
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 Oct 15, 2026.

Transparency log

Release files / open_svpflow-0.1.1-py3-none-manylinux_2_34_x86_64.whl

Download URL open_svpflow-0.1.1-py3-none-manylinux_2_34_x86_64.whl
Size 1.1 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e5e8ecdc3b6ad90aca0c440f345cdaa308837727885137b3bc4abaac78c5bdd4
BLAKE2b-256 checksum
How to use checksums
6f5529f7a06d5932204aa7aac44520007adfcfa426b71d9650cf6514a096c8b6
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 Oct 15, 2026.

Transparency log

Release files / open_svpflow-0.1.1-py3-none-manylinux_2_34_aarch64.whl

Download URL open_svpflow-0.1.1-py3-none-manylinux_2_34_aarch64.whl
Size 867.4 kB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
ac134abcdc1535c2dcff94ba164697355db24c43b2f0ea23fe8bb91ec2d73001
BLAKE2b-256 checksum
How to use checksums
2d397b322d37d6a720bbfdda574d669afd81d284b137d6f324de4fc2d90dab72
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 Oct 15, 2026.

Transparency log

Release files / open_svpflow-0.1.1-py3-none-macosx_11_0_x86_64.whl

Download URL open_svpflow-0.1.1-py3-none-macosx_11_0_x86_64.whl
Size 979.3 kB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
19ef08addcccc6ca00aab0a372554695a329123146d98d640d324b6c2d04182d
BLAKE2b-256 checksum
How to use checksums
3e7f2b65380492252a3bd0d99fc4b32483df0e14e72b5c8910245329cd566bb1
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 Oct 15, 2026.

Transparency log

Release files / open_svpflow-0.1.1-py3-none-macosx_11_0_arm64.whl

Download URL open_svpflow-0.1.1-py3-none-macosx_11_0_arm64.whl
Size 797.5 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fe9b5812eb3c240db84f45b32bb7c4a4d9c2ba52a54c4ed80caceceb71b3a224
BLAKE2b-256 checksum
How to use checksums
6cb5e163a6505978111554cc6abd150d5c6581b7f8dd0eca0be279b7a7583dad
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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

5 release files

0.1.0

5 release files

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