diff --git a/src/mp4box/mp4a.rs b/src/mp4box/mp4a.rs index e4d6a45..0dcfca7 100644 --- a/src/mp4box/mp4a.rs +++ b/src/mp4box/mp4a.rs @@ -83,12 +83,22 @@ impl ReadBox<&mut R> for Mp4aBox { reader.read_u16::()?; // reserved let data_reference_index = reader.read_u16::()?; - reader.read_u64::()?; // reserved + // Next 8 bytes should be all 0 in ISO MP4 + let qt_version = reader.read_u16::()?; // QT: 0, 1 or 2 + reader.read_u16::()?; // QT: revision level, should be 0 + reader.read_u32::()?; // QT: vendor, should be 0 + let channelcount = reader.read_u16::()?; let samplesize = reader.read_u16::()?; reader.read_u32::()?; // pre-defined, reserved let samplerate = FixedPointU16::new_raw(reader.read_u32::()?); + if qt_version == 1 { + // Samples per packet, bytes per packet, + // bytes per frame, bytes per sample + skip_bytes(reader, 4 * 4)?; + } + let mut esds = None; let current = reader.stream_position()?; if current < start + size {