[PATCH v2 4/4] libcamera: ipu3: Return Raw buffers on error

Jacopo Mondi jacopo.mondi at ideasonboard.com
Mon Mar 11 13:32:32 CET 2024


When a Request is cancelled, all its application-provided buffers
are completed and the paramters and stats buffer are made available
again to the pipeline handler.

If the RAW buffer doesn't come from the application (no RAW stream
requested) it comes from the CIO2Device internal pool. Return it to
the CIO2 pool in case of error.

Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally at ideasonboard.com>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 0c9d3167d2e6..57d0d6ed4758 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -1384,6 +1384,9 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
 		availableParamBuffers_.push(request->paramBuffer);
 		availableStatBuffers_.push(request->statBuffer);
 
+		/* Return RAW buffer to the CIO2. */
+		cio2_.tryReturnBuffer(buffer);
+
 		pipe()->completeRequest(request->_o<Request>());
 		return;
 	}
-- 
2.43.2



More information about the libcamera-devel mailing list