[libcamera-devel] [PATCH 02/16] libcamera: ipu3: Split controls init/update
Umang Jain
umang.jain at ideasonboard.com
Wed Sep 1 08:25:50 CEST 2021
Hi Jacopo,
Thanks for the patch
On 8/27/21 5:37 PM, Jacopo Mondi wrote:
> In order to prepare to updating the Camera controls limits when anew
> camera configuration is applied, split the initControls() function in 2:
> - updateControls() to actually compute controls values
> - initControls() to initialize the sensor configuration and call
> updateControls
>
> Update the functions documentation accordingly.
>
> No functional changes intended.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
> src/libcamera/pipeline/ipu3/ipu3.cpp | 33 ++++++++++++++++++++++++----
> 1 file changed, 29 insertions(+), 4 deletions(-)
>
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index b321c94e9cb0..885f5ddce139 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -154,6 +154,7 @@ private:
> }
>
> int initControls(IPU3CameraData *data);
> + int updateControls(IPU3CameraData *data);
> int registerCameras();
>
> int allocateBuffers(Camera *camera);
> @@ -927,9 +928,11 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)
> * \brief Initialize the camera controls
> * \param[in] data The camera data
> *
> - * Initialize the camera controls as the union of the static pipeline handler
> - * controls (IPU3Controls) and controls created dynamically from the sensor
> - * capabilities.
> + * Initialize the camera controls by calculating controls which the pipeline
> + * is reponsible for and merge them with the controls computed by the IPA.
> + *
> + * This function needs data->ipaControls_ to be initialized by the IPA init()
> + * function at camera creation time. Always call this function after IPA init().
> *
> * \return 0 on success or a negative error code otherwise
> */
> @@ -950,8 +953,30 @@ int PipelineHandlerIPU3::initControls(IPU3CameraData *data)
> if (ret)
> return ret;
>
> + return updateControls(data);
> +}
> +
> +/**
> + * \brief Update the camera controls
> + * \param[in] data The camera data
> + *
> + * Compute the camera controls by calculating controls which the pipeline
> + * is reponsible for and merge them with the controls computed by the IPA.
> + *
> + * This function needs data->ipaControls_ to be refreshed when a new
> + * configuration is applied to the camera by the IPA configure() function.
> + *
> + * Always call this function after IPA configure() to make sure to have a
> + * properly refreshed IPA controls list.
> + *
> + * \return 0 on success or a negative error code otherwise
> + */
> +int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)
> +{
> + CameraSensor *sensor = data->cio2_.sensor();
> IPACameraSensorInfo sensorInfo{};
> - ret = sensor->sensorInfo(&sensorInfo);
> +
> + int ret = sensor->sensorInfo(&sensorInfo);
> if (ret)
> return ret;
>
More information about the libcamera-devel
mailing list