diff options
author | Gyan Doshi <gyandoshi@gmail.com> | 2018-03-21 18:59:33 +0530 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-03-26 16:03:13 -0300 |
commit | cfe1a9d311de6c36641cf295004cdbc77d7b600c (patch) | |
tree | 2fdd4181333a9320274c3a655bedc894eb84afb3 | |
parent | 3c245707bd48291af544683bc875e531dd83d5d1 (diff) | |
download | ffmpeg-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>
-rw-r--r-- | libavformat/segafilm.c | 3 |
1 files changed, 2 insertions, 1 deletions
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++; |