From cfe1a9d311de6c36641cf295004cdbc77d7b600c Mon Sep 17 00:00:00 2001 From: Gyan Doshi Date: Wed, 21 Mar 2018 18:59:33 +0530 Subject: [PATCH] avformat/segafilm - fix keyframe detection and set packet flags Streams from a Segafilm cpk file can't be streamcopied because keyframe flag isn't correctly set in stream index and said flag is never conveyed to the packet Fixes #7091 Reviewed-by: Michael Niedermayer Signed-off-by: James Almer --- libavformat/segafilm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c index 1fdef50cc7..4c0cca0140 100644 --- a/libavformat/segafilm.c +++ b/libavformat/segafilm.c @@ -239,7 +239,7 @@ static int film_read_header(AVFormatContext *s) } else { film->sample_table[i].stream = film->video_stream_index; film->sample_table[i].pts = AV_RB32(&scratch[8]) & 0x7FFFFFFF; - film->sample_table[i].keyframe = (scratch[8] & 0x80) ? 0 : 1; + film->sample_table[i].keyframe = (scratch[8] & 0x80) ? AVINDEX_KEYFRAME : 0; video_frame_counter++; if (film->video_type) av_add_index_entry(s->streams[film->video_stream_index], @@ -286,6 +286,7 @@ static int film_read_packet(AVFormatContext *s, pkt->stream_index = sample->stream; pkt->pts = sample->pts; + pkt->flags |= sample->keyframe ? AV_PKT_FLAG_KEY : 0; film->current_sample++;