use crate::{ParsedBox, Result};
#[derive(Debug, Clone)]
pub struct MdhdBox {
pub timescale: u32,
pub language: String,
}
impl MdhdBox {
pub fn new(box_: &mut ParsedBox) -> Result<Self> {
let reader = &mut box_.reader;
let version = box_.version.unwrap();
if version == 1 {
reader.skip(8)?;
reader.skip(8)?;
} else {
reader.skip(4)?;
reader.skip(4)?;
}
let timescale = reader.read_u32()?;
reader.skip(4)?;
let language = reader.read_u16()?;
let language_string = String::from_utf16(&[
(language >> 10) + 0x60,
((language & 0x03c0) >> 5) + 0x60,
(language & 0x1f) + 0x60,
])?;
Ok(Self {
timescale,
language: language_string,
})
}
}