From 78adf28a61f6dd14bc5bf921cd57acc38e383241 Mon Sep 17 00:00:00 2001 From: Andreea Fulger Date: Mon, 9 Sep 2013 14:41:42 +0200 Subject: [PATCH] v4l2bufferpool: Fix stride for NV12/NV21 https://bugzilla.gnome.org/show_bug.cgi?id=707758 --- sys/v4l2/gstv4l2bufferpool.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c index 1e74fc75b7..348cabf806 100644 --- a/sys/v4l2/gstv4l2bufferpool.c +++ b/sys/v4l2/gstv4l2bufferpool.c @@ -247,8 +247,15 @@ gst_v4l2_buffer_pool_alloc_buffer (GstBufferPool * bpool, GstBuffer ** buffer, offs = 0; for (i = 0; i < n_planes; i++) { offset[i] = offs; - stride[i] = - GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, i, obj->bytesperline); + if (info->finfo->format == GST_VIDEO_FORMAT_NV12 + || info->finfo->format == GST_VIDEO_FORMAT_NV21) { + stride[i] = + (i == 0) ? GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, i, + obj->bytesperline) : stride[0]; + } else { + stride[i] = + GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (finfo, i, obj->bytesperline); + } offs += stride[i] * GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (finfo, i, height);