OSDN Git Service

Fix a bug with reading non-interleaved AVI if one the streams is
authorMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 9 Sep 2009 16:26:24 +0000 (16:26 +0000)
committerCarl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at>
Wed, 9 Sep 2009 16:26:24 +0000 (16:26 +0000)
shorter.

Patch by Maksym Veremeyenko, verem m1stereo tv

Originally committed as revision 19798 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/avidec.c

index 0881ca5..6f2bad1 100644 (file)
@@ -679,12 +679,18 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
             AVStream *st = s->streams[i];
             AVIStream *ast = st->priv_data;
             int64_t ts= ast->frame_offset;
+            int64_t last_ts;
 
             if(!st->nb_index_entries)
                 continue;
 
             if(ast->sample_size)
                 ts /= ast->sample_size;
+
+            last_ts = st->index_entries[st->nb_index_entries - 1].timestamp;
+            if(!ast->remaining && ts > last_ts)
+                continue;
+
             ts = av_rescale_q(ts, st->time_base, AV_TIME_BASE_Q);
 
 //            av_log(s, AV_LOG_DEBUG, "%"PRId64" %d/%d %"PRId64"\n", ts, st->time_base.num, st->time_base.den, ast->frame_offset);