diff options
author | Roland Peffer <gdevel@clixxun.com> | 2009-09-01 13:49:26 +0200 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2009-09-03 22:17:35 +0100 |
commit | bcd6bede7751e3b52002ad759129db4fcdae7a17 (patch) | |
tree | ab85c702ac5202b39717bedcde5faa187d3687ee | |
parent | 7a1a4cf8233823c34b6fd1069521cca39a706f92 (diff) | |
download | clutter-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.c | 7 |
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 |