All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] New V4L2 controls V4L2_CID_NOTIFY_GAIN_XXX
@ 2021-07-22 12:12 David Plowman
  2021-07-22 12:12 ` [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls David Plowman
  2021-07-22 12:12 ` [PATCH v3 2/2] media: v4l2-ctrls: Document " David Plowman
  0 siblings, 2 replies; 14+ messages in thread
From: David Plowman @ 2021-07-22 12:12 UTC (permalink / raw)
  To: linux-media, sakari.ailus, Laurent Pinchart, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil
  Cc: David Plowman

Hi

Sorry for the delay with these patches, I think my previous attempt
didn't cast the email net wide enough and they got rather lost - my
apologies!

Anyway, this version addresses the feedback I had received originally,
so thank you for that. Therefore:

* The values are now specified to be linear gains.

* The default value is defined to be the value that is equivalent to a
  gain of 1x.

* I think there was a minor comment over the repetitiveness of the
  documentation, so I've tried to address that too.

Thanks very much and best regards

David

David Plowman (2):
  media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  media: v4l2-ctrls: Document V4L2_CID_NOTIFY_GAIN_XXX controls

 .../media/v4l/ext-ctrls-image-source.rst      | 25 +++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ctrls-defs.c     |  4 +++
 include/uapi/linux/v4l2-controls.h            |  4 +++
 3 files changed, 33 insertions(+)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-07-22 12:12 [PATCH v3 0/2] New V4L2 controls V4L2_CID_NOTIFY_GAIN_XXX David Plowman
@ 2021-07-22 12:12 ` David Plowman
  2021-08-05 15:04   ` Hans Verkuil
  2021-08-05 15:22   ` Laurent Pinchart
  2021-07-22 12:12 ` [PATCH v3 2/2] media: v4l2-ctrls: Document " David Plowman
  1 sibling, 2 replies; 14+ messages in thread
From: David Plowman @ 2021-07-22 12:12 UTC (permalink / raw)
  To: linux-media, sakari.ailus, Laurent Pinchart, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil
  Cc: David Plowman

We add new controls, one for each of the four usual Bayer channels:

V4L2_CID_NOTIFY_GAIN_RED
V4L2_CID_NOTIFY_GAIN_GREENR
V4L2_CID_NOTIFY_GAIN_BLUE
V4L2_CID_NOTIFY_GAIN_GREENB

These are provided for sensors that need to know what colour gains
will be applied to the Bayer channel by subsequent processing (such as
by an ISP), even though the sensor will not apply this gain itself.

The units are linear with the default value indicating a gain of
exactly 1.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
---
 drivers/media/v4l2-core/v4l2-ctrls-defs.c | 4 ++++
 include/uapi/linux/v4l2-controls.h        | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
index b6344bbf1e00..12c810cd4ae6 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
@@ -1106,6 +1106,10 @@ const char *v4l2_ctrl_get_name(u32 id)
 	case V4L2_CID_TEST_PATTERN_GREENR:	return "Green (Red) Pixel Value";
 	case V4L2_CID_TEST_PATTERN_BLUE:	return "Blue Pixel Value";
 	case V4L2_CID_TEST_PATTERN_GREENB:	return "Green (Blue) Pixel Value";
