mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Ricardo Ribalda <ribalda@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Yunke Cao <yunkec@chromium.org>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	Yunke Cao <yunkec@google.com>,
	Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: Re: [PATCH v15 19/19] media: uvcvideo: document UVC v1.5 ROI
Date: Mon, 9 Dec 2024 16:31:26 +0100	[thread overview]
Message-ID: <8bb30f4e-1e70-4413-bb50-d5562a7f6a1e@redhat.com> (raw)
In-Reply-To: <CANiDSCsphbdkHePXManvtR_i4iSUmHkFXQLzZGSc7BJ900c1Hw@mail.gmail.com>

Hi,

On 9-Dec-24 4:22 PM, Ricardo Ribalda wrote:
> Hi Hans
> 
> On Mon, 9 Dec 2024 at 15:36, Hans de Goede <hdegoede@redhat.com> wrote:
>>
>> Hi,
>>
>> On 14-Nov-24 8:10 PM, Ricardo Ribalda wrote:
>>> From: Yunke Cao <yunkec@google.com>
>>>
>>> Added documentation of V4L2_CID_UVC_REGION_OF_INTEREST_RECT and
>>> V4L2_CID_UVC_REGION_OF_INTEREST_AUTO.
>>>
>>> An example of a userspace implementing this feature can be found at:
>>> https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/release-R121-15699.B/camera/hal/usb/
>>>
>>> Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
>>> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
>>> Signed-off-by: Yunke Cao <yunkec@google.com>
>>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
>>> --->  .../userspace-api/media/drivers/uvcvideo.rst       | 64 ++++++++++++++++++++++
>>>  1 file changed, 64 insertions(+)
>>>
>>> diff --git a/Documentation/userspace-api/media/drivers/uvcvideo.rst b/Documentation/userspace-api/media/drivers/uvcvideo.rst
>>> index a290f9fadae9..1cdcd45907a3 100644
>>> --- a/Documentation/userspace-api/media/drivers/uvcvideo.rst
>>> +++ b/Documentation/userspace-api/media/drivers/uvcvideo.rst
>>> @@ -181,6 +181,7 @@ Argument: struct uvc_xu_control_mapping
>>>       UVC_CTRL_DATA_TYPE_BOOLEAN      Boolean
>>>       UVC_CTRL_DATA_TYPE_ENUM         Enumeration
>>>       UVC_CTRL_DATA_TYPE_BITMASK      Bitmask
>>> +     UVC_CTRL_DATA_TYPE_RECT         Rectangular area
>>>
>>>
>>>  UVCIOC_CTRL_QUERY - Query a UVC XU control
>>> @@ -255,3 +256,66 @@ Argument: struct uvc_xu_control_query
>>>       __u8    query           Request code to send to the device
>>>       __u16   size            Control data size (in bytes)
>>>       __u8    *data           Control value
>>> +
>>> +
>>> +Driver-specific V4L2 controls
>>> +-----------------------------
>>> +
>>> +The uvcvideo driver implements the following UVC-specific controls:
>>> +
>>> +``V4L2_CID_UVC_REGION_OF_INTEREST_RECT (struct)``
>>> +     This control determines the region of interest (ROI). ROI is a
>>> +     rectangular area represented by a struct :c:type:`v4l2_rect`. The
>>> +     rectangle is in global sensor coordinates and pixel units. It is
>>
>> Maybe: "The rectangle is in global sensor coordinates using pixel units" ?
>>
>> being "in pixel units" sounds a bit weird and had me confused for a moment.
>>
>>> +     independent of the field of view, not impacted by any cropping or
>>> +     scaling.
>>> +
>>> +     Use ``V4L2_CTRL_WHICH_MIN_VAL`` and ``V4L2_CTRL_WHICH_MAX_VAL`` to query
>>> +     the range of rectangle sizes.
>>> +
>>> +     Setting a ROI allows the camera to optimize the capture for the region.
>>> +     The value of ``V4L2_CID_REGION_OF_INTEREST_AUTO`` control determines
>>> +     the detailed behavior.
>>> +
>>> +     An example of use of this control, can be found in the:
>>> +     `Chrome OS USB camera HAL.
>>> +     <https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/release-R121-15699.B/camera/hal/usb/>`
>>
>> Hmm, not sure we want this in the API documentation. OTOH why not ? Anyone else
>> have an opinion on this ?
> 
> Laurent requested this:
> https://lore.kernel.org/linux-media/20231218034413.GN5290@pendragon.ideasonboard.com/

