Signed-off-by: Paul B Mahol <one...@gmail.com> --- libavformat/bink.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/libavformat/bink.c b/libavformat/bink.c index 631b8c4d7d..44eb04362e 100644 --- a/libavformat/bink.c +++ b/libavformat/bink.c @@ -56,6 +56,7 @@ typedef struct BinkDemuxContext { int64_t audio_pts[BINK_MAX_AUDIO_TRACKS]; uint32_t remain_packet_size; + int flags; int smush_size; } BinkDemuxContext; @@ -90,6 +91,7 @@ static int read_header(AVFormatContext *s) unsigned int i; uint32_t pos, next_pos; uint16_t flags; + int next_keyframe = 1; int keyframe; int ret; uint32_t signature; @@ -203,12 +205,13 @@ static int read_header(AVFormatContext *s) next_pos = avio_rl32(pb); for (i = 0; i < vst->duration; i++) { pos = next_pos; + keyframe = next_keyframe; if (i == vst->duration - 1) { next_pos = bink->file_size; - keyframe = 0; + next_keyframe = 0; } else { next_pos = avio_rl32(pb); - keyframe = pos & 1; + next_keyframe = next_pos & 1; } pos &= ~1; next_pos &= ~1; @@ -254,6 +257,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) } bink->remain_packet_size = st->index_entries[index_entry].size; + bink->flags = st->index_entries[index_entry].flags; bink->current_track = 0; } @@ -290,7 +294,8 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt) return ret; pkt->stream_index = 0; pkt->pts = bink->video_pts++; - pkt->flags |= AV_PKT_FLAG_KEY; + if (bink->flags & AVINDEX_KEYFRAME) + pkt->flags |= AV_PKT_FLAG_KEY; /* -1 instructs the next call to read_packet() to read the next frame */ bink->current_track = -1; -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".