x264: Allow renegotiation but prefer current caps
authorOlivier CrĂȘte <olivier.crete@collabora.com>
Mon, 4 Jul 2011 22:03:49 +0000 (18:03 -0400)
committerNikhil Devshatwar <a0132237@ti.com>
Fri, 17 May 2013 09:40:35 +0000 (15:10 +0530)
ext/x264/gstx264enc.c

index 15dd190f1949c1769ac04ac757b62fa71d86858a..f3377bda982a9bbc9afc628b9a4be8e3ae102ae9 100644 (file)
@@ -1655,10 +1655,6 @@ gst_x264_enc_sink_get_caps (GstPad * pad)
   GstPad *peer;
   GstCaps *caps;
 
-  /* If we already have caps return them */
-  if (GST_PAD_CAPS (pad))
-    return gst_caps_ref (GST_PAD_CAPS (pad));
-
   encoder = GST_X264_ENC (gst_pad_get_parent (pad));
   if (!encoder)
     return gst_caps_new_empty ();
@@ -1692,6 +1688,14 @@ gst_x264_enc_sink_get_caps (GstPad * pad)
     caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
   }
 
+  /* If we already have caps return them */
+  if (GST_PAD_CAPS (pad) && gst_caps_can_intersect (GST_PAD_CAPS (pad), caps)) {
+    GstCaps *tmpcaps = gst_caps_copy (GST_PAD_CAPS (pad));
+
+    gst_caps_merge (tmpcaps, caps);
+    caps = tmpcaps;
+  }
+
   gst_object_unref (encoder);
 
   return caps;