[libcamera-devel] [PATCH v3 05/13] libcamera: request: Add IPAMetaData

Jacopo Mondi jacopo at jmondi.org
Sat Sep 28 12:55:33 CEST 2019


Hi Niklas,

On Fri, Sep 27, 2019 at 04:44:09AM +0200, Niklas Söderlund wrote:
> Add a new structure to hold meta data coming out of the IPA. The
> structure will grow over time but for now only add information about the
> auto exposure state as it can be directly used by the rkisp1 IPA, which
> is capable of controlling exposure.
>

As commented on the IPA interface, why a C struct ? won't we have the
same issue we would have for Controls? Do you think this could be
replaced by a ControlList ?

Thanks
  j

> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  include/libcamera/request.h | 12 +++++++++++
>  src/libcamera/request.cpp   | 42 ++++++++++++++++++++++++++++++++++++-
>  2 files changed, 53 insertions(+), 1 deletion(-)
>
> diff --git a/include/libcamera/request.h b/include/libcamera/request.h
> index 5eb012e41b4a377b..38a6f008d53dc53a 100644
> --- a/include/libcamera/request.h
> +++ b/include/libcamera/request.h
> @@ -21,6 +21,16 @@ class Buffer;
>  class Camera;
>  class Stream;
>
> +enum AeState {
> +	Inactive,
> +	Searching,
> +	Converged,
> +};
> +
> +struct IPAMetaData {
> +	AeState aeState;
> +	bool ready;
> +};
>
>  class Request
>  {
> @@ -41,6 +51,7 @@ public:
>  	const std::map<Stream *, Buffer *> &buffers() const { return bufferMap_; }
>  	int addBuffer(std::unique_ptr<Buffer> buffer);
>  	Buffer *findBuffer(Stream *stream) const;
> +	const IPAMetaData &metaData() const { return metaData_; };
>
>  	uint64_t cookie() const { return cookie_; }
>  	Status status() const { return status_; }
> @@ -60,6 +71,7 @@ private:
>  	ControlList controls_;
>  	std::map<Stream *, Buffer *> bufferMap_;
>  	std::unordered_set<Buffer *> pending_;
> +	IPAMetaData metaData_;
>
>  	const uint64_t cookie_;
>  	Status status_;
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index ebae99b07c696512..226a10b6a3c048c5 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -24,6 +24,40 @@ namespace libcamera {
>
>  LOG_DEFINE_CATEGORY(Request)
>
> +/**
> + * \enum AeState
> + * State of Auto Exposure algorithm
> + * \var AeState::Inactive
> + * AE not running
> + * \var AeState::Searching
> + * AE is not converged to a good value and is adjusting exposure parameters.
> + * \var AeState::Converged
> + * AE has found good exposure values for the current scene.
> + */
> +
> +/**
> + * \struct IPAMetaData
> + * \brief Meta data describing the state of the IPA
> + *
> + * Container for IPA meta data. The intended creator of this object is an IPA
> + * and the intended consumer is applications. Applications access the object
> + * thru the Request object that corresponds to the specific capture event
> + * that generated the meta data.
> + */
> +
> +/**
> + * \var IPAMetaData::aeState
> + * \brief Holds the state of the Auto Exposure algorithm
> + */
> +
> +/**
> + * \var IPAMetaData::ready
> + * \brief Flag to indicate the pipeline have validated the meta data
> + *
> + * The meta data should not be returned to the application by the specific
> + * pipeline handler implementation before this flag is set to true.
> + */
> +
>  /**
>   * \enum Request::Status
>   * Request completion status
> @@ -55,7 +89,7 @@ LOG_DEFINE_CATEGORY(Request)
>   *
>   */
>  Request::Request(Camera *camera, uint64_t cookie)
> -	: camera_(camera), controls_(camera), cookie_(cookie),
> +	: camera_(camera), controls_(camera), metaData_({}), cookie_(cookie),
>  	  status_(RequestPending), cancelled_(false)
>  {
>  }
> @@ -157,6 +191,12 @@ Buffer *Request::findBuffer(Stream *stream) const
>  	return it->second;
>  }
>
> +/**
> + * \fn Request::metaData()
> + * \brief Retrieve the request's meta data
> + * \return The meta data 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/20190928/e8eb58f1/attachment.sig>


More information about the libcamera-devel mailing list