Files
d24ce15e29 #1221: H.264 High 10 and High 10 Intra export in the built-in encoder (#1580)
* #1221: H.264 High 10 and High 10 Intra export in the built-in encoder

Stage 1 of #1221 (plus the intra-only option of stage 5):

- h264enc is generic over the sample type (u8 at 8 bits, u16 at 9-10 bits):
  QP' = QP + QpBdOffset for quantisation and lambdas (QPY down to -12 at
  10 bits), mb_qp_delta range/wrap, chroma QP mapping, deblocking alpha/beta/tC0
  scaled to the bit depth, clipping in prediction, interpolation and
  reconstruction. SPS bit depths, profile_idc 110, constraint_set3 for High 10
  Intra, avcC high-profile fields, High 10 cpbBrVclFactor for level choice.
  New YuvFrame16 / Encoder::encode16, EncoderConfig::bit_depth / intra_only.
- 8-bit output is byte-identical to main's encoder (pinned_decisions passes;
  streams compared across profiles, presets, rate modes, slices, B-frames,
  threads, two-pass, odd sizes).
- Oracle tests: ffmpeg decodes 10- and 9-bit streams bit-identical to the
  reconstruction (presets, B-frames, slices, odd sizes, QP 22-46, CRF -12,
  CBR, intra, avcC); ffprobe reports High 10 / High 10 Intra, yuv420p10le.
- Export: H264Profile::High10 (10-bit SDR via rgba_to_yuv420_10, HDR from the
  float frames), h264_intra_only, MP4 / MOV / MXF OP1a (10-bit descriptor,
  intra coding label), hardware encoders decline both, export dialog profile
  entry ("10-bit color" on hover) and an All Intra checkbox, the bit depth in
  the export summary, two Broadcast presets, flat h264Profile / h264IntraOnly
  command parameters.

