rmdec: skip RM-specific first byte of AAC extradata
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 20 Oct 2018 10:57:47 +0000 (12:57 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 20 Oct 2018 10:57:47 +0000 (12:57 +0200)
src/demuxers/realmedia.rs

index 020e8c083888631c8d73fe69f0677ed972a390c1..571f97bade449578c0d7d04ce67aa3c3e911b4e1 100644 (file)
@@ -653,7 +653,7 @@ fn parse_aformat5(src: &mut ByteReader) -> DemuxerResult<RealAudioInfo> {
     if has_ileave_pattern != 0 {
 unimplemented!("ra5 interleave pattern");
     }
-    let edata_size          = src.read_u32be()?;
+    let mut edata_size          = src.read_u32be()?;
 
     let end = src.tell();
     validate!(end - start <= (header_size as u64) + 10);
@@ -666,6 +666,11 @@ unimplemented!("ra5 interleave pattern");
         } else {
             None
         };
+    if (fcc == mktag!(b"raac")) || (fcc == mktag!(b"racp")) {
+        validate!(edata_size > 1);
+        edata_size -= 1;
+        src.read_skip(1)?;
+    }
 
     Ok(RealAudioInfo {
         fcc: fcc, flavor: flavor,