@@ -1648,6 +1648,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()) {
/*
@@ -1657,6 +1658,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)
@@ -1664,7 +1666,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_)
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. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- src/libcamera/pipeline/simple/simple.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)