# HG changeset patch # User pross # Date 1267011038 0 # Node ID 85ecf46ae931842a0de08fa0ef61a235047ff322 # Parent bdcd3e54055848857df3eeb993bbb24ec3b6f67c set AVINDEX_KEYFRAME correctly for bink diff -r bdcd3e540558 -r 85ecf46ae931 bink.c --- 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); }