summaryrefslogtreecommitdiff
path: root/src/libcamera/v4l2_videodevice.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-08 13:15:56 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-19 13:14:54 +0300
commit5b39dc6d9bf61c23e743dd97d527c1eb2bd41aee (patch)
treeb3e98e526c262ed7e760ec1465d577f1325e2281 /src/libcamera/v4l2_videodevice.cpp
parent3b07397f0e7d93d54535d9c87e7b9c19d04c97f0 (diff)
libcamera: v4l2_videodevice: Improve debugging when buffer is too small
When a dequeued buffer is too small, the condition is logged and an error is returned. The logged message doesn't provide any information about the sizes, making debugging more difficult. Improve it by logging both the bytesused value and the length of each plane. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Eugen Hristev <eugen.hristev@microchip.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera/v4l2_videodevice.cpp')
-rw-r--r--src/libcamera/v4l2_videodevice.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index ba5f88cd..2745e579 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -1713,19 +1713,25 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
unsigned int bytesused = multiPlanar ? planes[0].bytesused
: buf.bytesused;
+ unsigned int remaining = bytesused;
for (auto [i, plane] : utils::enumerate(buffer->planes())) {
- if (!bytesused) {
+ if (!remaining) {
LOG(V4L2, Error)
- << "Dequeued buffer is too small";
+ << "Dequeued buffer (" << bytesused
+ << " bytes) too small for plane lengths "
+ << utils::join(buffer->planes(), "/",
+ [](const FrameBuffer::Plane &p) {
+ return p.length;
+ });
metadata.status = FrameMetadata::FrameError;
return buffer;
}
metadata.planes()[i].bytesused =
- std::min(plane.length, bytesused);
- bytesused -= metadata.planes()[i].bytesused;
+ std::min(plane.length, remaining);
+ remaining -= metadata.planes()[i].bytesused;
}
} else if (multiPlanar) {
/*