Rebased on main: ported into the split slice/ modules, the u32 quantisers
(exactness tests now cover QP' up to 63), main's Encoder::install and
prepare_ahead (High 10 converts in encode), export_mode/settings.rs,
tests/it/high10_oracle.rs; the new strings in every complete catalog
(es, fr, id, it, ja, ko, pt-br, zh-cn, de, ru, cs, pl, sv, tr, bs).

Not yet: High 4:2:2, High 4:4:4 Predictive, lossless, and >8-bit precision
from SDR compositing (SDR frames still arrive as RGBA8).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VECsf5SeZDHM5RDmcvRkM

* #1221: codec-parity header and revision history for High 10

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* export: describe High 10 Master as a 10-bit master; list all APV profiles in file.exportMedia

SDR exports are rendered at 8 bits before the 10-bit conversion, so the preset
cannot promise a master without banding. Catalog keys and translations updated
in all 15 locales. Also list 4444-10, 4444-12 and 400-10, which apv_profile
already accepts.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: FredApps <FredApps@users.noreply.github.com>
2026-11-05 11:13:49 +01:00

7.7 KiB
Raw Permalink Blame History

Codec parity

Last reviewed: 2026-10-10 · Last updated: 2026-11-05 · Change: minor (H.264 High 10 and High 10 Intra in the built-in encoder, #1221) · Target: Adobe Premiere Pro 2026 (26.5.2) and Media Encoder 2026

Video and audio codecs, decode and encode, with fidelity and how each is tested. Containers, project and interchange files are in file-format-parity.md; hardware paths per platform in hardware-parity.md. All our codecs are clean-room pure Rust from public specifications (AGENTS.md §2); ffmpeg is a test oracle only.

Premiere's list comes from Adobe's published supported-formats pages and the names of the installed bundle's MediaIO/systempresets and Frameworks entries (listings only, never their contents). Percent is ready-for-real-work for that codec: depth, profiles, speed.

Video

Codec Premiere Our decode Our encode Fidelity and tests % Est.
H.264 / AVC decode all common profiles incl. High 10, 4:2:2 (XAVC S-I, AVC-Intra); encode 8/10-bit own decoder, 8-bit 4:2:0 only (Baseline / Main / High, CABAC / CAVLC); no High 10 / 4:2:2 / 4:4:4, interlaced field / MBAFF, lossless own encoder (High / Main / Baseline 8-bit, High 10 and High 10 Intra 10-bit, B-frames, CBR / VBR / 2-pass / CRF); 4:2:0 only, no 4:2:2 / 4:4:4 / lossless (#1221); hardware VideoToolbox / NVENC (8-bit) decode bit-exact on 37+ conformance streams, 500–600 fps 1080p; encode ffprobe-checked, byte-identical across machines 65% 20–35 h
HEVC / H.265 decode Main, Main 10, 4:2:2 10 (XAVC HS); encode 8/10-bit, HDR own decoder Main / Main 10 / Main Still Picture, bit-exact on 41 fixtures, ~225 fps 1080p; no 4:2:2 / RExt hardware only (VideoToolbox 8-bit; NVENC 8-bit and Main 10 HDR on Windows); no software encoder NVENC round trip 48.9 dB (8-bit), 71.1 dB (10-bit); ffprobe 60% 30–60 h
ProRes 422 family / 4444 / XQ decode + encode all own decode + encode, all six profiles, alpha yes (export UI exposes 422 flavours; 4444 / XQ request #342) ±1 LSB, 318 fps; alpha final-run conformance and native macOS HD decode checked (details) 85% 3–6 h
ProRes RAW decode none (#345) — — 0% 30–50 h (spec availability uncertain)
DNxHD / DNxHR decode + encode, MXF / MOV own decode (all SMPTE ST 2019-1 CIDs, 8/10/12-bit, 4:2:2 / 4:4:4, interlaced, alpha) and encode LB / SQ / HQ / HQX / 444 yes, MOV + MXF within IDCT precision of ffmpeg on 22 fixtures 90% 2–4 h
AV1 decode (hardware on Windows); export through Media Encoder plug-ins / recent versions own decoder Main 8/10-bit, all tools, film grain, bit-exact vs libdav1d on 41 vectors; hardware on Windows none slow in software (~4 fps 1080p single-thread) 55% 30–50 h (encoder + speed)
VP9 not a Premiere import format on all versions own decoder profiles 0–3, 8/10/12-bit, bit-exact on 50+ fixtures, frame threading none conformance ahead —
APV (RFC 9924) — (Samsung's pro codec; not in Premiere) own decode own encode spec tests ahead —
MPEG-2 / MPEG-1 decode incl. 4:2:2 (IMX, XDCAM); encode DVD / Blu-ray / MXF own decoder (4:2:2, interlaced, field pictures, IEEE 1180 IDCT) none conformance fixtures 60% 20–35 h (encoder)
Motion JPEG decode + encode yes yes (MOV) — 90% —
JPEG 2000 (MXF, DCP) decode + encode (Kakadu) none none — 0% 40–70 h
JPEG XS decode (libjpegxs) none none — 0% 20–40 h
DV / DVCPRO / DV100 decode + encode none none — 0% 15–25 h
MPEG-4 Part 2 decode none none — 0% 10–20 h
Apple Intermediate Codec (icod, iMovie / Final Cut) not in Adobe's supported-formats list none (#3646): Apple publishes no specification, so a clean-room decoder needs a maintainer ruling (AGENTS.md §2); import names the codec and the Project panel's Unreadable badge shows "no decoder for Apple Intermediate Codec video" on hover none — 0% — (no estimate without a specification)
WMV / VC-1 decode, encode on Windows none none — 0% 20–35 h
CinemaDNG / DNG decode own decoder (#1065): uncompressed and lossless JPEG raw, Bayer and LinearRaw, DNG colour model to linear Rec. 709 floats; folders of .dng frames as one clip with the CinemaDNG frame rate and time code; no lossy / JPEG XL DNG, MXF-wrapped CinemaDNG, opcode lists or Raw settings UI — raw samples bit-exact (and identical to LibRaw's on our synthetic files), processing against hand-computed values 60% 10–20 h
Camera RAW: R3D (incl. R3D NE), ARRIRAW, Sony RAW / X-OCN, Canon RAW, BRAW (plug-in) decode (vendor SDKs) none (#383) — — 0% 50–90 h for the ones with public specs; vendor-SDK-only formats need an owner decision
GIF (animated) encode decode as still encode — 80% —
Uncompressed / v210 / RGB decode + encode (AVI, MOV) partial (MOV PCM-style video not verified) none — 30% 8–15 h

Audio

Codec Premiere Our decode Our encode Fidelity and tests % Est.
PCM (WAV, BWF, AIFF, MOV, MXF, Blu-ray / DVD LPCM) yes yes, BWF timecode WAV, AIFF, MOV, MXF sample-exact 95% —
AAC (LC, HE, LATM) decode + encode own decoder (LC, HE core), LATM own LC encoder loudness oracle vs ffmpeg 90% 3–5 h
AC-3 decode (licensed) own decoder (ATSC A/52) none conformance 80% —
E-AC-3 (Dolby Digital Plus) decode own decoder (ATSC A/52 Annex E, #647): independent substream, 1–6 blocks, spectral extension; no adaptive hybrid transform, enhanced coupling or 7.1 dependent substreams (plays the 5.1 core) none SNR vs ffmpeg 65–91 dB (raw, MP4, MOV, Matroska, TS) 75% 10–20 h
MP3 / MP2 decode + MP3 encode MP3: symphonia (MPL-2.0); MP1 / MP2: own decoder (ISO/IEC 11172-3 / 13818-3, #809), also the bit rate / mode combinations ffmpeg writes by default (mono 384 kbit/s); in raw, MP4, MOV (#800), Matroska, TS, PS none MP1 / MP2: SNR vs ffmpeg 73–84 dB; MP2 in MP4 / MOV within 1e-4 of ffmpeg, also after a seek (#800) 65% 10–20 h (MP3 encoder)
Opus — (not a Premiere import format) own decoder, RFC 8251 range-exact none conformance vectors ahead —
FLAC, ALAC, Vorbis partial decode (symphonia), also FLAC in MP4 / MOV (#603) none — 70% 3–6 h
WMA decode on Windows none none — 0% 10–20 h

Summary

  • Ahead of Premiere: VP9, Opus, APV decode / encode; bit-exact software decoders everywhere, including Linux and FreeBSD, where Premiere does not run.
  • Behind, by user impact: 10-bit / 4:2:2 H.264 and HEVC in software (G3), E-AC-3, camera RAW, HEVC and AV1 software encoding, MPEG-2 / JPEG 2000 encoding for broadcast and DCP, DV, WMV.
  • Codec dimension: ~60%, 150–250 h (target-app-parity.md).

Revision history

Date Change Summary
2026-11-05 minor H.264 High 10 and High 10 Intra in the built-in encoder (#1221)
2026-11-02 minor Apple Intermediate Codec row: named on import and in the no-decoder error, no decoder (#3646)
2026-10-22 minor ProRes alpha final-run syntax regression tests and native macOS HD decode validation
2026-10-11 minor CinemaDNG / DNG decode (#1065)
2026-10-10 major Created: codec-by-codec comparison with Premiere 26.5.2 from the codec crates' READMEs, the export format registry and the installed bundle's listings