Skip to content

Latest commit

 

History

56 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

open-svpflow

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:

open-svpflow running in the browser

This proof of concept runs open-svpflow's analysis pipeline as WASM and renders with WebGPU, using WebCodecs for video decoding and encoding.

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.

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

Releases

Download svpflow1_vs.dll and svpflow2_vs.dll from Releases.

Linux builds aren't included, so build from source.

Build

Rust 1.88 or newer:

cargo build --release -p svpflow1 -p svpflow2

The plugins are written to target/release/svpflow1_vs.dll and target/release/svpflow2_vs.dll.

Licensed under Apache-2.0.