summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bragg <robert@linux.intel.com>2010-08-11 17:44:33 +0100
committerDamien Lespiau <damien.lespiau@intel.com>2010-08-18 16:39:12 +0100
commitf0f0310ad9fa11bf9a1bb27e91f571169354e2ae (patch)
treedcff1a541019ecab271236f8e424ca1196fee5eb
parent1618f75952e3813278edea7444c77e1d85f1e4a6 (diff)
sink: Consider when rgb data has bgr component ordering
When switching the rgb codepath to using cogl_texture_new_from_data we stopped checking priv->bgr to correctly determine if the components are in bgr order.
-rw-r--r--clutter-gst/clutter-gst-video-sink.c46
1 files changed, 30 insertions, 16 deletions
diff --git a/clutter-gst/clutter-gst-video-sink.c b/clutter-gst/clutter-gst-video-sink.c
index db9b254..20742dc 100644
--- a/clutter-gst/clutter-gst-video-sink.c
+++ b/clutter-gst/clutter-gst-video-sink.c
@@ -500,14 +500,21 @@ clutter_gst_rgb24_upload (ClutterGstVideoSink *sink,
GstBuffer *buffer)
{
ClutterGstVideoSinkPrivate *priv = sink->priv;
- CoglHandle tex =
- cogl_texture_new_from_data (priv->width,
- priv->height,
- CLUTTER_GST_TEXTURE_FLAGS,
- COGL_PIXEL_FORMAT_RGB_888,
- COGL_PIXEL_FORMAT_RGB_888,
- GST_ROUND_UP_4 (3 * priv->width),
- GST_BUFFER_DATA (buffer));
+ CoglPixelFormat format;
+ CoglHandle tex;
+
+ if (priv->bgr)
+ format = COGL_PIXEL_FORMAT_BGR_888;
+ else
+ format = COGL_PIXEL_FORMAT_RGB_888;
+
+ tex = cogl_texture_new_from_data (priv->width,
+ priv->height,
+ CLUTTER_GST_TEXTURE_FLAGS,
+ format,
+ format,
+ GST_ROUND_UP_4 (3 * priv->width),
+ GST_BUFFER_DATA (buffer));
_create_paint_material (sink,
tex,
@@ -535,14 +542,21 @@ clutter_gst_rgb32_upload (ClutterGstVideoSink *sink,
GstBuffer *buffer)
{
ClutterGstVideoSinkPrivate *priv = sink->priv;
- CoglHandle tex =
- cogl_texture_new_from_data (priv->width,
- priv->height,
- CLUTTER_GST_TEXTURE_FLAGS,
- COGL_PIXEL_FORMAT_RGBA_8888,
- COGL_PIXEL_FORMAT_RGBA_8888,
- GST_ROUND_UP_4 (4 * priv->width),
- GST_BUFFER_DATA (buffer));
+ CoglPixelFormat format;
+ CoglHandle tex;
+
+ if (priv->bgr)
+ format = COGL_PIXEL_FORMAT_BGRA_8888;
+ else
+ format = COGL_PIXEL_FORMAT_RGBA_8888;
+
+ tex = cogl_texture_new_from_data (priv->width,
+ priv->height,
+ CLUTTER_GST_TEXTURE_FLAGS,
+ format,
+ format,
+ GST_ROUND_UP_4 (4 * priv->width),
+ GST_BUFFER_DATA (buffer));
_create_paint_material (sink,
tex,