| Codec / encoder | VP9 · libvpx-vp9 -deadline good -cpu-used 2 -row-mt 1 |
|---|
| Command | ffmpeg -hide_banner -loglevel error -y -i SRC.y4m -frames:v 60 -pix_fmt yuv420p10le -c:v libvpx-vp9 -deadline good -cpu-used 2 -row-mt 1 -threads 8 -tile-columns 1 -g 30 -keyint_min 30 -lag-in-frames 19 -auto-alt-ref 1 -profile:v 2 -crf <q> -b:v 0 -f ivf OUT |
|---|
| Points | crf 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10 (low → high quality). Every sequence keeps only the points whose actual bitrate falls inside a window that depends on the resolution: max 25 Mbit/s (720p), 50 Mbit/s (1080p), 150 Mbit/s (4K), 400 Mbit/s (8K), min = max / 12. The other points are not published; the table marks them with “–”. |
|---|
| Profile | Profile 0 (8-bit) / Profile 2 (10-bit) |
|---|
| Level / buffer | libvpx level table (vp9_level_defs); VP9 carries no level in the bitstream, the level is a label only (CPB of 5.2–6.2 tentative in libvpx). Level = the lowest one covering size, sample rate and the actual bitrate; buffer in the name = that level's MaxCPB. |
|---|
| Structure | 60 frames = 2 GOP × 30 (keyframes at frames 0 and 30, closed GOP), 3 B-frames with pyramid, 4:2:0, bit depth as in the source. Container: .ivf. |
|---|
| Verification | reference decoder vpxdec (libvpx, high bit depth) → YUV md5, cross-checked with the ffmpeg decoder md5, 60 frames, keyframes at 0 and 30, profile/level read back with ffprobe, PSNR/SSIM against the source. |
|---|