[libcamera-devel] [PATCH v2 1/2] libcamera: camera_sensor: Clear camera flips after opening the device
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jan 17 12:21:12 CET 2022
Quoting David Plowman (2022-01-13 14:15:57)
> We clear the V4L2_CID_HFLIP and V4L2_CID_VFLIP controls immediately
> after opening the camera device. This means the camera's Bayer format
> and mbus codes will be in the sensor's "native" order, and we document
> this to be the case so that it can be relied upon.
>
> Clearing the flips is harmless where sensor flips do not affect the
> Bayer order.
>
> This also fixes a bug in the Raspberry Pi pipeline handler where the
> native Bayer order was being computed wrongly, but the new behaviour
> here will be helpful to other pipeline handlers too. A subsequent
> commit will tidy up the Raspberry Pi pipeline handler in this area as
> it can now be simplified.
>
> Signed-off-by: David Plowman <david.plowman at raspberrypi.com>
> Fixes: 83a512816189 (pipeline: raspberrypi: Convert the pipeline handler to use media controller)
Fixes: 83a512816189 ("pipeline: raspberrypi: Convert the pipeline handler to use media controller")
Fixes tags usually have the $SUBJECT of the fix in quotes I believe.
It's defined by the kernel at:
https://www.kernel.org/doc/html/v4.17/process/submitting-patches.html#describe-your-changes
I don't think that needs a resubmit by itself though, just highlighting
for awareness, as I'm sure I've seen more fixes tags without quotes on
the list.
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/libcamera/camera_sensor.cpp | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index c3999d35..64f7f12c 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -107,6 +107,17 @@ int CameraSensor::init()
> if (ret < 0)
> return ret;
>
> + /*
> + * Clear any flips to be sure we get the "native" Bayer order. This is
> + * harmless for sensors where the flips don't affect the Bayer order.
> + */
> + ControlList ctrls(subdev_->controls());
> + if (subdev_->controls().find(V4L2_CID_HFLIP) != subdev_->controls().end())
> + ctrls.set(V4L2_CID_HFLIP, 0);
> + if (subdev_->controls().find(V4L2_CID_VFLIP) != subdev_->controls().end())
> + ctrls.set(V4L2_CID_VFLIP, 0);
> + subdev_->setControls(&ctrls);
> +
> /* Enumerate, sort and cache media bus codes and sizes. */
> formats_ = subdev_->formats(pad_);
> if (formats_.empty()) {
> @@ -461,6 +472,11 @@ int CameraSensor::initProperties()
> /**
> * \fn CameraSensor::mbusCodes()
> * \brief Retrieve the media bus codes supported by the camera sensor
> + *
> + * Any Bayer formats are listed using the sensor's native Bayer order,
> + * that is, with the effect of V4L2_CID_HFLIP and V4L2_CID_VFLIP undone
> + * (where these controls exist).
> + *
> * \return The supported media bus codes sorted in increasing order
> */
>
> --
> 2.30.2
>
More information about the libcamera-devel
mailing list