DocBook v4l: update bytesperline handling
Subsystems (2)
PATCH 1/1 DocBook v4l: update bytesperline handling
The documentation says that the bytesperline field in v4l2_pix_format refers to the largest plane in the case of planar formats (i.e. multiple planes stores in a single buffer).
For almost all planar formats the first plane is also the largest (or equal) plane, except for two formats: V4L2_PIX_FMT_NV24/NV42. For this YUV 4:4:4 format the second chroma plane is twice the size of the first luma plane.
Looking at the very few drivers that support this format the bytesperline value that they report is actually that of the first plane and not that of the largest plane.
Rather than fixing the drivers it makes more sense to update the documentation since it is very difficult to use the largest plane for this. You would have to check what the format is in order to know to which plane bytesperline belongs, which makes calculations much more difficult.
This patch updates the documentation accordingly.
Documentation/DocBook/media/v4l/pixfmt.xml +2 -2
@@ -80,9 +80,9 @@ padding bytes after the last line of an image cross a system page boundary. Input devices may write padding bytes, the value is undefined. Output devices ignore the contents of padding bytes.</para><para>When the image format is planar the -<structfield>bytesperline</structfield> value applies to the largest +<structfield>bytesperline</structfield> value applies to the first plane and is divided by the same factor as the -<structfield>width</structfield> field for any smaller planes. For +<structfield>width</structfield> field for the other planes. For example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a <structfield>bytesperline</structfield> value
Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +2 -2
@@ -240,9 +240,9 @@ where padding bytes after the last line of an image cross a system page boundary. Capture devices may write padding bytes, the value is undefined. Output devices ignore the contents of padding bytes.</para><para>When the image format is planar the -<structfield>bytesperline</structfield> value applies to the largest +<structfield>bytesperline</structfield> value applies to the first plane and is divided by the same factor as the -<structfield>width</structfield> field for any smaller planes. For +<structfield>width</structfield> field for the other planes. For example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a <structfield>bytesperline</structfield> value
Hi Hans,
Thank you for the patch.
Quoted 12 lines · On Wednesday 11 March 2015 13:00:45 Hans Verkuil wrote:
The documentation says that the bytesperline field in
v4l2_pix_formatrefers to the largest plane in the case of planar formats (i.e. multiple planes stores in a single buffer).For almost all planar formats the first plane is also the largest (or equal) plane, except for two formats: V4L2_PIX_FMT_NV24/NV42. For this YUV 4:4:4 format the second chroma plane is twice the size of the first luma plane.
Looking at the very few drivers that support this format the bytesperline value that they report is actually that of the first plane and not that of the largest plane.
Quoted 8 lines
Rather than fixing the drivers it makes more sense to update the documentation since it is very difficult to use the largest plane for this. You would have to check what the format is in order to know to which plane bytesperline belongs, which makes calculations much more difficult.
This patch updates the documentation accordingly.
Signed-off-by Hans Verkuil <[email protected]>
Quoted 33 lines
(quoted diff) +0
-0
b/Documentation/DocBook/media/v4l/pixfmt.xmlindex 13540fa..447daf0 100644Documentation/DocBook/media/v4l/pixfmt.xml +0
-0@@ -80,9 +80,9 @@ padding bytes after the last line of an image cross asystem page boundary. Input devices may write padding bytes, the value is
undefined. Output devices ignore the contents of padding bytes.</para><para>When the image format is planar the
-<structfield>bytesperline</structfield> value applies to the largest +<structfield>bytesperline</structfield> value applies to the first
plane and is divided by the same factor as the
-<structfield>width</structfield> field for any smaller planes. For +<structfield>width</structfield> field for the other planes. For
example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a <structfield>bytesperline</structfield> value(quoted diff) +0
-0
b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xmlindex 2046073..77607cc 100644Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +0
-0@@ -240,9 +240,9 @@ where padding bytes after the last line of an imagecross a system page boundary. Capture devices may write padding bytes, the value is undefined. Output devices ignore the contents of padding
bytes.</para><para>When the image format is planar the
-<structfield>bytesperline</structfield> value applies to the largest +<structfield>bytesperline</structfield> value applies to the first
plane and is divided by the same factor as the
-<structfield>width</structfield> field for any smaller planes. For +<structfield>width</structfield> field for the other planes. For
example the Cb and Cr planes of a YUV 4:2:0 image have half as many padding bytes following each line as the Y plane. To avoid ambiguities drivers must return a <structfield>bytesperline</structfield> value
Signature · 3 lines
Regards, Laurent Pinchart
Hi Hans,
Quoted 12 lines · Hans Verkuil
The documentation says that the bytesperline field in
v4l2_pix_formatrefers to the largest plane in the case of planar formats (i.e. multiple planes stores in a single buffer).For almost all planar formats the first plane is also the largest (or equal) plane, except for two formats: V4L2_PIX_FMT_NV24/NV42. For this YUV 4:4:4 format the second chroma plane is twice the size of the first luma plane.
Looking at the very few drivers that support this format the bytesperline value that they report is actually that of the first plane and not that of the largest plane.
Quoted 8 lines
Rather than fixing the drivers it makes more sense to update the documentation since it is very difficult to use the largest plane for this. You would have to check what the format is in order to know to which plane bytesperline belongs, which makes calculations much more difficult.
This patch updates the documentation accordingly.
Signed-off-by Hans Verkuil <[email protected]>
Signature · 2 lines
Sakari Ailus e-mail: [email protected] XMPP: [email protected]