| Message ID | 20251021182716.29274-8-mzamazal@redhat.com |
|---|---|
| State | New |
| Headers | show |
| Series |
|
| Related | show |
On Tue, Oct 21, 2025 at 08:27:14PM +0200, Milan Zamazal wrote: > 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> Reviewed-by: Umang Jain <uajain@igalia.com> > --- > src/libcamera/pipeline/simple/simple.cpp | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp > index 59252dac2..0c3284feb 100644 > --- a/src/libcamera/pipeline/simple/simple.cpp > +++ b/src/libcamera/pipeline/simple/simple.cpp > @@ -1670,6 +1670,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()) { > /* > @@ -1679,6 +1680,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) > @@ -1686,7 +1688,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_) > -- > 2.51.0 >
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 59252dac2..0c3284feb 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -1670,6 +1670,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()) { /* @@ -1679,6 +1680,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) @@ -1686,7 +1688,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(-)