--- zzzz-none-000/linux-3.10.107/Documentation/DocBook/media/v4l/controls.xml 2017-06-27 09:49:32.000000000 +0000
+++ scorpion-7490-727/linux-3.10.107/Documentation/DocBook/media/v4l/controls.xml 2021-02-04 17:41:59.000000000 +0000
@@ -13,6 +13,19 @@
All controls are accessed using an ID value. V4L2 defines
several IDs for specific purposes. Drivers can also implement their
own custom controls using V4L2_CID_PRIVATE_BASE
+The use of V4L2_CID_PRIVATE_BASE
+is problematic because different drivers may use the same
+V4L2_CID_PRIVATE_BASE ID for different controls.
+This makes it hard to programatically set such controls since the meaning
+of the control with that ID is driver dependent. In order to resolve this
+drivers use unique IDs and the V4L2_CID_PRIVATE_BASE
+IDs are mapped to those unique IDs by the kernel. Consider these
+V4L2_CID_PRIVATE_BASE IDs as aliases to the real
+IDs.
+Many applications today still use the V4L2_CID_PRIVATE_BASE
+IDs instead of using &VIDIOC-QUERYCTRL; with the V4L2_CTRL_FLAG_NEXT_CTRL
+flag to enumerate all IDs, so support for V4L2_CID_PRIVATE_BASE
+is still around.
and higher values. The pre-defined control IDs have the prefix
V4L2_CID_, and are listed in . The ID is used when querying the attributes of
@@ -31,25 +44,22 @@
or output. Different in the sense of other bounds, another default and
current value, step size or other menu items. A control with a certain
custom ID can also change name and
-type.
- It will be more convenient for applications if drivers
-make use of the V4L2_CTRL_FLAG_DISABLED flag, but
-that was never required.
- Control values are stored globally, they do not
+type.
+
+ If a control is not applicable to the current configuration
+of the device (for example, it doesn't apply to the current video input)
+drivers set the V4L2_CTRL_FLAG_INACTIVE flag.
+
+ Control values are stored globally, they do not
change when switching except to stay within the reported bounds. They
also do not change ⪚ when the device is opened or closed, when the
tuner radio frequency is changed or generally never without
-application request. Since V4L2 specifies no event mechanism, panel
-applications intended to cooperate with other panel applications (be
-they built into a larger application, as a TV viewer) may need to
-regularly poll control values to update their user
-interface.
- Applications could call an ioctl to request events.
-After another process called &VIDIOC-S-CTRL; or another ioctl changing
-shared properties the &func-select; function would indicate
-readability until any ioctl (querying the properties) is
-called.
-
+application request.
+
+ V4L2 specifies an event mechanism to notify applications
+when controls change value (see &VIDIOC-SUBSCRIBE-EVENT;, event
+V4L2_EVENT_CTRL), panel applications might want to make
+use of that in order to always reflect the correct control value.
All controls use machine endianness.
@@ -398,14 +408,17 @@
V4L2_CID_ALPHA_COMPONENTinteger
- Sets the alpha color component on the capture device or on
- the capture buffer queue of a mem-to-mem device. When a mem-to-mem
- device produces frame format that includes an alpha component
+ Sets the alpha color component. When a capture device (or
+ capture queue of a mem-to-mem device) produces a frame format that
+ includes an alpha component
(e.g. packed RGB image formats)
- and the alpha value is not defined by the mem-to-mem input data
- this control lets you select the alpha component value of all
- pixels. It is applicable to any pixel format that contains an alpha
- component.
+ and the alpha value is not defined by the device or the mem-to-mem
+ input data this control lets you select the alpha component value of
+ all pixels. When an output device (or output queue of a mem-to-mem
+ device) consumes a frame format that doesn't include an alpha
+ component and the device supports alpha channel processing this
+ control lets you set the alpha component value of all pixels for
+ further processing in the device.
@@ -434,127 +447,152 @@
controls, VIDIOC_QUERYMENU when it has one or
more menu type controls.
-
- Enumerating all controls
+
+ Enumerating all user controls
&v4l2-queryctrl; queryctrl;
&v4l2-querymenu; querymenu;
-static void
-enumerate_menu (void)
+static void enumerate_menu(void)
{
- printf (" Menu items:\n");
+ printf(" Menu items:\n");
- memset (&querymenu, 0, sizeof (querymenu));
+ memset(&querymenu, 0, sizeof(querymenu));
querymenu.id = queryctrl.id;
for (querymenu.index = queryctrl.minimum;
querymenu.index <= queryctrl.maximum;
- querymenu.index++) {
- if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &querymenu)) {
- printf (" %s\n", querymenu.name);
+ querymenu.index++) {
+ if (0 == ioctl(fd, &VIDIOC-QUERYMENU;, &querymenu)) {
+ printf(" %s\n", querymenu.name);
}
}
}
-memset (&queryctrl, 0, sizeof (queryctrl));
+memset(&queryctrl, 0, sizeof(queryctrl));
for (queryctrl.id = V4L2_CID_BASE;
queryctrl.id < V4L2_CID_LASTP1;
queryctrl.id++) {
- if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
+ if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
- printf ("Control %s\n", queryctrl.name);
+ printf("Control %s\n", queryctrl.name);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
- enumerate_menu ();
+ enumerate_menu();
} else {
if (errno == EINVAL)
continue;
- perror ("VIDIOC_QUERYCTRL");
- exit (EXIT_FAILURE);
+ perror("VIDIOC_QUERYCTRL");
+ exit(EXIT_FAILURE);
}
}
for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
queryctrl.id++) {
- if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
+ if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
- printf ("Control %s\n", queryctrl.name);
+ printf("Control %s\n", queryctrl.name);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
- enumerate_menu ();
+ enumerate_menu();
} else {
if (errno == EINVAL)
break;
- perror ("VIDIOC_QUERYCTRL");
- exit (EXIT_FAILURE);
+ perror("VIDIOC_QUERYCTRL");
+ exit(EXIT_FAILURE);
}
}
+ Enumerating all user controls (alternative)
+
+memset(&queryctrl, 0, sizeof(queryctrl));
+
+queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL;
+while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
+ if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
+ break;
+ if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
+ continue;
+
+ printf("Control %s\n", queryctrl.name);
+
+ if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
+ enumerate_menu();
+
+ queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
+}
+if (errno != EINVAL) {
+ perror("VIDIOC_QUERYCTRL");
+ exit(EXIT_FAILURE);
+}
+
+
+
+ Changing controls
&v4l2-queryctrl; queryctrl;
&v4l2-control; control;
-memset (&queryctrl, 0, sizeof (queryctrl));
+memset(&queryctrl, 0, sizeof(queryctrl));
queryctrl.id = V4L2_CID_BRIGHTNESS;
-if (-1 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
+if (-1 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) {
if (errno != EINVAL) {
- perror ("VIDIOC_QUERYCTRL");
- exit (EXIT_FAILURE);
+ perror("VIDIOC_QUERYCTRL");
+ exit(EXIT_FAILURE);
} else {
- printf ("V4L2_CID_BRIGHTNESS is not supported\n");
+ printf("V4L2_CID_BRIGHTNESS is not supported\n");
}
} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) {
- printf ("V4L2_CID_BRIGHTNESS is not supported\n");
+ printf("V4L2_CID_BRIGHTNESS is not supported\n");
} else {
- memset (&control, 0, sizeof (control));
+ memset(&control, 0, sizeof (control));
control.id = V4L2_CID_BRIGHTNESS;
control.value = queryctrl.default_value;
- if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control)) {
- perror ("VIDIOC_S_CTRL");
- exit (EXIT_FAILURE);
+ if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &control)) {
+ perror("VIDIOC_S_CTRL");
+ exit(EXIT_FAILURE);
}
}
-memset (&control, 0, sizeof (control));
+memset(&control, 0, sizeof(control));
control.id = V4L2_CID_CONTRAST;
-if (0 == ioctl (fd, &VIDIOC-G-CTRL;, &control)) {
+if (0 == ioctl(fd, &VIDIOC-G-CTRL;, &control)) {
control.value += 1;
/* The driver may clamp the value or return ERANGE, ignored here */
- if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control)
+ if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &control)
&& errno != ERANGE) {
- perror ("VIDIOC_S_CTRL");
- exit (EXIT_FAILURE);
+ perror("VIDIOC_S_CTRL");
+ exit(EXIT_FAILURE);
}
/* Ignore if V4L2_CID_CONTRAST is unsupported */
} else if (errno != EINVAL) {
- perror ("VIDIOC_G_CTRL");
- exit (EXIT_FAILURE);
+ perror("VIDIOC_G_CTRL");
+ exit(EXIT_FAILURE);
}
control.id = V4L2_CID_AUDIO_MUTE;
-control.value = TRUE; /* silence */
+control.value = 1; /* silence */
/* Errors ignored */
-ioctl (fd, VIDIOC_S_CTRL, &control);
+ioctl(fd, VIDIOC_S_CTRL, &control);
@@ -625,16 +663,29 @@
&v4l2-control;, except for the fact that it also allows for 64-bit
values and pointers to be passed.
+ Since the &v4l2-ext-control; supports pointers it is now
+also possible to have controls with compound types such as N-dimensional arrays
+and/or structures. You need to specify the V4L2_CTRL_FLAG_NEXT_COMPOUND
+when enumerating controls to actually be able to see such compound controls.
+In other words, these controls with compound types should only be used
+programmatically.
+
+ Since such compound controls need to expose more information
+about themselves than is possible with &VIDIOC-QUERYCTRL; the
+&VIDIOC-QUERY-EXT-CTRL; ioctl was added. In particular, this ioctl gives
+the dimensions of the N-dimensional array if this control consists of more than
+one element.
+
It is important to realize that due to the flexibility of
controls it is necessary to check whether the control you want to set
actually is supported in the driver and what the valid range of values
-is. So use the &VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls to
-check this. Also note that it is possible that some of the menu
-indices in a control of type V4L2_CTRL_TYPE_MENU
-may not be supported (VIDIOC_QUERYMENU will
-return an error). A good example is the list of supported MPEG audio
-bitrates. Some drivers only support one or two bitrates, others
-support a wider range.
+is. So use the &VIDIOC-QUERYCTRL; (or &VIDIOC-QUERY-EXT-CTRL;) and
+&VIDIOC-QUERYMENU; ioctls to check this. Also note that it is possible
+that some of the menu indices in a control of type
+V4L2_CTRL_TYPE_MENU may not be supported
+(VIDIOC_QUERYMENU will return an error). A good
+example is the list of supported MPEG audio bitrates. Some drivers only
+support one or two bitrates, others support a wider range.
All controls use machine endianness.
@@ -675,12 +726,12 @@
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
-while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &qctrl)) {
- if (V4L2_CTRL_ID2CLASS (qctrl.id) != V4L2_CTRL_CLASS_MPEG)
+while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &qctrl)) {
+ if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
break;
/* ... */
- qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
- }
+ qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
+}
@@ -700,7 +751,7 @@
VIDIOC_QUERYCTRL will fail when used in
combination with V4L2_CTRL_FLAG_NEXT_CTRL. In
that case the old method of enumerating control should be used (see
-1.8). But if it is supported, then it is guaranteed to enumerate over
+). But if it is supported, then it is guaranteed to enumerate over
all controls, including driver-private controls.
@@ -722,17 +773,22 @@
- MPEG Control Reference
+ Codec Control Reference
- Below all controls within the MPEG control class are
+ Below all controls within the Codec control class are
described. First the generic controls, then controls specific for
certain hardware.
+ Note: These controls are applicable to all codecs and
+not just MPEG. The defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG
+as the controls were originally made for MPEG codecs and later
+extended to cover all encoding formats.
+
- Generic MPEG Controls
+ Generic Codec Controls
- MPEG Control IDs
+ Codec Control IDs
@@ -752,7 +808,7 @@
V4L2_CID_MPEG_CLASSclass
- The MPEG class
+ The Codec class
descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
description of this control class. This description can be used as the
caption of a Tab page in a GUI, for example.
@@ -2253,6 +2309,26 @@
VBV buffer control.
+
+
+ V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE
+ integer
+
+ Horizontal search range defines maximum horizontal search area in pixels
+to search and match for the present Macroblock (MB) in the reference picture. This V4L2 control macro is used to set
+horizontal search range for motion estimation module in video encoder.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE
+ integer
+
+ Vertical search range defines maximum vertical search area in pixels
+to search and match for the present Macroblock (MB) in the reference picture. This V4L2 control macro is used to set
+vertical search range for motion estimation module in video encoder.
+
+
V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE
@@ -2616,12 +2692,11 @@
V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE
- integer
- If the display delay is enabled then the decoder has to return a
-CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in
-buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus
-application should not write to those buffers. This feature can be used for example for generating thumbnails of videos.
-Applicable to the H264 decoder.
+ boolean
+ If the display delay is enabled then the decoder is forced to return a
+CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through
+V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY. This feature can be used for example
+for generating thumbnails of videos. Applicable to the H264 decoder.
@@ -3009,6 +3084,200 @@
+
+
+ VPX Control Reference
+
+ The VPX controls include controls for encoding parameters
+ of VPx video codec.
+
+
+ VPX Control IDs
+
+
+
+
+
+
+
+
+
+
+ ID
+ Type
+ Description
+
+
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS
+ enum v4l2_vp8_num_partitions
+
+ The number of token partitions to use in VP8 encoder.
+Possible values are:
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION
+ 1 coefficient partition
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS
+ 2 coefficient partitions
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS
+ 4 coefficient partitions
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS
+ 8 coefficient partitions
+
+
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4
+ boolean
+
+ Setting this prevents intra 4x4 mode in the intra mode decision.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES
+ enum v4l2_vp8_num_ref_frames
+
+ The number of reference pictures for encoding P frames.
+Possible values are:
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME
+ Last encoded frame will be searched
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME
+ Two frames will be searched among the last encoded frame, the golden frame
+and the alternate reference (altref) frame. The encoder implementation will decide which two are chosen.
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME
+ The last encoded frame, the golden frame and the altref frame will be searched.
+
+
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL
+ integer
+
+ Indicates the loop filter level. The adjustment of the loop
+filter level is done via a delta value against a baseline loop filter value.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS
+ integer
+
+ This parameter affects the loop filter. Anything above
+zero weakens the deblocking effect on the loop filter.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD
+ integer
+
+ Sets the refresh period for the golden frame. The period is defined
+in number of frames. For a value of 'n', every nth frame starting from the first key frame will be taken as a golden frame.
+For eg. for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden frame refresh period is set as 4, the frames
+0, 4, 8 etc will be taken as the golden frames as frame 0 is always a key frame.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL
+ enum v4l2_vp8_golden_frame_sel
+
+ Selects the golden frame for encoding.
+Possible values are:
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV
+ Use the (n-2)th frame as a golden frame, current frame index being 'n'.
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD
+ Use the previous specific frame indicated by
+V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a golden frame.
+
+
+
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_MIN_QP
+ integer
+
+ Minimum quantization parameter for VP8.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_MAX_QP
+ integer
+
+ Maximum quantization parameter for VP8.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP
+ integer
+
+ Quantization parameter for an I frame for VP8.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP
+ integer
+
+ Quantization parameter for a P frame for VP8.
+
+
+
+
+ V4L2_CID_MPEG_VIDEO_VPX_PROFILE
+ integer
+
+ Select the desired profile for VPx encoder.
+Acceptable values are 0, 1, 2 and 3 corresponding to encoder profiles 0, 1, 2 and 3.
+
+
+
+
+
+
+
+
@@ -3145,9 +3414,9 @@
V4L2_EXPOSURE_METERING_MATRIXA multi-zone metering. The light intensity is measured
-in several points of the frame and the the results are combined. The
+in several points of the frame and the results are combined. The
algorithm of the zones selection and their significance in calculating the
-final value is device dependant.
+final value is device dependent.
@@ -3695,6 +3964,27 @@
+
+ V4L2_CID_PAN_SPEED
+ integer
+ This control turns the
+camera horizontally at the specific speed. The unit is undefined. A
+positive value moves the camera to the right (clockwise when viewed
+from above), a negative value to the left. A value of zero stops the motion
+if one is in progress and has no effect otherwise.
+
+
+
+
+ V4L2_CID_TILT_SPEED
+ integer
+ This control turns the
+camera vertically at the specified speed. The unit is undefined. A
+positive value moves the camera up, a negative value down. A value of zero
+stops the motion if one is in progress and has no effect otherwise.
+
+
+
@@ -3781,6 +4071,68 @@
with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64.
+ V4L2_CID_RDS_TX_MONO_STEREO
+ boolean
+
+ Sets the Mono/Stereo bit of the Decoder Identification code. If set,
+then the audio was recorded as stereo.
+
+
+ V4L2_CID_RDS_TX_ARTIFICIAL_HEAD
+ boolean
+
+ Sets the
+Artificial Head bit of the Decoder
+Identification code. If set, then the audio was recorded using an artificial head.
+
+
+ V4L2_CID_RDS_TX_COMPRESSED
+ boolean
+
+ Sets the Compressed bit of the Decoder Identification code. If set,
+then the audio is compressed.
+
+
+ V4L2_CID_RDS_TX_DYNAMIC_PTY
+ boolean
+
+ Sets the Dynamic PTY bit of the Decoder Identification code. If set,
+then the PTY code is dynamically switched.
+
+
+ V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT
+ boolean
+
+ If set, then a traffic announcement is in progress.
+
+
+ V4L2_CID_RDS_TX_TRAFFIC_PROGRAM
+ boolean
+
+ If set, then the tuned programme carries traffic announcements.
+
+
+ V4L2_CID_RDS_TX_MUSIC_SPEECH
+ boolean
+
+ If set, then this channel broadcasts music. If cleared, then it
+broadcasts speech. If the transmitter doesn't make this distinction, then it should be set.
+
+
+ V4L2_CID_RDS_TX_ALT_FREQS_ENABLE
+ boolean
+
+ If set, then transmit alternate frequencies.
+
+
+ V4L2_CID_RDS_TX_ALT_FREQS
+ __u32 array
+
+ The alternate frequencies in kHz units. The RDS standard allows
+for up to 25 frequencies to be defined. Drivers may support fewer frequencies so check
+the array size.
+
+ V4L2_CID_AUDIO_LIMITER_ENABLEDboolean
@@ -4171,6 +4523,24 @@
The flash controller has detected a short or open
circuit condition on the indicator LED.
+
+ V4L2_FLASH_FAULT_UNDER_VOLTAGE
+ Flash controller voltage to the flash LED
+ has been below the minimum limit specific to the flash
+ controller.
+
+
+ V4L2_FLASH_FAULT_INPUT_VOLTAGE
+ The input voltage of the flash controller is below
+ the limit under which strobing the flash at full current
+ will not be possible.The condition persists until this flag
+ is no longer set.
+
+
+ V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE
+ The temperature of the LED has exceeded its
+ allowed upper limit.
+
@@ -4440,6 +4810,40 @@
conversion.
+
+ V4L2_CID_TEST_PATTERN_RED
+ integer
+
+
+ Test pattern red colour component.
+
+
+
+ V4L2_CID_TEST_PATTERN_GREENR
+ integer
+
+
+ Test pattern green (next to red)
+ colour component.
+
+
+
+ V4L2_CID_TEST_PATTERN_BLUE
+ integer
+
+
+ Test pattern blue colour component.
+
+
+
+ V4L2_CID_TEST_PATTERN_GREENB
+ integer
+
+
+ Test pattern green (next to blue)
+ colour component.
+
+
@@ -4459,7 +4863,7 @@
- The Image Source control class is intended for low-level control of
+ The Image Process control class is intended for low-level control of
image processing functions. Unlike
V4L2_CID_IMAGE_SOURCE_CLASS, the controls in
this class affect processing the image, and do not control capturing
@@ -4467,7 +4871,7 @@
- Image Source Control IDs
+ Image Process Control IDs
@@ -4739,6 +5143,57 @@
Enables/disables RDS
reception by the radio tuner
+
+ V4L2_CID_RDS_RX_PTY
+ integer
+
+ Gets RDS Programme Type field.
+This encodes up to 31 pre-defined programme types.
+
+
+ V4L2_CID_RDS_RX_PS_NAME
+ string
+
+ Gets the Programme Service name (PS_NAME).
+It is intended for static display on a receiver. It is the primary aid to listeners in programme service
+identification and selection. In Annex E of , the RDS specification,
+there is a full description of the correct character encoding for Programme Service name strings.
+Also from RDS specification, PS is usually a single eight character text. However, it is also possible
+to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured
+with steps of 8 characters. The result is it must always contain a string with size multiple of 8.
+
+
+ V4L2_CID_RDS_RX_RADIO_TEXT
+ string
+
+ Gets the Radio Text info. It is a textual description of
+what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names,
+programme-related information or any other text. In these cases, RadioText can be used in addition to
+V4L2_CID_RDS_RX_PS_NAME. The encoding for Radio Text strings is also fully described
+in Annex E of . The length of Radio Text strings depends on which RDS Block is being
+used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible
+to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured
+with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64.
+
+
+ V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT
+ boolean
+
+ If set, then a traffic announcement is in progress.
+
+
+ V4L2_CID_RDS_RX_TRAFFIC_PROGRAM
+ boolean
+
+ If set, then the tuned programme carries traffic announcements.
+
+
+ V4L2_CID_RDS_RX_MUSIC_SPEECH
+ boolean
+
+ If set, then this channel broadcasts music. If cleared, then it
+broadcasts speech. If the transmitter doesn't make this distinction, then it will be set.
+ V4L2_CID_TUNE_DEEMPHASISenum v4l2_deemphasis
@@ -4770,6 +5225,254 @@
+
+
+
+ Detect Control Reference
+
+ The Detect class includes controls for common features of
+ various motion or object detection capable devices.
+
+
+ Detect Control IDs
+
+
+
+
+
+
+
+
+
+
+ ID
+ Type
+ Description
+
+
+
+
+
+ V4L2_CID_DETECT_CLASS
+ class
+ The Detect class
+descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
+description of this control class.
+
+
+ V4L2_CID_DETECT_MD_MODE
+ menu
+ Sets the motion detection mode.
+
+
+
+
+
+ V4L2_DETECT_MD_MODE_DISABLED
+ Disable motion detection.
+
+
+ V4L2_DETECT_MD_MODE_GLOBAL
+ Use a single motion detection threshold.
+
+
+ V4L2_DETECT_MD_MODE_THRESHOLD_GRID
+ The image is divided into a grid, each cell with its own
+ motion detection threshold. These thresholds are set through the
+ V4L2_CID_DETECT_MD_THRESHOLD_GRID matrix control.
+
+
+ V4L2_DETECT_MD_MODE_REGION_GRID
+ The image is divided into a grid, each cell with its own
+ region value that specifies which per-region motion detection thresholds
+ should be used. Each region has its own thresholds. How these per-region
+ thresholds are set up is driver-specific. The region values for the grid are set
+ through the V4L2_CID_DETECT_MD_REGION_GRID matrix
+ control.
+
+
+
+
+
+ V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD
+ integer
+
+ Sets the global motion detection threshold to be
+ used with the V4L2_DETECT_MD_MODE_GLOBAL motion detection mode.
+
+
+ V4L2_CID_DETECT_MD_THRESHOLD_GRID
+ __u16 matrix
+
+ Sets the motion detection thresholds for each cell in the grid.
+ To be used with the V4L2_DETECT_MD_MODE_THRESHOLD_GRID
+ motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the
+ grid.
+
+
+ V4L2_CID_DETECT_MD_REGION_GRID
+ __u8 matrix
+
+ Sets the motion detection region value for each cell in the grid.
+ To be used with the V4L2_DETECT_MD_MODE_REGION_GRID
+ motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the
+ grid.
+
+
+
+
+
+
+ RF Tuner Control Reference
+
+
+The RF Tuner (RF_TUNER) class includes controls for common features of devices
+having RF tuner.
+
+
+In this context, RF tuner is radio receiver circuit between antenna and
+demodulator. It receives radio frequency (RF) from the antenna and converts that
+received signal to lower intermediate frequency (IF) or baseband frequency (BB).
+Tuners that could do baseband output are often called Zero-IF tuners. Older
+tuners were typically simple PLL tuners inside a metal box, whilst newer ones
+are highly integrated chips without a metal box "silicon tuners". These controls
+are mostly applicable for new feature rich silicon tuners, just because older
+tuners does not have much adjustable features.
+
+
+For more information about RF tuners see
+Tuner (radio)
+and
+RF front end
+from Wikipedia.
+
+
+
+ RF_TUNER Control IDs
+
+
+
+
+
+
+
+
+
+
+ ID
+ Type
+
+
+ Description
+
+
+
+
+
+ V4L2_CID_RF_TUNER_CLASS
+ class
+ The RF_TUNER class
+descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
+description of this control class.
+
+
+ V4L2_CID_RF_TUNER_BANDWIDTH_AUTO
+ boolean
+
+
+ Enables/disables tuner radio channel
+bandwidth configuration. In automatic mode bandwidth configuration is performed
+by the driver.
+
+
+ V4L2_CID_RF_TUNER_BANDWIDTH
+ integer
+
+
+ Filter(s) on tuner signal path are used to
+filter signal according to receiving party needs. Driver configures filters to
+fulfill desired bandwidth requirement. Used when V4L2_CID_RF_TUNER_BANDWIDTH_AUTO is not
+set. Unit is in Hz. The range and step are driver-specific.
+
+
+ V4L2_CID_RF_TUNER_LNA_GAIN_AUTO
+ boolean
+
+
+ Enables/disables LNA automatic gain control (AGC)
+
+
+ V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO
+ boolean
+
+
+ Enables/disables mixer automatic gain control (AGC)
+
+
+ V4L2_CID_RF_TUNER_IF_GAIN_AUTO
+ boolean
+
+
+ Enables/disables IF automatic gain control (AGC)
+
+
+ V4L2_CID_RF_TUNER_RF_GAIN
+ integer
+
+
+ The RF amplifier is the very first
+amplifier on the receiver signal path, just right after the antenna input.
+The difference between the LNA gain and the RF gain in this document is that
+the LNA gain is integrated in the tuner chip while the RF gain is a separate
+chip. There may be both RF and LNA gain controls in the same device.
+The range and step are driver-specific.
+
+
+ V4L2_CID_RF_TUNER_LNA_GAIN
+ integer
+
+
+ LNA (low noise amplifier) gain is first
+gain stage on the RF tuner signal path. It is located very close to tuner
+antenna input. Used when V4L2_CID_RF_TUNER_LNA_GAIN_AUTO is not set.
+See V4L2_CID_RF_TUNER_RF_GAIN to understand how RF gain
+and LNA gain differs from the each others.
+The range and step are driver-specific.
+
+
+ V4L2_CID_RF_TUNER_MIXER_GAIN
+ integer
+
+
+ Mixer gain is second gain stage on the RF
+tuner signal path. It is located inside mixer block, where RF signal is
+down-converted by the mixer. Used when V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO
+is not set. The range and step are driver-specific.
+
+
+ V4L2_CID_RF_TUNER_IF_GAIN
+ integer
+
+
+ IF gain is last gain stage on the RF tuner
+signal path. It is located on output of RF tuner. It controls signal level of
+intermediate frequency output or baseband output. Used when
+V4L2_CID_RF_TUNER_IF_GAIN_AUTO is not set. The range and step are
+driver-specific.
+
+
+ V4L2_CID_RF_TUNER_PLL_LOCK
+ boolean
+
+
+ Is synthesizer PLL locked? RF tuner is
+receiving given frequency when that control is set. This is a read-only control.
+
+
+
+
+