libcamera: ipu3: Split controls init/update
In order to prepare for updating the Camera controls limits when a new camera configuration is applied, split the initControls() function in two: - 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@jmondi.org> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
parent
2dab504a9b
commit
2a938efc8c
1 changed files with 29 additions and 4 deletions
|
@ -148,6 +148,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
int initControls(IPU3CameraData *data);
|
int initControls(IPU3CameraData *data);
|
||||||
|
int updateControls(IPU3CameraData *data);
|
||||||
int registerCameras();
|
int registerCameras();
|
||||||
|
|
||||||
int allocateBuffers(Camera *camera);
|
int allocateBuffers(Camera *camera);
|
||||||
|
@ -927,9 +928,11 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)
|
||||||
* \brief Initialize the camera controls
|
* \brief Initialize the camera controls
|
||||||
* \param[in] data The camera data
|
* \param[in] data The camera data
|
||||||
*
|
*
|
||||||
* Initialize the camera controls as the union of the static pipeline handler
|
* Initialize the camera controls by calculating controls which the pipeline
|
||||||
* controls (IPU3Controls) and controls created dynamically from the sensor
|
* is reponsible for and merge them with the controls computed by the IPA.
|
||||||
* capabilities.
|
*
|
||||||
|
* 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
|
* \return 0 on success or a negative error code otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -950,8 +953,30 @@ int PipelineHandlerIPU3::initControls(IPU3CameraData *data)
|
||||||
if (ret)
|
if (ret)
|
||||||
return 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{};
|
IPACameraSensorInfo sensorInfo{};
|
||||||
ret = sensor->sensorInfo(&sensorInfo);
|
|
||||||
|
int ret = sensor->sensorInfo(&sensorInfo);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue