Browse Source

Fix a bug with reading non-interleaved AVI if one the streams is

shorter.

Patch by Maksym Veremeyenko, verem m1stereo tv

Originally committed as revision 19798 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Maksym Veremeyenko Carl Eugen Hoyos 16 years ago
parent
commit
2c14ded386
1 changed files with 6 additions and 0 deletions
  1. +6
    -0
      libavformat/avidec.c

+ 6
- 0
libavformat/avidec.c View 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);


Loading…
Cancel
Save