Skip to contentSkip to conversation

DocBook v4l: update bytesperline handling

PATCH In review Hans Verkuil 3 participants 3 messages Mar 11, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
index 13540fa..447daf0 100644
@@ -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
index 2046073..77607cc 100644
@@ -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
Acked-by on v1 1/1
#1 lore raw

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_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.

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.

Quoted 33 lines
(quoted diff) +0 -0

b/Documentation/DocBook/media/v4l/pixfmt.xml index 13540fa..447daf0 100644

Documentation/DocBook/media/v4l/pixfmt.xml +0 -0
@@ -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

(quoted diff) +0 -0

b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml index 2046073..77607cc 100644

Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +0 -0
@@ -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

Signature · 3 lines
Regards,

Laurent Pinchart
Acked-by on v1 1/1
#2 lore raw
In reply to Hans Verkuil

Hi Hans,

Quoted 12 lines · Hans Verkuil

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.

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.

Signature · 2 lines
Sakari Ailus
e-mail: [email protected]	XMPP: [email protected]