use crate::{ParsedBox, Result};
#[derive(Debug, Clone)]
pub struct TfhdBox {
pub track_id: u32,
pub default_sample_duration: Option<u32>,
pub default_sample_size: Option<u32>,
pub base_data_offset: Option<u64>,
}
impl TfhdBox {
pub fn new(box_: &mut ParsedBox) -> Result<Self> {
let reader = &mut box_.reader;
let flags = box_.flags.unwrap();
let mut default_sample_duration = None;
let mut default_sample_size = None;
let mut base_data_offset = None;
let track_id = reader.read_u32()?;
if (flags & 0x000001) != 0 {
base_data_offset = Some(reader.read_u64()?);
}
if (flags & 0x000002) != 0 {
reader.skip(4)?;
}
if (flags & 0x000008) != 0 {
default_sample_duration = Some(reader.read_u32()?);
}
if (flags & 0x000010) != 0 {
default_sample_size = Some(reader.read_u32()?);
}
Ok(Self {
track_id,
default_sample_duration,
default_sample_size,
base_data_offset,
})
}
}