use std::fs;
use mp4_emsg::EmsgBox;
fn main() {
let path = concat!(
env!("CARGO_MANIFEST_DIR"),
"/../fixtures/shared/scte35_emsg_v0.bin"
);
let bytes = fs::read(path)
.unwrap_or_else(|e| panic!("committed fixture {path} could not be read: {e}"));
let b = EmsgBox::parse(&bytes).unwrap();
println!("emsg box: {} bytes (version {})", bytes.len(), b.version());
println!(" scheme_id_uri: {:?}", b.scheme_id_uri);
println!(" value: {:?}", b.value);
println!(" timescale: {}", b.timescale);
println!(" presentation: {:?}", b.presentation_time);
println!(" event_duration:{}", b.event_duration);
println!(" id: {}", b.id);
println!(" message_data: {} bytes", b.message_data.len());
println!(" is_scte35: {}", b.is_scte35());
if b.is_scte35()
&& let Some(&first) = b.message_data.first()
{
println!(" message_data[0] = 0x{first:02X} (SCTE 35 table_id)");
}
let out = b.to_vec().unwrap();
assert_eq!(
out, bytes,
"serialize must be byte-identical to the fixture"
);
assert_eq!(out.len(), b.serialized_len());
println!("round-trip byte-exact + size recomputed: OK");
}