From 54a86d367d3b95b70ee64018ba8856a465b678c7 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 11 Oct 2004 08:21:16 +0000 Subject: [PATCH] ext/ffmpeg/gstffmpegenc.c: Set chain function before adding pad, fix memleak on error, error out on encode errors bec... Original commit message from CVS: * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_init), (gst_ffmpegenc_chain_video): Set chain function before adding pad, fix memleak on error, error out on encode errors because none of subsequent frames will work any better (this is not input dependent). --- ChangeLog | 8 ++++++++ ext/ffmpeg/gstffmpegenc.c | 10 ++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index af1de95..fdce93c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-10-11 Ronald S. Bultje + + * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_init), + (gst_ffmpegenc_chain_video): + Set chain function before adding pad, fix memleak on error, error + out on encode errors because none of subsequent frames will work + any better (this is not input dependent). + 2004-10-09 Ronald S. Bultje * configure.ac: diff --git a/ext/ffmpeg/gstffmpegenc.c b/ext/ffmpeg/gstffmpegenc.c index f2501e5..6d73b19 100644 --- a/ext/ffmpeg/gstffmpegenc.c +++ b/ext/ffmpeg/gstffmpegenc.c @@ -243,9 +243,6 @@ gst_ffmpegenc_init (GstFFMpegEnc * ffmpegenc) ffmpegenc->srcpad = gst_pad_new_from_template (oclass->srctempl, "src"); gst_pad_use_explicit_caps (ffmpegenc->srcpad); - gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->sinkpad); - gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->srcpad); - /* ffmpeg objects */ ffmpegenc->context = avcodec_alloc_context (); ffmpegenc->picture = avcodec_alloc_frame (); @@ -263,6 +260,9 @@ gst_ffmpegenc_init (GstFFMpegEnc * ffmpegenc) ffmpegenc->bitrate = 128000; } + + gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->sinkpad); + gst_element_add_pad (GST_ELEMENT (ffmpegenc), ffmpegenc->srcpad); } static void @@ -404,8 +404,10 @@ gst_ffmpegenc_chain_video (GstPad * pad, GstData * _data) GST_BUFFER_MAXSIZE (outbuf), ffmpegenc->picture); if (ret_size < 0) { - g_warning ("ffenc_%s: failed to encode buffer", oclass->in_plugin->name); + GST_ELEMENT_ERROR (ffmpegenc, LIBRARY, ENCODE, (NULL), + ("ffenc_%s: failed to encode buffer", oclass->in_plugin->name)); gst_buffer_unref (inbuf); + gst_buffer_unref (outbuf); return; } -- 2.7.4