aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2018-10-20 12:57:47 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2018-10-20 12:57:47 +0200
commit843c8c87a1d0df3a3522f34c9c256be72c7c1f18 (patch)
tree19bfdbb5439d3629aad4f20d53b4e0f138417fa3 /src
parentb7eda71d5d19c8c80fe2c280df439c79217f454c (diff)
downloadnihav-843c8c87a1d0df3a3522f34c9c256be72c7c1f18.tar.gz
rmdec: skip RM-specific first byte of AAC extradata
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/realmedia.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/demuxers/realmedia.rs b/src/demuxers/realmedia.rs
index 020e8c0..571f97b 100644
--- a/src/demuxers/realmedia.rs
+++ b/src/demuxers/realmedia.rs
@@ -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,