TL;DR
Halide Compression released fcvvdp, a C implementation of the University of Cambridge CVVDP perceptual metric. Benchmarks on a Core i7-13700K show large reductions in memory use and CPU cycles and an ~18% wall-clock speedup versus the reference cvvdp, though fcvvdp currently runs single-threaded.
What happened
A repository named fcvvdp provides a fast C implementation of the CVVDP perceptual quality metric, with source and build files hosted on GitHub. The project includes both a command-line binary and a library distribution built with Zig; build instructions recommend Zig 0.15.x and list zlib-rs and libunwind among dependencies. Maintainers published benchmark comparisons against an existing cvvdp binary using a Core i7-13700K Linux system. In those tests fcvvdp consumed far less memory and CPU cycles and completed the sample job faster in wall time, but the implementation currently runs on a single CPU thread while the reference cvvdp used multiple threads. The code is released under the Apache 2.0 license and credits a prior implementation named Vship (MIT license) as its basis. The repository shows a small contributor base and an initial 0.0.1 release.
Why it matters
- Large resource reductions could make CVVDP-based comparisons feasible on lighter hardware or in batch workflows where memory footprint matters.
- Lower CPU cycle usage can cut compute costs when running large-scale or repeated perceptual comparisons.
- A single-threaded, lower-overhead implementation may simplify integration into tools that require predictable per-process resource use.
- Remaining single-threaded limits mean performance characteristics may change if and when multithreading is added.
Key facts
- fcvvdp is a C implementation of the CVVDP perceptual quality metric, developed by Halide Compression.
- Benchmarks run on a Core i7-13700K show fcvvdp used ~86.7 MB peak RSS versus ~1.00 GB for cvvdp (≈91% less RAM).
- Measured CPU cycles were ~82.8G for fcvvdp vs ~747G for cvvdp (≈88% fewer cycles).
- Wall-clock time in the provided test was 16.1s for fcvvdp vs 19.6s for cvvdp (≈17.9% faster).
- Other benchmark deltas included ~59% fewer cache misses and ~92% fewer branch misses for fcvvdp in that test.
- fcvvdp currently runs with one CPU thread; the referenced cvvdp used multiple threads in the comparison.
- Build prerequisites listed: zlib-rs, libunwind, and Zig 0.15.x; recommended build: zig build –release=fast (optionally -Dflto=true).
- The project is offered under the Apache 2.0 license and acknowledges Vship (MIT license) as the implementation it derived from.
- Repository metadata: 7 stars, 1 fork, 2 contributors; primary languages C (~83.3%) and Zig (~16.7%).
- A library target (libcvvdp) and a header (cvvdp.h) are produced by the build; command-line usage and options are provided in the repo.
What to watch next
- Whether multithreading support will be introduced to close the parallelism gap with the reference cvvdp (not confirmed in the source).
- Additional benchmark runs on different CPUs and operating systems to verify performance consistency (not confirmed in the source).
- New releases or versioned improvements beyond the initial 0.0.1 release (not confirmed in the source).
Quick glossary
- CVVDP: A perceptual quality metric designed to predict visible differences between a reference and a distorted image or video.
- peak RSS: Peak resident set size: the maximum amount of physical memory used by a process during execution.
- CPU cycles: A low-level measure of total processor cycles consumed while running a program; useful for comparing compute effort.
- FLTO: Full link-time optimization, a compiler optimization stage that performs cross-module optimization at link time.
- Zig: A programming language and build system used in the fcvvdp project to produce binaries and libraries.
Reader FAQ
What is fcvvdp?
fcvvdp is a C implementation of the CVVDP perceptual quality metric published by Halide Compression.
How do I build the binary?
Install the listed dependencies (zlib-rs, libunwind, Zig 0.15.x) and run: zig build –release=fast; adding -Dflto=true enables FLTO.
Is fcvvdp multithreaded?
No — the repository notes fcvvdp currently runs with a single CPU thread while the compared cvvdp used multiple threads.
Under what license is fcvvdp distributed?
fcvvdp is distributed under the Apache 2.0 license; it credits Vship as a derivation source under the MIT license.
Does fcvvdp match the original Cambridge CVVDP exactly?
not confirmed in the source
fcvvdp A fast C implementation of the CVVDP metric (arXiv) from the University of Cambridge. More information about how CVVDP works according to this implementation is provided here. Benchmarks Benchmarked…
Sources
- Fast Cvvdp Implementation in C
- gfxdisp/ColorVideoVDP: Colour video VDP
- ColorVideoVDP: A visual difference predictor for image, video …
- ColorVideoVDP: A visual difference predictor for image, …
Related posts
- Best Japanese Learning Tools 2025: Winners Across Apps, Anki, and Readers
- Slaughtering Competition Problems with Quantifier Elimination in Sage
- Unity’s Mono runtime falls behind modern .NET — why your C# runs much slower