+	case V4L2_CID_NOTIFY_GAIN_RED:		return "Notify Red Gain";
+	case V4L2_CID_NOTIFY_GAIN_GREENR:	return "Notify Green (Red) Gain";
+	case V4L2_CID_NOTIFY_GAIN_BLUE:		return "Notify Blue Gain";
+	case V4L2_CID_NOTIFY_GAIN_GREENB:	return "Notify Green (Blue) Gain";
 
 	/* Image processing controls */
 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index fdf97a6d7d18..711930bb54f0 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -1117,6 +1117,10 @@ enum v4l2_jpeg_chroma_subsampling {
 #define V4L2_CID_TEST_PATTERN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
 #define V4L2_CID_TEST_PATTERN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
 #define V4L2_CID_UNIT_CELL_SIZE			(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
+#define V4L2_CID_NOTIFY_GAIN_RED		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
+#define V4L2_CID_NOTIFY_GAIN_GREENR		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 10)
+#define V4L2_CID_NOTIFY_GAIN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 11)
+#define V4L2_CID_NOTIFY_GAIN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 12)
 
 
 /* Image processing controls */
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 2/2] media: v4l2-ctrls: Document V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-07-22 12:12 [PATCH v3 0/2] New V4L2 controls V4L2_CID_NOTIFY_GAIN_XXX David Plowman
  2021-07-22 12:12 ` [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls David Plowman
@ 2021-07-22 12:12 ` David Plowman
  2021-08-05 15:04   ` Hans Verkuil
  1 sibling, 1 reply; 14+ messages in thread
From: David Plowman @ 2021-07-22 12:12 UTC (permalink / raw)
  To: linux-media, sakari.ailus, Laurent Pinchart, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil
  Cc: David Plowman

Add documentation for each of the controls

V4L2_CID_NOTIFY_GAIN_RED
V4L2_CID_NOTIFY_GAIN_GREENR
V4L2_CID_NOTIFY_GAIN_BLUE
V4L2_CID_NOTIFY_GAIN_GREENB

These controls are required by sensors that need to know what colour
gains will be applied to pixels by downstream processing (such as by
an ISP), though the sensor does not apply these gains itself.

Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
---
 .../media/v4l/ext-ctrls-image-source.rst      | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
index de43f5c8486d..d50b56156a8e 100644
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
@@ -72,3 +72,28 @@ Image Source Control IDs
     * - __u32
       - ``height``
       - Height of the area.
+
+``V4L2_CID_NOTIFY_GAIN_RED (integer)``
+    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
+
+``V4L2_CID_NOTIFY_GAIN_GREENR (integer)``
+    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
+
+``V4L2_CID_NOTIFY_GAIN_BLUE (integer)``
+    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
+
+``V4L2_CID_NOTIFY_GAIN_GREENB (integer)``
+    Note: this description covers all four ``V4L2_CID_NOTIFY_GAIN``
+    controls, according to the Bayer channel indicated at the end of
+    the control name.
+
+    The sensor is notified what gain will be applied to this Bayer
+    channel by subsequent processing (such as by an ISP). The sensor
+    is merely informed of this value in case it performs processing
+    that requires it, but it does not apply it to the output pixels
+    themselves.
+
+    The units for the gain value are linear, with the default value
+    being shared between all four controls and representing a gain of
+    exactly 1. Other control properties, such as ranges, should also
+    be common.
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-07-22 12:12 ` [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls David Plowman
@ 2021-08-05 15:04   ` Hans Verkuil
  2021-08-05 15:22   ` Laurent Pinchart
  1 sibling, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2021-08-05 15:04 UTC (permalink / raw)
  To: David Plowman, linux-media, sakari.ailus, Laurent Pinchart,
	Kieran Bingham, Mauro Carvalho Chehab

On 22/07/2021 14:12, David Plowman wrote:
> We add new controls, one for each of the four usual Bayer channels:
> 
> V4L2_CID_NOTIFY_GAIN_RED
> V4L2_CID_NOTIFY_GAIN_GREENR
> V4L2_CID_NOTIFY_GAIN_BLUE
> V4L2_CID_NOTIFY_GAIN_GREENB
> 
> These are provided for sensors that need to know what colour gains
> will be applied to the Bayer channel by subsequent processing (such as
> by an ISP), even though the sensor will not apply this gain itself.
> 
> The units are linear with the default value indicating a gain of
> exactly 1.
> 
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>

Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

Regards,

	Hans

> ---
>  drivers/media/v4l2-core/v4l2-ctrls-defs.c | 4 ++++
>  include/uapi/linux/v4l2-controls.h        | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> index b6344bbf1e00..12c810cd4ae6 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> @@ -1106,6 +1106,10 @@ const char *v4l2_ctrl_get_name(u32 id)
>  	case V4L2_CID_TEST_PATTERN_GREENR:	return "Green (Red) Pixel Value";
>  	case V4L2_CID_TEST_PATTERN_BLUE:	return "Blue Pixel Value";
>  	case V4L2_CID_TEST_PATTERN_GREENB:	return "Green (Blue) Pixel Value";
> +	case V4L2_CID_NOTIFY_GAIN_RED:		return "Notify Red Gain";
> +	case V4L2_CID_NOTIFY_GAIN_GREENR:	return "Notify Green (Red) Gain";
> +	case V4L2_CID_NOTIFY_GAIN_BLUE:		return "Notify Blue Gain";
> +	case V4L2_CID_NOTIFY_GAIN_GREENB:	return "Notify Green (Blue) Gain";
>  
>  	/* Image processing controls */
>  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> index fdf97a6d7d18..711930bb54f0 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -1117,6 +1117,10 @@ enum v4l2_jpeg_chroma_subsampling {
>  #define V4L2_CID_TEST_PATTERN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
>  #define V4L2_CID_TEST_PATTERN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
>  #define V4L2_CID_UNIT_CELL_SIZE			(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
> +#define V4L2_CID_NOTIFY_GAIN_RED		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
> +#define V4L2_CID_NOTIFY_GAIN_GREENR		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 10)
> +#define V4L2_CID_NOTIFY_GAIN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 11)
> +#define V4L2_CID_NOTIFY_GAIN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 12)
>  
>  
>  /* Image processing controls */
> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 2/2] media: v4l2-ctrls: Document V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-07-22 12:12 ` [PATCH v3 2/2] media: v4l2-ctrls: Document " David Plowman
@ 2021-08-05 15:04   ` Hans Verkuil
  0 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2021-08-05 15:04 UTC (permalink / raw)
  To: David Plowman, linux-media, sakari.ailus, Laurent Pinchart,
	Kieran Bingham, Mauro Carvalho Chehab

On 22/07/2021 14:12, David Plowman wrote:
> Add documentation for each of the controls
> 
> V4L2_CID_NOTIFY_GAIN_RED
> V4L2_CID_NOTIFY_GAIN_GREENR
> V4L2_CID_NOTIFY_GAIN_BLUE
> V4L2_CID_NOTIFY_GAIN_GREENB
> 
> These controls are required by sensors that need to know what colour
> gains will be applied to pixels by downstream processing (such as by
> an ISP), though the sensor does not apply these gains itself.
> 
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>

Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

Regards,

	Hans

> ---
>  .../media/v4l/ext-ctrls-image-source.rst      | 25 +++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
> index de43f5c8486d..d50b56156a8e 100644
> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-source.rst
> @@ -72,3 +72,28 @@ Image Source Control IDs
>      * - __u32
>        - ``height``
>        - Height of the area.
> +
> +``V4L2_CID_NOTIFY_GAIN_RED (integer)``
> +    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
> +
> +``V4L2_CID_NOTIFY_GAIN_GREENR (integer)``
> +    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
> +
> +``V4L2_CID_NOTIFY_GAIN_BLUE (integer)``
> +    Please refer to ``V4L2_CID_NOTIFY_GAIN_GREENB`` below.
> +
> +``V4L2_CID_NOTIFY_GAIN_GREENB (integer)``
> +    Note: this description covers all four ``V4L2_CID_NOTIFY_GAIN``
> +    controls, according to the Bayer channel indicated at the end of
> +    the control name.
> +
> +    The sensor is notified what gain will be applied to this Bayer
> +    channel by subsequent processing (such as by an ISP). The sensor
> +    is merely informed of this value in case it performs processing
> +    that requires it, but it does not apply it to the output pixels
> +    themselves.
> +
> +    The units for the gain value are linear, with the default value
> +    being shared between all four controls and representing a gain of
> +    exactly 1. Other control properties, such as ranges, should also
> +    be common.
> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-07-22 12:12 ` [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls David Plowman
  2021-08-05 15:04   ` Hans Verkuil
@ 2021-08-05 15:22   ` Laurent Pinchart
  2021-08-05 15:40     ` Sakari Ailus
  1 sibling, 1 reply; 14+ messages in thread
From: Laurent Pinchart @ 2021-08-05 15:22 UTC (permalink / raw)
  To: David Plowman
  Cc: linux-media, sakari.ailus, Kieran Bingham, Mauro Carvalho Chehab,
	Hans Verkuil

Hi David,

Thank you for the patch.

On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> We add new controls, one for each of the four usual Bayer channels:
> 
> V4L2_CID_NOTIFY_GAIN_RED
> V4L2_CID_NOTIFY_GAIN_GREENR
> V4L2_CID_NOTIFY_GAIN_BLUE
> V4L2_CID_NOTIFY_GAIN_GREENB

This will effectively limit the API to Bayer patterns. I wonder if we
should instead implement it as a single array control, with one element
per CFA component.

> These are provided for sensors that need to know what colour gains
> will be applied to the Bayer channel by subsequent processing (such as
> by an ISP), even though the sensor will not apply this gain itself.
> 
> The units are linear with the default value indicating a gain of
> exactly 1.
> 
> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
> ---
>  drivers/media/v4l2-core/v4l2-ctrls-defs.c | 4 ++++
>  include/uapi/linux/v4l2-controls.h        | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> index b6344bbf1e00..12c810cd4ae6 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> @@ -1106,6 +1106,10 @@ const char *v4l2_ctrl_get_name(u32 id)
>  	case V4L2_CID_TEST_PATTERN_GREENR:	return "Green (Red) Pixel Value";
>  	case V4L2_CID_TEST_PATTERN_BLUE:	return "Blue Pixel Value";
>  	case V4L2_CID_TEST_PATTERN_GREENB:	return "Green (Blue) Pixel Value";
> +	case V4L2_CID_NOTIFY_GAIN_RED:		return "Notify Red Gain";
> +	case V4L2_CID_NOTIFY_GAIN_GREENR:	return "Notify Green (Red) Gain";
> +	case V4L2_CID_NOTIFY_GAIN_BLUE:		return "Notify Blue Gain";
> +	case V4L2_CID_NOTIFY_GAIN_GREENB:	return "Notify Green (Blue) Gain";
>  
>  	/* Image processing controls */
>  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> index fdf97a6d7d18..711930bb54f0 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -1117,6 +1117,10 @@ enum v4l2_jpeg_chroma_subsampling {
>  #define V4L2_CID_TEST_PATTERN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
>  #define V4L2_CID_TEST_PATTERN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
>  #define V4L2_CID_UNIT_CELL_SIZE			(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
> +#define V4L2_CID_NOTIFY_GAIN_RED		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
> +#define V4L2_CID_NOTIFY_GAIN_GREENR		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 10)
> +#define V4L2_CID_NOTIFY_GAIN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 11)
> +#define V4L2_CID_NOTIFY_GAIN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 12)
>  
>  
>  /* Image processing controls */

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-05 15:22   ` Laurent Pinchart
@ 2021-08-05 15:40     ` Sakari Ailus
  2021-08-05 15:49       ` Laurent Pinchart
  0 siblings, 1 reply; 14+ messages in thread
From: Sakari Ailus @ 2021-08-05 15:40 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: David Plowman, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil

Hi David, Laurent,

On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> Hi David,
> 
> Thank you for the patch.
> 
> On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > We add new controls, one for each of the four usual Bayer channels:
> > 
> > V4L2_CID_NOTIFY_GAIN_RED
> > V4L2_CID_NOTIFY_GAIN_GREENR
> > V4L2_CID_NOTIFY_GAIN_BLUE
> > V4L2_CID_NOTIFY_GAIN_GREENB
> 
> This will effectively limit the API to Bayer patterns. I wonder if we
> should instead implement it as a single array control, with one element
> per CFA component.

There are other raw patterns, too. Supporting them would likely require one
or a few more controls.

That said, as the values change often it's more efficient to use a single
control. But each colour combination (not each pattern) would require its
own control in this case, eventually requiring more controls.

Given that the number of sensors using non-Bayer patterns but still produce
Bayer output is likely to grow, these could be used by a number of devices.
I'd hence prefer an array control as well.

-- 
Kind regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-05 15:40     ` Sakari Ailus
@ 2021-08-05 15:49       ` Laurent Pinchart
  2021-08-05 18:05         ` Sakari Ailus
  0 siblings, 1 reply; 14+ messages in thread
From: Laurent Pinchart @ 2021-08-05 15:49 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: David Plowman, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil

Hi Sakari,

On Thu, Aug 05, 2021 at 06:40:42PM +0300, Sakari Ailus wrote:
> On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> > On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > > We add new controls, one for each of the four usual Bayer channels:
> > > 
> > > V4L2_CID_NOTIFY_GAIN_RED
> > > V4L2_CID_NOTIFY_GAIN_GREENR
> > > V4L2_CID_NOTIFY_GAIN_BLUE
> > > V4L2_CID_NOTIFY_GAIN_GREENB
> > 
> > This will effectively limit the API to Bayer patterns. I wonder if we
> > should instead implement it as a single array control, with one element
> > per CFA component.
> 
> There are other raw patterns, too. Supporting them would likely require one
> or a few more controls.
> 
> That said, as the values change often it's more efficient to use a single
> control. But each colour combination (not each pattern) would require its
> own control in this case, eventually requiring more controls.

I'm not sure to follow you. My idea is to define a single control, with
a number of elements that depends on the pattern being used, and the
order specified in the native sensor pattern. I don't think each colour
combination would then require its own control.

> Given that the number of sensors using non-Bayer patterns but still produce
> Bayer output is likely to grow, these could be used by a number of devices.
> I'd hence prefer an array control as well.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-05 15:49       ` Laurent Pinchart
@ 2021-08-05 18:05         ` Sakari Ailus
  2021-08-06  8:15           ` David Plowman
  0 siblings, 1 reply; 14+ messages in thread
From: Sakari Ailus @ 2021-08-05 18:05 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: David Plowman, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil

On Thu, Aug 05, 2021 at 06:49:33PM +0300, Laurent Pinchart wrote:
> Hi Sakari,
> 
> On Thu, Aug 05, 2021 at 06:40:42PM +0300, Sakari Ailus wrote:
> > On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> > > On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > > > We add new controls, one for each of the four usual Bayer channels:
> > > > 
> > > > V4L2_CID_NOTIFY_GAIN_RED
> > > > V4L2_CID_NOTIFY_GAIN_GREENR
> > > > V4L2_CID_NOTIFY_GAIN_BLUE
> > > > V4L2_CID_NOTIFY_GAIN_GREENB
> > > 
> > > This will effectively limit the API to Bayer patterns. I wonder if we
> > > should instead implement it as a single array control, with one element
> > > per CFA component.
> > 
> > There are other raw patterns, too. Supporting them would likely require one
> > or a few more controls.
> > 
> > That said, as the values change often it's more efficient to use a single
> > control. But each colour combination (not each pattern) would require its
> > own control in this case, eventually requiring more controls.
> 
> I'm not sure to follow you. My idea is to define a single control, with
> a number of elements that depends on the pattern being used, and the
> order specified in the native sensor pattern. I don't think each colour
> combination would then require its own control.

Ah, I guess that would work, too. Then we'll need to define what kind of
pixel orders are supported for that single control (and for which formats).

-- 
Sakari Ailus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-05 18:05         ` Sakari Ailus
@ 2021-08-06  8:15           ` David Plowman
  2021-08-06  8:32             ` Sakari Ailus
  2021-08-06  8:38             ` Laurent Pinchart
  0 siblings, 2 replies; 14+ messages in thread
From: David Plowman @ 2021-08-06  8:15 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: Laurent Pinchart, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil

Hi Sakari, Laurent

Thanks for the various comments and discussion. It did prompt me to
have some second thoughts about some of the details here, as follows.

These controls are aimed specifically at sensors that do some kind of
on-board "demosaic / remosaic" process, for instance to produce
standard Bayer patterns from non-standard ones. As such the principal
requirement is for the sensor to know what "grey" looks like, which we
tell it by sending it the red and blue gains from the white balance
algorithm. (This obviously enables it to reduce colour aliasing during
the processing that it does.)

So perhaps the comparison here should be with the existing
V4L2_CID_RED/BLUE_BALANCE controls. I'm not sure that it really
matters exactly what the colours of the pixels on the sensor really
are, it's knowing what "grey" looks like that is important. Any new
controls could be quite cumbersome to use if you have to figure out
what the underlying pixel arrangement looks like, it certainly feels
much easier to refer simply to red/blue pixels, leaving the driver to
deal with its own internal idiosyncrasies.

Having said that, the particular sensor I have exposes a gain for each
of the four Bayer channels, even though I find myself ignoring the
green ones!!

Anyway, I certainly feel I could go either way on this one - do you
have any more thoughts on the matter?

Thanks and best regards

David

On Thu, 5 Aug 2021 at 19:05, Sakari Ailus <sakari.ailus@iki.fi> wrote:
>
> On Thu, Aug 05, 2021 at 06:49:33PM +0300, Laurent Pinchart wrote:
> > Hi Sakari,
> >
> > On Thu, Aug 05, 2021 at 06:40:42PM +0300, Sakari Ailus wrote:
> > > On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> > > > On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > > > > We add new controls, one for each of the four usual Bayer channels:
> > > > >
> > > > > V4L2_CID_NOTIFY_GAIN_RED
> > > > > V4L2_CID_NOTIFY_GAIN_GREENR
> > > > > V4L2_CID_NOTIFY_GAIN_BLUE
> > > > > V4L2_CID_NOTIFY_GAIN_GREENB
> > > >
> > > > This will effectively limit the API to Bayer patterns. I wonder if we
> > > > should instead implement it as a single array control, with one element
> > > > per CFA component.
> > >
> > > There are other raw patterns, too. Supporting them would likely require one
> > > or a few more controls.
> > >
> > > That said, as the values change often it's more efficient to use a single
> > > control. But each colour combination (not each pattern) would require its
> > > own control in this case, eventually requiring more controls.
> >
> > I'm not sure to follow you. My idea is to define a single control, with
> > a number of elements that depends on the pattern being used, and the
> > order specified in the native sensor pattern. I don't think each colour
> > combination would then require its own control.
>
> Ah, I guess that would work, too. Then we'll need to define what kind of
> pixel orders are supported for that single control (and for which formats).
>
> --
> Sakari Ailus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-06  8:15           ` David Plowman
@ 2021-08-06  8:32             ` Sakari Ailus
  2021-08-06  8:38             ` Laurent Pinchart
  1 sibling, 0 replies; 14+ messages in thread
From: Sakari Ailus @ 2021-08-06  8:32 UTC (permalink / raw)
  To: David Plowman
  Cc: Laurent Pinchart, linux-media, Kieran Bingham,
	Mauro Carvalho Chehab, Hans Verkuil

Hi David,

On Fri, Aug 06, 2021 at 09:15:09AM +0100, David Plowman wrote:
> Hi Sakari, Laurent
> 
> Thanks for the various comments and discussion. It did prompt me to
> have some second thoughts about some of the details here, as follows.
> 
> These controls are aimed specifically at sensors that do some kind of
> on-board "demosaic / remosaic" process, for instance to produce
> standard Bayer patterns from non-standard ones. As such the principal
> requirement is for the sensor to know what "grey" looks like, which we
> tell it by sending it the red and blue gains from the white balance
> algorithm. (This obviously enables it to reduce colour aliasing during
> the processing that it does.)
> 
> So perhaps the comparison here should be with the existing
> V4L2_CID_RED/BLUE_BALANCE controls. I'm not sure that it really
> matters exactly what the colours of the pixels on the sensor really
> are, it's knowing what "grey" looks like that is important. Any new
> controls could be quite cumbersome to use if you have to figure out
> what the underlying pixel arrangement looks like, it certainly feels
> much easier to refer simply to red/blue pixels, leaving the driver to
> deal with its own internal idiosyncrasies.

I think I missed these are the gains of the Bayer pattern components, and
by definition you'll be only setting the gains of those components that
are sent out by the sensor. So there wouldn't be other components around,
just these four.

> 
> Having said that, the particular sensor I have exposes a gain for each
> of the four Bayer channels, even though I find myself ignoring the
> green ones!!
> 
> Anyway, I certainly feel I could go either way on this one - do you
> have any more thoughts on the matter?

I'm leaning towards a single array control with specified, mbus code
independent order of components. You should add this control is applicable
to Bayer pattern output only. That leaves it easily extendable later on.

-- 
Kind regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-06  8:15           ` David Plowman
  2021-08-06  8:32             ` Sakari Ailus
@ 2021-08-06  8:38             ` Laurent Pinchart
  2021-08-06 10:34               ` David Plowman
  1 sibling, 1 reply; 14+ messages in thread
From: Laurent Pinchart @ 2021-08-06  8:38 UTC (permalink / raw)
  To: David Plowman
  Cc: Sakari Ailus, linux-media, Kieran Bingham, Mauro Carvalho Chehab,
	Hans Verkuil

Hi David,

On Fri, Aug 06, 2021 at 09:15:09AM +0100, David Plowman wrote:
> Hi Sakari, Laurent
> 
> Thanks for the various comments and discussion. It did prompt me to
> have some second thoughts about some of the details here, as follows.
> 
> These controls are aimed specifically at sensors that do some kind of
> on-board "demosaic / remosaic" process, for instance to produce
> standard Bayer patterns from non-standard ones. As such the principal
> requirement is for the sensor to know what "grey" looks like, which we
> tell it by sending it the red and blue gains from the white balance
> algorithm. (This obviously enables it to reduce colour aliasing during
> the processing that it does.)
> 
> So perhaps the comparison here should be with the existing
> V4L2_CID_RED/BLUE_BALANCE controls. I'm not sure that it really
> matters exactly what the colours of the pixels on the sensor really
> are, it's knowing what "grey" looks like that is important. Any new
> controls could be quite cumbersome to use if you have to figure out
> what the underlying pixel arrangement looks like, it certainly feels
> much easier to refer simply to red/blue pixels, leaving the driver to
> deal with its own internal idiosyncrasies.
> 
> Having said that, the particular sensor I have exposes a gain for each
> of the four Bayer channels, even though I find myself ignoring the
> green ones!!
> 
> Anyway, I certainly feel I could go either way on this one - do you
> have any more thoughts on the matter?

With an array control, we would have to decide (and document) which
components are stored in the array, and in which order. For Bayer
sensors, that would be B, Gb, Gr and R. As for the order, there are
three options:

- fixed order (e.g. always B, Gb, Gr, R)
- matching the sensor's CFA native order (always the same for a given
  sensor, but varying between different sensors)
- matching the currently configured format (the bayer pattern can change
  when moving the crop rectangle by one pixels or when mirroring the
  sensor readout)

The last two options seem quite impractical to me. The first option, if
we only consider Bayer sensors, is equivalent to the four controls your
propose in the sense that the semantics is defined in the control
specification and identical for all sensors, but with the advantage of
bundling all four values together. It will also allow expanding this to
other patterns if the need arise, which I think would be useful.

If we were to redesign the red/blue gains, I'd go for a single array
control today, with one value per CFA component.

> On Thu, 5 Aug 2021 at 19:05, Sakari Ailus wrote:
> > On Thu, Aug 05, 2021 at 06:49:33PM +0300, Laurent Pinchart wrote:
> > > On Thu, Aug 05, 2021 at 06:40:42PM +0300, Sakari Ailus wrote:
> > > > On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> > > > > On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > > > > > We add new controls, one for each of the four usual Bayer channels:
> > > > > >
> > > > > > V4L2_CID_NOTIFY_GAIN_RED
> > > > > > V4L2_CID_NOTIFY_GAIN_GREENR
> > > > > > V4L2_CID_NOTIFY_GAIN_BLUE
> > > > > > V4L2_CID_NOTIFY_GAIN_GREENB
> > > > >
> > > > > This will effectively limit the API to Bayer patterns. I wonder if we
> > > > > should instead implement it as a single array control, with one element
> > > > > per CFA component.
> > > >
> > > > There are other raw patterns, too. Supporting them would likely require one
> > > > or a few more controls.
> > > >
> > > > That said, as the values change often it's more efficient to use a single
> > > > control. But each colour combination (not each pattern) would require its
> > > > own control in this case, eventually requiring more controls.
> > >
> > > I'm not sure to follow you. My idea is to define a single control, with
> > > a number of elements that depends on the pattern being used, and the
> > > order specified in the native sensor pattern. I don't think each colour
> > > combination would then require its own control.
> >
> > Ah, I guess that would work, too. Then we'll need to define what kind of
> > pixel orders are supported for that single control (and for which formats).

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
  2021-08-06  8:38             ` Laurent Pinchart
@ 2021-08-06 10:34               ` David Plowman
  0 siblings, 0 replies; 14+ messages in thread
From: David Plowman @ 2021-08-06 10:34 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Sakari Ailus, linux-media, Kieran Bingham, Mauro Carvalho Chehab,
	Hans Verkuil

Hi Laurent

Thanks for the reply. Yes, I agree that a fixed order (B, Gb, Gr, R)
is much easier to use, and I think that works well for the cases I'm
dealing with. I'll update the patch set accordingly and re-post it.

Best regards
David

On Fri, 6 Aug 2021 at 09:38, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi David,
>
> On Fri, Aug 06, 2021 at 09:15:09AM +0100, David Plowman wrote:
> > Hi Sakari, Laurent
> >
> > Thanks for the various comments and discussion. It did prompt me to
> > have some second thoughts about some of the details here, as follows.
> >
> > These controls are aimed specifically at sensors that do some kind of
> > on-board "demosaic / remosaic" process, for instance to produce
> > standard Bayer patterns from non-standard ones. As such the principal
> > requirement is for the sensor to know what "grey" looks like, which we
> > tell it by sending it the red and blue gains from the white balance
> > algorithm. (This obviously enables it to reduce colour aliasing during
> > the processing that it does.)
> >
> > So perhaps the comparison here should be with the existing
> > V4L2_CID_RED/BLUE_BALANCE controls. I'm not sure that it really
> > matters exactly what the colours of the pixels on the sensor really
> > are, it's knowing what "grey" looks like that is important. Any new
> > controls could be quite cumbersome to use if you have to figure out
> > what the underlying pixel arrangement looks like, it certainly feels
> > much easier to refer simply to red/blue pixels, leaving the driver to
> > deal with its own internal idiosyncrasies.
> >
> > Having said that, the particular sensor I have exposes a gain for each
> > of the four Bayer channels, even though I find myself ignoring the
> > green ones!!
> >
> > Anyway, I certainly feel I could go either way on this one - do you
> > have any more thoughts on the matter?
>
> With an array control, we would have to decide (and document) which
> components are stored in the array, and in which order. For Bayer
> sensors, that would be B, Gb, Gr and R. As for the order, there are
> three options:
>
> - fixed order (e.g. always B, Gb, Gr, R)
> - matching the sensor's CFA native order (always the same for a given
>   sensor, but varying between different sensors)
> - matching the currently configured format (the bayer pattern can change
>   when moving the crop rectangle by one pixels or when mirroring the
>   sensor readout)
>
> The last two options seem quite impractical to me. The first option, if
> we only consider Bayer sensors, is equivalent to the four controls your
> propose in the sense that the semantics is defined in the control
> specification and identical for all sensors, but with the advantage of
> bundling all four values together. It will also allow expanding this to
> other patterns if the need arise, which I think would be useful.
>
> If we were to redesign the red/blue gains, I'd go for a single array
> control today, with one value per CFA component.
>
> > On Thu, 5 Aug 2021 at 19:05, Sakari Ailus wrote:
> > > On Thu, Aug 05, 2021 at 06:49:33PM +0300, Laurent Pinchart wrote:
> > > > On Thu, Aug 05, 2021 at 06:40:42PM +0300, Sakari Ailus wrote:
> > > > > On Thu, Aug 05, 2021 at 06:22:32PM +0300, Laurent Pinchart wrote:
> > > > > > On Thu, Jul 22, 2021 at 01:12:48PM +0100, David Plowman wrote:
> > > > > > > We add new controls, one for each of the four usual Bayer channels:
> > > > > > >
> > > > > > > V4L2_CID_NOTIFY_GAIN_RED
> > > > > > > V4L2_CID_NOTIFY_GAIN_GREENR
> > > > > > > V4L2_CID_NOTIFY_GAIN_BLUE
> > > > > > > V4L2_CID_NOTIFY_GAIN_GREENB
> > > > > >
> > > > > > This will effectively limit the API to Bayer patterns. I wonder if we
> > > > > > should instead implement it as a single array control, with one element
> > > > > > per CFA component.
> > > > >
> > > > > There are other raw patterns, too. Supporting them would likely require one
> > > > > or a few more controls.
> > > > >
> > > > > That said, as the values change often it's more efficient to use a single
> > > > > control. But each colour combination (not each pattern) would require its
> > > > > own control in this case, eventually requiring more controls.
> > > >
> > > > I'm not sure to follow you. My idea is to define a single control, with
> > > > a number of elements that depends on the pattern being used, and the
> > > > order specified in the native sensor pattern. I don't think each colour
> > > > combination would then require its own control.
> > >
> > > Ah, I guess that would work, too. Then we'll need to define what kind of
> > > pixel orders are supported for that single control (and for which formats).
>
> --
> Regards,
>
> Laurent Pinchart

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls
@ 2021-08-04 18:44 kernel test robot
  0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2021-08-04 18:44 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 54334 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210722121249.16483-2-david.plowman@raspberrypi.com>
References: <20210722121249.16483-2-david.plowman@raspberrypi.com>
TO: David Plowman <david.plowman@raspberrypi.com>
TO: linux-media(a)vger.kernel.org
TO: sakari.ailus(a)iki.fi
TO: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
TO: Kieran Bingham <kieran.bingham@ideasonboard.com>
TO: Mauro Carvalho Chehab <mchehab@kernel.org>
TO: Hans Verkuil <hverkuil@xs4all.nl>
CC: David Plowman <david.plowman@raspberrypi.com>

Hi David,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on v5.14-rc4 next-20210804]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/David-Plowman/New-V4L2-controls-V4L2_CID_NOTIFY_GAIN_XXX/20210722-201502
base:   git://linuxtv.org/media_tree.git master
:::::: branch date: 13 days ago
:::::: commit date: 13 days ago
config: x86_64-randconfig-m001-20210804 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/media/v4l2-core/v4l2-ctrls-defs.c:1186 v4l2_ctrl_get_name() warn: Function too hairy.  No more merges.

vim +1186 drivers/media/v4l2-core/v4l2-ctrls-defs.c

71c689dc2e732d Hans Verkuil      2021-04-27   740  
71c689dc2e732d Hans Verkuil      2021-04-27   741  /* Return the control name. */
71c689dc2e732d Hans Verkuil      2021-04-27   742  const char *v4l2_ctrl_get_name(u32 id)
71c689dc2e732d Hans Verkuil      2021-04-27   743  {
71c689dc2e732d Hans Verkuil      2021-04-27   744  	switch (id) {
71c689dc2e732d Hans Verkuil      2021-04-27   745  	/* USER controls */
71c689dc2e732d Hans Verkuil      2021-04-27   746  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27   747  	case V4L2_CID_USER_CLASS:		return "User Controls";
71c689dc2e732d Hans Verkuil      2021-04-27   748  	case V4L2_CID_BRIGHTNESS:		return "Brightness";
71c689dc2e732d Hans Verkuil      2021-04-27   749  	case V4L2_CID_CONTRAST:			return "Contrast";
71c689dc2e732d Hans Verkuil      2021-04-27   750  	case V4L2_CID_SATURATION:		return "Saturation";
71c689dc2e732d Hans Verkuil      2021-04-27   751  	case V4L2_CID_HUE:			return "Hue";
71c689dc2e732d Hans Verkuil      2021-04-27   752  	case V4L2_CID_AUDIO_VOLUME:		return "Volume";
71c689dc2e732d Hans Verkuil      2021-04-27   753  	case V4L2_CID_AUDIO_BALANCE:		return "Balance";
71c689dc2e732d Hans Verkuil      2021-04-27   754  	case V4L2_CID_AUDIO_BASS:		return "Bass";
71c689dc2e732d Hans Verkuil      2021-04-27   755  	case V4L2_CID_AUDIO_TREBLE:		return "Treble";
71c689dc2e732d Hans Verkuil      2021-04-27   756  	case V4L2_CID_AUDIO_MUTE:		return "Mute";
71c689dc2e732d Hans Verkuil      2021-04-27   757  	case V4L2_CID_AUDIO_LOUDNESS:		return "Loudness";
71c689dc2e732d Hans Verkuil      2021-04-27   758  	case V4L2_CID_BLACK_LEVEL:		return "Black Level";
71c689dc2e732d Hans Verkuil      2021-04-27   759  	case V4L2_CID_AUTO_WHITE_BALANCE:	return "White Balance, Automatic";
71c689dc2e732d Hans Verkuil      2021-04-27   760  	case V4L2_CID_DO_WHITE_BALANCE:		return "Do White Balance";
71c689dc2e732d Hans Verkuil      2021-04-27   761  	case V4L2_CID_RED_BALANCE:		return "Red Balance";
71c689dc2e732d Hans Verkuil      2021-04-27   762  	case V4L2_CID_BLUE_BALANCE:		return "Blue Balance";
71c689dc2e732d Hans Verkuil      2021-04-27   763  	case V4L2_CID_GAMMA:			return "Gamma";
71c689dc2e732d Hans Verkuil      2021-04-27   764  	case V4L2_CID_EXPOSURE:			return "Exposure";
71c689dc2e732d Hans Verkuil      2021-04-27   765  	case V4L2_CID_AUTOGAIN:			return "Gain, Automatic";
71c689dc2e732d Hans Verkuil      2021-04-27   766  	case V4L2_CID_GAIN:			return "Gain";
71c689dc2e732d Hans Verkuil      2021-04-27   767  	case V4L2_CID_HFLIP:			return "Horizontal Flip";
71c689dc2e732d Hans Verkuil      2021-04-27   768  	case V4L2_CID_VFLIP:			return "Vertical Flip";
71c689dc2e732d Hans Verkuil      2021-04-27   769  	case V4L2_CID_POWER_LINE_FREQUENCY:	return "Power Line Frequency";
71c689dc2e732d Hans Verkuil      2021-04-27   770  	case V4L2_CID_HUE_AUTO:			return "Hue, Automatic";
71c689dc2e732d Hans Verkuil      2021-04-27   771  	case V4L2_CID_WHITE_BALANCE_TEMPERATURE: return "White Balance Temperature";
71c689dc2e732d Hans Verkuil      2021-04-27   772  	case V4L2_CID_SHARPNESS:		return "Sharpness";
71c689dc2e732d Hans Verkuil      2021-04-27   773  	case V4L2_CID_BACKLIGHT_COMPENSATION:	return "Backlight Compensation";
71c689dc2e732d Hans Verkuil      2021-04-27   774  	case V4L2_CID_CHROMA_AGC:		return "Chroma AGC";
71c689dc2e732d Hans Verkuil      2021-04-27   775  	case V4L2_CID_COLOR_KILLER:		return "Color Killer";
71c689dc2e732d Hans Verkuil      2021-04-27   776  	case V4L2_CID_COLORFX:			return "Color Effects";
71c689dc2e732d Hans Verkuil      2021-04-27   777  	case V4L2_CID_AUTOBRIGHTNESS:		return "Brightness, Automatic";
71c689dc2e732d Hans Verkuil      2021-04-27   778  	case V4L2_CID_BAND_STOP_FILTER:		return "Band-Stop Filter";
71c689dc2e732d Hans Verkuil      2021-04-27   779  	case V4L2_CID_ROTATE:			return "Rotate";
71c689dc2e732d Hans Verkuil      2021-04-27   780  	case V4L2_CID_BG_COLOR:			return "Background Color";
71c689dc2e732d Hans Verkuil      2021-04-27   781  	case V4L2_CID_CHROMA_GAIN:		return "Chroma Gain";
71c689dc2e732d Hans Verkuil      2021-04-27   782  	case V4L2_CID_ILLUMINATORS_1:		return "Illuminator 1";
71c689dc2e732d Hans Verkuil      2021-04-27   783  	case V4L2_CID_ILLUMINATORS_2:		return "Illuminator 2";
71c689dc2e732d Hans Verkuil      2021-04-27   784  	case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:	return "Min Number of Capture Buffers";
71c689dc2e732d Hans Verkuil      2021-04-27   785  	case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:	return "Min Number of Output Buffers";
71c689dc2e732d Hans Verkuil      2021-04-27   786  	case V4L2_CID_ALPHA_COMPONENT:		return "Alpha Component";
71c689dc2e732d Hans Verkuil      2021-04-27   787  	case V4L2_CID_COLORFX_CBCR:		return "Color Effects, CbCr";
71c689dc2e732d Hans Verkuil      2021-04-27   788  
71c689dc2e732d Hans Verkuil      2021-04-27   789  	/*
71c689dc2e732d Hans Verkuil      2021-04-27   790  	 * Codec controls
71c689dc2e732d Hans Verkuil      2021-04-27   791  	 *
71c689dc2e732d Hans Verkuil      2021-04-27   792  	 * The MPEG controls are applicable to all codec controls
71c689dc2e732d Hans Verkuil      2021-04-27   793  	 * and the 'MPEG' part of the define is historical.
71c689dc2e732d Hans Verkuil      2021-04-27   794  	 *
71c689dc2e732d Hans Verkuil      2021-04-27   795  	 * Keep the order of the 'case's the same as in videodev2.h!
71c689dc2e732d Hans Verkuil      2021-04-27   796  	 */
71c689dc2e732d Hans Verkuil      2021-04-27   797  	case V4L2_CID_CODEC_CLASS:		return "Codec Controls";
71c689dc2e732d Hans Verkuil      2021-04-27   798  	case V4L2_CID_MPEG_STREAM_TYPE:		return "Stream Type";
71c689dc2e732d Hans Verkuil      2021-04-27   799  	case V4L2_CID_MPEG_STREAM_PID_PMT:	return "Stream PMT Program ID";
71c689dc2e732d Hans Verkuil      2021-04-27   800  	case V4L2_CID_MPEG_STREAM_PID_AUDIO:	return "Stream Audio Program ID";
71c689dc2e732d Hans Verkuil      2021-04-27   801  	case V4L2_CID_MPEG_STREAM_PID_VIDEO:	return "Stream Video Program ID";
71c689dc2e732d Hans Verkuil      2021-04-27   802  	case V4L2_CID_MPEG_STREAM_PID_PCR:	return "Stream PCR Program ID";
71c689dc2e732d Hans Verkuil      2021-04-27   803  	case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO: return "Stream PES Audio ID";
71c689dc2e732d Hans Verkuil      2021-04-27   804  	case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: return "Stream PES Video ID";
71c689dc2e732d Hans Verkuil      2021-04-27   805  	case V4L2_CID_MPEG_STREAM_VBI_FMT:	return "Stream VBI Format";
71c689dc2e732d Hans Verkuil      2021-04-27   806  	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: return "Audio Sampling Frequency";
71c689dc2e732d Hans Verkuil      2021-04-27   807  	case V4L2_CID_MPEG_AUDIO_ENCODING:	return "Audio Encoding";
71c689dc2e732d Hans Verkuil      2021-04-27   808  	case V4L2_CID_MPEG_AUDIO_L1_BITRATE:	return "Audio Layer I Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   809  	case V4L2_CID_MPEG_AUDIO_L2_BITRATE:	return "Audio Layer II Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   810  	case V4L2_CID_MPEG_AUDIO_L3_BITRATE:	return "Audio Layer III Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   811  	case V4L2_CID_MPEG_AUDIO_MODE:		return "Audio Stereo Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   812  	case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: return "Audio Stereo Mode Extension";
71c689dc2e732d Hans Verkuil      2021-04-27   813  	case V4L2_CID_MPEG_AUDIO_EMPHASIS:	return "Audio Emphasis";
71c689dc2e732d Hans Verkuil      2021-04-27   814  	case V4L2_CID_MPEG_AUDIO_CRC:		return "Audio CRC";
71c689dc2e732d Hans Verkuil      2021-04-27   815  	case V4L2_CID_MPEG_AUDIO_MUTE:		return "Audio Mute";
71c689dc2e732d Hans Verkuil      2021-04-27   816  	case V4L2_CID_MPEG_AUDIO_AAC_BITRATE:	return "Audio AAC Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   817  	case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:	return "Audio AC-3 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   818  	case V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK:	return "Audio Playback";
71c689dc2e732d Hans Verkuil      2021-04-27   819  	case V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK: return "Audio Multilingual Playback";
71c689dc2e732d Hans Verkuil      2021-04-27   820  	case V4L2_CID_MPEG_VIDEO_ENCODING:	return "Video Encoding";
71c689dc2e732d Hans Verkuil      2021-04-27   821  	case V4L2_CID_MPEG_VIDEO_ASPECT:	return "Video Aspect";
71c689dc2e732d Hans Verkuil      2021-04-27   822  	case V4L2_CID_MPEG_VIDEO_B_FRAMES:	return "Video B Frames";
71c689dc2e732d Hans Verkuil      2021-04-27   823  	case V4L2_CID_MPEG_VIDEO_GOP_SIZE:	return "Video GOP Size";
71c689dc2e732d Hans Verkuil      2021-04-27   824  	case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:	return "Video GOP Closure";
71c689dc2e732d Hans Verkuil      2021-04-27   825  	case V4L2_CID_MPEG_VIDEO_PULLDOWN:	return "Video Pulldown";
71c689dc2e732d Hans Verkuil      2021-04-27   826  	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:	return "Video Bitrate Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   827  	case V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY:	return "Constant Quality";
71c689dc2e732d Hans Verkuil      2021-04-27   828  	case V4L2_CID_MPEG_VIDEO_BITRATE:	return "Video Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   829  	case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:	return "Video Peak Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   830  	case V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION: return "Video Temporal Decimation";
71c689dc2e732d Hans Verkuil      2021-04-27   831  	case V4L2_CID_MPEG_VIDEO_MUTE:		return "Video Mute";
71c689dc2e732d Hans Verkuil      2021-04-27   832  	case V4L2_CID_MPEG_VIDEO_MUTE_YUV:	return "Video Mute YUV";
71c689dc2e732d Hans Verkuil      2021-04-27   833  	case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE:	return "Decoder Slice Interface";
71c689dc2e732d Hans Verkuil      2021-04-27   834  	case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER:	return "MPEG4 Loop Filter Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   835  	case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB:	return "Number of Intra Refresh MBs";
71c689dc2e732d Hans Verkuil      2021-04-27   836  	case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE:		return "Frame Level Rate Control Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   837  	case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE:			return "H264 MB Level Rate Control";
71c689dc2e732d Hans Verkuil      2021-04-27   838  	case V4L2_CID_MPEG_VIDEO_HEADER_MODE:			return "Sequence Header Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   839  	case V4L2_CID_MPEG_VIDEO_MAX_REF_PIC:			return "Max Number of Reference Pics";
71c689dc2e732d Hans Verkuil      2021-04-27   840  	case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE:		return "Frame Skip Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   841  	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY:		return "Display Delay";
71c689dc2e732d Hans Verkuil      2021-04-27   842  	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE:	return "Display Delay Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   843  	case V4L2_CID_MPEG_VIDEO_AU_DELIMITER:			return "Generate Access Unit Delimiters";
71c689dc2e732d Hans Verkuil      2021-04-27   844  	case V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP:		return "H263 I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   845  	case V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP:		return "H263 P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   846  	case V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP:		return "H263 B-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   847  	case V4L2_CID_MPEG_VIDEO_H263_MIN_QP:			return "H263 Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   848  	case V4L2_CID_MPEG_VIDEO_H263_MAX_QP:			return "H263 Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   849  	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP:		return "H264 I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   850  	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP:		return "H264 P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   851  	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP:		return "H264 B-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   852  	case V4L2_CID_MPEG_VIDEO_H264_MAX_QP:			return "H264 Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   853  	case V4L2_CID_MPEG_VIDEO_H264_MIN_QP:			return "H264 Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   854  	case V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM:		return "H264 8x8 Transform Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   855  	case V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE:			return "H264 CPB Buffer Size";
71c689dc2e732d Hans Verkuil      2021-04-27   856  	case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:		return "H264 Entropy Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   857  	case V4L2_CID_MPEG_VIDEO_H264_I_PERIOD:			return "H264 I-Frame Period";
71c689dc2e732d Hans Verkuil      2021-04-27   858  	case V4L2_CID_MPEG_VIDEO_H264_LEVEL:			return "H264 Level";
71c689dc2e732d Hans Verkuil      2021-04-27   859  	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA:	return "H264 Loop Filter Alpha Offset";
71c689dc2e732d Hans Verkuil      2021-04-27   860  	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA:		return "H264 Loop Filter Beta Offset";
71c689dc2e732d Hans Verkuil      2021-04-27   861  	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:		return "H264 Loop Filter Mode";
71c689dc2e732d Hans Verkuil      2021-04-27   862  	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:			return "H264 Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   863  	case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT:	return "Vertical Size of SAR";
71c689dc2e732d Hans Verkuil      2021-04-27   864  	case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH:	return "Horizontal Size of SAR";
71c689dc2e732d Hans Verkuil      2021-04-27   865  	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE:		return "Aspect Ratio VUI Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   866  	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:		return "VUI Aspect Ratio IDC";
71c689dc2e732d Hans Verkuil      2021-04-27   867  	case V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING:	return "H264 Enable Frame Packing SEI";
71c689dc2e732d Hans Verkuil      2021-04-27   868  	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0:	return "H264 Set Curr. Frame as Frame0";
71c689dc2e732d Hans Verkuil      2021-04-27   869  	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE:	return "H264 FP Arrangement Type";
71c689dc2e732d Hans Verkuil      2021-04-27   870  	case V4L2_CID_MPEG_VIDEO_H264_FMO:			return "H264 Flexible MB Ordering";
71c689dc2e732d Hans Verkuil      2021-04-27   871  	case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:		return "H264 Map Type for FMO";
71c689dc2e732d Hans Verkuil      2021-04-27   872  	case V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP:		return "H264 FMO Number of Slice Groups";
71c689dc2e732d Hans Verkuil      2021-04-27   873  	case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION:	return "H264 FMO Direction of Change";
71c689dc2e732d Hans Verkuil      2021-04-27   874  	case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE:		return "H264 FMO Size of 1st Slice Grp";
71c689dc2e732d Hans Verkuil      2021-04-27   875  	case V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH:		return "H264 FMO No. of Consecutive MBs";
71c689dc2e732d Hans Verkuil      2021-04-27   876  	case V4L2_CID_MPEG_VIDEO_H264_ASO:			return "H264 Arbitrary Slice Ordering";
71c689dc2e732d Hans Verkuil      2021-04-27   877  	case V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER:		return "H264 ASO Slice Order";
71c689dc2e732d Hans Verkuil      2021-04-27   878  	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING:	return "Enable H264 Hierarchical Coding";
71c689dc2e732d Hans Verkuil      2021-04-27   879  	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE:	return "H264 Hierarchical Coding Type";
71c689dc2e732d Hans Verkuil      2021-04-27   880  	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER:return "H264 Number of HC Layers";
71c689dc2e732d Hans Verkuil      2021-04-27   881  	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP:
71c689dc2e732d Hans Verkuil      2021-04-27   882  								return "H264 Set QP Value for HC Layers";
71c689dc2e732d Hans Verkuil      2021-04-27   883  	case V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION:
71c689dc2e732d Hans Verkuil      2021-04-27   884  								return "H264 Constrained Intra Pred";
71c689dc2e732d Hans Verkuil      2021-04-27   885  	case V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET:	return "H264 Chroma QP Index Offset";
71c689dc2e732d Hans Verkuil      2021-04-27   886  	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP:		return "H264 I-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   887  	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP:		return "H264 I-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   888  	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP:		return "H264 P-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   889  	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP:		return "H264 P-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   890  	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP:		return "H264 B-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   891  	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP:		return "H264 B-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   892  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR:	return "H264 Hierarchical Lay 0 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   893  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR:	return "H264 Hierarchical Lay 1 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   894  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR:	return "H264 Hierarchical Lay 2 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   895  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR:	return "H264 Hierarchical Lay 3 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   896  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR:	return "H264 Hierarchical Lay 4 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   897  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR:	return "H264 Hierarchical Lay 5 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   898  	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR:	return "H264 Hierarchical Lay 6 Bitrate";
71c689dc2e732d Hans Verkuil      2021-04-27   899  	case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:			return "MPEG2 Level";
71c689dc2e732d Hans Verkuil      2021-04-27   900  	case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE:			return "MPEG2 Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   901  	case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP:		return "MPEG4 I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   902  	case V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP:		return "MPEG4 P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   903  	case V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP:		return "MPEG4 B-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   904  	case V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP:			return "MPEG4 Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   905  	case V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP:			return "MPEG4 Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   906  	case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:			return "MPEG4 Level";
71c689dc2e732d Hans Verkuil      2021-04-27   907  	case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:			return "MPEG4 Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   908  	case V4L2_CID_MPEG_VIDEO_MPEG4_QPEL:			return "Quarter Pixel Search Enable";
71c689dc2e732d Hans Verkuil      2021-04-27   909  	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES:		return "Maximum Bytes in a Slice";
71c689dc2e732d Hans Verkuil      2021-04-27   910  	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB:		return "Number of MBs in a Slice";
71c689dc2e732d Hans Verkuil      2021-04-27   911  	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:		return "Slice Partitioning Method";
71c689dc2e732d Hans Verkuil      2021-04-27   912  	case V4L2_CID_MPEG_VIDEO_VBV_SIZE:			return "VBV Buffer Size";
71c689dc2e732d Hans Verkuil      2021-04-27   913  	case V4L2_CID_MPEG_VIDEO_DEC_PTS:			return "Video Decoder PTS";
71c689dc2e732d Hans Verkuil      2021-04-27   914  	case V4L2_CID_MPEG_VIDEO_DEC_FRAME:			return "Video Decoder Frame Count";
71c689dc2e732d Hans Verkuil      2021-04-27   915  	case V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR:		return "Video Decoder Conceal Color";
71c689dc2e732d Hans Verkuil      2021-04-27   916  	case V4L2_CID_MPEG_VIDEO_VBV_DELAY:			return "Initial Delay for VBV Control";
71c689dc2e732d Hans Verkuil      2021-04-27   917  	case V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE:		return "Horizontal MV Search Range";
71c689dc2e732d Hans Verkuil      2021-04-27   918  	case V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE:		return "Vertical MV Search Range";
71c689dc2e732d Hans Verkuil      2021-04-27   919  	case V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER:		return "Repeat Sequence Header";
71c689dc2e732d Hans Verkuil      2021-04-27   920  	case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME:		return "Force Key Frame";
71c689dc2e732d Hans Verkuil      2021-04-27   921  	case V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID:		return "Base Layer Priority ID";
71c689dc2e732d Hans Verkuil      2021-04-27   922  	case V4L2_CID_MPEG_VIDEO_LTR_COUNT:			return "LTR Count";
71c689dc2e732d Hans Verkuil      2021-04-27   923  	case V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX:		return "Frame LTR Index";
71c689dc2e732d Hans Verkuil      2021-04-27   924  	case V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES:		return "Use LTR Frames";
71c689dc2e732d Hans Verkuil      2021-04-27   925  	case V4L2_CID_FWHT_I_FRAME_QP:				return "FWHT I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   926  	case V4L2_CID_FWHT_P_FRAME_QP:				return "FWHT P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   927  
71c689dc2e732d Hans Verkuil      2021-04-27   928  	/* VPX controls */
71c689dc2e732d Hans Verkuil      2021-04-27   929  	case V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS:		return "VPX Number of Partitions";
71c689dc2e732d Hans Verkuil      2021-04-27   930  	case V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4:		return "VPX Intra Mode Decision Disable";
71c689dc2e732d Hans Verkuil      2021-04-27   931  	case V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES:		return "VPX No. of Refs for P Frame";
71c689dc2e732d Hans Verkuil      2021-04-27   932  	case V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL:		return "VPX Loop Filter Level Range";
71c689dc2e732d Hans Verkuil      2021-04-27   933  	case V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS:		return "VPX Deblocking Effect Control";
71c689dc2e732d Hans Verkuil      2021-04-27   934  	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD:	return "VPX Golden Frame Refresh Period";
71c689dc2e732d Hans Verkuil      2021-04-27   935  	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:		return "VPX Golden Frame Indicator";
71c689dc2e732d Hans Verkuil      2021-04-27   936  	case V4L2_CID_MPEG_VIDEO_VPX_MIN_QP:			return "VPX Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   937  	case V4L2_CID_MPEG_VIDEO_VPX_MAX_QP:			return "VPX Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   938  	case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP:		return "VPX I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   939  	case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP:		return "VPX P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   940  	case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:			return "VP8 Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   941  	case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:			return "VP9 Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   942  	case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:			return "VP9 Level";
71c689dc2e732d Hans Verkuil      2021-04-27   943  
71c689dc2e732d Hans Verkuil      2021-04-27   944  	/* HEVC controls */
71c689dc2e732d Hans Verkuil      2021-04-27   945  	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP:		return "HEVC I-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   946  	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP:		return "HEVC P-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   947  	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP:		return "HEVC B-Frame QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   948  	case V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP:			return "HEVC Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   949  	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP:			return "HEVC Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   950  	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP:		return "HEVC I-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   951  	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP:		return "HEVC I-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   952  	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP:		return "HEVC P-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   953  	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP:		return "HEVC P-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   954  	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP:		return "HEVC B-Frame Minimum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   955  	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP:		return "HEVC B-Frame Maximum QP Value";
71c689dc2e732d Hans Verkuil      2021-04-27   956  	case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:			return "HEVC Profile";
71c689dc2e732d Hans Verkuil      2021-04-27   957  	case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:			return "HEVC Level";
71c689dc2e732d Hans Verkuil      2021-04-27   958  	case V4L2_CID_MPEG_VIDEO_HEVC_TIER:			return "HEVC Tier";
71c689dc2e732d Hans Verkuil      2021-04-27   959  	case V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION:	return "HEVC Frame Rate Resolution";
71c689dc2e732d Hans Verkuil      2021-04-27   960  	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH:	return "HEVC Maximum Coding Unit Depth";
71c689dc2e732d Hans Verkuil      2021-04-27   961  	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE:		return "HEVC Refresh Type";
71c689dc2e732d Hans Verkuil      2021-04-27   962  	case V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED:		return "HEVC Constant Intra Prediction";
71c689dc2e732d Hans Verkuil      2021-04-27   963  	case V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU:		return "HEVC Lossless Encoding";
71c689dc2e732d Hans Verkuil      2021-04-27   964  	case V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT:		return "HEVC Wavefront";
71c689dc2e732d Hans Verkuil      2021-04-27   965  	case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:		return "HEVC Loop Filter";
71c689dc2e732d Hans Verkuil      2021-04-27   966  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP:			return "HEVC QP Values";
71c689dc2e732d Hans Verkuil      2021-04-27   967  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE:		return "HEVC Hierarchical Coding Type";
71c689dc2e732d Hans Verkuil      2021-04-27   968  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER:	return "HEVC Hierarchical Coding Layer";
71c689dc2e732d Hans Verkuil      2021-04-27   969  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP:	return "HEVC Hierarchical Layer 0 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   970  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP:	return "HEVC Hierarchical Layer 1 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   971  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP:	return "HEVC Hierarchical Layer 2 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   972  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP:	return "HEVC Hierarchical Layer 3 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   973  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP:	return "HEVC Hierarchical Layer 4 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   974  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP:	return "HEVC Hierarchical Layer 5 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   975  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP:	return "HEVC Hierarchical Layer 6 QP";
71c689dc2e732d Hans Verkuil      2021-04-27   976  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR:	return "HEVC Hierarchical Lay 0 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   977  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR:	return "HEVC Hierarchical Lay 1 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   978  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR:	return "HEVC Hierarchical Lay 2 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   979  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR:	return "HEVC Hierarchical Lay 3 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   980  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR:	return "HEVC Hierarchical Lay 4 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   981  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR:	return "HEVC Hierarchical Lay 5 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   982  	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR:	return "HEVC Hierarchical Lay 6 BitRate";
71c689dc2e732d Hans Verkuil      2021-04-27   983  	case V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB:		return "HEVC General PB";
71c689dc2e732d Hans Verkuil      2021-04-27   984  	case V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID:		return "HEVC Temporal ID";
71c689dc2e732d Hans Verkuil      2021-04-27   985  	case V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING:		return "HEVC Strong Intra Smoothing";
71c689dc2e732d Hans Verkuil      2021-04-27   986  	case V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT:		return "HEVC Intra PU Split";
71c689dc2e732d Hans Verkuil      2021-04-27   987  	case V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION:		return "HEVC TMV Prediction";
71c689dc2e732d Hans Verkuil      2021-04-27   988  	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1:	return "HEVC Max Num of Candidate MVs";
71c689dc2e732d Hans Verkuil      2021-04-27   989  	case V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE:	return "HEVC ENC Without Startcode";
71c689dc2e732d Hans Verkuil      2021-04-27   990  	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD:		return "HEVC Num of I-Frame b/w 2 IDR";
71c689dc2e732d Hans Verkuil      2021-04-27   991  	case V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2:	return "HEVC Loop Filter Beta Offset";
71c689dc2e732d Hans Verkuil      2021-04-27   992  	case V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2:	return "HEVC Loop Filter TC Offset";
71c689dc2e732d Hans Verkuil      2021-04-27   993  	case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:	return "HEVC Size of Length Field";
71c689dc2e732d Hans Verkuil      2021-04-27   994  	case V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES:	return "Reference Frames for a P-Frame";
71c689dc2e732d Hans Verkuil      2021-04-27   995  	case V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR:		return "Prepend SPS and PPS to IDR";
71c689dc2e732d Hans Verkuil      2021-04-27   996  	case V4L2_CID_MPEG_VIDEO_HEVC_SPS:			return "HEVC Sequence Parameter Set";
71c689dc2e732d Hans Verkuil      2021-04-27   997  	case V4L2_CID_MPEG_VIDEO_HEVC_PPS:			return "HEVC Picture Parameter Set";
71c689dc2e732d Hans Verkuil      2021-04-27   998  	case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS:		return "HEVC Slice Parameters";
d395a78db9eabd Benjamin Gaignard 2021-06-03   999  	case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS:		return "HEVC Decode Parameters";
71c689dc2e732d Hans Verkuil      2021-04-27  1000  	case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE:		return "HEVC Decode Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1001  	case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE:		return "HEVC Start Code";
71c689dc2e732d Hans Verkuil      2021-04-27  1002  
71c689dc2e732d Hans Verkuil      2021-04-27  1003  	/* CAMERA controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1004  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1005  	case V4L2_CID_CAMERA_CLASS:		return "Camera Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1006  	case V4L2_CID_EXPOSURE_AUTO:		return "Auto Exposure";
71c689dc2e732d Hans Verkuil      2021-04-27  1007  	case V4L2_CID_EXPOSURE_ABSOLUTE:	return "Exposure Time, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1008  	case V4L2_CID_EXPOSURE_AUTO_PRIORITY:	return "Exposure, Dynamic Framerate";
71c689dc2e732d Hans Verkuil      2021-04-27  1009  	case V4L2_CID_PAN_RELATIVE:		return "Pan, Relative";
71c689dc2e732d Hans Verkuil      2021-04-27  1010  	case V4L2_CID_TILT_RELATIVE:		return "Tilt, Relative";
71c689dc2e732d Hans Verkuil      2021-04-27  1011  	case V4L2_CID_PAN_RESET:		return "Pan, Reset";
71c689dc2e732d Hans Verkuil      2021-04-27  1012  	case V4L2_CID_TILT_RESET:		return "Tilt, Reset";
71c689dc2e732d Hans Verkuil      2021-04-27  1013  	case V4L2_CID_PAN_ABSOLUTE:		return "Pan, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1014  	case V4L2_CID_TILT_ABSOLUTE:		return "Tilt, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1015  	case V4L2_CID_FOCUS_ABSOLUTE:		return "Focus, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1016  	case V4L2_CID_FOCUS_RELATIVE:		return "Focus, Relative";
71c689dc2e732d Hans Verkuil      2021-04-27  1017  	case V4L2_CID_FOCUS_AUTO:		return "Focus, Automatic Continuous";
71c689dc2e732d Hans Verkuil      2021-04-27  1018  	case V4L2_CID_ZOOM_ABSOLUTE:		return "Zoom, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1019  	case V4L2_CID_ZOOM_RELATIVE:		return "Zoom, Relative";
71c689dc2e732d Hans Verkuil      2021-04-27  1020  	case V4L2_CID_ZOOM_CONTINUOUS:		return "Zoom, Continuous";
71c689dc2e732d Hans Verkuil      2021-04-27  1021  	case V4L2_CID_PRIVACY:			return "Privacy";
71c689dc2e732d Hans Verkuil      2021-04-27  1022  	case V4L2_CID_IRIS_ABSOLUTE:		return "Iris, Absolute";
71c689dc2e732d Hans Verkuil      2021-04-27  1023  	case V4L2_CID_IRIS_RELATIVE:		return "Iris, Relative";
71c689dc2e732d Hans Verkuil      2021-04-27  1024  	case V4L2_CID_AUTO_EXPOSURE_BIAS:	return "Auto Exposure, Bias";
71c689dc2e732d Hans Verkuil      2021-04-27  1025  	case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: return "White Balance, Auto & Preset";
71c689dc2e732d Hans Verkuil      2021-04-27  1026  	case V4L2_CID_WIDE_DYNAMIC_RANGE:	return "Wide Dynamic Range";
71c689dc2e732d Hans Verkuil      2021-04-27  1027  	case V4L2_CID_IMAGE_STABILIZATION:	return "Image Stabilization";
71c689dc2e732d Hans Verkuil      2021-04-27  1028  	case V4L2_CID_ISO_SENSITIVITY:		return "ISO Sensitivity";
71c689dc2e732d Hans Verkuil      2021-04-27  1029  	case V4L2_CID_ISO_SENSITIVITY_AUTO:	return "ISO Sensitivity, Auto";
71c689dc2e732d Hans Verkuil      2021-04-27  1030  	case V4L2_CID_EXPOSURE_METERING:	return "Exposure, Metering Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1031  	case V4L2_CID_SCENE_MODE:		return "Scene Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1032  	case V4L2_CID_3A_LOCK:			return "3A Lock";
71c689dc2e732d Hans Verkuil      2021-04-27  1033  	case V4L2_CID_AUTO_FOCUS_START:		return "Auto Focus, Start";
71c689dc2e732d Hans Verkuil      2021-04-27  1034  	case V4L2_CID_AUTO_FOCUS_STOP:		return "Auto Focus, Stop";
71c689dc2e732d Hans Verkuil      2021-04-27  1035  	case V4L2_CID_AUTO_FOCUS_STATUS:	return "Auto Focus, Status";
71c689dc2e732d Hans Verkuil      2021-04-27  1036  	case V4L2_CID_AUTO_FOCUS_RANGE:		return "Auto Focus, Range";
71c689dc2e732d Hans Verkuil      2021-04-27  1037  	case V4L2_CID_PAN_SPEED:		return "Pan, Speed";
71c689dc2e732d Hans Verkuil      2021-04-27  1038  	case V4L2_CID_TILT_SPEED:		return "Tilt, Speed";
71c689dc2e732d Hans Verkuil      2021-04-27  1039  	case V4L2_CID_UNIT_CELL_SIZE:		return "Unit Cell Size";
71c689dc2e732d Hans Verkuil      2021-04-27  1040  	case V4L2_CID_CAMERA_ORIENTATION:	return "Camera Orientation";
71c689dc2e732d Hans Verkuil      2021-04-27  1041  	case V4L2_CID_CAMERA_SENSOR_ROTATION:	return "Camera Sensor Rotation";
71c689dc2e732d Hans Verkuil      2021-04-27  1042  
71c689dc2e732d Hans Verkuil      2021-04-27  1043  	/* FM Radio Modulator controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1044  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1045  	case V4L2_CID_FM_TX_CLASS:		return "FM Radio Modulator Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1046  	case V4L2_CID_RDS_TX_DEVIATION:		return "RDS Signal Deviation";
71c689dc2e732d Hans Verkuil      2021-04-27  1047  	case V4L2_CID_RDS_TX_PI:		return "RDS Program ID";
71c689dc2e732d Hans Verkuil      2021-04-27  1048  	case V4L2_CID_RDS_TX_PTY:		return "RDS Program Type";
71c689dc2e732d Hans Verkuil      2021-04-27  1049  	case V4L2_CID_RDS_TX_PS_NAME:		return "RDS PS Name";
71c689dc2e732d Hans Verkuil      2021-04-27  1050  	case V4L2_CID_RDS_TX_RADIO_TEXT:	return "RDS Radio Text";
71c689dc2e732d Hans Verkuil      2021-04-27  1051  	case V4L2_CID_RDS_TX_MONO_STEREO:	return "RDS Stereo";
71c689dc2e732d Hans Verkuil      2021-04-27  1052  	case V4L2_CID_RDS_TX_ARTIFICIAL_HEAD:	return "RDS Artificial Head";
71c689dc2e732d Hans Verkuil      2021-04-27  1053  	case V4L2_CID_RDS_TX_COMPRESSED:	return "RDS Compressed";
71c689dc2e732d Hans Verkuil      2021-04-27  1054  	case V4L2_CID_RDS_TX_DYNAMIC_PTY:	return "RDS Dynamic PTY";
71c689dc2e732d Hans Verkuil      2021-04-27  1055  	case V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT: return "RDS Traffic Announcement";
71c689dc2e732d Hans Verkuil      2021-04-27  1056  	case V4L2_CID_RDS_TX_TRAFFIC_PROGRAM:	return "RDS Traffic Program";
71c689dc2e732d Hans Verkuil      2021-04-27  1057  	case V4L2_CID_RDS_TX_MUSIC_SPEECH:	return "RDS Music";
71c689dc2e732d Hans Verkuil      2021-04-27  1058  	case V4L2_CID_RDS_TX_ALT_FREQS_ENABLE:	return "RDS Enable Alt Frequencies";
71c689dc2e732d Hans Verkuil      2021-04-27  1059  	case V4L2_CID_RDS_TX_ALT_FREQS:		return "RDS Alternate Frequencies";
71c689dc2e732d Hans Verkuil      2021-04-27  1060  	case V4L2_CID_AUDIO_LIMITER_ENABLED:	return "Audio Limiter Feature Enabled";
71c689dc2e732d Hans Verkuil      2021-04-27  1061  	case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time";
71c689dc2e732d Hans Verkuil      2021-04-27  1062  	case V4L2_CID_AUDIO_LIMITER_DEVIATION:	return "Audio Limiter Deviation";
71c689dc2e732d Hans Verkuil      2021-04-27  1063  	case V4L2_CID_AUDIO_COMPRESSION_ENABLED: return "Audio Compression Enabled";
71c689dc2e732d Hans Verkuil      2021-04-27  1064  	case V4L2_CID_AUDIO_COMPRESSION_GAIN:	return "Audio Compression Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1065  	case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: return "Audio Compression Threshold";
71c689dc2e732d Hans Verkuil      2021-04-27  1066  	case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: return "Audio Compression Attack Time";
71c689dc2e732d Hans Verkuil      2021-04-27  1067  	case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: return "Audio Compression Release Time";
71c689dc2e732d Hans Verkuil      2021-04-27  1068  	case V4L2_CID_PILOT_TONE_ENABLED:	return "Pilot Tone Feature Enabled";
71c689dc2e732d Hans Verkuil      2021-04-27  1069  	case V4L2_CID_PILOT_TONE_DEVIATION:	return "Pilot Tone Deviation";
71c689dc2e732d Hans Verkuil      2021-04-27  1070  	case V4L2_CID_PILOT_TONE_FREQUENCY:	return "Pilot Tone Frequency";
71c689dc2e732d Hans Verkuil      2021-04-27  1071  	case V4L2_CID_TUNE_PREEMPHASIS:		return "Pre-Emphasis";
71c689dc2e732d Hans Verkuil      2021-04-27  1072  	case V4L2_CID_TUNE_POWER_LEVEL:		return "Tune Power Level";
71c689dc2e732d Hans Verkuil      2021-04-27  1073  	case V4L2_CID_TUNE_ANTENNA_CAPACITOR:	return "Tune Antenna Capacitor";
71c689dc2e732d Hans Verkuil      2021-04-27  1074  
71c689dc2e732d Hans Verkuil      2021-04-27  1075  	/* Flash controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1076  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1077  	case V4L2_CID_FLASH_CLASS:		return "Flash Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1078  	case V4L2_CID_FLASH_LED_MODE:		return "LED Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1079  	case V4L2_CID_FLASH_STROBE_SOURCE:	return "Strobe Source";
71c689dc2e732d Hans Verkuil      2021-04-27  1080  	case V4L2_CID_FLASH_STROBE:		return "Strobe";
71c689dc2e732d Hans Verkuil      2021-04-27  1081  	case V4L2_CID_FLASH_STROBE_STOP:	return "Stop Strobe";
71c689dc2e732d Hans Verkuil      2021-04-27  1082  	case V4L2_CID_FLASH_STROBE_STATUS:	return "Strobe Status";
71c689dc2e732d Hans Verkuil      2021-04-27  1083  	case V4L2_CID_FLASH_TIMEOUT:		return "Strobe Timeout";
71c689dc2e732d Hans Verkuil      2021-04-27  1084  	case V4L2_CID_FLASH_INTENSITY:		return "Intensity, Flash Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1085  	case V4L2_CID_FLASH_TORCH_INTENSITY:	return "Intensity, Torch Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1086  	case V4L2_CID_FLASH_INDICATOR_INTENSITY: return "Intensity, Indicator";
71c689dc2e732d Hans Verkuil      2021-04-27  1087  	case V4L2_CID_FLASH_FAULT:		return "Faults";
71c689dc2e732d Hans Verkuil      2021-04-27  1088  	case V4L2_CID_FLASH_CHARGE:		return "Charge";
71c689dc2e732d Hans Verkuil      2021-04-27  1089  	case V4L2_CID_FLASH_READY:		return "Ready to Strobe";
71c689dc2e732d Hans Verkuil      2021-04-27  1090  
71c689dc2e732d Hans Verkuil      2021-04-27  1091  	/* JPEG encoder controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1092  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1093  	case V4L2_CID_JPEG_CLASS:		return "JPEG Compression Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1094  	case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:	return "Chroma Subsampling";
71c689dc2e732d Hans Verkuil      2021-04-27  1095  	case V4L2_CID_JPEG_RESTART_INTERVAL:	return "Restart Interval";
71c689dc2e732d Hans Verkuil      2021-04-27  1096  	case V4L2_CID_JPEG_COMPRESSION_QUALITY:	return "Compression Quality";
71c689dc2e732d Hans Verkuil      2021-04-27  1097  	case V4L2_CID_JPEG_ACTIVE_MARKER:	return "Active Markers";
71c689dc2e732d Hans Verkuil      2021-04-27  1098  
71c689dc2e732d Hans Verkuil      2021-04-27  1099  	/* Image source controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1100  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1101  	case V4L2_CID_IMAGE_SOURCE_CLASS:	return "Image Source Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1102  	case V4L2_CID_VBLANK:			return "Vertical Blanking";
71c689dc2e732d Hans Verkuil      2021-04-27  1103  	case V4L2_CID_HBLANK:			return "Horizontal Blanking";
71c689dc2e732d Hans Verkuil      2021-04-27  1104  	case V4L2_CID_ANALOGUE_GAIN:		return "Analogue Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1105  	case V4L2_CID_TEST_PATTERN_RED:		return "Red Pixel Value";
71c689dc2e732d Hans Verkuil      2021-04-27  1106  	case V4L2_CID_TEST_PATTERN_GREENR:	return "Green (Red) Pixel Value";
71c689dc2e732d Hans Verkuil      2021-04-27  1107  	case V4L2_CID_TEST_PATTERN_BLUE:	return "Blue Pixel Value";
71c689dc2e732d Hans Verkuil      2021-04-27  1108  	case V4L2_CID_TEST_PATTERN_GREENB:	return "Green (Blue) Pixel Value";
90e88afaa6541d David Plowman     2021-07-22  1109  	case V4L2_CID_NOTIFY_GAIN_RED:		return "Notify Red Gain";
90e88afaa6541d David Plowman     2021-07-22  1110  	case V4L2_CID_NOTIFY_GAIN_GREENR:	return "Notify Green (Red) Gain";
90e88afaa6541d David Plowman     2021-07-22  1111  	case V4L2_CID_NOTIFY_GAIN_BLUE:		return "Notify Blue Gain";
90e88afaa6541d David Plowman     2021-07-22  1112  	case V4L2_CID_NOTIFY_GAIN_GREENB:	return "Notify Green (Blue) Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1113  
71c689dc2e732d Hans Verkuil      2021-04-27  1114  	/* Image processing controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1115  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1116  	case V4L2_CID_IMAGE_PROC_CLASS:		return "Image Processing Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1117  	case V4L2_CID_LINK_FREQ:		return "Link Frequency";
71c689dc2e732d Hans Verkuil      2021-04-27  1118  	case V4L2_CID_PIXEL_RATE:		return "Pixel Rate";
71c689dc2e732d Hans Verkuil      2021-04-27  1119  	case V4L2_CID_TEST_PATTERN:		return "Test Pattern";
71c689dc2e732d Hans Verkuil      2021-04-27  1120  	case V4L2_CID_DEINTERLACING_MODE:	return "Deinterlacing Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1121  	case V4L2_CID_DIGITAL_GAIN:		return "Digital Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1122  
71c689dc2e732d Hans Verkuil      2021-04-27  1123  	/* DV controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1124  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1125  	case V4L2_CID_DV_CLASS:			return "Digital Video Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1126  	case V4L2_CID_DV_TX_HOTPLUG:		return "Hotplug Present";
71c689dc2e732d Hans Verkuil      2021-04-27  1127  	case V4L2_CID_DV_TX_RXSENSE:		return "RxSense Present";
71c689dc2e732d Hans Verkuil      2021-04-27  1128  	case V4L2_CID_DV_TX_EDID_PRESENT:	return "EDID Present";
71c689dc2e732d Hans Verkuil      2021-04-27  1129  	case V4L2_CID_DV_TX_MODE:		return "Transmit Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1130  	case V4L2_CID_DV_TX_RGB_RANGE:		return "Tx RGB Quantization Range";
71c689dc2e732d Hans Verkuil      2021-04-27  1131  	case V4L2_CID_DV_TX_IT_CONTENT_TYPE:	return "Tx IT Content Type";
71c689dc2e732d Hans Verkuil      2021-04-27  1132  	case V4L2_CID_DV_RX_POWER_PRESENT:	return "Power Present";
71c689dc2e732d Hans Verkuil      2021-04-27  1133  	case V4L2_CID_DV_RX_RGB_RANGE:		return "Rx RGB Quantization Range";
71c689dc2e732d Hans Verkuil      2021-04-27  1134  	case V4L2_CID_DV_RX_IT_CONTENT_TYPE:	return "Rx IT Content Type";
71c689dc2e732d Hans Verkuil      2021-04-27  1135  
71c689dc2e732d Hans Verkuil      2021-04-27  1136  	case V4L2_CID_FM_RX_CLASS:		return "FM Radio Receiver Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1137  	case V4L2_CID_TUNE_DEEMPHASIS:		return "De-Emphasis";
71c689dc2e732d Hans Verkuil      2021-04-27  1138  	case V4L2_CID_RDS_RECEPTION:		return "RDS Reception";
71c689dc2e732d Hans Verkuil      2021-04-27  1139  	case V4L2_CID_RF_TUNER_CLASS:		return "RF Tuner Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1140  	case V4L2_CID_RF_TUNER_RF_GAIN:		return "RF Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1141  	case V4L2_CID_RF_TUNER_LNA_GAIN_AUTO:	return "LNA Gain, Auto";
71c689dc2e732d Hans Verkuil      2021-04-27  1142  	case V4L2_CID_RF_TUNER_LNA_GAIN:	return "LNA Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1143  	case V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO:	return "Mixer Gain, Auto";
71c689dc2e732d Hans Verkuil      2021-04-27  1144  	case V4L2_CID_RF_TUNER_MIXER_GAIN:	return "Mixer Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1145  	case V4L2_CID_RF_TUNER_IF_GAIN_AUTO:	return "IF Gain, Auto";
71c689dc2e732d Hans Verkuil      2021-04-27  1146  	case V4L2_CID_RF_TUNER_IF_GAIN:		return "IF Gain";
71c689dc2e732d Hans Verkuil      2021-04-27  1147  	case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO:	return "Bandwidth, Auto";
71c689dc2e732d Hans Verkuil      2021-04-27  1148  	case V4L2_CID_RF_TUNER_BANDWIDTH:	return "Bandwidth";
71c689dc2e732d Hans Verkuil      2021-04-27  1149  	case V4L2_CID_RF_TUNER_PLL_LOCK:	return "PLL Lock";
71c689dc2e732d Hans Verkuil      2021-04-27  1150  	case V4L2_CID_RDS_RX_PTY:		return "RDS Program Type";
71c689dc2e732d Hans Verkuil      2021-04-27  1151  	case V4L2_CID_RDS_RX_PS_NAME:		return "RDS PS Name";
71c689dc2e732d Hans Verkuil      2021-04-27  1152  	case V4L2_CID_RDS_RX_RADIO_TEXT:	return "RDS Radio Text";
71c689dc2e732d Hans Verkuil      2021-04-27  1153  	case V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT: return "RDS Traffic Announcement";
71c689dc2e732d Hans Verkuil      2021-04-27  1154  	case V4L2_CID_RDS_RX_TRAFFIC_PROGRAM:	return "RDS Traffic Program";
71c689dc2e732d Hans Verkuil      2021-04-27  1155  	case V4L2_CID_RDS_RX_MUSIC_SPEECH:	return "RDS Music";
71c689dc2e732d Hans Verkuil      2021-04-27  1156  
71c689dc2e732d Hans Verkuil      2021-04-27  1157  	/* Detection controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1158  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1159  	case V4L2_CID_DETECT_CLASS:		return "Detection Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1160  	case V4L2_CID_DETECT_MD_MODE:		return "Motion Detection Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1161  	case V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD: return "MD Global Threshold";
71c689dc2e732d Hans Verkuil      2021-04-27  1162  	case V4L2_CID_DETECT_MD_THRESHOLD_GRID:	return "MD Threshold Grid";
71c689dc2e732d Hans Verkuil      2021-04-27  1163  	case V4L2_CID_DETECT_MD_REGION_GRID:	return "MD Region Grid";
71c689dc2e732d Hans Verkuil      2021-04-27  1164  
71c689dc2e732d Hans Verkuil      2021-04-27  1165  	/* Stateless Codec controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1166  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1167  	case V4L2_CID_CODEC_STATELESS_CLASS:	return "Stateless Codec Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1168  	case V4L2_CID_STATELESS_H264_DECODE_MODE:		return "H264 Decode Mode";
71c689dc2e732d Hans Verkuil      2021-04-27  1169  	case V4L2_CID_STATELESS_H264_START_CODE:		return "H264 Start Code";
71c689dc2e732d Hans Verkuil      2021-04-27  1170  	case V4L2_CID_STATELESS_H264_SPS:			return "H264 Sequence Parameter Set";
71c689dc2e732d Hans Verkuil      2021-04-27  1171  	case V4L2_CID_STATELESS_H264_PPS:			return "H264 Picture Parameter Set";
71c689dc2e732d Hans Verkuil      2021-04-27  1172  	case V4L2_CID_STATELESS_H264_SCALING_MATRIX:		return "H264 Scaling Matrix";
71c689dc2e732d Hans Verkuil      2021-04-27  1173  	case V4L2_CID_STATELESS_H264_PRED_WEIGHTS:		return "H264 Prediction Weight Table";
71c689dc2e732d Hans Verkuil      2021-04-27  1174  	case V4L2_CID_STATELESS_H264_SLICE_PARAMS:		return "H264 Slice Parameters";
71c689dc2e732d Hans Verkuil      2021-04-27  1175  	case V4L2_CID_STATELESS_H264_DECODE_PARAMS:		return "H264 Decode Parameters";
71c689dc2e732d Hans Verkuil      2021-04-27  1176  	case V4L2_CID_STATELESS_FWHT_PARAMS:			return "FWHT Stateless Parameters";
71c689dc2e732d Hans Verkuil      2021-04-27  1177  	case V4L2_CID_STATELESS_VP8_FRAME:			return "VP8 Frame Parameters";
71c689dc2e732d Hans Verkuil      2021-04-27  1178  	case V4L2_CID_STATELESS_MPEG2_SEQUENCE:			return "MPEG-2 Sequence Header";
71c689dc2e732d Hans Verkuil      2021-04-27  1179  	case V4L2_CID_STATELESS_MPEG2_PICTURE:			return "MPEG-2 Picture Header";
71c689dc2e732d Hans Verkuil      2021-04-27  1180  	case V4L2_CID_STATELESS_MPEG2_QUANTISATION:		return "MPEG-2 Quantisation Matrices";
71c689dc2e732d Hans Verkuil      2021-04-27  1181  
71c689dc2e732d Hans Verkuil      2021-04-27  1182  	/* Colorimetry controls */
71c689dc2e732d Hans Verkuil      2021-04-27  1183  	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
71c689dc2e732d Hans Verkuil      2021-04-27  1184  	case V4L2_CID_COLORIMETRY_CLASS:	return "Colorimetry Controls";
71c689dc2e732d Hans Verkuil      2021-04-27  1185  	case V4L2_CID_COLORIMETRY_HDR10_CLL_INFO:		return "HDR10 Content Light Info";
71c689dc2e732d Hans Verkuil      2021-04-27 @1186  	case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY:	return "HDR10 Mastering Display";
71c689dc2e732d Hans Verkuil      2021-04-27  1187  	default:
71c689dc2e732d Hans Verkuil      2021-04-27  1188  		return NULL;
71c689dc2e732d Hans Verkuil      2021-04-27  1189  	}
71c689dc2e732d Hans Verkuil      2021-04-27  1190  }
71c689dc2e732d Hans Verkuil      2021-04-27  1191  EXPORT_SYMBOL(v4l2_ctrl_get_name);
71c689dc2e732d Hans Verkuil      2021-04-27  1192  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32508 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-08-06 10:35 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-22 12:12 [PATCH v3 0/2] New V4L2 controls V4L2_CID_NOTIFY_GAIN_XXX David Plowman
2021-07-22 12:12 ` [PATCH v3 1/2] media: v4l2-ctrls: Add V4L2_CID_NOTIFY_GAIN_XXX controls David Plowman
2021-08-05 15:04   ` Hans Verkuil
2021-08-05 15:22   ` Laurent Pinchart
2021-08-05 15:40     ` Sakari Ailus
2021-08-05 15:49       ` Laurent Pinchart
2021-08-05 18:05         ` Sakari Ailus
2021-08-06  8:15           ` David Plowman
2021-08-06  8:32             ` Sakari Ailus
2021-08-06  8:38             ` Laurent Pinchart
2021-08-06 10:34               ` David Plowman
2021-07-22 12:12 ` [PATCH v3 2/2] media: v4l2-ctrls: Document " David Plowman
2021-08-05 15:04   ` Hans Verkuil
2021-08-04 18:44 [PATCH v3 1/2] media: v4l2-ctrls: Add " kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.