avi: do not put extradata size into extradata for audio streams
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 24 May 2020 13:18:40 +0000 (15:18 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 24 May 2020 13:18:40 +0000 (15:18 +0200)
nihav-commonfmt/src/demuxers/avi.rs

index f108e3ccc62adb49cdd9635974a6484956de8051..4ea40673aa40c2be22249d453ea7bc8552857278 100644 (file)
@@ -448,7 +448,14 @@ fn parse_strf_auds(dmx: &mut AVIDemuxer, strmgr: &mut StreamManager, size: usize
 
     let soniton = NASoniton::new(bits_per_sample as u8, SONITON_FLAG_SIGNED);
     let ahdr = NAAudioInfo::new(samplespersec, channels as u8, soniton, block_align as usize);
-    let edata = dmx.read_extradata(size - 16)?;
+    let edata;
+    if size > 16 {
+        let edata_size      = dmx.src.read_u16le()? as usize;
+        validate!(edata_size + 18 == size);
+        edata = dmx.read_extradata(size - 18)?;
+    } else {
+        edata = None;
+    }
     let cname = match register::find_codec_from_wav_twocc(w_format_tag) {
                     None => "unknown",
                     Some(name) => name,