From 1402152ad35017a817b1ead55e60ace9353efbdb Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Thu, 14 Oct 2021 09:54:05 +0100 Subject: libcamera: v4l2_videodevice: Explain multiplanar bytesused reasoning 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: Paul Elder Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- 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 2745e579..0cc622f9 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; -- cgit v1.2.1