From 6bc652ee1c4a102f3fe3f321afd6dedf7c233e01 Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Fri, 17 Jul 2020 16:18:32 +0100 Subject: android: camera_device: Query plane length Use lseek to query the length of planes where possible rather than leaving the plane.length as zero, which prevents mapping buffers for software processing. Reviewed-by: Laurent Pinchart Signed-off-by: Kieran Bingham --- src/android/camera_device.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index e609ed76..fd68fe4a 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -1132,12 +1132,13 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer return nullptr; } - /* - * Setting length to zero here is OK as the length is only used - * to map the memory of the plane. Libcamera do not need to poke - * at the memory content queued by the HAL. - */ - plane.length = 0; + off_t length = lseek(plane.fd.fd(), 0, SEEK_END); + if (length == -1) { + LOG(HAL, Error) << "Failed to query plane length"; + return nullptr; + } + + plane.length = length; planes.push_back(std::move(plane)); } -- cgit v1.2.1