pub struct Packet<'buf> { /* private fields */ }
Expand description
A transport stream Packet
is a wrapper around a byte slice which allows the bytes to be
interpreted as a packet structure per ISO/IEC 13818-1, Section 2.4.3.3.
Implementations§
Source§impl<'buf> Packet<'buf>
impl<'buf> Packet<'buf>
Sourcepub const SYNC_BYTE: u8 = 71u8
pub const SYNC_BYTE: u8 = 71u8
The value 0x47
, which must appear in the first byte of every transport stream packet.
Sourcepub fn is_sync_byte(b: u8) -> bool
pub fn is_sync_byte(b: u8) -> bool
returns true
if the given value is a valid synchronisation byte, the value Packet::SYNC_BYTE
(0x47), which
must appear at the start of every transport stream packet.
Sourcepub fn new(buf: &'buf [u8]) -> Packet<'buf>
pub fn new(buf: &'buf [u8]) -> Packet<'buf>
Panics if the given buffer is less than 188 bytes, or if the initial sync-byte does not
have the correct value (0x47
). Calling code is expected to have already checked those
conditions.
Panics if the buffer size is not exactly Packet::SIZE
(188) bytes, or if the first
byte value is not equal to Packet::SYNC_BYTE
(0x47).
Sourcepub fn try_new(buf: &'buf [u8]) -> Option<Packet<'buf>>
pub fn try_new(buf: &'buf [u8]) -> Option<Packet<'buf>>
Like new()
, but returns None
if the sync-byte has incorrect value (still panics if the
buffer size is not 188 bytes).
Sourcepub fn transport_error_indicator(&self) -> bool
pub fn transport_error_indicator(&self) -> bool
May have been set if some previous processing of this TS data detected at least 1 uncorrectable bit error in this TS packet.
Sourcepub fn payload_unit_start_indicator(&self) -> bool
pub fn payload_unit_start_indicator(&self) -> bool
a structure larger than a single packet payload needs to be split across multiple packets,
payload_unit_start()
indicates if this packet payload contains the start of the
structure. If false
, this packets payload is a continuation of a structure which began
in an earlier packet within the transport stream.
Sourcepub fn transport_priority(&self) -> bool
pub fn transport_priority(&self) -> bool
When 1
, this TS packet has higher priority than other packets of the the same PID having
PID 0
.
Sourcepub fn pid(&self) -> Pid
pub fn pid(&self) -> Pid
The sub-stream to which a particular packet belongs is indicated by this Packet Identifier value.
Sourcepub fn transport_scrambling_control(&self) -> TransportScramblingControl
pub fn transport_scrambling_control(&self) -> TransportScramblingControl
Value of the transport_scrambling_control field.
Sourcepub fn adaptation_control(&self) -> AdaptationControl
pub fn adaptation_control(&self) -> AdaptationControl
The returned enum value indicates if adaptation_field()
, payload()
or both will return
something.
Sourcepub fn continuity_counter(&self) -> ContinuityCounter
pub fn continuity_counter(&self) -> ContinuityCounter
Each packet with a given pid()
value within a transport stream should have a continuity
counter value which increases by 1 from the last counter value seen. Unexpected continuity
counter values allow the receiver of the transport stream to detect discontinuities in the
stream (e.g. due to data loss during transmission).
Sourcepub fn adaptation_field(&self) -> Option<AdaptationField<'buf>>
pub fn adaptation_field(&self) -> Option<AdaptationField<'buf>>
An AdaptationField
contains additional packet headers that may be present in the packet.
Sourcepub fn payload(&self) -> Option<&'buf [u8]>
pub fn payload(&self) -> Option<&'buf [u8]>
The data contained within the packet, not including the packet headers.
Not all packets have a payload, and None
is returned if adaptation_control()
indicates
that no payload is present. None may also be returned if the packet is malformed.
If Some
payload is returned, it is guaranteed not to be an empty slice.