diff --git a/src/libcamera/pipeline/vivid/vivid.cpp b/src/libcamera/pipeline/vivid/vivid.cpp
index 1a945a744055..4362e73f49a5 100644
--- a/src/libcamera/pipeline/vivid/vivid.cpp
+++ b/src/libcamera/pipeline/vivid/vivid.cpp
@@ -210,7 +210,20 @@ void PipelineHandlerVivid::stop(Camera *camera)
 
 int PipelineHandlerVivid::queueRequestDevice(Camera *camera, Request *request)
 {
-	return -1;
+	VividCameraData *data = cameraData(camera);
+	FrameBuffer *buffer = request->findBuffer(&data->stream_);
+	if (!buffer) {
+		LOG(VIVID, Error)
+			<< "Attempt to queue request with invalid stream";
+
+		return -ENOENT;
+	}
+
+	int ret = data->video_->queueBuffer(buffer);
+	if (ret < 0)
+		return ret;
+
+	return 0;
 }
 
 bool PipelineHandlerVivid::match(DeviceEnumerator *enumerator)
