diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 3b2ec684244881e5..7967fde9c39b1547 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -735,7 +735,11 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)
 	if (ret < 0)
 		return ret;
 
-	bufferCount = ret;
+	bufferCount = std::max({
+		data->outStream_.configuration().bufferCount,
+		data->vfStream_.configuration().bufferCount,
+		data->rawStream_.configuration().bufferCount,
+	});
 
 	ret = imgu->allocateBuffers(data, bufferCount);
 	if (ret < 0) {
