#[non_exhaustive]pub struct AdaptationFieldExtension<'a> {
pub ltw: Option<Ltw>,
pub piecewise_rate: Option<u32>,
pub piecewise_rate_reserved: u8,
pub seamless_splice: Option<SeamlessSplice>,
pub af_descriptor_not_present_flag: bool,
pub reserved_flags: u8,
pub trailing: &'a [u8],
}Expand description
Adaptation-field extension (ISO/IEC 13818-1 Table 2-6 / §2.4.3.5,
adaptation_field_extension_flag == 1).
Wire layout after adaptation_field_extension_length: ltw_flag(1) | piecewise_rate_flag(1) | seamless_splice_flag(1) | af_descriptor_not_present_flag(1) | reserved(4), then the gated ltw,
piecewise_rate (reserved(2) | rate(22)) and seamless_splice fields,
then the remainder of the extension: af_descriptor() loop when
af_descriptor_not_present_flag == 0, otherwise reserved bytes.
Every bit the wire carries is kept in a typed field so parse -> serialize
is byte-exact; the only bits not preserved are the spec-mandated 1
marker_bits inside DTS_next_AU. The reserved nibble plus
af_descriptor_not_present_flag were one 5-bit reserved field in the
1995/2000 editions, so a legacy stream (all five bits 1) reads as
af_descriptor_not_present_flag == true.
#[non_exhaustive]: build with AdaptationFieldExtension::new and set
fields, so further additions are not a breaking change again.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.ltw: Option<Ltw>LTW (legal time window), if ltw_flag is set.
piecewise_rate: Option<u32>22-bit piecewise rate, if piecewise_rate_flag is set.
piecewise_rate_reserved: u8The 2 reserved bits preceding piecewise_rate (spec convention
0b11); only written when piecewise_rate is Some.
seamless_splice: Option<SeamlessSplice>Seamless splice info, if seamless_splice_flag is set.
af_descriptor_not_present_flag: boolaf_descriptor_not_present_flag: true means the bytes in
trailing are reserved, false means they are an
af_descriptor() loop (ISO/IEC 13818-1 Table 2-6).
reserved_flags: u8The 4 reserved bits of the flags byte (spec convention 0b1111).
trailing: &'a [u8]Bytes after the optional fields up to the end of
adaptation_field_extension_length: an opaque af_descriptor() loop
(flag false) or reserved bytes (flag true) per Table 2-6.
Implementations§
Source§impl<'a> AdaptationFieldExtension<'a>
impl<'a> AdaptationFieldExtension<'a>
Sourcepub const fn new() -> Self
pub const fn new() -> Self
An extension with no optional fields, spec-convention reserved bits
(all 1), af_descriptor_not_present_flag set and no trailing bytes.
Sourcepub fn serialized_len(&self) -> usize
pub fn serialized_len(&self) -> usize
Number of bytes written by serialize_into,
including the leading adaptation_field_extension_length byte.
Sourcepub fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
pub fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
Serialize into buf (includes the adaptation_field_extension_length byte).
Trait Implementations§
Source§impl<'a> Clone for AdaptationFieldExtension<'a>
impl<'a> Clone for AdaptationFieldExtension<'a>
impl<'a> Copy for AdaptationFieldExtension<'a>
Source§impl<'a> Debug for AdaptationFieldExtension<'a>
impl<'a> Debug for AdaptationFieldExtension<'a>
Source§impl Default for AdaptationFieldExtension<'_>
impl Default for AdaptationFieldExtension<'_>
impl<'a> Eq for AdaptationFieldExtension<'a>
Source§impl<'a> PartialEq for AdaptationFieldExtension<'a>
impl<'a> PartialEq for AdaptationFieldExtension<'a>
Source§impl<'a> Serialize for AdaptationFieldExtension<'a>
Available on crate feature serde only.
impl<'a> Serialize for AdaptationFieldExtension<'a>
serde only.