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.