v4l2bufferpool: Fix stride for NV12/NV21
authorAndreea Fulger <andreea.fulger@parrot.com>
Mon, 9 Sep 2013 12:41:42 +0000 (14:41 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Mon, 9 Sep 2013 12:45:55 +0000 (14:45 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=707758

sys/v4l2/gstv4l2bufferpool.c

index 1e74fc75b741336a5146f90accb2cc5c9a9f10e7..348cabf80615f5efffeba9af7fc9724066ee8d0f 100644 (file)
@@ -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);