Re: [PATCH v2 2/6] media: v4l2_ctrl: Add region of interest auto control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks, I will add detailed behavior in the follow up version.

On Tue, May 17, 2022 at 10:23 PM Nicolas Dufresne <nicolas@xxxxxxxxxxxx> wrote:
>
> Le lundi 16 mai 2022 à 23:04 +0900, Yunke Cao a écrit :
> > Signed-off-by: Yunke Cao <yunkec@xxxxxxxxxx>
> > ---
> >  .../media/v4l/ext-ctrls-camera.rst            | 25 +++++++++++++++++++
> >  drivers/media/v4l2-core/v4l2-ctrls-defs.c     |  2 ++
> >  include/uapi/linux/v4l2-controls.h            |  9 +++++++
> >  3 files changed, 36 insertions(+)
> >
> > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > index 86a1f09a8a1c..3da66e1e1fc7 100644
> > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst
> > @@ -665,3 +665,28 @@ enum v4l2_scene_mode -
> >  ``V4L2_CID_REGION_OF_INTEREST_RECT (struct)``
> >      This control determines the region of interest. Region of interest is an
> >      rectangular area represented by a struct v4l2_rect.
> > +
> > +``V4L2_CID_REGION_OF_INTEREST_AUTO (bitmask)``
> > +    This determines which, if any, on board features should track to the
> > +    Region of Interest.
> > +
> > +.. flat-table::
> > +    :header-rows:  0
> > +    :stub-columns: 0
> > +
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_EXPOSURE``
> > +      - Auto Exposure.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_IRIS``
> > +      - Auto Iris.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_WHITE_BALANCE``
> > +      - Auto White Balance.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_FOCUS``
> > +      - Auto Focus.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_FACE_DETECT``
> > +      - Auto Face Detect.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK``
> > +      - Auto Detect and Track.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION``
> > +      - Image Stabilization.
> > +    * - ``V4L2_CID_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY``
> > +      - Higher Quality.
>
> Now I see the usage, the control is missing cross-reference and behaviour.
> Consider that someone may have to use or implement your feature on different HW
> and in different context in the future. Right now you aren't writing a
> specification, but barely listing things that are already encoded in the item
> names. For each of this, add human readable prose that explain what is expected
> behaviour when the bit is set. This way, future implementation can check their
> behaviour and cross-over with the documentation to make sure it is a fit, or if
> another bit need to be allocated.
>
> I still believe REGION_OF_INTEREST is too generic of a name for the purpose, as
> in the context of the V4L2 API, we also support video encoders, and none of this
> (perhaps except QUALITY, but with encoder you have to specify a delta for that).
> The name really needs to be specialized to be implemented this way. Otherwise,
> it create confusion, and makes the V4L2 uAPI poorer over time. Naming is hard,
> but I need to make a suggestion, perhaps CAMERA_ROI ? We have classes, perhaps a
> class for the CAMERA controls is needed ?
>
> > diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> > index 95f39a2d2ad2..f28763bf95e9 100644
> > --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> > +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> > @@ -1043,6 +1043,7 @@ const char *v4l2_ctrl_get_name(u32 id)
> >       case V4L2_CID_CAMERA_ORIENTATION:       return "Camera Orientation";
> >       case V4L2_CID_CAMERA_SENSOR_ROTATION:   return "Camera Sensor Rotation";
> >       case V4L2_CID_REGION_OF_INTEREST_RECT:  return "Region Of Interest Rectangle";
> > +     case V4L2_CID_REGION_OF_INTEREST_AUTO:  return "Region Of Interest Auto Controls";
> >
> >       /* FM Radio Modulator controls */
> >       /* Keep the order of the 'case's the same as in v4l2-controls.h! */
> > @@ -1415,6 +1416,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
> >       case V4L2_CID_JPEG_ACTIVE_MARKER:
> >       case V4L2_CID_3A_LOCK:
> >       case V4L2_CID_AUTO_FOCUS_STATUS:
> > +     case V4L2_CID_REGION_OF_INTEREST_AUTO:
> >       case V4L2_CID_DV_TX_HOTPLUG:
> >       case V4L2_CID_DV_TX_RXSENSE:
> >       case V4L2_CID_DV_TX_EDID_PRESENT:
> > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> > index 499fcddb6254..f6938e4de129 100644
> > --- a/include/uapi/linux/v4l2-controls.h
> > +++ b/include/uapi/linux/v4l2-controls.h
> > @@ -1009,6 +1009,15 @@ enum v4l2_auto_focus_range {
> >  #define V4L2_CID_CAMERA_SENSOR_ROTATION              (V4L2_CID_CAMERA_CLASS_BASE+35)
> >
> >  #define V4L2_CID_REGION_OF_INTEREST_RECT     (V4L2_CID_CAMERA_CLASS_BASE+36)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO     (V4L2_CID_CAMERA_CLASS_BASE+37)

The ROI controls are in V4L2_CID_CAMERA_CLASS
"(V4L2_CID_CAMERA_CLASS_BASE+36)" unless I miss anything.
Correct me if I'm wrong but I don't see "CAMERA" included in the name
of other camera controls.

> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_EXPOSURE            (1 << 0)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_IRIS                        (1 << 1)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_WHITE_BALANCE               (1 << 2)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_FOCUS                       (1 << 3)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_FACE_DETECT         (1 << 4)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK    (1 << 5)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION (1 << 6)
> > +#define V4L2_CID_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY              (1 << 7)
> >
> >  /* FM Modulator class control IDs */
> >
>




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux