Skip to content

VMAFx documentation

VMAFx measures perceptual video quality: it scores how a distorted video compares with its reference, the way a viewer would judge it. It is a fork of Netflix's VMAF that keeps Netflix's reference scores, adds CUDA, SYCL, HIP and Metal GPU backends and SIMD paths, and holds every GPU result to the CPU's.

Get VMAFx Score your first pair

First score

build/tools/vmaf \
  --reference testdata/ref_576x324_48f.yuv \
  --distorted testdata/dis_576x324_48f.yuv \
  --width 576 --height 324 --pixel_format 420 --bitdepth 8 \
  --json --output scores.json

Start here

  1. Get VMAFx: a container image, a release download or a source build.
  2. Score your first pair and read the output.
  3. Choose a backend for your hardware.
  4. Use it through the CLI, the C API or the FFmpeg filter.
  5. Look things up in the reference below, or contribute.

Found a problem? Open an issue. Have hardware the project does not own? Run the tester image and send the report.

Backends

Status of 25 features on CUDA, SYCL, HIP and Metal: 90 twins exact, 3 within a libm bound, 7 not declared. Status of 25 features on CUDA, SYCL, HIP and Metal: 90 twins exact, 3 within a libm bound, 7 not declared.

Source: the fragments in scripts/ci/exact_twins.d/ and LIBM_TWINS in scripts/ci/cross_backend_calibration.py. An exact twin returns the CPU extractor's bits (=) and is compared with tolerance 0; a libm-bound twin differs only through the math library, within the stated bound (≤); a dash means no twin of that backend is declared either way.

Data table
Feature CUDA SYCL HIP Metal
adm exact exact exact not declared
cambi exact exact exact not declared
ciede libm bound (≤ 1e-09) libm bound (≤ 1e-09) libm bound (≤ 1e-09) not declared
float_adm exact exact exact exact
float_moment exact exact exact exact
float_motion exact exact exact exact
float_ms_ssim exact exact exact exact
float_ms_ssim_chroma exact exact exact exact
float_ms_ssim_lcs exact exact exact exact
float_psnr exact exact exact exact
float_ssim exact exact exact exact
float_ssim_lcs exact exact exact exact
float_vif exact exact exact exact
motion exact exact exact exact
motion_debug exact exact exact exact
motion_mffw exact exact exact exact
motion_v2 exact exact exact exact
motion_v2_mffw exact exact exact exact
psnr exact exact exact exact
psnr_hvs exact exact exact not declared
speed_chroma exact exact exact not declared
speed_temporal exact exact exact not declared
ssim exact exact exact exact
ssimulacra2 exact exact exact exact
vif exact exact exact not declared

Use VMAFx

Topic Pages
Install and build Getting started, Building on Windows, Docker
Command line CLI reference, --precision, environment variables, vmaf_bench
Integrations FFmpeg, Python library, MATLAB, external resources
Encoding workflows vmaf-tune (fast path, bitrate ladder, codec adapters, recommend, saliency-aware, resolution-aware, HDR and sampling, cache, bisect), per-shot scoring, ROI scoring, BD-rate utilities
Testing on your hardware hardware we need, tester image and macOS bundle, build-from-source tester guide, hardware reports

Reference

Topic Pages
Metrics Feature reference: every extractor, its options and its GPU twins; CAMBI, SSIMULACRA 2, DISTS, confidence interval, bad cases, AOM CTC (AOM), NFLX CTC
Models Overview, VMAF v1, datasets
Backends Backend guide, x86 SIMD, ARM SIMD, CUDA, SYCL / oneAPI, HIP / ROCm, Metal
C API API overview: contexts, pictures, models, features; GPU, DNN sessions, embedded MCP
MCP servers Overview, tool reference, embedded server, release channel
Tiny AI Tiny-AI docs, training, training data, MOS corpora, inference, LOSO evaluation, predictor, conformal VQA, ensemble training kit, ensemble v2 runbook, quantization, quant epsilon, model registry, roadmap
Other FAQ, references, papers, presentations, benchmarks

Project

Topic Pages
Plan and releases Roadmap and release candidates, release process
Contributing Engineering principles, build flags, IDE setup, CI, CI runners, fuzzing
Correctness Cross-backend gate, upstream parity guard, Python process execution
Upstream Upstream watchers, FFmpeg patch refresh
Architecture Repository layout, Python-harness workspace, ADR log
Security Repository security, OpenSSF Scorecard, Scorecard and CodeQL audit, 2026-09-04