opusenc: Unref pad template caps after usage
authorSebastian Rasmussen <sebras@hotmail.com>
Fri, 8 Aug 2014 12:08:19 +0000 (14:08 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 11 Aug 2014 12:31:45 +0000 (15:31 +0300)
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734517

ext/opus/gstopusenc.c

index 195d88f..f9cf624 100644 (file)
@@ -717,6 +717,7 @@ gst_opus_enc_sink_getcaps (GstAudioEncoder * benc, GstCaps * filter)
 {
   GstOpusEnc *enc;
   GstCaps *caps;
+  GstCaps *tcaps;
   GstCaps *peercaps = NULL;
   GstCaps *intersect = NULL;
   guint i;
@@ -734,8 +735,9 @@ gst_opus_enc_sink_getcaps (GstAudioEncoder * benc, GstCaps * filter)
         (GST_AUDIO_ENCODER_SINK_PAD (benc)));
   }
 
-  intersect = gst_caps_intersect (peercaps,
-      gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SRC_PAD (benc)));
+  tcaps = gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SRC_PAD (benc));
+  intersect = gst_caps_intersect (peercaps, tcaps);
+  gst_caps_unref (tcaps);
   gst_caps_unref (peercaps);
 
   if (gst_caps_is_empty (intersect))
@@ -756,9 +758,8 @@ gst_opus_enc_sink_getcaps (GstAudioEncoder * benc, GstCaps * filter)
 
   gst_caps_unref (intersect);
 
-  caps =
-      gst_caps_copy (gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SINK_PAD
-          (benc)));
+  caps = gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SINK_PAD (benc));
+  caps = gst_caps_make_writable (caps);
   if (!allow_multistream) {
     GValue range = { 0 };
     g_value_init (&range, GST_TYPE_INT_RANGE);