]> git.sesse.net Git - ffmpeg/commitdiff
avi: DV in AVI must be considered single stream
authorLuca Barbato <lu_zero@gentoo.org>
Tue, 6 Aug 2013 01:38:12 +0000 (03:38 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Thu, 10 Oct 2013 05:28:03 +0000 (07:28 +0200)
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
libavformat/avidec.c

index 971b3f5e226cadfd0c9a28ef754a55b1245dbafa..9396a20c04b845a6296250cdc40623ae43d3f7bd 100644 (file)
@@ -952,7 +952,7 @@ start_sync:
             goto start_sync;
         }
 
-        n = get_stream_idx(d);
+        n = avi->dv_demux ? 0 : get_stream_idx(d);
 
         if (!((i - avi->last_pkt_pos) & 1) &&
             get_stream_idx(d + 1) < s->nb_streams)
@@ -1392,12 +1392,17 @@ static int avi_read_seek(AVFormatContext *s, int stream_index,
     int64_t pos;
     AVIStream *ast;
 
+    /* Does not matter which stream is requested dv in avi has the
+     * stream information in the first video stream.
+     */
+    if (avi->dv_demux)
+        stream_index = 0;
+
     if (!avi->index_loaded) {
         /* we only load the index on demand */
         avi_load_index(s);
         avi->index_loaded = 1;
     }
-    assert(stream_index >= 0);
 
     st    = s->streams[stream_index];
     ast   = st->priv_data;
@@ -1418,7 +1423,6 @@ static int avi_read_seek(AVFormatContext *s, int stream_index,
         /* One and only one real stream for DV in AVI, and it has video  */
         /* offsets. Calling with other stream indexes should have failed */
         /* the av_index_search_timestamp call above.                     */
-        assert(stream_index == 0);
 
         /* Feed the DV video stream version of the timestamp to the */
         /* DV demux so it can synthesize correct timestamps.        */