]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gst-plugins-ugly0-10.git/blobdiff - ext/x264/gstx264enc.c
x264: Allow renegotiation but prefer current caps
[glsdk/gst-plugins-ugly0-10.git] / 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;