[libcamera-devel] [PATCH v5 05/10] libcamera: request: Add metadata information

Jacopo Mondi jacopo at jmondi.org
Tue Oct 8 10:35:42 CEST 2019


Hi Niklas,

On Tue, Oct 08, 2019 at 02:45:29AM +0200, Niklas Söderlund wrote:
> A new ControlList container is needed to hold metadata coming out of
> the IPA. The list of supported controls in this list is expected to
> grow, so for now do not add a validator for the list.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  include/libcamera/request.h |  2 ++
>  src/libcamera/request.cpp   | 14 ++++++++++++++
>  2 files changed, 16 insertions(+)
>
> diff --git a/include/libcamera/request.h b/include/libcamera/request.h
> index e3db5243aaf3cf30..2d5a5964e99eb75f 100644
> --- a/include/libcamera/request.h
> +++ b/include/libcamera/request.h
> @@ -37,6 +37,7 @@ public:
>  	~Request();
>
>  	ControlList &controls() { return *controls_; }
> +	ControlList &metadata() { return *metadata_; }

Just thinking out loud, should the returned & be a const ? Might
application want to change the content of the metadata array ?

Thanks
  j
>  	const std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }
>  	int addBuffer(std::unique_ptr<Buffer> buffer);
>  	Buffer *findBuffer(Stream *stream) const;
> @@ -58,6 +59,7 @@ private:
>  	Camera *camera_;
>  	CameraControlValidator *validator_;
>  	ControlList *controls_;
> +	ControlList *metadata_;
>  	std::map<Stream *, Buffer *> bufferMap_;
>  	std::unordered_set<Buffer *> pending_;
>
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index 19f6d0b9a0aeb03c..23d3ab6f422c406e 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -65,6 +65,11 @@ Request::Request(Camera *camera, uint64_t cookie)
>  	 */
>  	validator_ = new CameraControlValidator(camera);
>  	controls_ = new ControlList(validator_);
> +
> +	/**
> +	 * \todo: Add a validator for metadata controls.
> +	 */
> +	metadata_ = new ControlList(nullptr);
>  }
>
>  Request::~Request()
> @@ -74,6 +79,7 @@ Request::~Request()
>  		delete buffer;
>  	}
>
> +	delete metadata_;
>  	delete controls_;
>  	delete validator_;
>  }
> @@ -161,6 +167,14 @@ Buffer *Request::findBuffer(Stream *stream) const
>  	return it->second;
>  }
>
> +/**
> + * \fn Request::metadata()
> + * \brief Retrieve the request's metadata
> + * \todo Offer a read-only API towards applications while keeping a read/write
> + * API internally.
> + * \return The metadata associated with the request
> + */
> +
>  /**
>   * \fn Request::cookie()
>   * \brief Retrieve the cookie set when the request was created
> --
> 2.23.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20191008/aa3cb319/attachment.sig>


More information about the libcamera-devel mailing list