Ok, keeping this as is works for me.

>>> +
>>> +
>>> +``V4L2_CID_UVC_REGION_OF_INTEREST_AUTO (bitmask)``
>>> +     This determines which, if any, on-board features should track to the
>>> +     Region of Interest specified by the current value of
>>> +     ``V4L2_CID_UVD__REGION_OF_INTEREST_RECT``.
>>> +
>>> +     Max value is a mask indicating all supported Auto Controls.
>>> +
>>> +.. flat-table::
>>> +    :header-rows:  0
>>> +    :stub-columns: 0
>>> +
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_EXPOSURE``
>>> +      - Setting this bit causes automatic exposure to track the region of
>>> +     interest instead of the whole image.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_IRIS``
>>> +      - Setting this bit causes automatic iris to track the region of interest
>>> +        instead of the whole image.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_WHITE_BALANCE``
>>> +      - Setting this bit causes automatic white balance to track the region
>>> +     of interest instead of the whole image.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_FOCUS``
>>> +      - Setting this bit causes automatic focus adjustment to track the region
>>> +        of interest instead of the whole image.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_FACE_DETECT``
>>> +      - Setting this bit causes automatic face detection to track the region of
>>> +        interest instead of the whole image.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK``
>>> +      - Setting this bit enables automatic face detection and tracking. The
>>> +     current value of ``V4L2_CID_REGION_OF_INTEREST_RECT`` may be updated by
>>> +     the driver.
>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION``
>>> +      - Setting this bit enables automatic image stabilization. The
>>> +     current value of ``V4L2_CID_REGION_OF_INTEREST_RECT`` may be updated by
>>> +     the driver.
>>
>> This one I do not understand. Since the ROI is not a crop, I don't see how
>> this interacts with image-stabilization. Typically digital image-stabilization
>> uses a moving slightly smaller crop of the full sensor rectangle which it moves
>> around in realtime to compensate for camera movements.
>>
>> So I wonder what this is expected to do. Does this set the ROI to the image
>> stabilization crop ? I guess that combined with reading back the ROI that might be
>> somewhat useful to follow what the image stabilization code is doing.
>>
>> OTOH this does not seem useful for using as region for AEC / AWB ?
> 
> Unfortunately, the standard is not very verbose about this:
> https://ibb.co/VppnQ43
> 
> What about:
> 
> - ``Image Stabilization`` bit from the UVC's bmAutoControls Region of
> Interest Control.
> > ?

I have no strong preference for either the current wording or the new
wording you just suggested. Either one seems pretty vague / unclear to me,
but I realize that is just the result of the specification being unclear
on this point.

So use what you think is best and then we'll just have to live with
this being a bit vague.

>>> +    * - ``V4L2_UVC_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY``
>>> +      - Setting this bit enables automatically capture the specified region
>>> +        with higher quality if possible.
>>>
>>
>> Otherwise this looks good to me. But I would still like to see
>> a discussion about using UVC custom ctrls instead of something standardized
>> for this. Although I guess maybe that already happened before I got involved ?
> 
> Seems like both Hans V and Laurent preferred uvc custom controls:
> 
> https://lore.kernel.org/linux-media/a0fe2b49-12b7-8eaf-c3ef-7af1a247e595@xs4all.nl

Ack.

Regards,

