summaryrefslogtreecommitdiffstats
path: root/libavformat/segafilm.c
diff options
context:
space:
mode:
authorGyan Doshi <gyandoshi@gmail.com>2018-03-21 18:59:33 +0530
committerJames Almer <jamrial@gmail.com>2018-03-26 16:03:13 -0300
commitcfe1a9d311de6c36641cf295004cdbc77d7b600c (patch)
tree2fdd4181333a9320274c3a655bedc894eb84afb3 /libavformat/segafilm.c
parent3c245707bd48291af544683bc875e531dd83d5d1 (diff)
downloadffmpeg-streaming-cfe1a9d311de6c36641cf295004cdbc77d7b600c.zip
ffmpeg-streaming-cfe1a9d311de6c36641cf295004cdbc77d7b600c.tar.gz
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 <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/segafilm.c')
-rw-r--r--libavformat/segafilm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c
index 1fdef50..4c0cca0 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++;
OpenPOWER on IntegriCloud