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:
committed by
Kieran Bingham
parent
a19f725695
commit
3991f02209
@@ -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_)
|
||||
|
||||
Reference in New Issue
Block a user