diff --git a/ext/ffmpeg/gstffmpegviddec.c b/ext/ffmpeg/gstffmpegviddec.c index 8e8b03d10a..988c5ea427 100644 --- a/ext/ffmpeg/gstffmpegviddec.c +++ b/ext/ffmpeg/gstffmpegviddec.c @@ -1089,7 +1089,8 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec, else GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; - gst_ffmpegviddec_negotiate (ffmpegdec, TRUE); + if (!gst_ffmpegviddec_negotiate (ffmpegdec, TRUE)) + goto negotiation_error; } if (G_UNLIKELY (out_frame->output_buffer == NULL)) @@ -1110,7 +1111,8 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec, else GST_VIDEO_INFO_INTERLACE_MODE (&ffmpegdec->input_state->info) = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; - gst_ffmpegviddec_negotiate (ffmpegdec, TRUE); + if (!gst_ffmpegviddec_negotiate (ffmpegdec, TRUE)) + goto negotiation_error; } /* check if we are dealing with a keyframe here, this will also check if we @@ -1163,6 +1165,13 @@ no_output: len = -1; goto beach; } + +negotiation_error: + { + GST_WARNING_OBJECT (ffmpegdec, "Error negotiating format"); + *ret = GST_FLOW_NOT_NEGOTIATED; + goto beach; + } } diff --git a/ext/ffmpeg/gstffmpegvidenc.c b/ext/ffmpeg/gstffmpegvidenc.c index ce7b650329..b013eded35 100644 --- a/ext/ffmpeg/gstffmpegvidenc.c +++ b/ext/ffmpeg/gstffmpegvidenc.c @@ -85,8 +85,7 @@ gst_ffmpegvidenc_me_method_get_type (void) }; if (!ffmpegenc_me_method_type) { ffmpegenc_me_method_type = - g_enum_register_static ("GstFFMpegVidEncMeMethod", - ffmpegenc_me_methods); + g_enum_register_static ("GstLibAVVidEncMeMethod", ffmpegenc_me_methods); } return ffmpegenc_me_method_type; } @@ -679,7 +678,7 @@ gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder, if (c < GST_VIDEO_INFO_N_COMPONENTS (info)) { ffmpegenc->picture->data[c] = GST_VIDEO_FRAME_PLANE_DATA (&vframe, c); ffmpegenc->picture->linesize[c] = - GST_VIDEO_FRAME_PLANE_STRIDE (&vframe, c); + GST_VIDEO_FRAME_COMP_STRIDE (&vframe, c); } else { ffmpegenc->picture->data[c] = NULL; ffmpegenc->picture->linesize[c] = 0;