1
0
Fork 0
mirror of https://github.com/alfg/mp4-rust.git synced 2024-05-30 05:28:05 +00:00
mp4-rust/src/mp4box/data.rs
rolleifx c26bdcab59
fix "mdat size too large" (#80)
* fix "mdat size too large"

* fix clippy

* Fix clippy::derive-partial-eq-without-eq
2023-01-05 18:19:47 -08:00

31 lines
745 B
Rust

use std::{
convert::TryFrom,
io::{Read, Seek},
};
use serde::Serialize;
use crate::mp4box::*;
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize)]
pub struct DataBox {
pub data: Vec<u8>,
pub data_type: DataType,
}
impl<R: Read + Seek> ReadBox<&mut R> for DataBox {
fn read_box(reader: &mut R, size: u64) -> Result<Self> {
let start = box_start(reader)?;
let data_type = DataType::try_from(reader.read_u32::<BigEndian>()?)?;
reader.read_u32::<BigEndian>()?; // reserved = 0
let current = reader.seek(SeekFrom::Current(0))?;
let mut data = vec![0u8; (start + size - current) as usize];
reader.read_exact(&mut data)?;
Ok(DataBox { data, data_type })
}
}