[RFC,v3,03/17] libcamera: software_isp: Queue the input buffer per each output
diff mbox series

Message ID 20260604095105.68798-5-mzamazal@redhat.com
State Superseded
Headers show
Series
  • Untitled series #5977
Related show

Commit Message

Milan Zamazal June 4, 2026, 9:50 a.m. UTC
Multiple outputs are not supported, but if they were, the input buffer
should be queued for each of them because each output buffer processing
emits inputBufferReady.

Currently, with a single output, it doesn't change anything.

Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
---
 src/libcamera/software_isp/software_isp.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Kieran Bingham June 4, 2026, 6:30 p.m. UTC | #1
Quoting Milan Zamazal (2026-06-04 10:50:46)
> Multiple outputs are not supported, but if they were, the input buffer
> should be queued for each of them because each output buffer processing
> emits inputBufferReady.
> 
> Currently, with a single output, it doesn't change anything.

I could imagine we might want to make SoftISP support multiple outputs
indeed, perhaps when we have multi-pass so we could run the rescaler or
different stages independently.

And this makes it more like the other pipelines, so I think it's
helpful:

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> 
> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
> ---
>  src/libcamera/software_isp/software_isp.cpp | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp
> index f5b44f4e5..f17f1ca1f 100644
> --- a/src/libcamera/software_isp/software_isp.cpp
> +++ b/src/libcamera/software_isp/software_isp.cpp
> @@ -342,9 +342,8 @@ int SoftwareIsp::queueBuffers(uint32_t frame, FrameBuffer *input,
>                         return -EINVAL;
>         }
>  
> -       queuedInputBuffers_.push_back(input);
> -
>         for (const auto &[stream, buffer] : outputs) {
> +               queuedInputBuffers_.push_back(input);
>                 queuedOutputBuffers_.push_back(buffer);
>                 process(frame, input, buffer);
>         }
> -- 
> 2.54.0
>

Patch
diff mbox series

diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp
index f5b44f4e5..f17f1ca1f 100644
--- a/src/libcamera/software_isp/software_isp.cpp
+++ b/src/libcamera/software_isp/software_isp.cpp
@@ -342,9 +342,8 @@  int SoftwareIsp::queueBuffers(uint32_t frame, FrameBuffer *input,
 			return -EINVAL;
 	}
 
-	queuedInputBuffers_.push_back(input);
-
 	for (const auto &[stream, buffer] : outputs) {
+		queuedInputBuffers_.push_back(input);
 		queuedOutputBuffers_.push_back(buffer);
 		process(frame, input, buffer);
 	}