* #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>
7.7 KiB
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 |