Re: [RFC v5 13/15] media: uapi: Add V4L2_CID_BINNING control for binning configuration

Sakari Ailus
2025-02-10T14:32:20Z

Hi Hans,

Thank you for the review.

On Mon, Feb 10, 2025 at 03:07:25PM +0100, Hans Verkuil wrote:
> On 03/02/2025 09:58, Sakari Ailus wrote:
> > Add V4L2_CID_BINNING control for configuring binning and enumerating a
> > camera sensor's binning capabilities. The control combines horizontal and
> > vertical binning into a single control as the two are generally related.
> >
> > New drivers should use this control to configure binning.
> >
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> > ---
> > .../media/drivers/camera-sensor.rst | 10 +++++++
> > .../media/v4l/ext-ctrls-camera.rst | 29 +++++++++++++++++++
> > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 2 ++
> > include/uapi/linux/v4l2-controls.h | 1 +
> > 4 files changed, 42 insertions(+)
> >
> > diff --git a/Documentation/userspace-api/media/drivers/camera-sensor.rst b/Documentation/userspace-api/media/drivers/camera-sensor.rst
> > index 91e5305458b9..59431ab0b923 100644
> > --- a/Documentation/userspace-api/media/drivers/camera-sensor.rst
> > +++ b/Documentation/userspace-api/media/drivers/camera-sensor.rst
> > @@ -120,6 +120,16 @@ values programmed by the register sequences. The default values of these
> > controls shall be 0 (disabled). Especially these controls shall not be inverted,
> > independently of the sensor's mounting rotation.
> >
> > +Binning
> > +-------
> > +
> > +Binning has traditionally been configured using :ref:`the compose selection
> > +rectangle <v4l2-selection-targets-table>`. The :ref:`V4L2_CID_BINNING
> > +<v4l2-cid-camera-sensor-binning>` is also available for binning configuration and
> > +users should use it when it's available. Drivers supporting the control shall
> > +also support the compose rectangle, albeit the rectangle may be read-only when
> > +the control is present.
> > +
> > .. _media_using_camera_sensor_drivers_embedded_data:
> >
> > Embedded data
> > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > index cdc515c60468..18b484ff5d75 100644
> > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > @@ -672,3 +672,32 @@ enum v4l2_scene_mode -
> >
> > As modes differ for each sensor, menu items are not standardized by this
> > control and are left to the programmer.
> > +
> > +.. _v4l2-cid-camera-sensor-binning:
> > +
> > +``V4L2_CID_BINNING_FACTORS (integer menu)``
> > +
> > + Horizontal and vertical binning factors. Binning combines several
> > + horizontal, vertical or both pixel values into a single pixel. It is a way
> > + to scale an image. Binning typically produces fairly good quality output.
> > +
> > + Determines both horizontal and vertical binning factors for a camera
> > + sensor. The values are encoded in the following way:
> > +
> > +.. flat-table::
> > + :header-rows: 1
> > + :stub-columns: 0
> > +
> > + * - Bits
> > + - Synopsis
> > + * - 48--63
> > + - Horizontal binning numerator.
> > + * - 32--47
> > + - Horizontal binning denominator.
> > + * - 16--31
> > + - Vertical binning numerator.
> > + * - 0--15
> > + - Vertical binning denominator.
>
> This suggests that the vertical and horizontal binning factors are not
> independent settings, is that correct?

There are dependencies between the two, yes.

>
> How does this control (and the subsampling controls) relate to the ROTATE control?
> Does it happen before or after the rotate?

In general there's no rotation support in (raw) camera sensors, just
flipping. And flipping isn't affecting binning.

--
Kind regards,

Sakari Ailus