[libcamera-devel] [PATCH v3 1/2] libcamera: camera: Create a CameraControlValidator
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Oct 22 16:18:50 CEST 2021
Quoting Laurent Pinchart (2021-10-22 15:11:48)
> Hi Kieran,
>
> Thank you for the patch.
>
> On Wed, Oct 20, 2021 at 02:33:52PM +0100, Kieran Bingham wrote:
> > Create a Camera specific CameraControlValidator for the Camera instance.
>
> s/Camera specific/Camera-specific/
>
> > This will allow requests to use a single validor instance without having
>
> s/validor/validator/
>
> > to construct their own.
> >
> > Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> >
> > ---
> > v3:
> > - Use a unique_ptr instead of deriving from the _o/O_PTRs
> >
> > v2:
> > - Use LIBCAMERA_O_PTR() instead of _o<Public>()
> > ---
> > include/libcamera/internal/camera.h | 6 ++++++
> > src/libcamera/camera.cpp | 7 +++++++
> > 2 files changed, 13 insertions(+)
> >
> > diff --git a/include/libcamera/internal/camera.h b/include/libcamera/internal/camera.h
> > index 1a08da0cedc4..f0baaea07bdc 100644
> > --- a/include/libcamera/internal/camera.h
> > +++ b/include/libcamera/internal/camera.h
> > @@ -17,6 +17,8 @@
> >
> > #include <libcamera/camera.h>
> >
> > +#include "libcamera/internal/camera_controls.h"
>
> You could forward-declare the CameraControlValidator class here.
Good point. I'll update that, it saves the compiler from loading a whole
file to compile this one.
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> > +
> > namespace libcamera {
> >
> > class PipelineHandler;
> > @@ -38,6 +40,8 @@ public:
> >
> > uint32_t requestSequence_;
> >
> > + const CameraControlValidator *validator() const { return validator_.get(); }
> > +
> > private:
> > enum State {
> > CameraAvailable,
> > @@ -64,6 +68,8 @@ private:
> >
> > bool disconnected_;
> > std::atomic<State> state_;
> > +
> > + std::unique_ptr<CameraControlValidator> validator_;
> > };
> >
> > } /* namespace libcamera */
> > diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> > index 71809bcd36a3..f84cdc522d0d 100644
> > --- a/src/libcamera/camera.cpp
> > +++ b/src/libcamera/camera.cpp
> > @@ -366,6 +366,12 @@ Camera::Private::~Private()
> > * \return The pipeline handler that created this camera
> > */
> >
> > +/**
> > + * \fn Camera::Private::validator()
> > + * \brief Retrieve the control validator related to this camera
> > + * \return The control validator associated with this camera
> > + */
> > +
> > /**
> > * \var Camera::Private::queuedRequests_
> > * \brief The list of queued and not yet completed requests
> > @@ -665,6 +671,7 @@ Camera::Camera(std::unique_ptr<Private> d, const std::string &id,
> > {
> > _d()->id_ = id;
> > _d()->streams_ = streams;
> > + _d()->validator_ = std::make_unique<CameraControlValidator>(this);
> > }
> >
> > Camera::~Camera()
>
> --
> Regards,
>
> Laurent Pinchart
More information about the libcamera-devel
mailing list