[libcamera-devel,7/9] libcamera: pipeline: vivid: Queue requeusts

Message ID 20200713132451.2944673-8-kieran.bingham@ideasonboard.com
State Awaiting Upstream
Headers show
Series
  • Introduce a new PipelineHandler
Related show

Commit Message

Kieran Bingham July 13, 2020, 1:24 p.m. UTC
When a reqeust is given to a pipeline handler, it must parse the request
and identify what actions the pipeline handler should take to enact on hardware.

In the case of the VIVID pipeline handler, we identify the buffer from the only
supported stream, and queue it to the video capture device.

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 src/libcamera/pipeline/vivid/vivid.cpp | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

Patch

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)