Skip to main content

parse_pack_header/
parse_pack_header.rs

1use broadcast_common::Parse;
2/// Parse one pack header from inline bytes and print the SCR + mux_rate.
3///
4/// ```sh
5/// cargo run -p mpeg-ps --example parse_pack_header
6/// ```
7use mpeg_ps::PackHeader;
8
9fn main() {
10    // A minimal pack header (from the fixture pattern):
11    // start_code 0x000001BA, SCR=0, mux_rate=0x10CD8E, reserved=0x1F, stuffing=0
12    let bytes = [
13        0x00, 0x00, 0x01, 0xBA, 0x44, 0x00, 0x04, 0x00, 0x04, 0x01, 0x43, 0x36, 0x3B, 0xF8,
14    ];
15    let header = PackHeader::parse(&bytes).unwrap();
16    println!("pack_start_code:       0x000001BA");
17    println!("SCR base:              {}", header.scr.base);
18    println!("SCR extension:         {}", header.scr.extension);
19    println!("SCR ticks:             {}", header.scr.ticks());
20    println!("SCR seconds:           {:.6}", header.scr.seconds());
21    println!(
22        "program_mux_rate:      {} ({} B/s)",
23        header.program_mux_rate,
24        header.program_mux_rate * 50
25    );
26    println!("pack_stuffing_length:  {}", header.stuffing_length);
27    println!("reserved:              {}", header.reserved);
28}