summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2020-07-13 11:35:11 +0100
committerBarnabás Pőcze <pobrn@protonmail.com>2024-12-09 12:19:20 +0100
commit3feec0c06f929efaf26a9a56b1e09ec78c124a71 (patch)
tree578c536b14e9191a067f54f32198575c73759c1a
parent017f711530013f3b32f405f528ada8ecfa8d05c2 (diff)
libcamera: pipeline: vivid: Queue requests
When a request 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>
-rw-r--r--src/libcamera/pipeline/vivid/vivid.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/libcamera/pipeline/vivid/vivid.cpp b/src/libcamera/pipeline/vivid/vivid.cpp
index f25af6a2..999eda34 100644
--- a/src/libcamera/pipeline/vivid/vivid.cpp
+++ b/src/libcamera/pipeline/vivid/vivid.cpp
@@ -223,7 +223,20 @@ void PipelineHandlerVivid::stopDevice(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)