Hans



  reply	other threads:[~2024-12-09 15:31 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-14 19:10 [PATCH v15 00/19] media: uvcvideo: Implement " Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 01/19] media: uvcvideo: Fix event flags in uvc_ctrl_send_events Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 02/19] media: v4l2_ctrl: Add V4L2_CTRL_TYPE_RECT Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 03/19] media: v4l2-ctrls: add support for V4L2_CTRL_WHICH_MIN/MAX_VAL Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 04/19] media: vivid: Add a rectangle control Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 05/19] media: uvcvideo: Handle uvc menu translation inside uvc_get_le_value Ricardo Ribalda
2024-11-25 15:50   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 06/19] media: uvcvideo: Handle uvc menu translation inside uvc_set_le_value Ricardo Ribalda
2024-11-25 15:58   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 07/19] media: uvcvideo: refactor uvc_ioctl_g_ext_ctrls Ricardo Ribalda
2024-11-25 16:01   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 08/19] media: uvcvideo: uvc_ioctl_(g|s)_ext_ctrls: handle NoP case Ricardo Ribalda
2024-11-25 16:01   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 09/19] media: uvcvideo: Support any size for mapping get/set Ricardo Ribalda
2024-12-09  8:56   ` Yunke Cao
2024-12-09 12:49   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 10/19] media: uvcvideo: Factor out clamping from uvc_ctrl_set Ricardo Ribalda
2024-12-09  8:50   ` Yunke Cao
2024-12-09 12:57   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 11/19] media: uvcvideo: add support for compound controls Ricardo Ribalda
2024-12-09 13:35   ` Hans de Goede
2024-12-09 13:58   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 12/19] media: uvcvideo: Factor out query_boundaries from query_ctrl Ricardo Ribalda
2024-12-09  8:50   ` Yunke Cao
2024-12-09 13:38   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 13/19] media: uvcvideo: support V4L2_CTRL_WHICH_MIN/MAX_VAL Ricardo Ribalda
2024-12-09 13:47   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 14/19] media: uvcvideo: Use the camera to clamp compound controls Ricardo Ribalda
2024-12-09 14:05   ` Hans de Goede
2024-12-09 14:46     ` Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 15/19] media: uvcvideo: let v4l2_query_v4l2_ctrl() work with v4l2_query_ext_ctrl Ricardo Ribalda
2024-12-09  8:50   ` Yunke Cao
2024-12-09 14:08   ` Hans de Goede
2024-12-09 14:12     ` Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 16/19] media: uvcvideo: Introduce uvc_mapping_v4l2_size Ricardo Ribalda
2024-12-09  8:51   ` Yunke Cao
2024-12-09 14:09   ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 17/19] media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map Ricardo Ribalda
2024-11-29  8:15   ` Ricardo Ribalda
2024-12-09 14:11   ` Hans de Goede
2024-12-09 14:15     ` Ricardo Ribalda
2024-11-14 19:10 ` [PATCH v15 18/19] media: uvcvideo: implement UVC v1.5 ROI Ricardo Ribalda
2024-11-14 19:53   ` Gergo Koteles
2024-11-14 20:03     ` Ricardo Ribalda
2024-11-14 20:16       ` Gergo Koteles
2024-11-14 20:28         ` Ricardo Ribalda
2024-11-15  0:04           ` Gergo Koteles
2024-11-15  8:22             ` Ricardo Ribalda
2024-11-18 15:59       ` Hans de Goede
2024-11-18 16:16         ` Ricardo Ribalda Delgado
2024-11-25 14:27           ` Hans de Goede
2024-12-02  8:02   ` Yunke Cao
2024-12-02  9:26     ` Ricardo Ribalda
2024-12-06  7:50       ` Yunke Cao
2024-12-09 14:22   ` Hans de Goede
2024-12-09 15:23     ` Ricardo Ribalda
2024-12-09 15:28       ` Hans de Goede
2024-11-14 19:10 ` [PATCH v15 19/19] media: uvcvideo: document " Ricardo Ribalda
2024-12-09 14:36   ` Hans de Goede
2024-12-09 15:22     ` Ricardo Ribalda
2024-12-09 15:31       ` Hans de Goede [this message]
2024-12-09  8:53 ` [PATCH v15 00/19] media: uvcvideo: Implement " Yunke Cao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8bb30f4e-1e70-4413-bb50-d5562a7f6a1e@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=hverkuil@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=ribalda@chromium.org \
    --cc=ribalda@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=senozhatsky@chromium.org \
    --cc=yunkec@chromium.org \
    --cc=yunkec@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®