| Codec / encoder | H.264 / AVC · x264 -preset medium, nal-hrd=cbr |
|---|
| Command | ffmpeg -hide_banner -loglevel error -y -i SRC.y4m -frames:v 60 -pix_fmt yuv420p10le -c:v libx264 -preset medium -profile:v high10 -x264-params keyint=30:min-keyint=30:scenecut=0:open-gop=0:bframes=3:b-pyramid=normal:threads=8:nal-hrd=cbr -level <level> -b:v <target> -maxrate <target> -bufsize <vbv> -f h264 OUT |
|---|
| Points | target T = 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 180, 200, 220, 240, 280, 320, 360, 400, 440, 480 Mbit/s (step 10 up to 160, 20 up to 240, 40 up to 480; top = the codec's 8K60 limit at level 6.1); calibrated to 96–100 % of T; the ladder stops when a target is unreachable for the content |
|---|
| VBV | min(level MaxCPB, 1 s × target) |
|---|
| Profile | High (8-bit) / High 10 (10-bit) |
|---|
| Level / buffer | H.264 Annex A Table A-1; bitrate and CPB limits × cpbBrNalFactor (High 1500, High 10 3600); level written in the SPS. 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: .264 (Annex B). |
|---|
| Verification | reference decoder JM 19.1 ldecod (coded-frame buffer raised to 64 MB for 8K) → 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. |
|---|