[libcamera-devel] [PATCH] libcamera: camera_sensor: Do not initialise unsupported test patterns
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Feb 22 07:11:31 CET 2022
Hi Kieran,
Thank you for the patch.
On Sat, Feb 12, 2022 at 11:34:07PM +0000, Kieran Bingham wrote:
> After the CameraSensor class has initialised properties, a default
> setting is applied to ensure that test pattern modes are disabled unless
> explicitly requested.
>
> This does not currently check to see if test patterns are supported on
> the CameraSensor and the applyTestPatternMode call will report a failure
> if it attempts to set a mode when not supported.
>
> Move the initialisation of the test pattern mode to the implementation
> of the control mappings to ensure that it is correctly reset at start
> up, while the code path will have already completed early if not
> supported.
>
> Bug: https://github.com/raspberrypi/libcamera-apps/issues/249
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/libcamera/camera_sensor.cpp | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index 345b4a170d47..3a6a1a6bca77 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -172,7 +172,7 @@ int CameraSensor::init()
> if (ret)
> return ret;
>
> - return applyTestPatternMode(controls::draft::TestPatternModeEnum::TestPatternModeOff);
> + return 0;
> }
>
> int CameraSensor::validateSensorDriver()
> @@ -372,6 +372,9 @@ void CameraSensor::initTestPatternModes()
>
> testPatternModes_.push_back(it->second);
> }
> +
> + /* Initialise the sensor with test patterns disabled. */
> + applyTestPatternMode(controls::draft::TestPatternModeEnum::TestPatternModeOff);
Errors when applyting the test pattern are not propagated up anymore.
A different approach if you don't want to turn all void functions in the
call stack to return an int is to move the error message when
testPatternModes_.empty() from CameraSensor::applyTestPatternMode() to
CameraSensor::setTestPatternMode(). You will need to keep the check in
CameraSensor::applyTestPatternMode() in order to return 0, but
CameraSensor::setTestPatternMode() could return a proper error code.
> }
>
> int CameraSensor::initProperties()
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list