Skip to main content

ServiceDescriptionTable

Struct ServiceDescriptionTable 

Source
pub struct ServiceDescriptionTable {
    pub transport_stream_id: u16,
    pub other_transport_stream: bool,
    pub version_number: u8,
    pub current_next_indicator: bool,
    pub section_number: u8,
    pub last_section_number: u8,
    pub original_network_id: u16,
    pub services: Vec<SdtService>,
}
Expand description

Parsed DVB Service Description Table (ETSI EN 300 468 §5.2.3 Table 5).

The SDT is a DVB Service Information table carried on the fixed PID SDT_PID (0x0011). Sections describing the actual TS use table_id == SDT_ACTUAL_TABLE_ID (0x42); sections describing other TSs use SDT_OTHER_TABLE_ID (0x46). It shares the 8-byte long-form PSI section header (parsed and CRC-verified the same way as PAT/PMT), then carries original_network_id (16 bits) plus one reserved byte, then a loop of SdtService entries, then the CRC.

transport_stream_id is taken from the table_id_extension slot per §5.2.3. The service loop’s per-service descriptor blocks most commonly carry the DVB service_descriptor (tag 0x48), which the crate’s descriptor decoder lifts into crate::descriptor::ServiceDescriptor — the source of a service’s human-readable name and provider.

Fields§

§transport_stream_id: u16

transport_stream_id (from table_id_extension).

§other_transport_stream: bool

true when the section’s table_id was 0x46 (describes another TS); false for 0x42 (the actual TS carrying the SDT).

§version_number: u8

5-bit version_number.

§current_next_indicator: bool

current_next_indicator.

§section_number: u8

section_number.

§last_section_number: u8

last_section_number.

§original_network_id: u16

original_network_id.

§services: Vec<SdtService>

Service entries carried in this section.

Implementations§

Source§

impl ServiceDescriptionTable

Source

pub fn parse(section: &[u8]) -> Result<Self, TsError>

Parse a single SDT section. The slice must run from table_id through the CRC trailer (i.e. the pointer_field has already been skipped). Accepts both the actual-TS (0x42) and other-TS (0x46) table_ids.

Trait Implementations§

Source§

impl Clone for ServiceDescriptionTable

Source§

fn clone(&self) -> ServiceDescriptionTable

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ServiceDescriptionTable

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ServiceDescriptionTable

Source§

fn default() -> ServiceDescriptionTable

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.