videobox: Don't overwrite the first component with the alpha value for BGRx
authorSebastian Dröge <sebastian@centricular.com>
Sat, 19 Jul 2014 09:30:30 +0000 (11:30 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 19 Jul 2014 09:31:45 +0000 (11:31 +0200)
Instead leave the x component unset when filling the borders.

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

gst/videobox/gstvideobox.c

index 861bcae..bfec65a 100644 (file)
@@ -1780,10 +1780,17 @@ fill_rgb32 (GstVideoBoxFill fill_type, guint b_alpha,
 
   b_alpha = CLAMP (b_alpha, 0, 255);
 
-  empty_pixel = GUINT32_FROM_LE ((b_alpha << (p[0] * 8)) |
-      (rgb_colors_R[fill_type] << (p[1] * 8)) |
-      (rgb_colors_G[fill_type] << (p[2] * 8)) |
-      (rgb_colors_B[fill_type] << (p[3] * 8)));
+  if (GST_VIDEO_FRAME_N_COMPONENTS (frame) == 4) {
+    empty_pixel = GUINT32_FROM_LE ((b_alpha << (p[0] * 8)) |
+        (rgb_colors_R[fill_type] << (p[1] * 8)) |
+        (rgb_colors_G[fill_type] << (p[2] * 8)) |
+        (rgb_colors_B[fill_type] << (p[3] * 8)));
+  } else {
+    empty_pixel = GUINT32_FROM_LE (
+        (rgb_colors_R[fill_type] << (p[1] * 8)) |
+        (rgb_colors_G[fill_type] << (p[2] * 8)) |
+        (rgb_colors_B[fill_type] << (p[3] * 8)));
+  }
 
   if (stride == width * 4) {
     video_box_orc_splat_u32 ((guint32 *) dest, empty_pixel, width * height);