]> git.nihav.org Git - nihav.git/blobdiff - nihav-commonfmt/src/demuxers/avi.rs
avi: ignore index entries not belonging to any stream
[nihav.git] / nihav-commonfmt / src / demuxers / avi.rs
index 7c1d4f7b5a2ee0e4388be374ad84d42f51499254..2329ae9be27c0ff893f453b697652060b8b4c8d8 100644 (file)
@@ -361,7 +361,7 @@ impl<'a> AVIDemuxer<'a> {
                     if ret.is_err() { break; }
                     let (csz, end) = ret.unwrap();
                     if end {
-                        let _res = parse_idx1(&mut self.src, strmgr, seek_idx, csz, self.movi_pos, &mut self.key_offs);
+                        let _res = parse_idx1(self.src, strmgr, seek_idx, csz, self.movi_pos, &mut self.key_offs);
                         break;
                     }
                     rest_size -= csz;
@@ -388,7 +388,7 @@ impl<'a> AVIDemuxer<'a> {
                         start = 0;
                         last_strm_no = stream_no;
                     }
-                    let ret = parse_odml_ix(&mut self.src, strmgr, seek_idx, stream_no, size, start);
+                    let ret = parse_odml_ix(self.src, strmgr, seek_idx, stream_no, size, start);
                     if let Ok(new_start) = ret {
                         start = new_start;
                     } else {
@@ -782,7 +782,7 @@ fn parse_idx1(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mut S
         offset += add_offset;
 
         if tag[0] < b'0' || tag[0] > b'9' || tag[1] < b'0' || tag[1] > b'9' {
-            return Err(InvalidData);
+            continue;
         }
         let stream_no = ((tag[0] - b'0') * 10 + (tag[1] - b'0')) as usize;
 
@@ -857,6 +857,7 @@ mod test {
 
     #[test]
     fn test_avi_demux() {
+        //test sample: https://samples.mplayerhq.hu/V-codecs/RT21/320x240/laser05.avi
         let mut file = File::open("assets/Indeo/laser05.avi").unwrap();
         let mut fr = FileReader::new_read(&mut file);
         let mut br = ByteReader::new(&mut fr);