Re: [PATCH v2 2/4] media: v4l2-common: Add kernel-doc for v4l2_fill_pixfmt_mp_aligned()
From: Sven Püschel
Date: Fri Jul 03 2026 - 08:16:25 EST
Hi Tommaso,
thanks for adding documentation.
On 7/1/26 6:49 PM, Tommaso Merciai wrote:
Replace the bare placeholder comment with a full kernel-doc blockGiven that the v4l2_fill_pixfmt_aligned helper is added later in patch 3, don't you want to move this patch after adding the helper?
documenting all parameters, the function behaviour for both single
memory plane (mem_planes == 1) and multiple memory plane (mem_planes > 1)
formats, and the return value.
Signed-off-by: Tommaso Merciai<tommaso.merciai.xr@xxxxxxxxxxxxxx>
---
v1->v2:
- New patch
include/media/v4l2-common.h | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
index 749fe38c134e..db59dda578f0 100644
--- a/include/media/v4l2-common.h
+++ b/include/media/v4l2-common.h
@@ -557,7 +557,32 @@ void v4l2_apply_frmsize_constraints(u32 *width, u32 *height,
int v4l2_fill_pixfmt(struct v4l2_pix_format *pixfmt, u32 pixelformat,
u32 width, u32 height);
-/* @stride_alignment is a power of 2 value in bytes */
+/**
+ * v4l2_fill_pixfmt_mp_aligned - Fill in a &struct v4l2_pix_format_mplane with
+ * stride alignment requirements.
+ *
+ * @pixfmt: pointer to the &struct v4l2_pix_format_mplane to be filled
+ * @pixelformat: the V4L2 pixel format (V4L2_PIX_FMT_*)
+ * @width: image width in pixels
+ * @height: image height in pixels
+ * @stride_alignment: stride alignment in bytes; must be a power of 2
+ *
+ * Fills all fields of @pixfmt for the given pixel format, dimensions, and
+ * stride alignment.
+ *
+ * For formats stored in a single memory plane (mem_planes == 1), the
+ * behaviour matches v4l2_fill_pixfmt_aligned(): plane_fmt[0].bytesperline
+ * is set to the primary plane stride rounded up to @stride_alignment, and
+ * per-component alignments are scaled to keep chroma strides consistently
+ * derivable from the luma stride. plane_fmt[0].sizeimage covers all
No, it's the other way: The strides of all components are aligned to the @stride_alignment. To keep the chroma strides consistently derivable from the luma stride, strides may be aligned to a multiple of the @stride_alignment.
(feel free to use the above if it sounds good)
At least I read your text, as if only the y stride would be rounded up to the nearest alignment and for other component strides may be scaled down to 1/2 or 1/4 of the alignment. But most of the time the y stride will be scaled up (e.g. YUV420 or YUV410) and in rare cases (e.g. NV24/42) the component stride is scaled up.
Sincerely
Sven
+ * component planes.
+ *
+ * For formats with multiple memory planes (mem_planes > 1), each plane's
+ * bytesperline is independently rounded up to @stride_alignment, and
+ * sizeimage is set to bytesperline multiplied by the plane height.
+ *
+ * Return: 0 on success, -EINVAL if @pixelformat is unknown.
+ */
int v4l2_fill_pixfmt_mp_aligned(struct v4l2_pix_format_mplane *pixfmt,
u32 pixelformat, u32 width, u32 height,
u8 stride_alignment);