From 14dc964f0e4526a842a245fdb86b98985bb12e3f Mon Sep 17 00:00:00 2001 From: Garima Gaur Date: Mon, 2 Jan 2017 09:06:09 +0530 Subject: [PATCH] Fix some caps leaks when creating pad templates https://bugzilla.gnome.org/show_bug.cgi?id=776700 --- ext/libav/gstavauddec.c | 3 +++ ext/libav/gstavaudenc.c | 3 +++ ext/libav/gstavdemux.c | 2 ++ ext/libav/gstavmux.c | 3 +++ ext/libav/gstavviddec.c | 3 +++ ext/libav/gstavvidenc.c | 3 +++ 6 files changed, 17 insertions(+) diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c index ef63f53..4d04dfa 100644 --- a/ext/libav/gstavauddec.c +++ b/ext/libav/gstavauddec.c @@ -107,6 +107,9 @@ gst_ffmpegauddec_base_init (GstFFMpegAudDecClass * klass) gst_element_class_add_pad_template (element_class, srctempl); gst_element_class_add_pad_template (element_class, sinktempl); + gst_caps_unref (sinkcaps); + gst_caps_unref (srccaps); + klass->in_plugin = in_plugin; klass->srctempl = srctempl; klass->sinktempl = sinktempl; diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c index f190ef9..12cc804 100644 --- a/ext/libav/gstavaudenc.c +++ b/ext/libav/gstavaudenc.c @@ -124,6 +124,9 @@ gst_ffmpegaudenc_base_init (GstFFMpegAudEncClass * klass) gst_element_class_add_pad_template (element_class, srctempl); gst_element_class_add_pad_template (element_class, sinktempl); + gst_caps_unref (sinkcaps); + gst_caps_unref (srccaps); + klass->in_plugin = in_plugin; klass->srctempl = srctempl; klass->sinktempl = sinktempl; diff --git a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c index 2a61be4..c119798 100644 --- a/ext/libav/gstavdemux.c +++ b/ext/libav/gstavdemux.c @@ -217,6 +217,8 @@ gst_ffmpegdemux_base_init (GstFFMpegDemuxClass * klass) gst_element_class_add_pad_template (element_class, audiosrctempl); gst_element_class_add_pad_template (element_class, sinktempl); + gst_caps_unref (sinkcaps); + klass->in_plugin = in_plugin; klass->videosrctempl = videosrctempl; klass->audiosrctempl = audiosrctempl; diff --git a/ext/libav/gstavmux.c b/ext/libav/gstavmux.c index a7599f8..919c06c 100644 --- a/ext/libav/gstavmux.c +++ b/ext/libav/gstavmux.c @@ -269,17 +269,20 @@ gst_ffmpegmux_base_init (gpointer g_class) /* pad templates */ srctempl = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, srccaps); gst_element_class_add_pad_template (element_class, srctempl); + gst_caps_unref (srccaps); if (audiosinkcaps) { audiosinktempl = gst_pad_template_new ("audio_%u", GST_PAD_SINK, GST_PAD_REQUEST, audiosinkcaps); gst_element_class_add_pad_template (element_class, audiosinktempl); + gst_caps_unref (audiosinkcaps); } if (videosinkcaps) { videosinktempl = gst_pad_template_new ("video_%u", GST_PAD_SINK, GST_PAD_REQUEST, videosinkcaps); gst_element_class_add_pad_template (element_class, videosinktempl); + gst_caps_unref (videosinkcaps); } beach: diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index 65a3253..17a6430 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -192,6 +192,9 @@ gst_ffmpegviddec_base_init (GstFFMpegVidDecClass * klass) gst_element_class_add_pad_template (element_class, srctempl); gst_element_class_add_pad_template (element_class, sinktempl); + gst_caps_unref (sinkcaps); + gst_caps_unref (srccaps); + klass->in_plugin = in_plugin; } diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index 671f2f1..f7d32e5 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -161,6 +161,9 @@ gst_ffmpegvidenc_base_init (GstFFMpegVidEncClass * klass) gst_element_class_add_pad_template (element_class, srctempl); gst_element_class_add_pad_template (element_class, sinktempl); + gst_caps_unref (sinkcaps); + gst_caps_unref (srccaps); + klass->in_plugin = in_plugin; klass->srctempl = srctempl; klass->sinktempl = sinktempl; -- 2.7.4