summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2020-07-13 11:35:11 +0100
committerBarnabás Pőcze <barnabas.pocze@ideasonboard.com>2025-05-05 09:44:19 +0200
commitfc333e0674d2066a11e18331cc76fc66388b7f44 (patch)
treea876b2938e102abf4b162954a025d0497bb3c5d1
parent549fa632e994df06193db55129035ac29f82bc5f (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 a9787893..3162ade9 100644
--- a/src/libcamera/pipeline/vivid/vivid.cpp
+++ b/src/libcamera/pipeline/vivid/vivid.cpp
@@ -215,7 +215,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)