summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Peffer <gdevel@clixxun.com>2009-09-01 13:49:26 +0200
committerDamien Lespiau <damien.lespiau@intel.com>2009-09-03 22:17:35 +0100
commitbcd6bede7751e3b52002ad759129db4fcdae7a17 (patch)
treeab85c702ac5202b39717bedcde5faa187d3687ee
parent7a1a4cf8233823c34b6fd1069521cca39a706f92 (diff)
downloadclutter-gst-bcd6bede7751e3b52002ad759129db4fcdae7a17.tar.gz
[VideoSink] Fix row strides of U/V planes
When the Video width is not a multiple of 8, the U and V plane have a row stide that is a multiple of 4. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
-rw-r--r--clutter-gst/clutter-gst-video-sink.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/clutter-gst/clutter-gst-video-sink.c b/clutter-gst/clutter-gst-video-sink.c
index 01659c3..034c702 100644
--- a/clutter-gst/clutter-gst-video-sink.c
+++ b/clutter-gst/clutter-gst-video-sink.c
@@ -419,6 +419,7 @@ clutter_gst_yv12_upload (ClutterGstVideoSink *sink,
GstBuffer *buffer)
{
ClutterGstVideoSinkPrivate *priv = sink->priv;
+ gint row_stride = GST_ROUND_UP_4 (priv->width / 2);
CoglHandle y_tex = cogl_texture_new_from_data (priv->width,
priv->height,
@@ -442,7 +443,7 @@ clutter_gst_yv12_upload (ClutterGstVideoSink *sink,
COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_G_8,
COGL_PIXEL_FORMAT_G_8,
- priv->width / 2,
+ row_stride,
GST_BUFFER_DATA (buffer) +
(priv->width * priv->height));
@@ -451,10 +452,10 @@ clutter_gst_yv12_upload (ClutterGstVideoSink *sink,
COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_G_8,
COGL_PIXEL_FORMAT_G_8,
- priv->width / 2,
+ row_stride,
GST_BUFFER_DATA (buffer)
+ (priv->width * priv->height)
- + (priv->width / 2 * priv->height / 2));
+ + (row_stride * priv->height / 2));
}
static void