MP4: Add AtomReader::read_u24

This commit is contained in:
Serial 2024-09-14 16:12:36 -04:00 committed by Alex
parent b05bf2c6c6
commit 0be82f7264
3 changed files with 7 additions and 2 deletions

View file

@ -767,7 +767,7 @@ fn write_data(flags: u32, data: &[u8], writer: &mut AtomWriterCompanion<'_>) ->
// Version
writer.write_u8(0)?;
writer.write_uint::<BigEndian>(u64::from(flags), 3)?;
writer.write_u24::<BigEndian>(u32::from(flags))?;
// Locale
writer.write_all(&[0; 4])?;

View file

@ -652,7 +652,7 @@ where
// 15 means the sample rate is stored in the next 24 bits
0x0F => {
let sample_rate;
let explicit_sample_rate = stsd.read_u24::<BigEndian>()?;
let explicit_sample_rate = stsd.read_u24()?;
if extended_object_type {
sample_rate = explicit_sample_rate >> 1;
channel_conf = ((explicit_sample_rate >> 4) & 0x0F) as u8;

View file

@ -54,6 +54,11 @@ where
self.reader.read_u16::<BigEndian>()
}
pub(super) fn read_u24(&mut self) -> std::io::Result<u32> {
self.remaining_size = self.remaining_size.saturating_sub(3);
self.reader.read_u24::<BigEndian>()
}
pub(super) fn read_u32(&mut self) -> std::io::Result<u32> {
self.remaining_size = self.remaining_size.saturating_sub(4);
self.reader.read_u32::<BigEndian>()