diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-01-20 10:31:40 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-01-20 10:31:40 +0200 |
commit | 6e18a221a052e2eb4fc98620bebb991919c8b171 (patch) | |
tree | 1697fa8287ec2f6e925f90f2f3b1294bf895956d | |
parent | 4e0b05bf7f3c8968499cb772a24919e202d4ce64 (diff) | |
download | gst-libav-6e18a221a052e2eb4fc98620bebb991919c8b171.tar.gz |
avviddec: Use AVFrame API instead of deprecated AVPicture API
-rw-r--r-- | ext/libav/gstavviddec.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index cc0cf03..0fbd83f 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -1179,7 +1179,7 @@ static GstFlowReturn get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame) { GstFlowReturn ret = GST_FLOW_OK; - AVPicture pic, *outpic; + AVFrame pic, *outpic; GstVideoFrame vframe; GstVideoInfo *info; gint c; @@ -1203,6 +1203,10 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame) GST_MAP_READ | GST_MAP_WRITE)) goto map_failed; + memset (&pic, 0, sizeof (pic)); + pic.format = ffmpegdec->pic_pix_fmt; + pic.width = GST_VIDEO_FRAME_WIDTH (&vframe); + pic.height = GST_VIDEO_FRAME_HEIGHT (&vframe); for (c = 0; c < AV_NUM_DATA_POINTERS; c++) { if (c < GST_VIDEO_INFO_N_PLANES (info)) { pic.data[c] = GST_VIDEO_FRAME_PLANE_DATA (&vframe, c); @@ -1215,10 +1219,12 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame) } } - outpic = (AVPicture *) ffmpegdec->picture; + outpic = ffmpegdec->picture; - av_picture_copy (&pic, outpic, ffmpegdec->context->pix_fmt, - GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info)); + if (av_frame_copy (&pic, outpic) != 0) { + GST_ERROR_OBJECT (ffmpegdec, "Failed to copy output frame"); + ret = GST_FLOW_ERROR; + } gst_video_frame_unmap (&vframe); |