Skip to main content

Module pump

Module pump 

Source
Expand description

T2miPump — owning-Bytes feed-and-iterate T2-MI pump.

Feed raw bytes (TS-encapsulated or bare T2-MI stream) in; get back an iterator of T2miEvents — one per CRC-valid complete T2-MI packet. Lazy zero-copy: events own their bytes::Bytes slice and expose typed views (T2miEvent::header, T2miEvent::payload) that borrow from it on demand.

use dvb_t2mi::pump::T2miPump;
use dvb_t2mi::payload::AnyPayload;

let mut pump = T2miPump::new(0x0006); // T2-MI PID from the PMT
let ts_packet = [0u8; 188]; // a real TS packet from your source
for event in pump.feed_ts(&ts_packet) {
    if let Ok(AnyPayload::Bbframe(bb)) = event.payload() {
        println!("BBFrame plp_id={}", bb.plp_id);
    }
}

§CRC policy

Every complete packet is validated against its 4-byte CRC-32 trailer (ETSI TS 102 773 Annex A / crate::crc::validate_crc) before being emitted. Packets that fail CRC are silently dropped and counted in Stats::crc_failures. The caller never sees a corrupted packet.

§TS header parsing

T2miPump::feed_ts extracts the MPEG-TS payload in-place — sync byte 0x47, PID, PUSI flag, and adaptation-field skip per ISO/IEC 13818-1 §2.4.3.2 — and passes it to crate::ts::PacketReassembler. No dvb-si dependency is introduced; the TS header reader is a private helper below.

Structs§

Stats
Accumulated pump statistics (monotonically growing across all feed calls).
T2miEvent
One complete, CRC-valid T2-MI packet. Owns its bytes — 'static, cheap clone.
T2miPump
Feed-and-iterate T2-MI pump.