pub enum RungCodecInvariant {
Av1(Av1Invariant),
H26x(H26xInvariant),
}Expand description
Mandatory AV1 sequence-header fields that every encoder contributing segments to a single rendition MUST agree on.
Why these specific fields: each is part of the codec-init contract
that the player sets up once from av1C and expects to hold for
every segment. The decoder re-parses the inline OBU sequence
header in each segment’s IDR; if its parsed values disagree with
the av1C from init.mp4 on any of these fields, strict decoders
(dav1d in conformance mode, Safari AVFoundation, hls.js+libdav1d)
will reject the segment. Optional fields not listed here (timing
info presence, decoder model presence, film grain present flag,
operating-point details) are tolerated by every major player; we
deliberately don’t check them so that NVENC + QSV + AMF + rav1e
can co-exist on one rendition without cosmetic byte differences
triggering false rejections.
First worker on a rung SETS the invariant. Subsequent workers
(helpers from any vendor) COMPARE; mismatch fails the run loudly
instead of silently corrupting output.
Per-rung codec invariant. Each chunk encoded on a different GPU must agree on
these decode-init fields, or strict players reject the stitched stream. AV1
compares sequence-header fields; H.264/H.265 compare the SPS profile / level
/ chroma / bit-depth / dims (the avcC/hvcC decode-init contract).
Variants§
Av1(Av1Invariant)
H26x(H26xInvariant)
Shared by H.264 + H.265 — a rung is single-codec, so the variant only ever compares chunks of the same codec.
Trait Implementations§
Source§impl Clone for RungCodecInvariant
impl Clone for RungCodecInvariant
Source§fn clone(&self) -> RungCodecInvariant
fn clone(&self) -> RungCodecInvariant
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RungCodecInvariant
impl Debug for RungCodecInvariant
impl Eq for RungCodecInvariant
Source§impl PartialEq for RungCodecInvariant
impl PartialEq for RungCodecInvariant
Source§fn eq(&self, other: &RungCodecInvariant) -> bool
fn eq(&self, other: &RungCodecInvariant) -> bool
self and other values to be equal, and is used by ==.