gstv4l2transform: format fixation for preferring passthrough
authorEnrico Jorns <ejo@pengutronix.de>
Wed, 28 Jan 2015 11:07:58 +0000 (12:07 +0100)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 6 Jun 2016 21:53:02 +0000 (17:53 -0400)
* If outgoing format is unfixated, try to set it to input format.

* Call gst_caps_fixate () at end of fixation routine

https://bugzilla.gnome.org/show_bug.cgi?id=766719

sys/v4l2/gstv4l2transform.c

index 2e29f100764e5504f0e6715c1e92878faa262db4..f9a1d920ecb34944d76a3f9cf335ef91a2ab7c13 100644 (file)
@@ -428,6 +428,17 @@ gst_v4l2_transform_fixate_caps (GstBaseTransform * trans,
   ins = gst_caps_get_structure (caps, 0);
   outs = gst_caps_get_structure (othercaps, 0);
 
+  {
+    const gchar *in_format;
+
+    in_format = gst_structure_get_string (ins, "format");
+    if (in_format) {
+      /* Try to set output format for pass through */
+      gst_structure_fixate_field_string (outs, "format", in_format);
+    }
+
+  }
+
   from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
   to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
 
@@ -847,6 +858,9 @@ done:
   if (to_par == &tpar)
     g_value_unset (&tpar);
 
+  /* fixate remaining fields */
+  othercaps = gst_caps_fixate (othercaps);
+
   return othercaps;
 }