[libcamera-devel] [PATCH 5/5] cam: Use script parser to set controls
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri May 20 12:26:50 CEST 2022
Hi Jacopo,
Thank you for the patch.
On Wed, May 18, 2022 at 07:19:21PM +0200, Jacopo Mondi via libcamera-devel wrote:
> Add to the CameraSession class a script parser instance, created
> conditionally to the OptCaptureScript option.
>
> If the script parser has been created, use it at queueRequest time to
> retrieve the list of controls that has to be associated with a Request,
> and populate Request::controls() with it before queueing it to the
> Camera.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> src/cam/camera_session.cpp | 10 ++++++++++
> src/cam/camera_session.h | 3 +++
> 2 files changed, 13 insertions(+)
>
> diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
> index a1b447235009..74c2acd79499 100644
> --- a/src/cam/camera_session.cpp
> +++ b/src/cam/camera_session.cpp
> @@ -94,6 +94,13 @@ CameraSession::CameraSession(CameraManager *cm,
> }
> #endif
>
> + if (options_.isSet(OptCaptureScript)) {
> + script_ = std::make_unique<CaptureScript>(camera_,
> + options_[OptCaptureScript].toString());
> + if (!script_->valid())
An error message would be nice here.
> + return;
> + }
> +
> switch (config->validate()) {
> case CameraConfiguration::Valid:
> break;
> @@ -327,6 +334,9 @@ int CameraSession::startCapture()
>
> int CameraSession::queueRequest(Request *request)
> {
> + if (script_)
> + request->controls() = script_->frameControls(queueCount_);
> +
> queueCount_++;
>
> return camera_->queueRequest(request);
> diff --git a/src/cam/camera_session.h b/src/cam/camera_session.h
> index bf966bd15ab0..2cca92df0079 100644
> --- a/src/cam/camera_session.h
> +++ b/src/cam/camera_session.h
> @@ -21,6 +21,7 @@
> #include <libcamera/request.h>
> #include <libcamera/stream.h>
>
> +#include "capture_script.h"
You can forward-declare the class in this header and move the include to
the .cpp file.
> #include "options.h"
>
> class FrameSink;
> @@ -60,6 +61,8 @@ private:
> std::shared_ptr<libcamera::Camera> camera_;
> std::unique_ptr<libcamera::CameraConfiguration> config_;
>
> + std::unique_ptr<CaptureScript> script_;
> +
> std::map<const libcamera::Stream *, std::string> streamNames_;
> std::unique_ptr<FrameSink> sink_;
> unsigned int cameraIndex_;
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list