Mercurial > libavformat.hg
changeset 5710:85ecf46ae931 libavformat
set AVINDEX_KEYFRAME correctly for bink
author | pross |
---|---|
date | Wed, 24 Feb 2010 11:30:38 +0000 |
parents | bdcd3e540558 |
children | 1481fbffd30b |
files | bink.c |
diffstat | 1 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/bink.c Wed Feb 24 10:56:13 2010 +0000 +++ b/bink.c Wed Feb 24 11:30:38 2010 +0000 @@ -74,7 +74,7 @@ uint32_t fps_num, fps_den; AVStream *vst, *ast; unsigned int i; - uint32_t pos, prev_pos; + uint32_t pos, next_pos; uint16_t flags; int keyframe; @@ -147,22 +147,24 @@ } /* frame index table */ - pos = get_le32(pb) & ~1; + next_pos = get_le32(pb); for (i = 0; i < vst->duration; i++) { - prev_pos = pos; + pos = next_pos; if (i == vst->duration - 1) { - pos = bink->file_size; + next_pos = bink->file_size; keyframe = 0; } else { - pos = get_le32(pb); + next_pos = get_le32(pb); keyframe = pos & 1; - pos &= ~1; } - if (pos <= prev_pos) { + pos &= ~1; + next_pos &= ~1; + + if (next_pos <= pos) { av_log(s, AV_LOG_ERROR, "invalid frame index table\n"); return AVERROR(EIO); } - av_add_index_entry(vst, pos, i, pos - prev_pos, 0, + av_add_index_entry(vst, pos, i, next_pos - pos, 0, keyframe ? AVINDEX_KEYFRAME : 0); }