pub struct Demultiplex<Ctx: DemuxContext> { /* private fields */ }
Expand description

Transport Stream demultiplexer.

Uses the DemuxContext passed to new() to create Filters for processing the payloads of each packet discovered in the TransportStream.

§Incremental parsing

Successive sections of transport stream data can be passed in order to push(), and the demultiplexing process will resume at the start of one buffer where it left off at the end of the last. This supports for example the processing of sections of TS data as they are received from the network, without needing to copy them out of the source network buffer.

Implementations§

source§

impl<Ctx: DemuxContext> Demultiplex<Ctx>

source

pub fn new(ctx: &mut Ctx) -> Demultiplex<Ctx>

Create a Dumultiplex instance, and populate it with an initial PacketFilter for handling PAT packets (which is created by the given DemuxContext object). The returned value does not retain any reference to the given DemuxContext reference.

source

pub fn push(&mut self, ctx: &mut Ctx, buf: &[u8])

Parse the Transport Stream packets in the given buffer, using functions from the given DemuxContent object

Auto Trait Implementations§

§

impl<Ctx> RefUnwindSafe for Demultiplex<Ctx>
where <Ctx as DemuxContext>::F: RefUnwindSafe,

§

impl<Ctx> Send for Demultiplex<Ctx>
where <Ctx as DemuxContext>::F: Send,

§

impl<Ctx> Sync for Demultiplex<Ctx>
where <Ctx as DemuxContext>::F: Sync,

§

impl<Ctx> Unpin for Demultiplex<Ctx>
where <Ctx as DemuxContext>::F: Unpin,

§

impl<Ctx> UnwindSafe for Demultiplex<Ctx>
where <Ctx as DemuxContext>::F: UnwindSafe,

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.