diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-01-19 09:36:01 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-01-19 09:36:01 +0200 |
commit | 1d7d7033bc18041bc2082bf80cf3c81fd5cd68f4 (patch) | |
tree | e0939f15c051171781af6ae236c677d4eeadcf7f | |
parent | e04bcf0601286990d0fa2dd9999fcfcff1b5784b (diff) | |
download | gst-libav-1d7d7033bc18041bc2082bf80cf3c81fd5cd68f4.tar.gz |
avvidenc: Use AVPacket.flags for detecting keyframes
AVCodec.coded_frame is deprecated and will disappear at some point
in the future.
-rw-r--r-- | ext/libav/gstavvidenc.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index 94aca49..d314e16 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -685,12 +685,10 @@ gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder, pkt->size, 0, pkt->size, pkt, gst_ffmpegvidenc_free_avpacket); frame->output_buffer = outbuf; - /* buggy codec may not set coded_frame */ - if (ffmpegenc->context->coded_frame) { - if (ffmpegenc->context->coded_frame->key_frame) - GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); - } else - GST_WARNING_OBJECT (ffmpegenc, "codec did not provide keyframe info"); + if (pkt->flags & AV_PKT_FLAG_KEY) + GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); + else + GST_VIDEO_CODEC_FRAME_UNSET_SYNC_POINT (frame); return gst_video_encoder_finish_frame (encoder, frame); @@ -756,8 +754,10 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send) pkt->size, 0, pkt->size, pkt, gst_ffmpegvidenc_free_avpacket); frame->output_buffer = outbuf; - if (ffmpegenc->context->coded_frame->key_frame) + if (pkt->flags & AV_PKT_FLAG_KEY) GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame); + else + GST_VIDEO_CODEC_FRAME_UNSET_SYNC_POINT (frame); flow_ret = gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (ffmpegenc), frame); |