diff options
author | Robert Bragg <robert@linux.intel.com> | 2010-08-11 17:44:33 +0100 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2010-08-18 16:39:12 +0100 |
commit | f0f0310ad9fa11bf9a1bb27e91f571169354e2ae (patch) | |
tree | dcff1a541019ecab271236f8e424ca1196fee5eb | |
parent | 1618f75952e3813278edea7444c77e1d85f1e4a6 (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.c | 46 |
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, |