Mercurial > libavformat.hg
changeset 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 | b22d48626092 |
files | avidec.c |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
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);