diff avidec.c @ 5167:00fcfe0596e8 libavformat

Fix a bug with reading non-interleaved AVI if one the streams is shorter. Patch by Maksym Veremeyenko, verem m1stereo tv
author cehoyos
date Wed, 09 Sep 2009 16:26:24 +0000
parents 1258b5879021
children 13dd683f3ff2
line wrap: on
line diff
--- a/avidec.c	Wed Sep 09 16:25:12 2009 +0000
+++ b/avidec.c	Wed Sep 09 16:26:24 2009 +0000
@@ -679,12 +679,18 @@
             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);