[libcamera-devel] [PATCH v2 1/5] libcamera: camera_sensor: Verify flips support

David Plowman david.plowman at raspberrypi.com
Mon Jan 16 12:54:48 CET 2023


Hi Jacopo

Thanks for the patch!

On Sat, 14 Jan 2023 at 19:47, Jacopo Mondi
<jacopo.mondi at ideasonboard.com> wrote:
>
> During the camera sensor driver validation, verify if the sensor
> supports horizontal and vertical flips and store a flag as
> CameraSensor::supportFlips_ class member.
>
> The flag will be later inspected when applying flips.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

This looks good to me! I know that we should at some point consider
handling h and v flips separately, but obviously that will be a
separate future change.

Reviewed-by: David Plowman <david.plowman at raspberrypi.com>

Thanks!
David

> ---
>  include/libcamera/internal/camera_sensor.h |  1 +
>  src/libcamera/camera_sensor.cpp            | 18 +++++++++++++++++-
>  2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
> index b9f4d7867854..878f3c28a3c9 100644
> --- a/include/libcamera/internal/camera_sensor.h
> +++ b/include/libcamera/internal/camera_sensor.h
> @@ -101,6 +101,7 @@ private:
>         Size pixelArraySize_;
>         Rectangle activeArea_;
>         const BayerFormat *bayerFormat_;
> +       bool supportFlips_;
>
>         ControlList properties_;
>
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index a210aa4fa370..83ac075a4265 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -55,7 +55,8 @@ LOG_DEFINE_CATEGORY(CameraSensor)
>   */
>  CameraSensor::CameraSensor(const MediaEntity *entity)
>         : entity_(entity), pad_(UINT_MAX), staticProps_(nullptr),
> -         bayerFormat_(nullptr), properties_(properties::properties)
> +         bayerFormat_(nullptr), supportFlips_(false),
> +         properties_(properties::properties)
>  {
>  }
>
> @@ -247,6 +248,21 @@ int CameraSensor::validateSensorDriver()
>                 }
>         }
>
> +       /*
> +        * Verify if sensor supports horizontal/vertical flips
> +        *
> +        * \todo Handle horizontal and vertical flips independently.
> +        */
> +       const struct v4l2_query_ext_ctrl *hflipInfo = subdev_->controlInfo(V4L2_CID_HFLIP);
> +       const struct v4l2_query_ext_ctrl *vflipInfo = subdev_->controlInfo(V4L2_CID_VFLIP);
> +       if (hflipInfo && !(hflipInfo->flags & V4L2_CTRL_FLAG_READ_ONLY) &&
> +           vflipInfo && !(vflipInfo->flags & V4L2_CTRL_FLAG_READ_ONLY))
> +               supportFlips_ = true;
> +
> +       if (!supportFlips_)
> +               LOG(CameraSensor, Warning)
> +                       << "Camera sensor does not support horizontal/vertical flip";
> +
>         /*
>          * Make sure the required selection targets are supported.
>          *
> --
> 2.39.0
>


More information about the libcamera-devel mailing list