libcamera: simple: Require metadata only when software ISP is used

If software ISP is enabled then metadata is required in the simple
pipeline.  But this doesn't apply if the software ISP is not actually
used, for example when only a raw stream is produced.  Then the pipeline
waits for metadata that never comes.

This patch fixes the problem by requiring metadata only when software
ISP is used.

Reviewed-by: Umang Jain <uajain@igalia.com>
Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Milan Zamazal
2025-12-04 17:49:15 +01:00
committed by Kieran Bingham
parent a19f725695
commit 3991f02209
+3 -1
View File
@@ -1707,6 +1707,7 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
int ret;
std::map<const Stream *, FrameBuffer *> buffers;
bool metadataRequired = false;
for (auto &[stream, buffer] : request->buffers()) {
/*
@@ -1716,6 +1717,7 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
*/
if (data->useConversion_) {
buffers.emplace(stream, buffer);
metadataRequired = !!data->swIsp_;
} else {
ret = data->video_->queueBuffer(buffer);
if (ret < 0)
@@ -1723,7 +1725,7 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
}
}
data->frameInfo_.create(request, !!data->swIsp_);
data->frameInfo_.create(request, metadataRequired);
if (data->useConversion_) {
data->conversionQueue_.push({ request, std::move(buffers) });
if (data->swIsp_)