[libcamera-devel] [PATCH] libcamera: v4l2_videodevice: Explain multiplanar bytesused reasoning

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Fri Oct 22 12:21:06 CEST 2021


Hi Kieran,

On Fri, Oct 22, 2021 at 11:00:42AM +0100, Kieran Bingham wrote:
> The ternary operation used to get the total bytesused of a V4L2 single
> planar format which is stored in a multiplanar buffer can easily be
> mis-read to think it's a bug, and appears to be reading the value of the
> first of N planes as the total.
> 
> Directly explain the reasoning for why it looks like the condition is
> inverted, as it is correct that the total bytes used is stored in only
> the first plane of the multiplanar buffer.
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> 
> ---
> v2:
>  - Update with more descriptive text from Laurent
> 
>  src/libcamera/v4l2_videodevice.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index 2745e5798419..0cc622f91f2d 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -1711,6 +1711,13 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
>  			return buffer;
>  		}
>  
> +		/*
> +		 * With a V4L2 single-planar format, all the data is stored in
> +		 * a single memory plane. The number of bytes used is conveyed
> +		 * through that plane when using the V4L2 multi-planar API, or
> +		 * set directly in the buffer when using the V4L2 single-planar
> +		 * API.
> +		 */
>  		unsigned int bytesused = multiPlanar ? planes[0].bytesused
>  				       : buf.bytesused;
>  		unsigned int remaining = bytesused;
> -- 
> 2.30.2
> 


More information about the libcamera-devel mailing list