Skip to main content

open-svpflow

open-svpflow is a drop-in open-source replacement for SVPFlow's VapourSynth plugins in Rust. It produces the same frames as SVPFlow (matched to version 4.3.0.168) and runs faster on both CPU and GPU.

It started as a side project, mostly to see if I could get couler's smoothie-rs running in a browser. The demo is the result:

open-svpflow running in the browser

This proof of concept runs open-svpflow client-side in the browser as WASM and renders with WebGPU, using WebCodecs. The browser version runs about 2-3x slower than the native plugins, since WASM can't use AVX2 or AVX-512. If it's a lot slower than that for you, check chrome://gpu (or about:support for Firefox) and make sure hardware acceleration and WebGPU are enabled, otherwise it falls back to rendering on the CPU.

What's implemented

  • 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.
  • Native I444 input and output, which the original SVPFlow doesn't support.
  • 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).

Output matches the original byte for byte in everything I've tested, on both CPU and GPU. But 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 through smoothie's VapourSynth script (Ryzen 5 7600X, RTX 4060, Linux):

Preset Path Original open-svpflow Speed vs original Output
faster CPU 305.2 fps 819.2 fps 2.68x identical
faster GPU 1110.8 fps 1660.5 fps 1.49x identical
medium (default) CPU 225.1 fps 535.7 fps 2.38x identical
medium (default) GPU 310.2 fps 602.8 fps 1.94x identical

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.

Install

pip install open-svpflow

It install 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.

Releases

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

New 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 bash .github/build.sh <target> 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.0

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.0
File
open_svpflow-0.1.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
open_svpflow-0.1.0-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details
open_svpflow-0.1.0-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details
open_svpflow-0.1.0-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
open_svpflow-0.1.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 3.9 MB

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

Download URL open_svpflow-0.1.0-py3-none-win_amd64.whl
Size 701.3 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
80243947685fcd0b4f271ecd9a9777a204edff82ee08b1afe8039f4e5bf46943
BLAKE2b-256 checksum
How to use checksums
960b62d41969960e2caac802e44cfd065c2b392014e9b7f7e643217e3448c221
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 Sep 30, 2026.

Transparency log

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

Download URL open_svpflow-0.1.0-py3-none-manylinux_2_34_x86_64.whl
Size 921.0 kB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
803040a8c55f673ba347e6cb5099c1d6a7dd9af576ace377c76747db5ede8e58
BLAKE2b-256 checksum
How to use checksums
ed29d06883bce670912e2f54b37763124ec1ac4b7cf22e97267893e7af7523b3
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 Sep 30, 2026.

Transparency log

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

Download URL open_svpflow-0.1.0-py3-none-manylinux_2_34_aarch64.whl
Size 746.9 kB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
39d1eae75db41555262788c61c14ff64d21262ae3f64276f3d7b8f5249405b3e
BLAKE2b-256 checksum
How to use checksums
7b8f4b7c471ae994e71893f28b065d41ead6028f6e6d921bf656766debf33c29
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 Sep 30, 2026.

Transparency log

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

Download URL open_svpflow-0.1.0-py3-none-macosx_11_0_x86_64.whl
Size 849.6 kB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
a6af98880a431cbf6966610230cea5c0d719a4d489f643cf8b24a1cc0208d9f9
BLAKE2b-256 checksum
How to use checksums
4969f09a0ce3a72eda9ef43b614c7279921cf6840265121ad748af133764c62e
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 Sep 30, 2026.

Transparency log

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

Download URL open_svpflow-0.1.0-py3-none-macosx_11_0_arm64.whl
Size 685.4 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
db5887da1b1b0bac4dcf14aba755c4d2ef05f14e5fb77d008df0f012de266955
BLAKE2b-256 checksum
How to use checksums
b914b7927a4390475bdb36dfa7c97800cfc465c8fce1c45b0d020d9ee6ed6178
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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