open-svpflow is a drop-in open-source replacement for SVPFlow's VapourSynth plugins in Rust.
I made it as a side project, mostly to see if I could get couler's smoothie-rs running in a browser. The demo is the result:
This proof of concept runs open-svpflow's analysis pipeline as WASM and renders with WebGPU, using WebCodecs for video decoding and encoding.
svpflow1:SuperandAnalyse, including super-frame pyramids, multi-level predictors, SAD/SATD and chroma costs, and hex2, UMH, and exhaustive motion search.svpflow2:SmoothFpsrendering 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.
Output is close, but not byte-exact (yet)
Benchmarked on a 7,992 frame video with smoothie's faster preset:
| Path | Original | open-svpflow | Speed vs original | SSIM parity | PSNR |
|---|---|---|---|---|---|
| CPU | 61.50 fps | 61.45 fps | 0.999x (0.1% slower) | 98.75% | 45.24 dB |
| GPU | 83.58 fps | 82.19 fps | 0.983x (1.7% slower) | 98.77% | 43.57 dB |
Download svpflow1_vs.dll and svpflow2_vs.dll from Releases.
Linux builds aren't included, so build from source.
Rust 1.88 or newer:
cargo build --release -p svpflow1 -p svpflow2The plugins are written to target/release/svpflow1_vs.dll and target/release/svpflow2_vs.dll.
Licensed under Apache-2.0.
