[libcamera-devel] [PATCH v1 4/8] libcamera: camera: Validate MandatoryStream in queueRequest()

Naushir Patuck naush at raspberrypi.com
Fri Feb 3 10:44:20 CET 2023


Add some validation in queueRequest() to ensure that a frame buffer is
provided in a Request if the MandatoryStream flag has been set in the
StreamConfiguration for every active stream.

Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
 src/libcamera/camera.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 0da167a7bc51..c0a368c1e66c 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -1146,6 +1146,18 @@ int Camera::queueRequest(Request *request)
 		}
 	}
 
+	for (auto const stream : d->activeStreams_) {
+		const StreamConfiguration &config = stream->configuration();
+		FrameBuffer *buffer = request->findBuffer(stream);
+
+		if (!buffer && config.hints & StreamConfiguration::Hint::MandatoryStream) {
+			LOG(Camera, Error)
+				<< "No buffer provided for mandatory stream";
+			request->_d()->reset();
+			return -ENOMEM;
+		}
+	}
+
 	d->pipe_->invokeMethod(&PipelineHandler::queueRequest,
 			       ConnectionTypeQueued, request);
 
-- 
2.25.1



More information about the libcamera-devel mailing list