[libcamera-devel] [PATCH 1/6] libcamera: ipu3: Drop entityControls map

Umang Jain umang.jain at ideasonboard.com
Fri Sep 3 09:12:40 CEST 2021


Hi Jacopo

On 9/1/21 8:07 PM, Jacopo Mondi wrote:
> The IPA::configure() function has an IPAConfigInfo parameters which
> contains a map of numerical indexes to ControlInfoMap instances.
>
> This is a leftover of the old IPA protocol, where it was not possible to
> specify a rich interface as it is possible today and each entity
> ControlInfoMap was indexed by a numerical id and stored in a map.
>
> Now that the IPA interface allows to specify parameters by name, drop the
> map and send the sensor's control info map only.

ack

>
> If we'll need more ControlInfoMap to be shared with the IPA, a new parameter
> can be added to IPAConfigInfo.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
>   include/libcamera/ipa/ipu3.mojom     | 2 +-
>   src/ipa/ipu3/ipu3.cpp                | 4 ++--
>   src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
>   3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/libcamera/ipa/ipu3.mojom b/include/libcamera/ipa/ipu3.mojom
> index d561c2244907..2045ce909a88 100644
> --- a/include/libcamera/ipa/ipu3.mojom
> +++ b/include/libcamera/ipa/ipu3.mojom
> @@ -32,7 +32,7 @@ struct IPU3Action {
>   
>   struct IPAConfigInfo {
>   	libcamera.IPACameraSensorInfo sensorInfo;
> -	map<uint32, libcamera.ControlInfoMap> entityControls;
> +	libcamera.ControlInfoMap sensorControls;
>   	libcamera.Size bdsOutputSize;
>   	libcamera.Size iif;
>   };
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index c925cf642611..6a74f7826332 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -337,14 +337,14 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize)
>   
>   int IPAIPU3::configure(const IPAConfigInfo &configInfo)
>   {
> -	if (configInfo.entityControls.empty()) {
> +	if (configInfo.sensorControls.empty()) {
>   		LOG(IPAIPU3, Error) << "No controls provided";

Maybe also change the error string to be more specific now:

	LOG(IPAIPU3, Error) << "No sensor controls provided";

Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

>   		return -ENODATA;
>   	}
>   
>   	sensorInfo_ = configInfo.sensorInfo;
>   
> -	ctrls_ = configInfo.entityControls.at(0);
> +	ctrls_ = configInfo.sensorControls;
>   
>   	const auto itExp = ctrls_.find(V4L2_CID_EXPOSURE);
>   	if (itExp == ctrls_.end()) {
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index c287bf86e79a..92e869257e53 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -654,7 +654,7 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
>   	}
>   
>   	ipa::ipu3::IPAConfigInfo configInfo;
> -	configInfo.entityControls.emplace(0, data->cio2_.sensor()->controls());
> +	configInfo.sensorControls = data->cio2_.sensor()->controls();
>   	configInfo.sensorInfo = sensorInfo;
>   	configInfo.bdsOutputSize = config->imguConfig().bds;
>   	configInfo.iif = config->imguConfig().iif;


More information about the libcamera-devel mailing list