diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index a85e8e4b4..aceb0d572 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -1680,6 +1680,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()) {
 		/*
@@ -1689,6 +1690,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)
@@ -1696,7 +1698,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_)
