textrender: Don't always use ARGB if downstream supports it but take it's preference
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 7 May 2009 14:52:02 +0000 (16:52 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 07:03:23 +0000 (09:03 +0200)
ext/pango/gsttextrender.c

index dfab335..f8fbab4 100644 (file)
@@ -276,12 +276,20 @@ gst_text_render_check_argb (GstTextRender * render)
     GST_DEBUG_OBJECT (render, "peer allowed caps (%u structure(s)) are %"
         GST_PTR_FORMAT, n, peer_caps);
 
+    /* Check if AYUV or ARGB is first */
     for (i = 0; i < n; i++) {
       GstStructure *s = gst_caps_get_structure (peer_caps, i);
-      /* Check if the peer pad support ARGB format, if yes change caps */
       if (gst_structure_has_name (s, "video/x-raw-rgb") &&
           gst_structure_has_field (s, "alpha_mask")) {
         render->use_ARGB = TRUE;
+        break;
+      } else if (gst_structure_has_name (s, "video/x-raw-yuv")) {
+        guint fourcc;
+        if (gst_structure_get_fourcc (s, "format", &fourcc) &&
+            fourcc == GST_MAKE_FOURCC ('A', 'Y', 'U', 'V')) {
+          render->use_ARGB = FALSE;
+          break;
+        }
       }
     }
     gst_caps_unref (peer_caps);