[libcamera-devel] [PATCH v2 1/1] libcamera: camera_sensor: Reset HBLANK when setting the format
Naushir Patuck
naush at raspberrypi.com
Wed Nov 23 12:55:34 CET 2022
Hi David,
Thanks for fixing this.
On Wed, 23 Nov 2022 at 11:36, David Plowman via libcamera-devel <
libcamera-devel at lists.libcamera.org> wrote:
> We no longer reset the HBLANK in init because we may not own the
> camera and the operation may fail. Instead, we reset it when we set
> the camera format so that all pipeline handlers, even ones that do not
> control HBLANK themselves, will have a well-defined value.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
>
Seems reasonable!
Reviewed-By: Naushir Patuck <naush at raspberrypi.com>
> ---
> src/libcamera/camera_sensor.cpp | 53 ++++++++++++++++-----------------
> 1 file changed, 26 insertions(+), 27 deletions(-)
>
> diff --git a/src/libcamera/camera_sensor.cpp
> b/src/libcamera/camera_sensor.cpp
> index 572a313a..ec7bb0e7 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -176,32 +176,6 @@ int CameraSensor::init()
> if (ret)
> return ret;
>
> - /*
> - * Set HBLANK to the minimum to start with a well-defined line
> length,
> - * allowing IPA modules that do not modify HBLANK to use the sensor
> - * minimum line length in their calculations.
> - *
> - * At present, there is no way of knowing if a control is
> read-only.
> - * As a workaround, assume that if the minimum and maximum values
> of
> - * the V4L2_CID_HBLANK control are the same, it implies the control
> - * is read-only.
> - *
> - * \todo The control API ought to have a flag to specify if a
> control
> - * is read-only which could be used below.
> - */
> - const ControlInfo hblank = ctrls.infoMap()->at(V4L2_CID_HBLANK);
> - const int32_t hblankMin = hblank.min().get<int32_t>();
> - const int32_t hblankMax = hblank.max().get<int32_t>();
> -
> - if (hblankMin != hblankMax) {
> - ControlList ctrl(subdev_->controls());
> -
> - ctrl.set(V4L2_CID_HBLANK, hblankMin);
> - ret = subdev_->setControls(&ctrl);
> - if (ret)
> - return ret;
> - }
> -
> return
> applyTestPatternMode(controls::draft::TestPatternModeEnum::TestPatternModeOff);
> }
>
> @@ -748,7 +722,32 @@ int CameraSensor::setFormat(V4L2SubdeviceFormat
> *format)
> return ret;
>
> updateControlInfo();
> - return 0;
> +
> + /*
> + * Set HBLANK to the minimum to start with a well-defined line
> length,
> + * allowing IPA modules that do not modify HBLANK to use the sensor
> + * minimum line length in their calculations.
> + *
> + * At present, there is no way of knowing if a control is
> read-only.
> + * As a workaround, assume that if the minimum and maximum values
> of
> + * the V4L2_CID_HBLANK control are the same, it implies the control
> + * is read-only.
> + *
> + * \todo The control API ought to have a flag to specify if a
> control
> + * is read-only which could be used below.
> + */
> + const ControlInfo hblank = controls().at(V4L2_CID_HBLANK);
> + const int32_t hblankMin = hblank.min().get<int32_t>();
> + const int32_t hblankMax = hblank.max().get<int32_t>();
> +
> + if (hblankMin != hblankMax) {
> + ControlList ctrl(subdev_->controls());
> +
> + ctrl.set(V4L2_CID_HBLANK, hblankMin);
> + ret = subdev_->setControls(&ctrl);
> + }
> +
> + return ret;
> }
>
> /**
> --
> 2.30.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20221123/551c5490/attachment.htm>
More information about the libcamera-devel
mailing list