diff options
-rw-r--r-- | Documentation/DocBook/Makefile | 5 | ||||
-rw-r--r-- | Documentation/DocBook/media-entities.tmpl | 16 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/dev-subdev.xml | 280 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/subdev-formats.xml | 2416 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/v4l2.xml | 4 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/vidioc-streamon.xml | 9 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml | 154 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml | 119 | ||||
-rw-r--r-- | Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml | 180 | ||||
-rw-r--r-- | drivers/media/video/v4l2-subdev.c | 49 | ||||
-rw-r--r-- | include/linux/Kbuild | 1 | ||||
-rw-r--r-- | include/linux/v4l2-subdev.h | 90 | ||||
-rw-r--r-- | include/media/v4l2-subdev.h | 10 |
13 files changed, 3332 insertions, 1 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 8b6e00a71034..2deb069aedf1 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -53,7 +53,10 @@ MAN := $(patsubst %.xml, %.9, $(BOOKS)) | |||
53 | mandocs: $(MAN) | 53 | mandocs: $(MAN) |
54 | 54 | ||
55 | build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \ | 55 | build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \ |
56 | cp $(srctree)/Documentation/DocBook/dvb/*.png $(srctree)/Documentation/DocBook/v4l/*.gif $(objtree)/Documentation/DocBook/media/ | 56 | cp $(srctree)/Documentation/DocBook/dvb/*.png \ |
57 | $(srctree)/Documentation/DocBook/v4l/*.gif \ | ||
58 | $(srctree)/Documentation/DocBook/v4l/*.png \ | ||
59 | $(objtree)/Documentation/DocBook/media/ | ||
57 | 60 | ||
58 | xmldoclinks: | 61 | xmldoclinks: |
59 | ifneq ($(objtree),$(srctree)) | 62 | ifneq ($(objtree),$(srctree)) |
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl index 121db1549244..dbb9cb2e1ec6 100644 --- a/Documentation/DocBook/media-entities.tmpl +++ b/Documentation/DocBook/media-entities.tmpl | |||
@@ -86,6 +86,10 @@ | |||
86 | <!ENTITY VIDIOC-S-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_S_PRIORITY</constant></link>"> | 86 | <!ENTITY VIDIOC-S-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_S_PRIORITY</constant></link>"> |
87 | <!ENTITY VIDIOC-S-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_S_STD</constant></link>"> | 87 | <!ENTITY VIDIOC-S-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_S_STD</constant></link>"> |
88 | <!ENTITY VIDIOC-S-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_S_TUNER</constant></link>"> | 88 | <!ENTITY VIDIOC-S-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_S_TUNER</constant></link>"> |
89 | <!ENTITY VIDIOC-SUBDEV-ENUM-FRAME-SIZE "<link linkend='vidioc-subdev-enum-frame-size'><constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant></link>"> | ||
90 | <!ENTITY VIDIOC-SUBDEV-ENUM-MBUS-CODE "<link linkend='vidioc-subdev-enum-mbus-code'><constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant></link>"> | ||
91 | <!ENTITY VIDIOC-SUBDEV-G-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_G_FMT</constant></link>"> | ||
92 | <!ENTITY VIDIOC-SUBDEV-S-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_S_FMT</constant></link>"> | ||
89 | <!ENTITY VIDIOC-TRY-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_TRY_ENCODER_CMD</constant></link>"> | 93 | <!ENTITY VIDIOC-TRY-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_TRY_ENCODER_CMD</constant></link>"> |
90 | <!ENTITY VIDIOC-TRY-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_TRY_EXT_CTRLS</constant></link>"> | 94 | <!ENTITY VIDIOC-TRY-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_TRY_EXT_CTRLS</constant></link>"> |
91 | <!ENTITY VIDIOC-TRY-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>"> | 95 | <!ENTITY VIDIOC-TRY-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>"> |
@@ -107,6 +111,7 @@ | |||
107 | <!ENTITY v4l2-field "enum <link linkend='v4l2-field'>v4l2_field</link>"> | 111 | <!ENTITY v4l2-field "enum <link linkend='v4l2-field'>v4l2_field</link>"> |
108 | <!ENTITY v4l2-frmivaltypes "enum <link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link>"> | 112 | <!ENTITY v4l2-frmivaltypes "enum <link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link>"> |
109 | <!ENTITY v4l2-frmsizetypes "enum <link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link>"> | 113 | <!ENTITY v4l2-frmsizetypes "enum <link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link>"> |
114 | <!ENTITY v4l2-mbus-pixelcode "enum <link linkend='v4l2-mbus-pixelcode'>v4l2_mbus_pixelcode</link>"> | ||
110 | <!ENTITY v4l2-memory "enum <link linkend='v4l2-memory'>v4l2_memory</link>"> | 115 | <!ENTITY v4l2-memory "enum <link linkend='v4l2-memory'>v4l2_memory</link>"> |
111 | <!ENTITY v4l2-mpeg-audio-ac3-bitrate "enum <link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link>"> | 116 | <!ENTITY v4l2-mpeg-audio-ac3-bitrate "enum <link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link>"> |
112 | <!ENTITY v4l2-mpeg-audio-crc "enum <link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link>"> | 117 | <!ENTITY v4l2-mpeg-audio-crc "enum <link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link>"> |
@@ -130,6 +135,7 @@ | |||
130 | <!ENTITY v4l2-mpeg-video-encoding "enum <link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link>"> | 135 | <!ENTITY v4l2-mpeg-video-encoding "enum <link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link>"> |
131 | <!ENTITY v4l2-power-line-frequency "enum <link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link>"> | 136 | <!ENTITY v4l2-power-line-frequency "enum <link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link>"> |
132 | <!ENTITY v4l2-priority "enum <link linkend='v4l2-priority'>v4l2_priority</link>"> | 137 | <!ENTITY v4l2-priority "enum <link linkend='v4l2-priority'>v4l2_priority</link>"> |
138 | <!ENTITY v4l2-subdev-format-whence "enum <link linkend='v4l2-subdev-format-whence'>v4l2_subdev_format_whence</link>"> | ||
133 | <!ENTITY v4l2-tuner-type "enum <link linkend='v4l2-tuner-type'>v4l2_tuner_type</link>"> | 139 | <!ENTITY v4l2-tuner-type "enum <link linkend='v4l2-tuner-type'>v4l2_tuner_type</link>"> |
134 | <!ENTITY v4l2-preemphasis "enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link>"> | 140 | <!ENTITY v4l2-preemphasis "enum <link linkend='v4l2-preemphasis'>v4l2_preemphasis</link>"> |
135 | 141 | ||
@@ -172,6 +178,7 @@ | |||
172 | <!ENTITY v4l2-hw-freq-seek "struct <link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link>"> | 178 | <!ENTITY v4l2-hw-freq-seek "struct <link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link>"> |
173 | <!ENTITY v4l2-input "struct <link linkend='v4l2-input'>v4l2_input</link>"> | 179 | <!ENTITY v4l2-input "struct <link linkend='v4l2-input'>v4l2_input</link>"> |
174 | <!ENTITY v4l2-jpegcompression "struct <link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link>"> | 180 | <!ENTITY v4l2-jpegcompression "struct <link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link>"> |
181 | <!ENTITY v4l2-mbus-framefmt "struct <link linkend='v4l2-mbus-framefmt'>v4l2_mbus_framefmt</link>"> | ||
175 | <!ENTITY v4l2-modulator "struct <link linkend='v4l2-modulator'>v4l2_modulator</link>"> | 182 | <!ENTITY v4l2-modulator "struct <link linkend='v4l2-modulator'>v4l2_modulator</link>"> |
176 | <!ENTITY v4l2-mpeg-vbi-fmt-ivtv "struct <link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link>"> | 183 | <!ENTITY v4l2-mpeg-vbi-fmt-ivtv "struct <link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link>"> |
177 | <!ENTITY v4l2-output "struct <link linkend='v4l2-output'>v4l2_output</link>"> | 184 | <!ENTITY v4l2-output "struct <link linkend='v4l2-output'>v4l2_output</link>"> |
@@ -186,6 +193,9 @@ | |||
186 | <!ENTITY v4l2-sliced-vbi-cap "struct <link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link>"> | 193 | <!ENTITY v4l2-sliced-vbi-cap "struct <link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link>"> |
187 | <!ENTITY v4l2-sliced-vbi-data "struct <link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link>"> | 194 | <!ENTITY v4l2-sliced-vbi-data "struct <link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link>"> |
188 | <!ENTITY v4l2-sliced-vbi-format "struct <link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link>"> | 195 | <!ENTITY v4l2-sliced-vbi-format "struct <link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link>"> |
196 | <!ENTITY v4l2-subdev-frame-size-enum "struct <link linkend='v4l2-subdev-frame-size-enum'>v4l2_subdev_frame_size_enum</link>"> | ||
197 | <!ENTITY v4l2-subdev-format "struct <link linkend='v4l2-subdev-format'>v4l2_subdev_format</link>"> | ||
198 | <!ENTITY v4l2-subdev-mbus-code-enum "struct <link linkend='v4l2-subdev-mbus-code-enum'>v4l2_subdev_mbus_code_enum</link>"> | ||
189 | <!ENTITY v4l2-standard "struct <link linkend='v4l2-standard'>v4l2_standard</link>"> | 199 | <!ENTITY v4l2-standard "struct <link linkend='v4l2-standard'>v4l2_standard</link>"> |
190 | <!ENTITY v4l2-streamparm "struct <link linkend='v4l2-streamparm'>v4l2_streamparm</link>"> | 200 | <!ENTITY v4l2-streamparm "struct <link linkend='v4l2-streamparm'>v4l2_streamparm</link>"> |
191 | <!ENTITY v4l2-timecode "struct <link linkend='v4l2-timecode'>v4l2_timecode</link>"> | 201 | <!ENTITY v4l2-timecode "struct <link linkend='v4l2-timecode'>v4l2_timecode</link>"> |
@@ -215,6 +225,7 @@ | |||
215 | <!ENTITY ENXIO "<errorcode>ENXIO</errorcode> error code"> | 225 | <!ENTITY ENXIO "<errorcode>ENXIO</errorcode> error code"> |
216 | <!ENTITY EMFILE "<errorcode>EMFILE</errorcode> error code"> | 226 | <!ENTITY EMFILE "<errorcode>EMFILE</errorcode> error code"> |
217 | <!ENTITY EPERM "<errorcode>EPERM</errorcode> error code"> | 227 | <!ENTITY EPERM "<errorcode>EPERM</errorcode> error code"> |
228 | <!ENTITY EPIPE "<errorcode>EPIPE</errorcode> error code"> | ||
218 | <!ENTITY ERANGE "<errorcode>ERANGE</errorcode> error code"> | 229 | <!ENTITY ERANGE "<errorcode>ERANGE</errorcode> error code"> |
219 | 230 | ||
220 | <!-- Subsections --> | 231 | <!-- Subsections --> |
@@ -234,6 +245,7 @@ | |||
234 | <!ENTITY sub-dev-raw-vbi SYSTEM "v4l/dev-raw-vbi.xml"> | 245 | <!ENTITY sub-dev-raw-vbi SYSTEM "v4l/dev-raw-vbi.xml"> |
235 | <!ENTITY sub-dev-rds SYSTEM "v4l/dev-rds.xml"> | 246 | <!ENTITY sub-dev-rds SYSTEM "v4l/dev-rds.xml"> |
236 | <!ENTITY sub-dev-sliced-vbi SYSTEM "v4l/dev-sliced-vbi.xml"> | 247 | <!ENTITY sub-dev-sliced-vbi SYSTEM "v4l/dev-sliced-vbi.xml"> |
248 | <!ENTITY sub-dev-subdev SYSTEM "v4l/dev-subdev.xml"> | ||
237 | <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml"> | 249 | <!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml"> |
238 | <!ENTITY sub-driver SYSTEM "v4l/driver.xml"> | 250 | <!ENTITY sub-driver SYSTEM "v4l/driver.xml"> |
239 | <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml"> | 251 | <!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml"> |
@@ -319,6 +331,10 @@ | |||
319 | <!ENTITY sub-reqbufs SYSTEM "v4l/vidioc-reqbufs.xml"> | 331 | <!ENTITY sub-reqbufs SYSTEM "v4l/vidioc-reqbufs.xml"> |
320 | <!ENTITY sub-s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml"> | 332 | <!ENTITY sub-s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml"> |
321 | <!ENTITY sub-streamon SYSTEM "v4l/vidioc-streamon.xml"> | 333 | <!ENTITY sub-streamon SYSTEM "v4l/vidioc-streamon.xml"> |
334 | <!ENTITY sub-subdev-enum-frame-size SYSTEM "v4l/vidioc-subdev-enum-frame-size.xml"> | ||
335 | <!ENTITY sub-subdev-enum-mbus-code SYSTEM "v4l/vidioc-subdev-enum-mbus-code.xml"> | ||
336 | <!ENTITY sub-subdev-formats SYSTEM "v4l/subdev-formats.xml"> | ||
337 | <!ENTITY sub-subdev-g-fmt SYSTEM "v4l/vidioc-subdev-g-fmt.xml"> | ||
322 | <!ENTITY sub-capture-c SYSTEM "v4l/capture.c.xml"> | 338 | <!ENTITY sub-capture-c SYSTEM "v4l/capture.c.xml"> |
323 | <!ENTITY sub-keytable-c SYSTEM "v4l/keytable.c.xml"> | 339 | <!ENTITY sub-keytable-c SYSTEM "v4l/keytable.c.xml"> |
324 | <!ENTITY sub-v4l2grab-c SYSTEM "v4l/v4l2grab.c.xml"> | 340 | <!ENTITY sub-v4l2grab-c SYSTEM "v4l/v4l2grab.c.xml"> |
diff --git a/Documentation/DocBook/v4l/dev-subdev.xml b/Documentation/DocBook/v4l/dev-subdev.xml new file mode 100644 index 000000000000..fc62e65f45ef --- /dev/null +++ b/Documentation/DocBook/v4l/dev-subdev.xml | |||
@@ -0,0 +1,280 @@ | |||
1 | <title>Sub-device Interface</title> | ||
2 | |||
3 | <note> | ||
4 | <title>Experimental</title> | ||
5 | <para>This is an <link linkend="experimental">experimental</link> | ||
6 | interface and may change in the future.</para> | ||
7 | </note> | ||
8 | |||
9 | <para>The complex nature of V4L2 devices, where hardware is often made of | ||
10 | several integrated circuits that need to interact with each other in a | ||
11 | controlled way, leads to complex V4L2 drivers. The drivers usually reflect | ||
12 | the hardware model in software, and model the different hardware components | ||
13 | as software blocks called sub-devices.</para> | ||
14 | |||
15 | <para>V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver | ||
16 | implements the media device API, they will automatically inherit from media | ||
17 | entities. Applications will be able to enumerate the sub-devices and discover | ||
18 | the hardware topology using the media entities, pads and links enumeration | ||
19 | API.</para> | ||
20 | |||
21 | <para>In addition to make sub-devices discoverable, drivers can also choose | ||
22 | to make them directly configurable by applications. When both the sub-device | ||
23 | driver and the V4L2 device driver support this, sub-devices will feature a | ||
24 | character device node on which ioctls can be called to | ||
25 | <itemizedlist> | ||
26 | <listitem>query, read and write sub-devices controls</listitem> | ||
27 | <listitem>subscribe and unsubscribe to events and retrieve them</listitem> | ||
28 | <listitem>negotiate image formats on individual pads</listitem> | ||
29 | </itemizedlist> | ||
30 | </para> | ||
31 | |||
32 | <para>Sub-device character device nodes, conventionally named | ||
33 | <filename>/dev/v4l-subdev*</filename>, use major number 81.</para> | ||
34 | |||
35 | <section> | ||
36 | <title>Controls</title> | ||
37 | <para>Most V4L2 controls are implemented by sub-device hardware. Drivers | ||
38 | usually merge all controls and expose them through video device nodes. | ||
39 | Applications can control all sub-devices through a single interface.</para> | ||
40 | |||
41 | <para>Complex devices sometimes implement the same control in different | ||
42 | pieces of hardware. This situation is common in embedded platforms, where | ||
43 | both sensors and image processing hardware implement identical functions, | ||
44 | such as contrast adjustment, white balance or faulty pixels correction. As | ||
45 | the V4L2 controls API doesn't support several identical controls in a single | ||
46 | device, all but one of the identical controls are hidden.</para> | ||
47 | |||
48 | <para>Applications can access those hidden controls through the sub-device | ||
49 | node with the V4L2 control API described in <xref linkend="control" />. The | ||
50 | ioctls behave identically as when issued on V4L2 device nodes, with the | ||
51 | exception that they deal only with controls implemented in the sub-device. | ||
52 | </para> | ||
53 | |||
54 | <para>Depending on the driver, those controls might also be exposed through | ||
55 | one (or several) V4L2 device nodes.</para> | ||
56 | </section> | ||
57 | |||
58 | <section> | ||
59 | <title>Events</title> | ||
60 | <para>V4L2 sub-devices can notify applications of events as described in | ||
61 | <xref linkend="event" />. The API behaves identically as when used on V4L2 | ||
62 | device nodes, with the exception that it only deals with events generated by | ||
63 | the sub-device. Depending on the driver, those events might also be reported | ||
64 | on one (or several) V4L2 device nodes.</para> | ||
65 | </section> | ||
66 | |||
67 | <section id="pad-level-formats"> | ||
68 | <title>Pad-level Formats</title> | ||
69 | |||
70 | <warning>Pad-level formats are only applicable to very complex device that | ||
71 | need to expose low-level format configuration to user space. Generic V4L2 | ||
72 | applications do <emphasis>not</emphasis> need to use the API described in | ||
73 | this section.</warning> | ||
74 | |||
75 | <note>For the purpose of this section, the term | ||
76 | <wordasword>format</wordasword> means the combination of media bus data | ||
77 | format, frame width and frame height.</note> | ||
78 | |||
79 | <para>Image formats are typically negotiated on video capture and output | ||
80 | devices using the <link linkend="crop">cropping and scaling</link> ioctls. | ||
81 | The driver is responsible for configuring every block in the video pipeline | ||
82 | according to the requested format at the pipeline input and/or | ||
83 | output.</para> | ||
84 | |||
85 | <para>For complex devices, such as often found in embedded systems, | ||
86 | identical image sizes at the output of a pipeline can be achieved using | ||
87 | different hardware configurations. One such exemple is shown on | ||
88 | <xref linkend="pipeline-scaling" xrefstyle="template: Figure %n" />, where | ||
89 | image scaling can be performed on both the video sensor and the host image | ||
90 | processing hardware.</para> | ||
91 | |||
92 | <figure id="pipeline-scaling"> | ||
93 | <title>Image Format Negotation on Pipelines</title> | ||
94 | <mediaobject> | ||
95 | <imageobject> | ||
96 | <imagedata fileref="pipeline.pdf" format="PS" /> | ||
97 | </imageobject> | ||
98 | <imageobject> | ||
99 | <imagedata fileref="pipeline.png" format="PNG" /> | ||
100 | </imageobject> | ||
101 | <textobject> | ||
102 | <phrase>High quality and high speed pipeline configuration</phrase> | ||
103 | </textobject> | ||
104 | </mediaobject> | ||
105 | </figure> | ||
106 | |||
107 | <para>The sensor scaler is usually of less quality than the host scaler, but | ||
108 | scaling on the sensor is required to achieve higher frame rates. Depending | ||
109 | on the use case (quality vs. speed), the pipeline must be configured | ||
110 | differently. Applications need to configure the formats at every point in | ||
111 | the pipeline explicitly.</para> | ||
112 | |||
113 | <para>Drivers that implement the <link linkend="media-controller-intro">media | ||
114 | API</link> can expose pad-level image format configuration to applications. | ||
115 | When they do, applications can use the &VIDIOC-SUBDEV-G-FMT; and | ||
116 | &VIDIOC-SUBDEV-S-FMT; ioctls. to negotiate formats on a per-pad basis.</para> | ||
117 | |||
118 | <para>Applications are responsible for configuring coherent parameters on | ||
119 | the whole pipeline and making sure that connected pads have compatible | ||
120 | formats. The pipeline is checked for formats mismatch at &VIDIOC-STREAMON; | ||
121 | time, and an &EPIPE; is then returned if the configuration is | ||
122 | invalid.</para> | ||
123 | |||
124 | <para>Pad-level image format configuration support can be tested by calling | ||
125 | the &VIDIOC-SUBDEV-G-FMT; ioctl on pad 0. If the driver returns an &EINVAL; | ||
126 | pad-level format configuration is not supported by the sub-device.</para> | ||
127 | |||
128 | <section> | ||
129 | <title>Format Negotiation</title> | ||
130 | |||
131 | <para>Acceptable formats on pads can (and usually do) depend on a number | ||
132 | of external parameters, such as formats on other pads, active links, or | ||
133 | even controls. Finding a combination of formats on all pads in a video | ||
134 | pipeline, acceptable to both application and driver, can't rely on formats | ||
135 | enumeration only. A format negotiation mechanism is required.</para> | ||
136 | |||
137 | <para>Central to the format negotiation mechanism are the get/set format | ||
138 | operations. When called with the <structfield>which</structfield> argument | ||
139 | set to <constant>V4L2_SUBDEV_FORMAT_TRY</constant>, the | ||
140 | &VIDIOC-SUBDEV-G-FMT; and &VIDIOC-SUBDEV-S-FMT; ioctls operate on a set of | ||
141 | formats parameters that are not connected to the hardware configuration. | ||
142 | Modifying those 'try' formats leaves the device state untouched (this | ||
143 | applies to both the software state stored in the driver and the hardware | ||
144 | state stored in the device itself).</para> | ||
145 | |||
146 | <para>While not kept as part of the device state, try formats are stored | ||
147 | in the sub-device file handles. A &VIDIOC-SUBDEV-G-FMT; call will return | ||
148 | the last try format set <emphasis>on the same sub-device file | ||
149 | handle</emphasis>. Several applications querying the same sub-device at | ||
150 | the same time will thus not interact with each other.</para> | ||
151 | |||
152 | <para>To find out whether a particular format is supported by the device, | ||
153 | applications use the &VIDIOC-SUBDEV-S-FMT; ioctl. Drivers verify and, if | ||
154 | needed, change the requested <structfield>format</structfield> based on | ||
155 | device requirements and return the possibly modified value. Applications | ||
156 | can then choose to try a different format or accept the returned value and | ||
157 | continue.</para> | ||
158 | |||
159 | <para>Formats returned by the driver during a negotiation iteration are | ||
160 | guaranteed to be supported by the device. In particular, drivers guarantee | ||
161 | that a returned format will not be further changed if passed to an | ||
162 | &VIDIOC-SUBDEV-S-FMT; call as-is (as long as external parameters, such as | ||
163 | formats on other pads or links' configuration are not changed).</para> | ||
164 | |||
165 | <para>Drivers automatically propagate formats inside sub-devices. When a | ||
166 | try or active format is set on a pad, corresponding formats on other pads | ||
167 | of the same sub-device can be modified by the driver. Drivers are free to | ||
168 | modify formats as required by the device. However, they should comply with | ||
169 | the following rules when possible: | ||
170 | <itemizedlist> | ||
171 | <listitem>Formats should be propagated from sink pads to source pads. | ||
172 | Modifying a format on a source pad should not modify the format on any | ||
173 | sink pad.</listitem> | ||
174 | <listitem>Sub-devices that scale frames using variable scaling factors | ||
175 | should reset the scale factors to default values when sink pads formats | ||
176 | are modified. If the 1:1 scaling ratio is supported, this means that | ||
177 | source pads formats should be reset to the sink pads formats.</listitem> | ||
178 | </itemizedlist> | ||
179 | </para> | ||
180 | |||
181 | <para>Formats are not propagated across links, as that would involve | ||
182 | propagating them from one sub-device file handle to another. Applications | ||
183 | must then take care to configure both ends of every link explicitly with | ||
184 | compatible formats. Identical formats on the two ends of a link are | ||
185 | guaranteed to be compatible. Drivers are free to accept different formats | ||
186 | matching device requirements as being compatible.</para> | ||
187 | |||
188 | <para><xref linkend="sample-pipeline-config" xrefstyle="template:Table %n"/> | ||
189 | shows a sample configuration sequence for the pipeline described in | ||
190 | <xref linkend="pipeline-scaling" xrefstyle="template:Figure %n"/> (table | ||
191 | columns list entity names and pad numbers).</para> | ||
192 | |||
193 | <table pgwide="0" frame="none" id="sample-pipeline-config"> | ||
194 | <title>Sample Pipeline Configuration</title> | ||
195 | <tgroup cols="3"> | ||
196 | <colspec colname="what"/> | ||
197 | <colspec colname="sensor-0" /> | ||
198 | <colspec colname="frontend-0" /> | ||
199 | <colspec colname="frontend-1" /> | ||
200 | <colspec colname="scaler-0" /> | ||
201 | <colspec colname="scaler-1" /> | ||
202 | <thead> | ||
203 | <row> | ||
204 | <entry></entry> | ||
205 | <entry>Sensor/0</entry> | ||
206 | <entry>Frontend/0</entry> | ||
207 | <entry>Frontend/1</entry> | ||
208 | <entry>Scaler/0</entry> | ||
209 | <entry>Scaler/1</entry> | ||
210 | </row> | ||
211 | </thead> | ||
212 | <tbody valign="top"> | ||
213 | <row> | ||
214 | <entry>Initial state</entry> | ||
215 | <entry>2048x1536</entry> | ||
216 | <entry>-</entry> | ||
217 | <entry>-</entry> | ||
218 | <entry>-</entry> | ||
219 | <entry>-</entry> | ||
220 | </row> | ||
221 | <row> | ||
222 | <entry>Configure frontend input</entry> | ||
223 | <entry>2048x1536</entry> | ||
224 | <entry><emphasis>2048x1536</emphasis></entry> | ||
225 | <entry><emphasis>2046x1534</emphasis></entry> | ||
226 | <entry>-</entry> | ||
227 | <entry>-</entry> | ||
228 | </row> | ||
229 | <row> | ||
230 | <entry>Configure scaler input</entry> | ||
231 | <entry>2048x1536</entry> | ||
232 | <entry>2048x1536</entry> | ||
233 | <entry>2046x1534</entry> | ||
234 | <entry><emphasis>2046x1534</emphasis></entry> | ||
235 | <entry><emphasis>2046x1534</emphasis></entry> | ||
236 | </row> | ||
237 | <row> | ||
238 | <entry>Configure scaler output</entry> | ||
239 | <entry>2048x1536</entry> | ||
240 | <entry>2048x1536</entry> | ||
241 | <entry>2046x1534</entry> | ||
242 | <entry>2046x1534</entry> | ||
243 | <entry><emphasis>1280x960</emphasis></entry> | ||
244 | </row> | ||
245 | </tbody> | ||
246 | </tgroup> | ||
247 | </table> | ||
248 | |||
249 | <para> | ||
250 | <orderedlist> | ||
251 | <listitem>Initial state. The sensor output is set to its native 3MP | ||
252 | resolution. Resolutions on the host frontend and scaler input and output | ||
253 | pads are undefined.</listitem> | ||
254 | <listitem>The application configures the frontend input pad resolution to | ||
255 | 2048x1536. The driver propagates the format to the frontend output pad. | ||
256 | Note that the propagated output format can be different, as in this case, | ||
257 | than the input format, as the hardware might need to crop pixels (for | ||
258 | instance when converting a Bayer filter pattern to RGB or YUV).</listitem> | ||
259 | <listitem>The application configures the scaler input pad resolution to | ||
260 | 2046x1534 to match the frontend output resolution. The driver propagates | ||
261 | the format to the scaler output pad.</listitem> | ||
262 | <listitem>The application configures the scaler output pad resolution to | ||
263 | 1280x960.</listitem> | ||
264 | </orderedlist> | ||
265 | </para> | ||
266 | |||
267 | <para>When satisfied with the try results, applications can set the active | ||
268 | formats by setting the <structfield>which</structfield> argument to | ||
269 | <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. Active formats are changed | ||
270 | exactly as try formats by drivers. To avoid modifying the hardware state | ||
271 | during format negotiation, applications should negotiate try formats first | ||
272 | and then modify the active settings using the try formats returned during | ||
273 | the last negotiation iteration. This guarantees that the active format | ||
274 | will be applied as-is by the driver without being modified. | ||
275 | </para> | ||
276 | </section> | ||
277 | |||
278 | </section> | ||
279 | |||
280 | &sub-subdev-formats; | ||
diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/v4l/subdev-formats.xml new file mode 100644 index 000000000000..0cae57207006 --- /dev/null +++ b/Documentation/DocBook/v4l/subdev-formats.xml | |||
@@ -0,0 +1,2416 @@ | |||
1 | <section id="v4l2-mbus-format"> | ||
2 | <title>Media Bus Formats</title> | ||
3 | |||
4 | <table pgwide="1" frame="none" id="v4l2-mbus-framefmt"> | ||
5 | <title>struct <structname>v4l2_mbus_framefmt</structname></title> | ||
6 | <tgroup cols="3"> | ||
7 | &cs-str; | ||
8 | <tbody valign="top"> | ||
9 | <row> | ||
10 | <entry>__u32</entry> | ||
11 | <entry><structfield>width</structfield></entry> | ||
12 | <entry>Image width, in pixels.</entry> | ||
13 | </row> | ||
14 | <row> | ||
15 | <entry>__u32</entry> | ||
16 | <entry><structfield>height</structfield></entry> | ||
17 | <entry>Image height, in pixels.</entry> | ||
18 | </row> | ||
19 | <row> | ||
20 | <entry>__u32</entry> | ||
21 | <entry><structfield>code</structfield></entry> | ||
22 | <entry>Format code, from &v4l2-mbus-pixelcode;.</entry> | ||
23 | </row> | ||
24 | <row> | ||
25 | <entry>__u32</entry> | ||
26 | <entry><structfield>field</structfield></entry> | ||
27 | <entry>Field order, from &v4l2-field;. See | ||
28 | <xref linkend="field-order" /> for details.</entry> | ||
29 | </row> | ||
30 | <row> | ||
31 | <entry>__u32</entry> | ||
32 | <entry><structfield>colorspace</structfield></entry> | ||
33 | <entry>Image colorspace, from &v4l2-colorspace;. See | ||
34 | <xref linkend="colorspaces" /> for details.</entry> | ||
35 | </row> | ||
36 | <row> | ||
37 | <entry>__u32</entry> | ||
38 | <entry><structfield>reserved</structfield>[7]</entry> | ||
39 | <entry>Reserved for future extensions. Applications and drivers must | ||
40 | set the array to zero.</entry> | ||
41 | </row> | ||
42 | </tbody> | ||
43 | </tgroup> | ||
44 | </table> | ||
45 | |||
46 | <section id="v4l2-mbus-pixelcode"> | ||
47 | <title>Media Bus Pixel Codes</title> | ||
48 | |||
49 | <para>The media bus pixel codes describe image formats as flowing over | ||
50 | physical busses (both between separate physical components and inside SoC | ||
51 | devices). This should not be confused with the V4L2 pixel formats that | ||
52 | describe, using four character codes, image formats as stored in memory. | ||
53 | </para> | ||
54 | |||
55 | <para>While there is a relationship between image formats on busses and | ||
56 | image formats in memory (a raw Bayer image won't be magically converted to | ||
57 | JPEG just by storing it to memory), there is no one-to-one correspondance | ||
58 | between them.</para> | ||
59 | |||
60 | <section> | ||
61 | <title>Packed RGB Formats</title> | ||
62 | |||
63 | <para>Those formats transfer pixel data as red, green and blue components. | ||
64 | The format code is made of the following information. | ||
65 | <itemizedlist> | ||
66 | <listitem>The red, green and blue components order code, as encoded in a | ||
67 | pixel sample. Possible values are RGB and BGR.</listitem> | ||
68 | <listitem>The number of bits per component, for each component. The values | ||
69 | can be different for all components. Common values are 555 and 565. | ||
70 | </listitem> | ||
71 | <listitem>The number of bus samples per pixel. Pixels that are wider than | ||
72 | the bus width must be transferred in multiple samples. Common values are | ||
73 | 1 and 2.</listitem> | ||
74 | <listitem>The bus width.</listitem> | ||
75 | <listitem>For formats where the total number of bits per pixel is smaller | ||
76 | than the number of bus samples per pixel times the bus width, a padding | ||
77 | value stating if the bytes are padded in their most high order bits | ||
78 | (PADHI) or low order bits (PADLO).</listitem> | ||
79 | <listitem>For formats where the number of bus samples per pixel is larger | ||
80 | than 1, an endianness value stating if the pixel is transferred MSB first | ||
81 | (BE) or LSB first (LE).</listitem> | ||
82 | </itemizedlist> | ||
83 | </para> | ||
84 | |||
85 | <para>For instance, a format where pixels are encoded as 5-bits red, 5-bits | ||
86 | green and 5-bit blue values padded on the high bit, transferred as 2 8-bit | ||
87 | samples per pixel with the most significant bits (padding, red and half of | ||
88 | the green value) transferred first will be named | ||
89 | <constant>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</constant>. | ||
90 | </para> | ||
91 | |||
92 | <para>The following tables list existing packet RGB formats.</para> | ||
93 | |||
94 | <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb"> | ||
95 | <title>RGB formats</title> | ||
96 | <tgroup cols="11"> | ||
97 | <colspec colname="id" align="left" /> | ||
98 | <colspec colname="code" align="center"/> | ||
99 | <colspec colname="bit" /> | ||
100 | <colspec colnum="4" colname="b07" align="center" /> | ||
101 | <colspec colnum="5" colname="b06" align="center" /> | ||
102 | <colspec colnum="6" colname="b05" align="center" /> | ||
103 | <colspec colnum="7" colname="b04" align="center" /> | ||
104 | <colspec colnum="8" colname="b03" align="center" /> | ||
105 | <colspec colnum="9" colname="b02" align="center" /> | ||
106 | <colspec colnum="10" colname="b01" align="center" /> | ||
107 | <colspec colnum="11" colname="b00" align="center" /> | ||
108 | <spanspec namest="b07" nameend="b00" spanname="b0" /> | ||
109 | <thead> | ||
110 | <row> | ||
111 | <entry>Identifier</entry> | ||
112 | <entry>Code</entry> | ||
113 | <entry></entry> | ||
114 | <entry spanname="b0">Data organization</entry> | ||
115 | </row> | ||
116 | <row> | ||
117 | <entry></entry> | ||
118 | <entry></entry> | ||
119 | <entry>Bit</entry> | ||
120 | <entry>7</entry> | ||
121 | <entry>6</entry> | ||
122 | <entry>5</entry> | ||
123 | <entry>4</entry> | ||
124 | <entry>3</entry> | ||
125 | <entry>2</entry> | ||
126 | <entry>1</entry> | ||
127 | <entry>0</entry> | ||
128 | </row> | ||
129 | </thead> | ||
130 | <tbody valign="top"> | ||
131 | <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-BE"> | ||
132 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> | ||
133 | <entry>0x1001</entry> | ||
134 | <entry></entry> | ||
135 | <entry>0</entry> | ||
136 | <entry>0</entry> | ||
137 | <entry>0</entry> | ||
138 | <entry>0</entry> | ||
139 | <entry>r<subscript>3</subscript></entry> | ||
140 | <entry>r<subscript>2</subscript></entry> | ||
141 | <entry>r<subscript>1</subscript></entry> | ||
142 | <entry>r<subscript>0</subscript></entry> | ||
143 | </row> | ||
144 | <row> | ||
145 | <entry></entry> | ||
146 | <entry></entry> | ||
147 | <entry></entry> | ||
148 | <entry>g<subscript>3</subscript></entry> | ||
149 | <entry>g<subscript>2</subscript></entry> | ||
150 | <entry>g<subscript>1</subscript></entry> | ||
151 | <entry>g<subscript>0</subscript></entry> | ||
152 | <entry>b<subscript>3</subscript></entry> | ||
153 | <entry>b<subscript>2</subscript></entry> | ||
154 | <entry>b<subscript>1</subscript></entry> | ||
155 | <entry>b<subscript>0</subscript></entry> | ||
156 | </row> | ||
157 | <row id="V4L2-MBUS-FMT-RGB444-2X8-PADHI-LE"> | ||
158 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> | ||
159 | <entry>0x1002</entry> | ||
160 | <entry></entry> | ||
161 | <entry>g<subscript>3</subscript></entry> | ||
162 | <entry>g<subscript>2</subscript></entry> | ||
163 | <entry>g<subscript>1</subscript></entry> | ||
164 | <entry>g<subscript>0</subscript></entry> | ||
165 | <entry>b<subscript>3</subscript></entry> | ||
166 | <entry>b<subscript>2</subscript></entry> | ||
167 | <entry>b<subscript>1</subscript></entry> | ||
168 | <entry>b<subscript>0</subscript></entry> | ||
169 | </row> | ||
170 | <row> | ||
171 | <entry></entry> | ||
172 | <entry></entry> | ||
173 | <entry></entry> | ||
174 | <entry>0</entry> | ||
175 | <entry>0</entry> | ||
176 | <entry>0</entry> | ||
177 | <entry>0</entry> | ||
178 | <entry>r<subscript>3</subscript></entry> | ||
179 | <entry>r<subscript>2</subscript></entry> | ||
180 | <entry>r<subscript>1</subscript></entry> | ||
181 | <entry>r<subscript>0</subscript></entry> | ||
182 | </row> | ||
183 | <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-BE"> | ||
184 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> | ||
185 | <entry>0x1003</entry> | ||
186 | <entry></entry> | ||
187 | <entry>0</entry> | ||
188 | <entry>r<subscript>4</subscript></entry> | ||
189 | <entry>r<subscript>3</subscript></entry> | ||
190 | <entry>r<subscript>2</subscript></entry> | ||
191 | <entry>r<subscript>1</subscript></entry> | ||
192 | <entry>r<subscript>0</subscript></entry> | ||
193 | <entry>g<subscript>4</subscript></entry> | ||
194 | <entry>g<subscript>3</subscript></entry> | ||
195 | </row> | ||
196 | <row> | ||
197 | <entry></entry> | ||
198 | <entry></entry> | ||
199 | <entry></entry> | ||
200 | <entry>g<subscript>2</subscript></entry> | ||
201 | <entry>g<subscript>1</subscript></entry> | ||
202 | <entry>g<subscript>0</subscript></entry> | ||
203 | <entry>b<subscript>4</subscript></entry> | ||
204 | <entry>b<subscript>3</subscript></entry> | ||
205 | <entry>b<subscript>2</subscript></entry> | ||
206 | <entry>b<subscript>1</subscript></entry> | ||
207 | <entry>b<subscript>0</subscript></entry> | ||
208 | </row> | ||
209 | <row id="V4L2-MBUS-FMT-RGB555-2X8-PADHI-LE"> | ||
210 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> | ||
211 | <entry>0x1004</entry> | ||
212 | <entry></entry> | ||
213 | <entry>g<subscript>2</subscript></entry> | ||
214 | <entry>g<subscript>1</subscript></entry> | ||
215 | <entry>g<subscript>0</subscript></entry> | ||
216 | <entry>b<subscript>4</subscript></entry> | ||
217 | <entry>b<subscript>3</subscript></entry> | ||
218 | <entry>b<subscript>2</subscript></entry> | ||
219 | <entry>b<subscript>1</subscript></entry> | ||
220 | <entry>b<subscript>0</subscript></entry> | ||
221 | </row> | ||
222 | <row> | ||
223 | <entry></entry> | ||
224 | <entry></entry> | ||
225 | <entry></entry> | ||
226 | <entry>0</entry> | ||
227 | <entry>r<subscript>4</subscript></entry> | ||
228 | <entry>r<subscript>3</subscript></entry> | ||
229 | <entry>r<subscript>2</subscript></entry> | ||
230 | <entry>r<subscript>1</subscript></entry> | ||
231 | <entry>r<subscript>0</subscript></entry> | ||
232 | <entry>g<subscript>4</subscript></entry> | ||
233 | <entry>g<subscript>3</subscript></entry> | ||
234 | </row> | ||
235 | <row id="V4L2-MBUS-FMT-BGR565-2X8-BE"> | ||
236 | <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> | ||
237 | <entry>0x1005</entry> | ||
238 | <entry></entry> | ||
239 | <entry>b<subscript>4</subscript></entry> | ||
240 | <entry>b<subscript>3</subscript></entry> | ||
241 | <entry>b<subscript>2</subscript></entry> | ||
242 | <entry>b<subscript>1</subscript></entry> | ||
243 | <entry>b<subscript>0</subscript></entry> | ||
244 | <entry>g<subscript>5</subscript></entry> | ||
245 | <entry>g<subscript>4</subscript></entry> | ||
246 | <entry>g<subscript>3</subscript></entry> | ||
247 | </row> | ||
248 | <row> | ||
249 | <entry></entry> | ||
250 | <entry></entry> | ||
251 | <entry></entry> | ||
252 | <entry>g<subscript>2</subscript></entry> | ||
253 | <entry>g<subscript>1</subscript></entry> | ||
254 | <entry>g<subscript>0</subscript></entry> | ||
255 | <entry>r<subscript>4</subscript></entry> | ||
256 | <entry>r<subscript>3</subscript></entry> | ||
257 | <entry>r<subscript>2</subscript></entry> | ||
258 | <entry>r<subscript>1</subscript></entry> | ||
259 | <entry>r<subscript>0</subscript></entry> | ||
260 | </row> | ||
261 | <row id="V4L2-MBUS-FMT-BGR565-2X8-LE"> | ||
262 | <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> | ||
263 | <entry>0x1006</entry> | ||
264 | <entry></entry> | ||
265 | <entry>g<subscript>2</subscript></entry> | ||
266 | <entry>g<subscript>1</subscript></entry> | ||
267 | <entry>g<subscript>0</subscript></entry> | ||
268 | <entry>r<subscript>4</subscript></entry> | ||
269 | <entry>r<subscript>3</subscript></entry> | ||
270 | <entry>r<subscript>2</subscript></entry> | ||
271 | <entry>r<subscript>1</subscript></entry> | ||
272 | <entry>r<subscript>0</subscript></entry> | ||
273 | </row> | ||
274 | <row> | ||
275 | <entry></entry> | ||
276 | <entry></entry> | ||
277 | <entry></entry> | ||
278 | <entry>b<subscript>4</subscript></entry> | ||
279 | <entry>b<subscript>3</subscript></entry> | ||
280 | <entry>b<subscript>2</subscript></entry> | ||
281 | <entry>b<subscript>1</subscript></entry> | ||
282 | <entry>b<subscript>0</subscript></entry> | ||
283 | <entry>g<subscript>5</subscript></entry> | ||
284 | <entry>g<subscript>4</subscript></entry> | ||
285 | <entry>g<subscript>3</subscript></entry> | ||
286 | </row> | ||
287 | <row id="V4L2-MBUS-FMT-RGB565-2X8-BE"> | ||
288 | <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> | ||
289 | <entry>0x1007</entry> | ||
290 | <entry></entry> | ||
291 | <entry>r<subscript>4</subscript></entry> | ||
292 | <entry>r<subscript>3</subscript></entry> | ||
293 | <entry>r<subscript>2</subscript></entry> | ||
294 | <entry>r<subscript>1</subscript></entry> | ||
295 | <entry>r<subscript>0</subscript></entry> | ||
296 | <entry>g<subscript>5</subscript></entry> | ||
297 | <entry>g<subscript>4</subscript></entry> | ||
298 | <entry>g<subscript>3</subscript></entry> | ||
299 | </row> | ||
300 | <row> | ||
301 | <entry></entry> | ||
302 | <entry></entry> | ||
303 | <entry></entry> | ||
304 | <entry>g<subscript>2</subscript></entry> | ||
305 | <entry>g<subscript>1</subscript></entry> | ||
306 | <entry>g<subscript>0</subscript></entry> | ||
307 | <entry>b<subscript>4</subscript></entry> | ||
308 | <entry>b<subscript>3</subscript></entry> | ||
309 | <entry>b<subscript>2</subscript></entry> | ||
310 | <entry>b<subscript>1</subscript></entry> | ||
311 | <entry>b<subscript>0</subscript></entry> | ||
312 | </row> | ||
313 | <row id="V4L2-MBUS-FMT-RGB565-2X8-LE"> | ||
314 | <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> | ||
315 | <entry>0x1008</entry> | ||
316 | <entry></entry> | ||
317 | <entry>g<subscript>2</subscript></entry> | ||
318 | <entry>g<subscript>1</subscript></entry> | ||
319 | <entry>g<subscript>0</subscript></entry> | ||
320 | <entry>b<subscript>4</subscript></entry> | ||
321 | <entry>b<subscript>3</subscript></entry> | ||
322 | <entry>b<subscript>2</subscript></entry> | ||
323 | <entry>b<subscript>1</subscript></entry> | ||
324 | <entry>b<subscript>0</subscript></entry> | ||
325 | </row> | ||
326 | <row> | ||
327 | <entry></entry> | ||
328 | <entry></entry> | ||
329 | <entry></entry> | ||
330 | <entry>r<subscript>4</subscript></entry> | ||
331 | <entry>r<subscript>3</subscript></entry> | ||
332 | <entry>r<subscript>2</subscript></entry> | ||
333 | <entry>r<subscript>1</subscript></entry> | ||
334 | <entry>r<subscript>0</subscript></entry> | ||
335 | <entry>g<subscript>5</subscript></entry> | ||
336 | <entry>g<subscript>4</subscript></entry> | ||
337 | <entry>g<subscript>3</subscript></entry> | ||
338 | </row> | ||
339 | </tbody> | ||
340 | </tgroup> | ||
341 | </table> | ||
342 | </section> | ||
343 | |||
344 | <section> | ||
345 | <title>Bayer Formats</title> | ||
346 | |||
347 | <para>Those formats transfer pixel data as red, green and blue components. | ||
348 | The format code is made of the following information. | ||
349 | <itemizedlist> | ||
350 | <listitem>The red, green and blue components order code, as encoded in a | ||
351 | pixel sample. The possible values are shown in <xref | ||
352 | linkend="bayer-patterns" />.</listitem> | ||
353 | <listitem>The number of bits per pixel component. All components are | ||
354 | transferred on the same number of bits. Common values are 8, 10 and 12. | ||
355 | </listitem> | ||
356 | <listitem>If the pixel components are DPCM-compressed, a mention of the | ||
357 | DPCM compression and the number of bits per compressed pixel component. | ||
358 | </listitem> | ||
359 | <listitem>The number of bus samples per pixel. Pixels that are wider than | ||
360 | the bus width must be transferred in multiple samples. Common values are | ||
361 | 1 and 2.</listitem> | ||
362 | <listitem>The bus width.</listitem> | ||
363 | <listitem>For formats where the total number of bits per pixel is smaller | ||
364 | than the number of bus samples per pixel times the bus width, a padding | ||
365 | value stating if the bytes are padded in their most high order bits | ||
366 | (PADHI) or low order bits (PADLO).</listitem> | ||
367 | <listitem>For formats where the number of bus samples per pixel is larger | ||
368 | than 1, an endianness value stating if the pixel is transferred MSB first | ||
369 | (BE) or LSB first (LE).</listitem> | ||
370 | </itemizedlist> | ||
371 | </para> | ||
372 | |||
373 | <para>For instance, a format with uncompressed 10-bit Bayer components | ||
374 | arranged in a red, green, green, blue pattern transferred as 2 8-bit | ||
375 | samples per pixel with the least significant bits transferred first will | ||
376 | be named <constant>V4L2_MBUS_FMT_SRGGB10_2X8_PADHI_LE</constant>. | ||
377 | </para> | ||
378 | |||
379 | <figure id="bayer-patterns"> | ||
380 | <title>Bayer Patterns</title> | ||
381 | <mediaobject> | ||
382 | <imageobject> | ||
383 | <imagedata fileref="bayer.pdf" format="PS" /> | ||
384 | </imageobject> | ||
385 | <imageobject> | ||
386 | <imagedata fileref="bayer.png" format="PNG" /> | ||
387 | </imageobject> | ||
388 | <textobject> | ||
389 | <phrase>Bayer filter color patterns</phrase> | ||
390 | </textobject> | ||
391 | </mediaobject> | ||
392 | </figure> | ||
393 | |||
394 | <para>The following table lists existing packet Bayer formats. The data | ||
395 | organization is given as an example for the first pixel only.</para> | ||
396 | |||
397 | <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-bayer"> | ||
398 | <title>Bayer Formats</title> | ||
399 | <tgroup cols="15"> | ||
400 | <colspec colname="id" align="left" /> | ||
401 | <colspec colname="code" align="center"/> | ||
402 | <colspec colname="bit" /> | ||
403 | <colspec colnum="4" colname="b11" align="center" /> | ||
404 | <colspec colnum="5" colname="b10" align="center" /> | ||
405 | <colspec colnum="6" colname="b09" align="center" /> | ||
406 | <colspec colnum="7" colname="b08" align="center" /> | ||
407 | <colspec colnum="8" colname="b07" align="center" /> | ||
408 | <colspec colnum="9" colname="b06" align="center" /> | ||
409 | <colspec colnum="10" colname="b05" align="center" /> | ||
410 | <colspec colnum="11" colname="b04" align="center" /> | ||
411 | <colspec colnum="12" colname="b03" align="center" /> | ||
412 | <colspec colnum="13" colname="b02" align="center" /> | ||
413 | <colspec colnum="14" colname="b01" align="center" /> | ||
414 | <colspec colnum="15" colname="b00" align="center" /> | ||
415 | <spanspec namest="b11" nameend="b00" spanname="b0" /> | ||
416 | <thead> | ||
417 | <row> | ||
418 | <entry>Identifier</entry> | ||
419 | <entry>Code</entry> | ||
420 | <entry></entry> | ||
421 | <entry spanname="b0">Data organization</entry> | ||
422 | </row> | ||
423 | <row> | ||
424 | <entry></entry> | ||
425 | <entry></entry> | ||
426 | <entry>Bit</entry> | ||
427 | <entry>11</entry> | ||
428 | <entry>10</entry> | ||
429 | <entry>9</entry> | ||
430 | <entry>8</entry> | ||
431 | <entry>7</entry> | ||
432 | <entry>6</entry> | ||
433 | <entry>5</entry> | ||
434 | <entry>4</entry> | ||
435 | <entry>3</entry> | ||
436 | <entry>2</entry> | ||
437 | <entry>1</entry> | ||
438 | <entry>0</entry> | ||
439 | </row> | ||
440 | </thead> | ||
441 | <tbody valign="top"> | ||
442 | <row id="V4L2-MBUS-FMT-SBGGR8-1X8"> | ||
443 | <entry>V4L2_MBUS_FMT_SBGGR8_1X8</entry> | ||
444 | <entry>0x3001</entry> | ||
445 | <entry></entry> | ||
446 | <entry>-</entry> | ||
447 | <entry>-</entry> | ||
448 | <entry>-</entry> | ||
449 | <entry>-</entry> | ||
450 | <entry>b<subscript>7</subscript></entry> | ||
451 | <entry>b<subscript>6</subscript></entry> | ||
452 | <entry>b<subscript>5</subscript></entry> | ||
453 | <entry>b<subscript>4</subscript></entry> | ||
454 | <entry>b<subscript>3</subscript></entry> | ||
455 | <entry>b<subscript>2</subscript></entry> | ||
456 | <entry>b<subscript>1</subscript></entry> | ||
457 | <entry>b<subscript>0</subscript></entry> | ||
458 | </row> | ||
459 | <row id="V4L2-MBUS-FMT-SGRBG8-1X8"> | ||
460 | <entry>V4L2_MBUS_FMT_SGRBG8_1X8</entry> | ||
461 | <entry>0x3002</entry> | ||
462 | <entry></entry> | ||
463 | <entry>-</entry> | ||
464 | <entry>-</entry> | ||
465 | <entry>-</entry> | ||
466 | <entry>-</entry> | ||
467 | <entry>g<subscript>7</subscript></entry> | ||
468 | <entry>g<subscript>6</subscript></entry> | ||
469 | <entry>g<subscript>5</subscript></entry> | ||
470 | <entry>g<subscript>4</subscript></entry> | ||
471 | <entry>g<subscript>3</subscript></entry> | ||
472 | <entry>g<subscript>2</subscript></entry> | ||
473 | <entry>g<subscript>1</subscript></entry> | ||
474 | <entry>g<subscript>0</subscript></entry> | ||
475 | </row> | ||
476 | <row id="V4L2-MBUS-FMT-SBGGR10-DPCM8-1X8"> | ||
477 | <entry>V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8</entry> | ||
478 | <entry>0x300b</entry> | ||
479 | <entry></entry> | ||
480 | <entry>-</entry> | ||
481 | <entry>-</entry> | ||
482 | <entry>-</entry> | ||
483 | <entry>-</entry> | ||
484 | <entry>b<subscript>7</subscript></entry> | ||
485 | <entry>b<subscript>6</subscript></entry> | ||
486 | <entry>b<subscript>5</subscript></entry> | ||
487 | <entry>b<subscript>4</subscript></entry> | ||
488 | <entry>b<subscript>3</subscript></entry> | ||
489 | <entry>b<subscript>2</subscript></entry> | ||
490 | <entry>b<subscript>1</subscript></entry> | ||
491 | <entry>b<subscript>0</subscript></entry> | ||
492 | </row> | ||
493 | <row id="V4L2-MBUS-FMT-SGBRG10-DPCM8-1X8"> | ||
494 | <entry>V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8</entry> | ||
495 | <entry>0x300c</entry> | ||
496 | <entry></entry> | ||
497 | <entry>-</entry> | ||
498 | <entry>-</entry> | ||
499 | <entry>-</entry> | ||
500 | <entry>-</entry> | ||
501 | <entry>g<subscript>7</subscript></entry> | ||
502 | <entry>g<subscript>6</subscript></entry> | ||
503 | <entry>g<subscript>5</subscript></entry> | ||
504 | <entry>g<subscript>4</subscript></entry> | ||
505 | <entry>g<subscript>3</subscript></entry> | ||
506 | <entry>g<subscript>2</subscript></entry> | ||
507 | <entry>g<subscript>1</subscript></entry> | ||
508 | <entry>g<subscript>0</subscript></entry> | ||
509 | </row> | ||
510 | <row id="V4L2-MBUS-FMT-SGRBG10-DPCM8-1X8"> | ||
511 | <entry>V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8</entry> | ||
512 | <entry>0x3009</entry> | ||
513 | <entry></entry> | ||
514 | <entry>-</entry> | ||
515 | <entry>-</entry> | ||
516 | <entry>-</entry> | ||
517 | <entry>-</entry> | ||
518 | <entry>g<subscript>7</subscript></entry> | ||
519 | <entry>g<subscript>6</subscript></entry> | ||
520 | <entry>g<subscript>5</subscript></entry> | ||
521 | <entry>g<subscript>4</subscript></entry> | ||
522 | <entry>g<subscript>3</subscript></entry> | ||
523 | <entry>g<subscript>2</subscript></entry> | ||
524 | <entry>g<subscript>1</subscript></entry> | ||
525 | <entry>g<subscript>0</subscript></entry> | ||
526 | </row> | ||
527 | <row id="V4L2-MBUS-FMT-SRGGB10-DPCM8-1X8"> | ||
528 | <entry>V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8</entry> | ||
529 | <entry>0x300d</entry> | ||
530 | <entry></entry> | ||
531 | <entry>-</entry> | ||
532 | <entry>-</entry> | ||
533 | <entry>-</entry> | ||
534 | <entry>-</entry> | ||
535 | <entry>r<subscript>7</subscript></entry> | ||
536 | <entry>r<subscript>6</subscript></entry> | ||
537 | <entry>r<subscript>5</subscript></entry> | ||
538 | <entry>r<subscript>4</subscript></entry> | ||
539 | <entry>r<subscript>3</subscript></entry> | ||
540 | <entry>r<subscript>2</subscript></entry> | ||
541 | <entry>r<subscript>1</subscript></entry> | ||
542 | <entry>r<subscript>0</subscript></entry> | ||
543 | </row> | ||
544 | <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-BE"> | ||
545 | <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE</entry> | ||
546 | <entry>0x3003</entry> | ||
547 | <entry></entry> | ||
548 | <entry>-</entry> | ||
549 | <entry>-</entry> | ||
550 | <entry>-</entry> | ||
551 | <entry>-</entry> | ||
552 | <entry>0</entry> | ||
553 | <entry>0</entry> | ||
554 | <entry>0</entry> | ||
555 | <entry>0</entry> | ||
556 | <entry>0</entry> | ||
557 | <entry>0</entry> | ||
558 | <entry>b<subscript>9</subscript></entry> | ||
559 | <entry>b<subscript>8</subscript></entry> | ||
560 | </row> | ||
561 | <row> | ||
562 | <entry></entry> | ||
563 | <entry></entry> | ||
564 | <entry></entry> | ||
565 | <entry>-</entry> | ||
566 | <entry>-</entry> | ||
567 | <entry>-</entry> | ||
568 | <entry>-</entry> | ||
569 | <entry>b<subscript>7</subscript></entry> | ||
570 | <entry>b<subscript>6</subscript></entry> | ||
571 | <entry>b<subscript>5</subscript></entry> | ||
572 | <entry>b<subscript>4</subscript></entry> | ||
573 | <entry>b<subscript>3</subscript></entry> | ||
574 | <entry>b<subscript>2</subscript></entry> | ||
575 | <entry>b<subscript>1</subscript></entry> | ||
576 | <entry>b<subscript>0</subscript></entry> | ||
577 | </row> | ||
578 | <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADHI-LE"> | ||
579 | <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE</entry> | ||
580 | <entry>0x3004</entry> | ||
581 | <entry></entry> | ||
582 | <entry>-</entry> | ||
583 | <entry>-</entry> | ||
584 | <entry>-</entry> | ||
585 | <entry>-</entry> | ||
586 | <entry>b<subscript>7</subscript></entry> | ||
587 | <entry>b<subscript>6</subscript></entry> | ||
588 | <entry>b<subscript>5</subscript></entry> | ||
589 | <entry>b<subscript>4</subscript></entry> | ||
590 | <entry>b<subscript>3</subscript></entry> | ||
591 | <entry>b<subscript>2</subscript></entry> | ||
592 | <entry>b<subscript>1</subscript></entry> | ||
593 | <entry>b<subscript>0</subscript></entry> | ||
594 | </row> | ||
595 | <row> | ||
596 | <entry></entry> | ||
597 | <entry></entry> | ||
598 | <entry></entry> | ||
599 | <entry>-</entry> | ||
600 | <entry>-</entry> | ||
601 | <entry>-</entry> | ||
602 | <entry>-</entry> | ||
603 | <entry>0</entry> | ||
604 | <entry>0</entry> | ||
605 | <entry>0</entry> | ||
606 | <entry>0</entry> | ||
607 | <entry>0</entry> | ||
608 | <entry>0</entry> | ||
609 | <entry>b<subscript>9</subscript></entry> | ||
610 | <entry>b<subscript>8</subscript></entry> | ||
611 | </row> | ||
612 | <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-BE"> | ||
613 | <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE</entry> | ||
614 | <entry>0x3005</entry> | ||
615 | <entry></entry> | ||
616 | <entry>-</entry> | ||
617 | <entry>-</entry> | ||
618 | <entry>-</entry> | ||
619 | <entry>-</entry> | ||
620 | <entry>b<subscript>9</subscript></entry> | ||
621 | <entry>b<subscript>8</subscript></entry> | ||
622 | <entry>b<subscript>7</subscript></entry> | ||
623 | <entry>b<subscript>6</subscript></entry> | ||
624 | <entry>b<subscript>5</subscript></entry> | ||
625 | <entry>b<subscript>4</subscript></entry> | ||
626 | <entry>b<subscript>3</subscript></entry> | ||
627 | <entry>b<subscript>2</subscript></entry> | ||
628 | </row> | ||
629 | <row> | ||
630 | <entry></entry> | ||
631 | <entry></entry> | ||
632 | <entry></entry> | ||
633 | <entry>-</entry> | ||
634 | <entry>-</entry> | ||
635 | <entry>-</entry> | ||
636 | <entry>-</entry> | ||
637 | <entry>b<subscript>1</subscript></entry> | ||
638 | <entry>b<subscript>0</subscript></entry> | ||
639 | <entry>0</entry> | ||
640 | <entry>0</entry> | ||
641 | <entry>0</entry> | ||
642 | <entry>0</entry> | ||
643 | <entry>0</entry> | ||
644 | <entry>0</entry> | ||
645 | </row> | ||
646 | <row id="V4L2-MBUS-FMT-SBGGR10-2X8-PADLO-LE"> | ||
647 | <entry>V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE</entry> | ||
648 | <entry>0x3006</entry> | ||
649 | <entry></entry> | ||
650 | <entry>-</entry> | ||
651 | <entry>-</entry> | ||
652 | <entry>-</entry> | ||
653 | <entry>-</entry> | ||
654 | <entry>b<subscript>1</subscript></entry> | ||
655 | <entry>b<subscript>0</subscript></entry> | ||
656 | <entry>0</entry> | ||
657 | <entry>0</entry> | ||
658 | <entry>0</entry> | ||
659 | <entry>0</entry> | ||
660 | <entry>0</entry> | ||
661 | <entry>0</entry> | ||
662 | </row> | ||
663 | <row> | ||
664 | <entry></entry> | ||
665 | <entry></entry> | ||
666 | <entry></entry> | ||
667 | <entry>-</entry> | ||
668 | <entry>-</entry> | ||
669 | <entry>-</entry> | ||
670 | <entry>-</entry> | ||
671 | <entry>b<subscript>9</subscript></entry> | ||
672 | <entry>b<subscript>8</subscript></entry> | ||
673 | <entry>b<subscript>7</subscript></entry> | ||
674 | <entry>b<subscript>6</subscript></entry> | ||
675 | <entry>b<subscript>5</subscript></entry> | ||
676 | <entry>b<subscript>4</subscript></entry> | ||
677 | <entry>b<subscript>3</subscript></entry> | ||
678 | <entry>b<subscript>2</subscript></entry> | ||
679 | </row> | ||
680 | <row id="V4L2-MBUS-FMT-SBGGR10-1X10"> | ||
681 | <entry>V4L2_MBUS_FMT_SBGGR10_1X10</entry> | ||
682 | <entry>0x3007</entry> | ||
683 | <entry></entry> | ||
684 | <entry>-</entry> | ||
685 | <entry>-</entry> | ||
686 | <entry>b<subscript>9</subscript></entry> | ||
687 | <entry>b<subscript>8</subscript></entry> | ||
688 | <entry>b<subscript>7</subscript></entry> | ||
689 | <entry>b<subscript>6</subscript></entry> | ||
690 | <entry>b<subscript>5</subscript></entry> | ||
691 | <entry>b<subscript>4</subscript></entry> | ||
692 | <entry>b<subscript>3</subscript></entry> | ||
693 | <entry>b<subscript>2</subscript></entry> | ||
694 | <entry>b<subscript>1</subscript></entry> | ||
695 | <entry>b<subscript>0</subscript></entry> | ||
696 | </row> | ||
697 | <row id="V4L2-MBUS-FMT-SGBRG10-1X10"> | ||
698 | <entry>V4L2_MBUS_FMT_SGBRG10_1X10</entry> | ||
699 | <entry>0x300e</entry> | ||
700 | <entry></entry> | ||
701 | <entry>-</entry> | ||
702 | <entry>-</entry> | ||
703 | <entry>g<subscript>9</subscript></entry> | ||
704 | <entry>g<subscript>8</subscript></entry> | ||
705 | <entry>g<subscript>7</subscript></entry> | ||
706 | <entry>g<subscript>6</subscript></entry> | ||
707 | <entry>g<subscript>5</subscript></entry> | ||
708 | <entry>g<subscript>4</subscript></entry> | ||
709 | <entry>g<subscript>3</subscript></entry> | ||
710 | <entry>g<subscript>2</subscript></entry> | ||
711 | <entry>g<subscript>1</subscript></entry> | ||
712 | <entry>g<subscript>0</subscript></entry> | ||
713 | </row> | ||
714 | <row id="V4L2-MBUS-FMT-SGRBG10-1X10"> | ||
715 | <entry>V4L2_MBUS_FMT_SGRBG10_1X10</entry> | ||
716 | <entry>0x300a</entry> | ||
717 | <entry></entry> | ||
718 | <entry>-</entry> | ||
719 | <entry>-</entry> | ||
720 | <entry>g<subscript>9</subscript></entry> | ||
721 | <entry>g<subscript>8</subscript></entry> | ||
722 | <entry>g<subscript>7</subscript></entry> | ||
723 | <entry>g<subscript>6</subscript></entry> | ||
724 | <entry>g<subscript>5</subscript></entry> | ||
725 | <entry>g<subscript>4</subscript></entry> | ||
726 | <entry>g<subscript>3</subscript></entry> | ||
727 | <entry>g<subscript>2</subscript></entry> | ||
728 | <entry>g<subscript>1</subscript></entry> | ||
729 | <entry>g<subscript>0</subscript></entry> | ||
730 | </row> | ||
731 | <row id="V4L2-MBUS-FMT-SRGGB10-1X10"> | ||
732 | <entry>V4L2_MBUS_FMT_SRGGB10_1X10</entry> | ||
733 | <entry>0x300f</entry> | ||
734 | <entry></entry> | ||
735 | <entry>-</entry> | ||
736 | <entry>-</entry> | ||
737 | <entry>r<subscript>9</subscript></entry> | ||
738 | <entry>r<subscript>8</subscript></entry> | ||
739 | <entry>r<subscript>7</subscript></entry> | ||
740 | <entry>r<subscript>6</subscript></entry> | ||
741 | <entry>r<subscript>5</subscript></entry> | ||
742 | <entry>r<subscript>4</subscript></entry> | ||
743 | <entry>r<subscript>3</subscript></entry> | ||
744 | <entry>r<subscript>2</subscript></entry> | ||
745 | <entry>r<subscript>1</subscript></entry> | ||
746 | <entry>r<subscript>0</subscript></entry> | ||
747 | </row> | ||
748 | <row id="V4L2-MBUS-FMT-SBGGR12-1X12"> | ||
749 | <entry>V4L2_MBUS_FMT_SBGGR12_1X12</entry> | ||
750 | <entry>0x3008</entry> | ||
751 | <entry></entry> | ||
752 | <entry>b<subscript>11</subscript></entry> | ||
753 | <entry>b<subscript>10</subscript></entry> | ||
754 | <entry>b<subscript>9</subscript></entry> | ||
755 | <entry>b<subscript>8</subscript></entry> | ||
756 | <entry>b<subscript>7</subscript></entry> | ||
757 | <entry>b<subscript>6</subscript></entry> | ||
758 | <entry>b<subscript>5</subscript></entry> | ||
759 | <entry>b<subscript>4</subscript></entry> | ||
760 | <entry>b<subscript>3</subscript></entry> | ||
761 | <entry>b<subscript>2</subscript></entry> | ||
762 | <entry>b<subscript>1</subscript></entry> | ||
763 | <entry>b<subscript>0</subscript></entry> | ||
764 | </row> | ||
765 | </tbody> | ||
766 | </tgroup> | ||
767 | </table> | ||
768 | </section> | ||
769 | |||
770 | <section> | ||
771 | <title>Packed YUV Formats</title> | ||
772 | |||
773 | <para>Those data formats transfer pixel data as (possibly downsampled) Y, U | ||
774 | and V components. The format code is made of the following information. | ||
775 | <itemizedlist> | ||
776 | <listitem>The Y, U and V components order code, as transferred on the | ||
777 | bus. Possible values are YUYV, UYVY, YVYU and VYUY.</listitem> | ||
778 | <listitem>The number of bits per pixel component. All components are | ||
779 | transferred on the same number of bits. Common values are 8, 10 and 12. | ||
780 | </listitem> | ||
781 | <listitem>The number of bus samples per pixel. Pixels that are wider than | ||
782 | the bus width must be transferred in multiple samples. Common values are | ||
783 | 1, 1.5 (encoded as 1_5) and 2.</listitem> | ||
784 | <listitem>The bus width. When the bus width is larger than the number of | ||
785 | bits per pixel component, several components are packed in a single bus | ||
786 | sample. The components are ordered as specified by the order code, with | ||
787 | components on the left of the code transferred in the high order bits. | ||
788 | Common values are 8 and 16. | ||
789 | </listitem> | ||
790 | </itemizedlist> | ||
791 | </para> | ||
792 | |||
793 | <para>For instance, a format where pixels are encoded as 8-bit YUV values | ||
794 | downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in the | ||
795 | U, Y, V, Y order will be named <constant>V4L2_MBUS_FMT_UYVY8_2X8</constant>. | ||
796 | </para> | ||
797 | |||
798 | <para>The following table lisst existing packet YUV formats.</para> | ||
799 | |||
800 | <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-yuv8"> | ||
801 | <title>YUV Formats</title> | ||
802 | <tgroup cols="23"> | ||
803 | <colspec colname="id" align="left" /> | ||
804 | <colspec colname="code" align="center"/> | ||
805 | <colspec colname="bit" /> | ||
806 | <colspec colnum="4" colname="b19" align="center" /> | ||
807 | <colspec colnum="5" colname="b18" align="center" /> | ||
808 | <colspec colnum="6" colname="b17" align="center" /> | ||
809 | <colspec colnum="7" colname="b16" align="center" /> | ||
810 | <colspec colnum="8" colname="b15" align="center" /> | ||
811 | <colspec colnum="9" colname="b14" align="center" /> | ||
812 | <colspec colnum="10" colname="b13" align="center" /> | ||
813 | <colspec colnum="11" colname="b12" align="center" /> | ||
814 | <colspec colnum="12" colname="b11" align="center" /> | ||
815 | <colspec colnum="13" colname="b10" align="center" /> | ||
816 | <colspec colnum="14" colname="b09" align="center" /> | ||
817 | <colspec colnum="15" colname="b08" align="center" /> | ||
818 | <colspec colnum="16" colname="b07" align="center" /> | ||
819 | <colspec colnum="17" colname="b06" align="center" /> | ||
820 | <colspec colnum="18" colname="b05" align="center" /> | ||
821 | <colspec colnum="19" colname="b04" align="center" /> | ||
822 | <colspec colnum="20" colname="b03" align="center" /> | ||
823 | <colspec colnum="21" colname="b02" align="center" /> | ||
824 | <colspec colnum="22" colname="b01" align="center" /> | ||
825 | <colspec colnum="23" colname="b00" align="center" /> | ||
826 | <spanspec namest="b19" nameend="b00" spanname="b0" /> | ||
827 | <thead> | ||
828 | <row> | ||
829 | <entry>Identifier</entry> | ||
830 | <entry>Code</entry> | ||
831 | <entry></entry> | ||
832 | <entry spanname="b0">Data organization</entry> | ||
833 | </row> | ||
834 | <row> | ||
835 | <entry></entry> | ||
836 | <entry></entry> | ||
837 | <entry>Bit</entry> | ||
838 | <entry>19</entry> | ||
839 | <entry>18</entry> | ||
840 | <entry>17</entry> | ||
841 | <entry>16</entry> | ||
842 | <entry>15</entry> | ||
843 | <entry>14</entry> | ||
844 | <entry>13</entry> | ||
845 | <entry>12</entry> | ||
846 | <entry>11</entry> | ||
847 | <entry>10</entry> | ||
848 | <entry>9</entry> | ||
849 | <entry>8</entry> | ||
850 | <entry>7</entry> | ||
851 | <entry>6</entry> | ||
852 | <entry>5</entry> | ||
853 | <entry>4</entry> | ||
854 | <entry>3</entry> | ||
855 | <entry>2</entry> | ||
856 | <entry>1</entry> | ||
857 | <entry>0</entry> | ||
858 | </row> | ||
859 | </thead> | ||
860 | <tbody valign="top"> | ||
861 | <row id="V4L2-MBUS-FMT-Y8-1X8"> | ||
862 | <entry>V4L2_MBUS_FMT_Y8_1X8</entry> | ||
863 | <entry>0x2001</entry> | ||
864 | <entry></entry> | ||
865 | <entry>-</entry> | ||
866 | <entry>-</entry> | ||
867 | <entry>-</entry> | ||
868 | <entry>-</entry> | ||
869 | <entry>-</entry> | ||
870 | <entry>-</entry> | ||
871 | <entry>-</entry> | ||
872 | <entry>-</entry> | ||
873 | <entry>-</entry> | ||
874 | <entry>-</entry> | ||
875 | <entry>-</entry> | ||
876 | <entry>-</entry> | ||
877 | <entry>y<subscript>7</subscript></entry> | ||
878 | <entry>y<subscript>6</subscript></entry> | ||
879 | <entry>y<subscript>5</subscript></entry> | ||
880 | <entry>y<subscript>4</subscript></entry> | ||
881 | <entry>y<subscript>3</subscript></entry> | ||
882 | <entry>y<subscript>2</subscript></entry> | ||
883 | <entry>y<subscript>1</subscript></entry> | ||
884 | <entry>y<subscript>0</subscript></entry> | ||
885 | </row> | ||
886 | <row id="V4L2-MBUS-FMT-UYVY8-1_5X8"> | ||
887 | <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry> | ||
888 | <entry>0x2002</entry> | ||
889 | <entry></entry> | ||
890 | <entry>-</entry> | ||
891 | <entry>-</entry> | ||
892 | <entry>-</entry> | ||
893 | <entry>-</entry> | ||
894 | <entry>-</entry> | ||
895 | <entry>-</entry> | ||
896 | <entry>-</entry> | ||
897 | <entry>-</entry> | ||
898 | <entry>-</entry> | ||
899 | <entry>-</entry> | ||
900 | <entry>-</entry> | ||
901 | <entry>-</entry> | ||
902 | <entry>u<subscript>7</subscript></entry> | ||
903 | <entry>u<subscript>6</subscript></entry> | ||
904 | <entry>u<subscript>5</subscript></entry> | ||
905 | <entry>u<subscript>4</subscript></entry> | ||
906 | <entry>u<subscript>3</subscript></entry> | ||
907 | <entry>u<subscript>2</subscript></entry> | ||
908 | <entry>u<subscript>1</subscript></entry> | ||
909 | <entry>u<subscript>0</subscript></entry> | ||
910 | </row> | ||
911 | <row> | ||
912 | <entry></entry> | ||
913 | <entry></entry> | ||
914 | <entry></entry> | ||
915 | <entry>-</entry> | ||
916 | <entry>-</entry> | ||
917 | <entry>-</entry> | ||
918 | <entry>-</entry> | ||
919 | <entry>-</entry> | ||
920 | <entry>-</entry> | ||
921 | <entry>-</entry> | ||
922 | <entry>-</entry> | ||
923 | <entry>-</entry> | ||
924 | <entry>-</entry> | ||
925 | <entry>-</entry> | ||
926 | <entry>-</entry> | ||
927 | <entry>y<subscript>7</subscript></entry> | ||
928 | <entry>y<subscript>6</subscript></entry> | ||
929 | <entry>y<subscript>5</subscript></entry> | ||
930 | <entry>y<subscript>4</subscript></entry> | ||
931 | <entry>y<subscript>3</subscript></entry> | ||
932 | <entry>y<subscript>2</subscript></entry> | ||
933 | <entry>y<subscript>1</subscript></entry> | ||
934 | <entry>y<subscript>0</subscript></entry> | ||
935 | </row> | ||
936 | <row> | ||
937 | <entry></entry> | ||
938 | <entry></entry> | ||
939 | <entry></entry> | ||
940 | <entry>-</entry> | ||
941 | <entry>-</entry> | ||
942 | <entry>-</entry> | ||
943 | <entry>-</entry> | ||
944 | <entry>-</entry> | ||
945 | <entry>-</entry> | ||
946 | <entry>-</entry> | ||
947 | <entry>-</entry> | ||
948 | <entry>-</entry> | ||
949 | <entry>-</entry> | ||
950 | <entry>-</entry> | ||
951 | <entry>-</entry> | ||
952 | <entry>y<subscript>7</subscript></entry> | ||
953 | <entry>y<subscript>6</subscript></entry> | ||
954 | <entry>y<subscript>5</subscript></entry> | ||
955 | <entry>y<subscript>4</subscript></entry> | ||
956 | <entry>y<subscript>3</subscript></entry> | ||
957 | <entry>y<subscript>2</subscript></entry> | ||
958 | <entry>y<subscript>1</subscript></entry> | ||
959 | <entry>y<subscript>0</subscript></entry> | ||
960 | </row> | ||
961 | <row> | ||
962 | <entry></entry> | ||
963 | <entry></entry> | ||
964 | <entry></entry> | ||
965 | <entry>-</entry> | ||
966 | <entry>-</entry> | ||
967 | <entry>-</entry> | ||
968 | <entry>-</entry> | ||
969 | <entry>-</entry> | ||
970 | <entry>-</entry> | ||
971 | <entry>-</entry> | ||
972 | <entry>-</entry> | ||
973 | <entry>-</entry> | ||
974 | <entry>-</entry> | ||
975 | <entry>-</entry> | ||
976 | <entry>-</entry> | ||
977 | <entry>v<subscript>7</subscript></entry> | ||
978 | <entry>v<subscript>6</subscript></entry> | ||
979 | <entry>v<subscript>5</subscript></entry> | ||
980 | <entry>v<subscript>4</subscript></entry> | ||
981 | <entry>v<subscript>3</subscript></entry> | ||
982 | <entry>v<subscript>2</subscript></entry> | ||
983 | <entry>v<subscript>1</subscript></entry> | ||
984 | <entry>v<subscript>0</subscript></entry> | ||
985 | </row> | ||
986 | <row> | ||
987 | <entry></entry> | ||
988 | <entry></entry> | ||
989 | <entry></entry> | ||
990 | <entry>-</entry> | ||
991 | <entry>-</entry> | ||
992 | <entry>-</entry> | ||
993 | <entry>-</entry> | ||
994 | <entry>-</entry> | ||
995 | <entry>-</entry> | ||
996 | <entry>-</entry> | ||
997 | <entry>-</entry> | ||
998 | <entry>-</entry> | ||
999 | <entry>-</entry> | ||
1000 | <entry>-</entry> | ||
1001 | <entry>-</entry> | ||
1002 | <entry>y<subscript>7</subscript></entry> | ||
1003 | <entry>y<subscript>6</subscript></entry> | ||
1004 | <entry>y<subscript>5</subscript></entry> | ||
1005 | <entry>y<subscript>4</subscript></entry> | ||
1006 | <entry>y<subscript>3</subscript></entry> | ||
1007 | <entry>y<subscript>2</subscript></entry> | ||
1008 | <entry>y<subscript>1</subscript></entry> | ||
1009 | <entry>y<subscript>0</subscript></entry> | ||
1010 | </row> | ||
1011 | <row> | ||
1012 | <entry></entry> | ||
1013 | <entry></entry> | ||
1014 | <entry></entry> | ||
1015 | <entry>-</entry> | ||
1016 | <entry>-</entry> | ||
1017 | <entry>-</entry> | ||
1018 | <entry>-</entry> | ||
1019 | <entry>-</entry> | ||
1020 | <entry>-</entry> | ||
1021 | <entry>-</entry> | ||
1022 | <entry>-</entry> | ||
1023 | <entry>-</entry> | ||
1024 | <entry>-</entry> | ||
1025 | <entry>-</entry> | ||
1026 | <entry>-</entry> | ||
1027 | <entry>y<subscript>7</subscript></entry> | ||
1028 | <entry>y<subscript>6</subscript></entry> | ||
1029 | <entry>y<subscript>5</subscript></entry> | ||
1030 | <entry>y<subscript>4</subscript></entry> | ||
1031 | <entry>y<subscript>3</subscript></entry> | ||
1032 | <entry>y<subscript>2</subscript></entry> | ||
1033 | <entry>y<subscript>1</subscript></entry> | ||
1034 | <entry>y<subscript>0</subscript></entry> | ||
1035 | </row> | ||
1036 | <row id="V4L2-MBUS-FMT-VYUY8-1_5X8"> | ||
1037 | <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry> | ||
1038 | <entry>0x2003</entry> | ||
1039 | <entry></entry> | ||
1040 | <entry>-</entry> | ||
1041 | <entry>-</entry> | ||
1042 | <entry>-</entry> | ||
1043 | <entry>-</entry> | ||
1044 | <entry>-</entry> | ||
1045 | <entry>-</entry> | ||
1046 | <entry>-</entry> | ||
1047 | <entry>-</entry> | ||
1048 | <entry>-</entry> | ||
1049 | <entry>-</entry> | ||
1050 | <entry>-</entry> | ||
1051 | <entry>-</entry> | ||
1052 | <entry>v<subscript>7</subscript></entry> | ||
1053 | <entry>v<subscript>6</subscript></entry> | ||
1054 | <entry>v<subscript>5</subscript></entry> | ||
1055 | <entry>v<subscript>4</subscript></entry> | ||
1056 | <entry>v<subscript>3</subscript></entry> | ||
1057 | <entry>v<subscript>2</subscript></entry> | ||
1058 | <entry>v<subscript>1</subscript></entry> | ||
1059 | <entry>v<subscript>0</subscript></entry> | ||
1060 | </row> | ||
1061 | <row> | ||
1062 | <entry></entry> | ||
1063 | <entry></entry> | ||
1064 | <entry></entry> | ||
1065 | <entry>-</entry> | ||
1066 | <entry>-</entry> | ||
1067 | <entry>-</entry> | ||
1068 | <entry>-</entry> | ||
1069 | <entry>-</entry> | ||
1070 | <entry>-</entry> | ||
1071 | <entry>-</entry> | ||
1072 | <entry>-</entry> | ||
1073 | <entry>-</entry> | ||
1074 | <entry>-</entry> | ||
1075 | <entry>-</entry> | ||
1076 | <entry>-</entry> | ||
1077 | <entry>y<subscript>7</subscript></entry> | ||
1078 | <entry>y<subscript>6</subscript></entry> | ||
1079 | <entry>y<subscript>5</subscript></entry> | ||
1080 | <entry>y<subscript>4</subscript></entry> | ||
1081 | <entry>y<subscript>3</subscript></entry> | ||
1082 | <entry>y<subscript>2</subscript></entry> | ||
1083 | <entry>y<subscript>1</subscript></entry> | ||
1084 | <entry>y<subscript>0</subscript></entry> | ||
1085 | </row> | ||
1086 | <row> | ||
1087 | <entry></entry> | ||
1088 | <entry></entry> | ||
1089 | <entry></entry> | ||
1090 | <entry>-</entry> | ||
1091 | <entry>-</entry> | ||
1092 | <entry>-</entry> | ||
1093 | <entry>-</entry> | ||
1094 | <entry>-</entry> | ||
1095 | <entry>-</entry> | ||
1096 | <entry>-</entry> | ||
1097 | <entry>-</entry> | ||
1098 | <entry>-</entry> | ||
1099 | <entry>-</entry> | ||
1100 | <entry>-</entry> | ||
1101 | <entry>-</entry> | ||
1102 | <entry>y<subscript>7</subscript></entry> | ||
1103 | <entry>y<subscript>6</subscript></entry> | ||
1104 | <entry>y<subscript>5</subscript></entry> | ||
1105 | <entry>y<subscript>4</subscript></entry> | ||
1106 | <entry>y<subscript>3</subscript></entry> | ||
1107 | <entry>y<subscript>2</subscript></entry> | ||
1108 | <entry>y<subscript>1</subscript></entry> | ||
1109 | <entry>y<subscript>0</subscript></entry> | ||
1110 | </row> | ||
1111 | <row> | ||
1112 | <entry></entry> | ||
1113 | <entry></entry> | ||
1114 | <entry></entry> | ||
1115 | <entry>-</entry> | ||
1116 | <entry>-</entry> | ||
1117 | <entry>-</entry> | ||
1118 | <entry>-</entry> | ||
1119 | <entry>-</entry> | ||
1120 | <entry>-</entry> | ||
1121 | <entry>-</entry> | ||
1122 | <entry>-</entry> | ||
1123 | <entry>-</entry> | ||
1124 | <entry>-</entry> | ||
1125 | <entry>-</entry> | ||
1126 | <entry>-</entry> | ||
1127 | <entry>u<subscript>7</subscript></entry> | ||
1128 | <entry>u<subscript>6</subscript></entry> | ||
1129 | <entry>u<subscript>5</subscript></entry> | ||
1130 | <entry>u<subscript>4</subscript></entry> | ||
1131 | <entry>u<subscript>3</subscript></entry> | ||
1132 | <entry>u<subscript>2</subscript></entry> | ||
1133 | <entry>u<subscript>1</subscript></entry> | ||
1134 | <entry>u<subscript>0</subscript></entry> | ||
1135 | </row> | ||
1136 | <row> | ||
1137 | <entry></entry> | ||
1138 | <entry></entry> | ||
1139 | <entry></entry> | ||
1140 | <entry>-</entry> | ||
1141 | <entry>-</entry> | ||
1142 | <entry>-</entry> | ||
1143 | <entry>-</entry> | ||
1144 | <entry>-</entry> | ||
1145 | <entry>-</entry> | ||
1146 | <entry>-</entry> | ||
1147 | <entry>-</entry> | ||
1148 | <entry>-</entry> | ||
1149 | <entry>-</entry> | ||
1150 | <entry>-</entry> | ||
1151 | <entry>-</entry> | ||
1152 | <entry>y<subscript>7</subscript></entry> | ||
1153 | <entry>y<subscript>6</subscript></entry> | ||
1154 | <entry>y<subscript>5</subscript></entry> | ||
1155 | <entry>y<subscript>4</subscript></entry> | ||
1156 | <entry>y<subscript>3</subscript></entry> | ||
1157 | <entry>y<subscript>2</subscript></entry> | ||
1158 | <entry>y<subscript>1</subscript></entry> | ||
1159 | <entry>y<subscript>0</subscript></entry> | ||
1160 | </row> | ||
1161 | <row> | ||
1162 | <entry></entry> | ||
1163 | <entry></entry> | ||
1164 | <entry></entry> | ||
1165 | <entry>-</entry> | ||
1166 | <entry>-</entry> | ||
1167 | <entry>-</entry> | ||
1168 | <entry>-</entry> | ||
1169 | <entry>-</entry> | ||
1170 | <entry>-</entry> | ||
1171 | <entry>-</entry> | ||
1172 | <entry>-</entry> | ||
1173 | <entry>-</entry> | ||
1174 | <entry>-</entry> | ||
1175 | <entry>-</entry> | ||
1176 | <entry>-</entry> | ||
1177 | <entry>y<subscript>7</subscript></entry> | ||
1178 | <entry>y<subscript>6</subscript></entry> | ||
1179 | <entry>y<subscript>5</subscript></entry> | ||
1180 | <entry>y<subscript>4</subscript></entry> | ||
1181 | <entry>y<subscript>3</subscript></entry> | ||
1182 | <entry>y<subscript>2</subscript></entry> | ||
1183 | <entry>y<subscript>1</subscript></entry> | ||
1184 | <entry>y<subscript>0</subscript></entry> | ||
1185 | </row> | ||
1186 | <row id="V4L2-MBUS-FMT-YUYV8-1_5X8"> | ||
1187 | <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry> | ||
1188 | <entry>0x2004</entry> | ||
1189 | <entry></entry> | ||
1190 | <entry>-</entry> | ||
1191 | <entry>-</entry> | ||
1192 | <entry>-</entry> | ||
1193 | <entry>-</entry> | ||
1194 | <entry>-</entry> | ||
1195 | <entry>-</entry> | ||
1196 | <entry>-</entry> | ||
1197 | <entry>-</entry> | ||
1198 | <entry>-</entry> | ||
1199 | <entry>-</entry> | ||
1200 | <entry>-</entry> | ||
1201 | <entry>-</entry> | ||
1202 | <entry>y<subscript>7</subscript></entry> | ||
1203 | <entry>y<subscript>6</subscript></entry> | ||
1204 | <entry>y<subscript>5</subscript></entry> | ||
1205 | <entry>y<subscript>4</subscript></entry> | ||
1206 | <entry>y<subscript>3</subscript></entry> | ||
1207 | <entry>y<subscript>2</subscript></entry> | ||
1208 | <entry>y<subscript>1</subscript></entry> | ||
1209 | <entry>y<subscript>0</subscript></entry> | ||
1210 | </row> | ||
1211 | <row> | ||
1212 | <entry></entry> | ||
1213 | <entry></entry> | ||
1214 | <entry></entry> | ||
1215 | <entry>-</entry> | ||
1216 | <entry>-</entry> | ||
1217 | <entry>-</entry> | ||
1218 | <entry>-</entry> | ||
1219 | <entry>-</entry> | ||
1220 | <entry>-</entry> | ||
1221 | <entry>-</entry> | ||
1222 | <entry>-</entry> | ||
1223 | <entry>-</entry> | ||
1224 | <entry>-</entry> | ||
1225 | <entry>-</entry> | ||
1226 | <entry>-</entry> | ||
1227 | <entry>y<subscript>7</subscript></entry> | ||
1228 | <entry>y<subscript>6</subscript></entry> | ||
1229 | <entry>y<subscript>5</subscript></entry> | ||
1230 | <entry>y<subscript>4</subscript></entry> | ||
1231 | <entry>y<subscript>3</subscript></entry> | ||
1232 | <entry>y<subscript>2</subscript></entry> | ||
1233 | <entry>y<subscript>1</subscript></entry> | ||
1234 | <entry>y<subscript>0</subscript></entry> | ||
1235 | </row> | ||
1236 | <row> | ||
1237 | <entry></entry> | ||
1238 | <entry></entry> | ||
1239 | <entry></entry> | ||
1240 | <entry>-</entry> | ||
1241 | <entry>-</entry> | ||
1242 | <entry>-</entry> | ||
1243 | <entry>-</entry> | ||
1244 | <entry>-</entry> | ||
1245 | <entry>-</entry> | ||
1246 | <entry>-</entry> | ||
1247 | <entry>-</entry> | ||
1248 | <entry>-</entry> | ||
1249 | <entry>-</entry> | ||
1250 | <entry>-</entry> | ||
1251 | <entry>-</entry> | ||
1252 | <entry>u<subscript>7</subscript></entry> | ||
1253 | <entry>u<subscript>6</subscript></entry> | ||
1254 | <entry>u<subscript>5</subscript></entry> | ||
1255 | <entry>u<subscript>4</subscript></entry> | ||
1256 | <entry>u<subscript>3</subscript></entry> | ||
1257 | <entry>u<subscript>2</subscript></entry> | ||
1258 | <entry>u<subscript>1</subscript></entry> | ||
1259 | <entry>u<subscript>0</subscript></entry> | ||
1260 | </row> | ||
1261 | <row> | ||
1262 | <entry></entry> | ||
1263 | <entry></entry> | ||
1264 | <entry></entry> | ||
1265 | <entry>-</entry> | ||
1266 | <entry>-</entry> | ||
1267 | <entry>-</entry> | ||
1268 | <entry>-</entry> | ||
1269 | <entry>-</entry> | ||
1270 | <entry>-</entry> | ||
1271 | <entry>-</entry> | ||
1272 | <entry>-</entry> | ||
1273 | <entry>-</entry> | ||
1274 | <entry>-</entry> | ||
1275 | <entry>-</entry> | ||
1276 | <entry>-</entry> | ||
1277 | <entry>y<subscript>7</subscript></entry> | ||
1278 | <entry>y<subscript>6</subscript></entry> | ||
1279 | <entry>y<subscript>5</subscript></entry> | ||
1280 | <entry>y<subscript>4</subscript></entry> | ||
1281 | <entry>y<subscript>3</subscript></entry> | ||
1282 | <entry>y<subscript>2</subscript></entry> | ||
1283 | <entry>y<subscript>1</subscript></entry> | ||
1284 | <entry>y<subscript>0</subscript></entry> | ||
1285 | </row> | ||
1286 | <row> | ||
1287 | <entry></entry> | ||
1288 | <entry></entry> | ||
1289 | <entry></entry> | ||
1290 | <entry>-</entry> | ||
1291 | <entry>-</entry> | ||
1292 | <entry>-</entry> | ||
1293 | <entry>-</entry> | ||
1294 | <entry>-</entry> | ||
1295 | <entry>-</entry> | ||
1296 | <entry>-</entry> | ||
1297 | <entry>-</entry> | ||
1298 | <entry>-</entry> | ||
1299 | <entry>-</entry> | ||
1300 | <entry>-</entry> | ||
1301 | <entry>-</entry> | ||
1302 | <entry>y<subscript>7</subscript></entry> | ||
1303 | <entry>y<subscript>6</subscript></entry> | ||
1304 | <entry>y<subscript>5</subscript></entry> | ||
1305 | <entry>y<subscript>4</subscript></entry> | ||
1306 | <entry>y<subscript>3</subscript></entry> | ||
1307 | <entry>y<subscript>2</subscript></entry> | ||
1308 | <entry>y<subscript>1</subscript></entry> | ||
1309 | <entry>y<subscript>0</subscript></entry> | ||
1310 | </row> | ||
1311 | <row> | ||
1312 | <entry></entry> | ||
1313 | <entry></entry> | ||
1314 | <entry></entry> | ||
1315 | <entry>-</entry> | ||
1316 | <entry>-</entry> | ||
1317 | <entry>-</entry> | ||
1318 | <entry>-</entry> | ||
1319 | <entry>-</entry> | ||
1320 | <entry>-</entry> | ||
1321 | <entry>-</entry> | ||
1322 | <entry>-</entry> | ||
1323 | <entry>-</entry> | ||
1324 | <entry>-</entry> | ||
1325 | <entry>-</entry> | ||
1326 | <entry>-</entry> | ||
1327 | <entry>v<subscript>7</subscript></entry> | ||
1328 | <entry>v<subscript>6</subscript></entry> | ||
1329 | <entry>v<subscript>5</subscript></entry> | ||
1330 | <entry>v<subscript>4</subscript></entry> | ||
1331 | <entry>v<subscript>3</subscript></entry> | ||
1332 | <entry>v<subscript>2</subscript></entry> | ||
1333 | <entry>v<subscript>1</subscript></entry> | ||
1334 | <entry>v<subscript>0</subscript></entry> | ||
1335 | </row> | ||
1336 | <row id="V4L2-MBUS-FMT-YVYU8-1_5X8"> | ||
1337 | <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry> | ||
1338 | <entry>0x2005</entry> | ||
1339 | <entry></entry> | ||
1340 | <entry>-</entry> | ||
1341 | <entry>-</entry> | ||
1342 | <entry>-</entry> | ||
1343 | <entry>-</entry> | ||
1344 | <entry>-</entry> | ||
1345 | <entry>-</entry> | ||
1346 | <entry>-</entry> | ||
1347 | <entry>-</entry> | ||
1348 | <entry>-</entry> | ||
1349 | <entry>-</entry> | ||
1350 | <entry>-</entry> | ||
1351 | <entry>-</entry> | ||
1352 | <entry>y<subscript>7</subscript></entry> | ||
1353 | <entry>y<subscript>6</subscript></entry> | ||
1354 | <entry>y<subscript>5</subscript></entry> | ||
1355 | <entry>y<subscript>4</subscript></entry> | ||
1356 | <entry>y<subscript>3</subscript></entry> | ||
1357 | <entry>y<subscript>2</subscript></entry> | ||
1358 | <entry>y<subscript>1</subscript></entry> | ||
1359 | <entry>y<subscript>0</subscript></entry> | ||
1360 | </row> | ||
1361 | <row> | ||
1362 | <entry></entry> | ||
1363 | <entry></entry> | ||
1364 | <entry></entry> | ||
1365 | <entry>-</entry> | ||
1366 | <entry>-</entry> | ||
1367 | <entry>-</entry> | ||
1368 | <entry>-</entry> | ||
1369 | <entry>-</entry> | ||
1370 | <entry>-</entry> | ||
1371 | <entry>-</entry> | ||
1372 | <entry>-</entry> | ||
1373 | <entry>-</entry> | ||
1374 | <entry>-</entry> | ||
1375 | <entry>-</entry> | ||
1376 | <entry>-</entry> | ||
1377 | <entry>y<subscript>7</subscript></entry> | ||
1378 | <entry>y<subscript>6</subscript></entry> | ||
1379 | <entry>y<subscript>5</subscript></entry> | ||
1380 | <entry>y<subscript>4</subscript></entry> | ||
1381 | <entry>y<subscript>3</subscript></entry> | ||
1382 | <entry>y<subscript>2</subscript></entry> | ||
1383 | <entry>y<subscript>1</subscript></entry> | ||
1384 | <entry>y<subscript>0</subscript></entry> | ||
1385 | </row> | ||
1386 | <row> | ||
1387 | <entry></entry> | ||
1388 | <entry></entry> | ||
1389 | <entry></entry> | ||
1390 | <entry>-</entry> | ||
1391 | <entry>-</entry> | ||
1392 | <entry>-</entry> | ||
1393 | <entry>-</entry> | ||
1394 | <entry>-</entry> | ||
1395 | <entry>-</entry> | ||
1396 | <entry>-</entry> | ||
1397 | <entry>-</entry> | ||
1398 | <entry>-</entry> | ||
1399 | <entry>-</entry> | ||
1400 | <entry>-</entry> | ||
1401 | <entry>-</entry> | ||
1402 | <entry>v<subscript>7</subscript></entry> | ||
1403 | <entry>v<subscript>6</subscript></entry> | ||
1404 | <entry>v<subscript>5</subscript></entry> | ||
1405 | <entry>v<subscript>4</subscript></entry> | ||
1406 | <entry>v<subscript>3</subscript></entry> | ||
1407 | <entry>v<subscript>2</subscript></entry> | ||
1408 | <entry>v<subscript>1</subscript></entry> | ||
1409 | <entry>v<subscript>0</subscript></entry> | ||
1410 | </row> | ||
1411 | <row> | ||
1412 | <entry></entry> | ||
1413 | <entry></entry> | ||
1414 | <entry></entry> | ||
1415 | <entry>-</entry> | ||
1416 | <entry>-</entry> | ||
1417 | <entry>-</entry> | ||
1418 | <entry>-</entry> | ||
1419 | <entry>-</entry> | ||
1420 | <entry>-</entry> | ||
1421 | <entry>-</entry> | ||
1422 | <entry>-</entry> | ||
1423 | <entry>-</entry> | ||
1424 | <entry>-</entry> | ||
1425 | <entry>-</entry> | ||
1426 | <entry>-</entry> | ||
1427 | <entry>y<subscript>7</subscript></entry> | ||
1428 | <entry>y<subscript>6</subscript></entry> | ||
1429 | <entry>y<subscript>5</subscript></entry> | ||
1430 | <entry>y<subscript>4</subscript></entry> | ||
1431 | <entry>y<subscript>3</subscript></entry> | ||
1432 | <entry>y<subscript>2</subscript></entry> | ||
1433 | <entry>y<subscript>1</subscript></entry> | ||
1434 | <entry>y<subscript>0</subscript></entry> | ||
1435 | </row> | ||
1436 | <row> | ||
1437 | <entry></entry> | ||
1438 | <entry></entry> | ||
1439 | <entry></entry> | ||
1440 | <entry>-</entry> | ||
1441 | <entry>-</entry> | ||
1442 | <entry>-</entry> | ||
1443 | <entry>-</entry> | ||
1444 | <entry>-</entry> | ||
1445 | <entry>-</entry> | ||
1446 | <entry>-</entry> | ||
1447 | <entry>-</entry> | ||
1448 | <entry>-</entry> | ||
1449 | <entry>-</entry> | ||
1450 | <entry>-</entry> | ||
1451 | <entry>-</entry> | ||
1452 | <entry>y<subscript>7</subscript></entry> | ||
1453 | <entry>y<subscript>6</subscript></entry> | ||
1454 | <entry>y<subscript>5</subscript></entry> | ||
1455 | <entry>y<subscript>4</subscript></entry> | ||
1456 | <entry>y<subscript>3</subscript></entry> | ||
1457 | <entry>y<subscript>2</subscript></entry> | ||
1458 | <entry>y<subscript>1</subscript></entry> | ||
1459 | <entry>y<subscript>0</subscript></entry> | ||
1460 | </row> | ||
1461 | <row> | ||
1462 | <entry></entry> | ||
1463 | <entry></entry> | ||
1464 | <entry></entry> | ||
1465 | <entry>-</entry> | ||
1466 | <entry>-</entry> | ||
1467 | <entry>-</entry> | ||
1468 | <entry>-</entry> | ||
1469 | <entry>-</entry> | ||
1470 | <entry>-</entry> | ||
1471 | <entry>-</entry> | ||
1472 | <entry>-</entry> | ||
1473 | <entry>-</entry> | ||
1474 | <entry>-</entry> | ||
1475 | <entry>-</entry> | ||
1476 | <entry>-</entry> | ||
1477 | <entry>u<subscript>7</subscript></entry> | ||
1478 | <entry>u<subscript>6</subscript></entry> | ||
1479 | <entry>u<subscript>5</subscript></entry> | ||
1480 | <entry>u<subscript>4</subscript></entry> | ||
1481 | <entry>u<subscript>3</subscript></entry> | ||
1482 | <entry>u<subscript>2</subscript></entry> | ||
1483 | <entry>u<subscript>1</subscript></entry> | ||
1484 | <entry>u<subscript>0</subscript></entry> | ||
1485 | </row> | ||
1486 | <row id="V4L2-MBUS-FMT-UYVY8-2X8"> | ||
1487 | <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry> | ||
1488 | <entry>0x2006</entry> | ||
1489 | <entry></entry> | ||
1490 | <entry>-</entry> | ||
1491 | <entry>-</entry> | ||
1492 | <entry>-</entry> | ||
1493 | <entry>-</entry> | ||
1494 | <entry>-</entry> | ||
1495 | <entry>-</entry> | ||
1496 | <entry>-</entry> | ||
1497 | <entry>-</entry> | ||
1498 | <entry>-</entry> | ||
1499 | <entry>-</entry> | ||
1500 | <entry>-</entry> | ||
1501 | <entry>-</entry> | ||
1502 | <entry>u<subscript>7</subscript></entry> | ||
1503 | <entry>u<subscript>6</subscript></entry> | ||
1504 | <entry>u<subscript>5</subscript></entry> | ||
1505 | <entry>u<subscript>4</subscript></entry> | ||
1506 | <entry>u<subscript>3</subscript></entry> | ||
1507 | <entry>u<subscript>2</subscript></entry> | ||
1508 | <entry>u<subscript>1</subscript></entry> | ||
1509 | <entry>u<subscript>0</subscript></entry> | ||
1510 | </row> | ||
1511 | <row> | ||
1512 | <entry></entry> | ||
1513 | <entry></entry> | ||
1514 | <entry></entry> | ||
1515 | <entry>-</entry> | ||
1516 | <entry>-</entry> | ||
1517 | <entry>-</entry> | ||
1518 | <entry>-</entry> | ||
1519 | <entry>-</entry> | ||
1520 | <entry>-</entry> | ||
1521 | <entry>-</entry> | ||
1522 | <entry>-</entry> | ||
1523 | <entry>-</entry> | ||
1524 | <entry>-</entry> | ||
1525 | <entry>-</entry> | ||
1526 | <entry>-</entry> | ||
1527 | <entry>y<subscript>7</subscript></entry> | ||
1528 | <entry>y<subscript>6</subscript></entry> | ||
1529 | <entry>y<subscript>5</subscript></entry> | ||
1530 | <entry>y<subscript>4</subscript></entry> | ||
1531 | <entry>y<subscript>3</subscript></entry> | ||
1532 | <entry>y<subscript>2</subscript></entry> | ||
1533 | <entry>y<subscript>1</subscript></entry> | ||
1534 | <entry>y<subscript>0</subscript></entry> | ||
1535 | </row> | ||
1536 | <row> | ||
1537 | <entry></entry> | ||
1538 | <entry></entry> | ||
1539 | <entry></entry> | ||
1540 | <entry>-</entry> | ||
1541 | <entry>-</entry> | ||
1542 | <entry>-</entry> | ||
1543 | <entry>-</entry> | ||
1544 | <entry>-</entry> | ||
1545 | <entry>-</entry> | ||
1546 | <entry>-</entry> | ||
1547 | <entry>-</entry> | ||
1548 | <entry>-</entry> | ||
1549 | <entry>-</entry> | ||
1550 | <entry>-</entry> | ||
1551 | <entry>-</entry> | ||
1552 | <entry>v<subscript>7</subscript></entry> | ||
1553 | <entry>v<subscript>6</subscript></entry> | ||
1554 | <entry>v<subscript>5</subscript></entry> | ||
1555 | <entry>v<subscript>4</subscript></entry> | ||
1556 | <entry>v<subscript>3</subscript></entry> | ||
1557 | <entry>v<subscript>2</subscript></entry> | ||
1558 | <entry>v<subscript>1</subscript></entry> | ||
1559 | <entry>v<subscript>0</subscript></entry> | ||
1560 | </row> | ||
1561 | <row> | ||
1562 | <entry></entry> | ||
1563 | <entry></entry> | ||
1564 | <entry></entry> | ||
1565 | <entry>-</entry> | ||
1566 | <entry>-</entry> | ||
1567 | <entry>-</entry> | ||
1568 | <entry>-</entry> | ||
1569 | <entry>-</entry> | ||
1570 | <entry>-</entry> | ||
1571 | <entry>-</entry> | ||
1572 | <entry>-</entry> | ||
1573 | <entry>-</entry> | ||
1574 | <entry>-</entry> | ||
1575 | <entry>-</entry> | ||
1576 | <entry>-</entry> | ||
1577 | <entry>y<subscript>7</subscript></entry> | ||
1578 | <entry>y<subscript>6</subscript></entry> | ||
1579 | <entry>y<subscript>5</subscript></entry> | ||
1580 | <entry>y<subscript>4</subscript></entry> | ||
1581 | <entry>y<subscript>3</subscript></entry> | ||
1582 | <entry>y<subscript>2</subscript></entry> | ||
1583 | <entry>y<subscript>1</subscript></entry> | ||
1584 | <entry>y<subscript>0</subscript></entry> | ||
1585 | </row> | ||
1586 | <row id="V4L2-MBUS-FMT-VYUY8-2X8"> | ||
1587 | <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry> | ||
1588 | <entry>0x2007</entry> | ||
1589 | <entry></entry> | ||
1590 | <entry>-</entry> | ||
1591 | <entry>-</entry> | ||
1592 | <entry>-</entry> | ||
1593 | <entry>-</entry> | ||
1594 | <entry>-</entry> | ||
1595 | <entry>-</entry> | ||
1596 | <entry>-</entry> | ||
1597 | <entry>-</entry> | ||
1598 | <entry>-</entry> | ||
1599 | <entry>-</entry> | ||
1600 | <entry>-</entry> | ||
1601 | <entry>-</entry> | ||
1602 | <entry>v<subscript>7</subscript></entry> | ||
1603 | <entry>v<subscript>6</subscript></entry> | ||
1604 | <entry>v<subscript>5</subscript></entry> | ||
1605 | <entry>v<subscript>4</subscript></entry> | ||
1606 | <entry>v<subscript>3</subscript></entry> | ||
1607 | <entry>v<subscript>2</subscript></entry> | ||
1608 | <entry>v<subscript>1</subscript></entry> | ||
1609 | <entry>v<subscript>0</subscript></entry> | ||
1610 | </row> | ||
1611 | <row> | ||
1612 | <entry></entry> | ||
1613 | <entry></entry> | ||
1614 | <entry></entry> | ||
1615 | <entry>-</entry> | ||
1616 | <entry>-</entry> | ||
1617 | <entry>-</entry> | ||
1618 | <entry>-</entry> | ||
1619 | <entry>-</entry> | ||
1620 | <entry>-</entry> | ||
1621 | <entry>-</entry> | ||
1622 | <entry>-</entry> | ||
1623 | <entry>-</entry> | ||
1624 | <entry>-</entry> | ||
1625 | <entry>-</entry> | ||
1626 | <entry>-</entry> | ||
1627 | <entry>y<subscript>7</subscript></entry> | ||
1628 | <entry>y<subscript>6</subscript></entry> | ||
1629 | <entry>y<subscript>5</subscript></entry> | ||
1630 | <entry>y<subscript>4</subscript></entry> | ||
1631 | <entry>y<subscript>3</subscript></entry> | ||
1632 | <entry>y<subscript>2</subscript></entry> | ||
1633 | <entry>y<subscript>1</subscript></entry> | ||
1634 | <entry>y<subscript>0</subscript></entry> | ||
1635 | </row> | ||
1636 | <row> | ||
1637 | <entry></entry> | ||
1638 | <entry></entry> | ||
1639 | <entry></entry> | ||
1640 | <entry>-</entry> | ||
1641 | <entry>-</entry> | ||
1642 | <entry>-</entry> | ||
1643 | <entry>-</entry> | ||
1644 | <entry>-</entry> | ||
1645 | <entry>-</entry> | ||
1646 | <entry>-</entry> | ||
1647 | <entry>-</entry> | ||
1648 | <entry>-</entry> | ||
1649 | <entry>-</entry> | ||
1650 | <entry>-</entry> | ||
1651 | <entry>-</entry> | ||
1652 | <entry>u<subscript>7</subscript></entry> | ||
1653 | <entry>u<subscript>6</subscript></entry> | ||
1654 | <entry>u<subscript>5</subscript></entry> | ||
1655 | <entry>u<subscript>4</subscript></entry> | ||
1656 | <entry>u<subscript>3</subscript></entry> | ||
1657 | <entry>u<subscript>2</subscript></entry> | ||
1658 | <entry>u<subscript>1</subscript></entry> | ||
1659 | <entry>u<subscript>0</subscript></entry> | ||
1660 | </row> | ||
1661 | <row> | ||
1662 | <entry></entry> | ||
1663 | <entry></entry> | ||
1664 | <entry></entry> | ||
1665 | <entry>-</entry> | ||
1666 | <entry>-</entry> | ||
1667 | <entry>-</entry> | ||
1668 | <entry>-</entry> | ||
1669 | <entry>-</entry> | ||
1670 | <entry>-</entry> | ||
1671 | <entry>-</entry> | ||
1672 | <entry>-</entry> | ||
1673 | <entry>-</entry> | ||
1674 | <entry>-</entry> | ||
1675 | <entry>-</entry> | ||
1676 | <entry>-</entry> | ||
1677 | <entry>y<subscript>7</subscript></entry> | ||
1678 | <entry>y<subscript>6</subscript></entry> | ||
1679 | <entry>y<subscript>5</subscript></entry> | ||
1680 | <entry>y<subscript>4</subscript></entry> | ||
1681 | <entry>y<subscript>3</subscript></entry> | ||
1682 | <entry>y<subscript>2</subscript></entry> | ||
1683 | <entry>y<subscript>1</subscript></entry> | ||
1684 | <entry>y<subscript>0</subscript></entry> | ||
1685 | </row> | ||
1686 | <row id="V4L2-MBUS-FMT-YUYV8-2X8"> | ||
1687 | <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry> | ||
1688 | <entry>0x2008</entry> | ||
1689 | <entry></entry> | ||
1690 | <entry>-</entry> | ||
1691 | <entry>-</entry> | ||
1692 | <entry>-</entry> | ||
1693 | <entry>-</entry> | ||
1694 | <entry>-</entry> | ||
1695 | <entry>-</entry> | ||
1696 | <entry>-</entry> | ||
1697 | <entry>-</entry> | ||
1698 | <entry>-</entry> | ||
1699 | <entry>-</entry> | ||
1700 | <entry>-</entry> | ||
1701 | <entry>-</entry> | ||
1702 | <entry>y<subscript>7</subscript></entry> | ||
1703 | <entry>y<subscript>6</subscript></entry> | ||
1704 | <entry>y<subscript>5</subscript></entry> | ||
1705 | <entry>y<subscript>4</subscript></entry> | ||
1706 | <entry>y<subscript>3</subscript></entry> | ||
1707 | <entry>y<subscript>2</subscript></entry> | ||
1708 | <entry>y<subscript>1</subscript></entry> | ||
1709 | <entry>y<subscript>0</subscript></entry> | ||
1710 | </row> | ||
1711 | <row> | ||
1712 | <entry></entry> | ||
1713 | <entry></entry> | ||
1714 | <entry></entry> | ||
1715 | <entry>-</entry> | ||
1716 | <entry>-</entry> | ||
1717 | <entry>-</entry> | ||
1718 | <entry>-</entry> | ||
1719 | <entry>-</entry> | ||
1720 | <entry>-</entry> | ||
1721 | <entry>-</entry> | ||
1722 | <entry>-</entry> | ||
1723 | <entry>-</entry> | ||
1724 | <entry>-</entry> | ||
1725 | <entry>-</entry> | ||
1726 | <entry>-</entry> | ||
1727 | <entry>u<subscript>7</subscript></entry> | ||
1728 | <entry>u<subscript>6</subscript></entry> | ||
1729 | <entry>u<subscript>5</subscript></entry> | ||
1730 | <entry>u<subscript>4</subscript></entry> | ||
1731 | <entry>u<subscript>3</subscript></entry> | ||
1732 | <entry>u<subscript>2</subscript></entry> | ||
1733 | <entry>u<subscript>1</subscript></entry> | ||
1734 | <entry>u<subscript>0</subscript></entry> | ||
1735 | </row> | ||
1736 | <row> | ||
1737 | <entry></entry> | ||
1738 | <entry></entry> | ||
1739 | <entry></entry> | ||
1740 | <entry>-</entry> | ||
1741 | <entry>-</entry> | ||
1742 | <entry>-</entry> | ||
1743 | <entry>-</entry> | ||
1744 | <entry>-</entry> | ||
1745 | <entry>-</entry> | ||
1746 | <entry>-</entry> | ||
1747 | <entry>-</entry> | ||
1748 | <entry>-</entry> | ||
1749 | <entry>-</entry> | ||
1750 | <entry>-</entry> | ||
1751 | <entry>-</entry> | ||
1752 | <entry>y<subscript>7</subscript></entry> | ||
1753 | <entry>y<subscript>6</subscript></entry> | ||
1754 | <entry>y<subscript>5</subscript></entry> | ||
1755 | <entry>y<subscript>4</subscript></entry> | ||
1756 | <entry>y<subscript>3</subscript></entry> | ||
1757 | <entry>y<subscript>2</subscript></entry> | ||
1758 | <entry>y<subscript>1</subscript></entry> | ||
1759 | <entry>y<subscript>0</subscript></entry> | ||
1760 | </row> | ||
1761 | <row> | ||
1762 | <entry></entry> | ||
1763 | <entry></entry> | ||
1764 | <entry></entry> | ||
1765 | <entry>-</entry> | ||
1766 | <entry>-</entry> | ||
1767 | <entry>-</entry> | ||
1768 | <entry>-</entry> | ||
1769 | <entry>-</entry> | ||
1770 | <entry>-</entry> | ||
1771 | <entry>-</entry> | ||
1772 | <entry>-</entry> | ||
1773 | <entry>-</entry> | ||
1774 | <entry>-</entry> | ||
1775 | <entry>-</entry> | ||
1776 | <entry>-</entry> | ||
1777 | <entry>v<subscript>7</subscript></entry> | ||
1778 | <entry>v<subscript>6</subscript></entry> | ||
1779 | <entry>v<subscript>5</subscript></entry> | ||
1780 | <entry>v<subscript>4</subscript></entry> | ||
1781 | <entry>v<subscript>3</subscript></entry> | ||
1782 | <entry>v<subscript>2</subscript></entry> | ||
1783 | <entry>v<subscript>1</subscript></entry> | ||
1784 | <entry>v<subscript>0</subscript></entry> | ||
1785 | </row> | ||
1786 | <row id="V4L2-MBUS-FMT-YVYU8-2X8"> | ||
1787 | <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry> | ||
1788 | <entry>0x2009</entry> | ||
1789 | <entry></entry> | ||
1790 | <entry>-</entry> | ||
1791 | <entry>-</entry> | ||
1792 | <entry>-</entry> | ||
1793 | <entry>-</entry> | ||
1794 | <entry>-</entry> | ||
1795 | <entry>-</entry> | ||
1796 | <entry>-</entry> | ||
1797 | <entry>-</entry> | ||
1798 | <entry>-</entry> | ||
1799 | <entry>-</entry> | ||
1800 | <entry>-</entry> | ||
1801 | <entry>-</entry> | ||
1802 | <entry>y<subscript>7</subscript></entry> | ||
1803 | <entry>y<subscript>6</subscript></entry> | ||
1804 | <entry>y<subscript>5</subscript></entry> | ||
1805 | <entry>y<subscript>4</subscript></entry> | ||
1806 | <entry>y<subscript>3</subscript></entry> | ||
1807 | <entry>y<subscript>2</subscript></entry> | ||
1808 | <entry>y<subscript>1</subscript></entry> | ||
1809 | <entry>y<subscript>0</subscript></entry> | ||
1810 | </row> | ||
1811 | <row> | ||
1812 | <entry></entry> | ||
1813 | <entry></entry> | ||
1814 | <entry></entry> | ||
1815 | <entry>-</entry> | ||
1816 | <entry>-</entry> | ||
1817 | <entry>-</entry> | ||
1818 | <entry>-</entry> | ||
1819 | <entry>-</entry> | ||
1820 | <entry>-</entry> | ||
1821 | <entry>-</entry> | ||
1822 | <entry>-</entry> | ||
1823 | <entry>-</entry> | ||
1824 | <entry>-</entry> | ||
1825 | <entry>-</entry> | ||
1826 | <entry>-</entry> | ||
1827 | <entry>v<subscript>7</subscript></entry> | ||
1828 | <entry>v<subscript>6</subscript></entry> | ||
1829 | <entry>v<subscript>5</subscript></entry> | ||
1830 | <entry>v<subscript>4</subscript></entry> | ||
1831 | <entry>v<subscript>3</subscript></entry> | ||
1832 | <entry>v<subscript>2</subscript></entry> | ||
1833 | <entry>v<subscript>1</subscript></entry> | ||
1834 | <entry>v<subscript>0</subscript></entry> | ||
1835 | </row> | ||
1836 | <row> | ||
1837 | <entry></entry> | ||
1838 | <entry></entry> | ||
1839 | <entry></entry> | ||
1840 | <entry>-</entry> | ||
1841 | <entry>-</entry> | ||
1842 | <entry>-</entry> | ||
1843 | <entry>-</entry> | ||
1844 | <entry>-</entry> | ||
1845 | <entry>-</entry> | ||
1846 | <entry>-</entry> | ||
1847 | <entry>-</entry> | ||
1848 | <entry>-</entry> | ||
1849 | <entry>-</entry> | ||
1850 | <entry>-</entry> | ||
1851 | <entry>-</entry> | ||
1852 | <entry>y<subscript>7</subscript></entry> | ||
1853 | <entry>y<subscript>6</subscript></entry> | ||
1854 | <entry>y<subscript>5</subscript></entry> | ||
1855 | <entry>y<subscript>4</subscript></entry> | ||
1856 | <entry>y<subscript>3</subscript></entry> | ||
1857 | <entry>y<subscript>2</subscript></entry> | ||
1858 | <entry>y<subscript>1</subscript></entry> | ||
1859 | <entry>y<subscript>0</subscript></entry> | ||
1860 | </row> | ||
1861 | <row> | ||
1862 | <entry></entry> | ||
1863 | <entry></entry> | ||
1864 | <entry></entry> | ||
1865 | <entry>-</entry> | ||
1866 | <entry>-</entry> | ||
1867 | <entry>-</entry> | ||
1868 | <entry>-</entry> | ||
1869 | <entry>-</entry> | ||
1870 | <entry>-</entry> | ||
1871 | <entry>-</entry> | ||
1872 | <entry>-</entry> | ||
1873 | <entry>-</entry> | ||
1874 | <entry>-</entry> | ||
1875 | <entry>-</entry> | ||
1876 | <entry>-</entry> | ||
1877 | <entry>u<subscript>7</subscript></entry> | ||
1878 | <entry>u<subscript>6</subscript></entry> | ||
1879 | <entry>u<subscript>5</subscript></entry> | ||
1880 | <entry>u<subscript>4</subscript></entry> | ||
1881 | <entry>u<subscript>3</subscript></entry> | ||
1882 | <entry>u<subscript>2</subscript></entry> | ||
1883 | <entry>u<subscript>1</subscript></entry> | ||
1884 | <entry>u<subscript>0</subscript></entry> | ||
1885 | </row> | ||
1886 | <row id="V4L2-MBUS-FMT-Y10-1X10"> | ||
1887 | <entry>V4L2_MBUS_FMT_Y10_1X10</entry> | ||
1888 | <entry>0x200a</entry> | ||
1889 | <entry></entry> | ||
1890 | <entry>-</entry> | ||
1891 | <entry>-</entry> | ||
1892 | <entry>-</entry> | ||
1893 | <entry>-</entry> | ||
1894 | <entry>-</entry> | ||
1895 | <entry>-</entry> | ||
1896 | <entry>-</entry> | ||
1897 | <entry>-</entry> | ||
1898 | <entry>-</entry> | ||
1899 | <entry>-</entry> | ||
1900 | <entry>y<subscript>9</subscript></entry> | ||
1901 | <entry>y<subscript>8</subscript></entry> | ||
1902 | <entry>y<subscript>7</subscript></entry> | ||
1903 | <entry>y<subscript>6</subscript></entry> | ||
1904 | <entry>y<subscript>5</subscript></entry> | ||
1905 | <entry>y<subscript>4</subscript></entry> | ||
1906 | <entry>y<subscript>3</subscript></entry> | ||
1907 | <entry>y<subscript>2</subscript></entry> | ||
1908 | <entry>y<subscript>1</subscript></entry> | ||
1909 | <entry>y<subscript>0</subscript></entry> | ||
1910 | </row> | ||
1911 | <row id="V4L2-MBUS-FMT-YUYV10-2X10"> | ||
1912 | <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry> | ||
1913 | <entry>0x200b</entry> | ||
1914 | <entry></entry> | ||
1915 | <entry>-</entry> | ||
1916 | <entry>-</entry> | ||
1917 | <entry>-</entry> | ||
1918 | <entry>-</entry> | ||
1919 | <entry>-</entry> | ||
1920 | <entry>-</entry> | ||
1921 | <entry>-</entry> | ||
1922 | <entry>-</entry> | ||
1923 | <entry>-</entry> | ||
1924 | <entry>-</entry> | ||
1925 | <entry>y<subscript>9</subscript></entry> | ||
1926 | <entry>y<subscript>8</subscript></entry> | ||
1927 | <entry>y<subscript>7</subscript></entry> | ||
1928 | <entry>y<subscript>6</subscript></entry> | ||
1929 | <entry>y<subscript>5</subscript></entry> | ||
1930 | <entry>y<subscript>4</subscript></entry> | ||
1931 | <entry>y<subscript>3</subscript></entry> | ||
1932 | <entry>y<subscript>2</subscript></entry> | ||
1933 | <entry>y<subscript>1</subscript></entry> | ||
1934 | <entry>y<subscript>0</subscript></entry> | ||
1935 | </row> | ||
1936 | <row> | ||
1937 | <entry></entry> | ||
1938 | <entry></entry> | ||
1939 | <entry></entry> | ||
1940 | <entry>-</entry> | ||
1941 | <entry>-</entry> | ||
1942 | <entry>-</entry> | ||
1943 | <entry>-</entry> | ||
1944 | <entry>-</entry> | ||
1945 | <entry>-</entry> | ||
1946 | <entry>-</entry> | ||
1947 | <entry>-</entry> | ||
1948 | <entry>-</entry> | ||
1949 | <entry>-</entry> | ||
1950 | <entry>u<subscript>9</subscript></entry> | ||
1951 | <entry>u<subscript>8</subscript></entry> | ||
1952 | <entry>u<subscript>7</subscript></entry> | ||
1953 | <entry>u<subscript>6</subscript></entry> | ||
1954 | <entry>u<subscript>5</subscript></entry> | ||
1955 | <entry>u<subscript>4</subscript></entry> | ||
1956 | <entry>u<subscript>3</subscript></entry> | ||
1957 | <entry>u<subscript>2</subscript></entry> | ||
1958 | <entry>u<subscript>1</subscript></entry> | ||
1959 | <entry>u<subscript>0</subscript></entry> | ||
1960 | </row> | ||
1961 | <row> | ||
1962 | <entry></entry> | ||
1963 | <entry></entry> | ||
1964 | <entry></entry> | ||
1965 | <entry>-</entry> | ||
1966 | <entry>-</entry> | ||
1967 | <entry>-</entry> | ||
1968 | <entry>-</entry> | ||
1969 | <entry>-</entry> | ||
1970 | <entry>-</entry> | ||
1971 | <entry>-</entry> | ||
1972 | <entry>-</entry> | ||
1973 | <entry>-</entry> | ||
1974 | <entry>-</entry> | ||
1975 | <entry>y<subscript>9</subscript></entry> | ||
1976 | <entry>y<subscript>8</subscript></entry> | ||
1977 | <entry>y<subscript>7</subscript></entry> | ||
1978 | <entry>y<subscript>6</subscript></entry> | ||
1979 | <entry>y<subscript>5</subscript></entry> | ||
1980 | <entry>y<subscript>4</subscript></entry> | ||
1981 | <entry>y<subscript>3</subscript></entry> | ||
1982 | <entry>y<subscript>2</subscript></entry> | ||
1983 | <entry>y<subscript>1</subscript></entry> | ||
1984 | <entry>y<subscript>0</subscript></entry> | ||
1985 | </row> | ||
1986 | <row> | ||
1987 | <entry></entry> | ||
1988 | <entry></entry> | ||
1989 | <entry></entry> | ||
1990 | <entry>-</entry> | ||
1991 | <entry>-</entry> | ||
1992 | <entry>-</entry> | ||
1993 | <entry>-</entry> | ||
1994 | <entry>-</entry> | ||
1995 | <entry>-</entry> | ||
1996 | <entry>-</entry> | ||
1997 | <entry>-</entry> | ||
1998 | <entry>-</entry> | ||
1999 | <entry>-</entry> | ||
2000 | <entry>v<subscript>9</subscript></entry> | ||
2001 | <entry>v<subscript>8</subscript></entry> | ||
2002 | <entry>v<subscript>7</subscript></entry> | ||
2003 | <entry>v<subscript>6</subscript></entry> | ||
2004 | <entry>v<subscript>5</subscript></entry> | ||
2005 | <entry>v<subscript>4</subscript></entry> | ||
2006 | <entry>v<subscript>3</subscript></entry> | ||
2007 | <entry>v<subscript>2</subscript></entry> | ||
2008 | <entry>v<subscript>1</subscript></entry> | ||
2009 | <entry>v<subscript>0</subscript></entry> | ||
2010 | </row> | ||
2011 | <row id="V4L2-MBUS-FMT-YVYU10-2X10"> | ||
2012 | <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry> | ||
2013 | <entry>0x200c</entry> | ||
2014 | <entry></entry> | ||
2015 | <entry>-</entry> | ||
2016 | <entry>-</entry> | ||
2017 | <entry>-</entry> | ||
2018 | <entry>-</entry> | ||
2019 | <entry>-</entry> | ||
2020 | <entry>-</entry> | ||
2021 | <entry>-</entry> | ||
2022 | <entry>-</entry> | ||
2023 | <entry>-</entry> | ||
2024 | <entry>-</entry> | ||
2025 | <entry>y<subscript>9</subscript></entry> | ||
2026 | <entry>y<subscript>8</subscript></entry> | ||
2027 | <entry>y<subscript>7</subscript></entry> | ||
2028 | <entry>y<subscript>6</subscript></entry> | ||
2029 | <entry>y<subscript>5</subscript></entry> | ||
2030 | <entry>y<subscript>4</subscript></entry> | ||
2031 | <entry>y<subscript>3</subscript></entry> | ||
2032 | <entry>y<subscript>2</subscript></entry> | ||
2033 | <entry>y<subscript>1</subscript></entry> | ||
2034 | <entry>y<subscript>0</subscript></entry> | ||
2035 | </row> | ||
2036 | <row> | ||
2037 | <entry></entry> | ||
2038 | <entry></entry> | ||
2039 | <entry></entry> | ||
2040 | <entry>-</entry> | ||
2041 | <entry>-</entry> | ||
2042 | <entry>-</entry> | ||
2043 | <entry>-</entry> | ||
2044 | <entry>-</entry> | ||
2045 | <entry>-</entry> | ||
2046 | <entry>-</entry> | ||
2047 | <entry>-</entry> | ||
2048 | <entry>-</entry> | ||
2049 | <entry>-</entry> | ||
2050 | <entry>v<subscript>9</subscript></entry> | ||
2051 | <entry>v<subscript>8</subscript></entry> | ||
2052 | <entry>v<subscript>7</subscript></entry> | ||
2053 | <entry>v<subscript>6</subscript></entry> | ||
2054 | <entry>v<subscript>5</subscript></entry> | ||
2055 | <entry>v<subscript>4</subscript></entry> | ||
2056 | <entry>v<subscript>3</subscript></entry> | ||
2057 | <entry>v<subscript>2</subscript></entry> | ||
2058 | <entry>v<subscript>1</subscript></entry> | ||
2059 | <entry>v<subscript>0</subscript></entry> | ||
2060 | </row> | ||
2061 | <row> | ||
2062 | <entry></entry> | ||
2063 | <entry></entry> | ||
2064 | <entry></entry> | ||
2065 | <entry>-</entry> | ||
2066 | <entry>-</entry> | ||
2067 | <entry>-</entry> | ||
2068 | <entry>-</entry> | ||
2069 | <entry>-</entry> | ||
2070 | <entry>-</entry> | ||
2071 | <entry>-</entry> | ||
2072 | <entry>-</entry> | ||
2073 | <entry>-</entry> | ||
2074 | <entry>-</entry> | ||
2075 | <entry>y<subscript>9</subscript></entry> | ||
2076 | <entry>y<subscript>8</subscript></entry> | ||
2077 | <entry>y<subscript>7</subscript></entry> | ||
2078 | <entry>y<subscript>6</subscript></entry> | ||
2079 | <entry>y<subscript>5</subscript></entry> | ||
2080 | <entry>y<subscript>4</subscript></entry> | ||
2081 | <entry>y<subscript>3</subscript></entry> | ||
2082 | <entry>y<subscript>2</subscript></entry> | ||
2083 | <entry>y<subscript>1</subscript></entry> | ||
2084 | <entry>y<subscript>0</subscript></entry> | ||
2085 | </row> | ||
2086 | <row> | ||
2087 | <entry></entry> | ||
2088 | <entry></entry> | ||
2089 | <entry></entry> | ||
2090 | <entry>-</entry> | ||
2091 | <entry>-</entry> | ||
2092 | <entry>-</entry> | ||
2093 | <entry>-</entry> | ||
2094 | <entry>-</entry> | ||
2095 | <entry>-</entry> | ||
2096 | <entry>-</entry> | ||
2097 | <entry>-</entry> | ||
2098 | <entry>-</entry> | ||
2099 | <entry>-</entry> | ||
2100 | <entry>u<subscript>9</subscript></entry> | ||
2101 | <entry>u<subscript>8</subscript></entry> | ||
2102 | <entry>u<subscript>7</subscript></entry> | ||
2103 | <entry>u<subscript>6</subscript></entry> | ||
2104 | <entry>u<subscript>5</subscript></entry> | ||
2105 | <entry>u<subscript>4</subscript></entry> | ||
2106 | <entry>u<subscript>3</subscript></entry> | ||
2107 | <entry>u<subscript>2</subscript></entry> | ||
2108 | <entry>u<subscript>1</subscript></entry> | ||
2109 | <entry>u<subscript>0</subscript></entry> | ||
2110 | </row> | ||
2111 | <row id="V4L2-MBUS-FMT-UYVY8-1X16"> | ||
2112 | <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry> | ||
2113 | <entry>0x200f</entry> | ||
2114 | <entry></entry> | ||
2115 | <entry>-</entry> | ||
2116 | <entry>-</entry> | ||
2117 | <entry>-</entry> | ||
2118 | <entry>-</entry> | ||
2119 | <entry>u<subscript>7</subscript></entry> | ||
2120 | <entry>u<subscript>6</subscript></entry> | ||
2121 | <entry>u<subscript>5</subscript></entry> | ||
2122 | <entry>u<subscript>4</subscript></entry> | ||
2123 | <entry>u<subscript>3</subscript></entry> | ||
2124 | <entry>u<subscript>2</subscript></entry> | ||
2125 | <entry>u<subscript>1</subscript></entry> | ||
2126 | <entry>u<subscript>0</subscript></entry> | ||
2127 | <entry>y<subscript>7</subscript></entry> | ||
2128 | <entry>y<subscript>6</subscript></entry> | ||
2129 | <entry>y<subscript>5</subscript></entry> | ||
2130 | <entry>y<subscript>4</subscript></entry> | ||
2131 | <entry>y<subscript>3</subscript></entry> | ||
2132 | <entry>y<subscript>2</subscript></entry> | ||
2133 | <entry>y<subscript>1</subscript></entry> | ||
2134 | <entry>y<subscript>0</subscript></entry> | ||
2135 | </row> | ||
2136 | <row> | ||
2137 | <entry></entry> | ||
2138 | <entry></entry> | ||
2139 | <entry></entry> | ||
2140 | <entry>-</entry> | ||
2141 | <entry>-</entry> | ||
2142 | <entry>-</entry> | ||
2143 | <entry>-</entry> | ||
2144 | <entry>v<subscript>7</subscript></entry> | ||
2145 | <entry>v<subscript>6</subscript></entry> | ||
2146 | <entry>v<subscript>5</subscript></entry> | ||
2147 | <entry>v<subscript>4</subscript></entry> | ||
2148 | <entry>v<subscript>3</subscript></entry> | ||
2149 | <entry>v<subscript>2</subscript></entry> | ||
2150 | <entry>v<subscript>1</subscript></entry> | ||
2151 | <entry>v<subscript>0</subscript></entry> | ||
2152 | <entry>y<subscript>7</subscript></entry> | ||
2153 | <entry>y<subscript>6</subscript></entry> | ||
2154 | <entry>y<subscript>5</subscript></entry> | ||
2155 | <entry>y<subscript>4</subscript></entry> | ||
2156 | <entry>y<subscript>3</subscript></entry> | ||
2157 | <entry>y<subscript>2</subscript></entry> | ||
2158 | <entry>y<subscript>1</subscript></entry> | ||
2159 | <entry>y<subscript>0</subscript></entry> | ||
2160 | </row> | ||
2161 | <row id="V4L2-MBUS-FMT-VYUY8-1X16"> | ||
2162 | <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry> | ||
2163 | <entry>0x2010</entry> | ||
2164 | <entry></entry> | ||
2165 | <entry>-</entry> | ||
2166 | <entry>-</entry> | ||
2167 | <entry>-</entry> | ||
2168 | <entry>-</entry> | ||
2169 | <entry>v<subscript>7</subscript></entry> | ||
2170 | <entry>v<subscript>6</subscript></entry> | ||
2171 | <entry>v<subscript>5</subscript></entry> | ||
2172 | <entry>v<subscript>4</subscript></entry> | ||
2173 | <entry>v<subscript>3</subscript></entry> | ||
2174 | <entry>v<subscript>2</subscript></entry> | ||
2175 | <entry>v<subscript>1</subscript></entry> | ||
2176 | <entry>v<subscript>0</subscript></entry> | ||
2177 | <entry>y<subscript>7</subscript></entry> | ||
2178 | <entry>y<subscript>6</subscript></entry> | ||
2179 | <entry>y<subscript>5</subscript></entry> | ||
2180 | <entry>y<subscript>4</subscript></entry> | ||
2181 | <entry>y<subscript>3</subscript></entry> | ||
2182 | <entry>y<subscript>2</subscript></entry> | ||
2183 | <entry>y<subscript>1</subscript></entry> | ||
2184 | <entry>y<subscript>0</subscript></entry> | ||
2185 | </row> | ||
2186 | <row> | ||
2187 | <entry></entry> | ||
2188 | <entry></entry> | ||
2189 | <entry></entry> | ||
2190 | <entry>-</entry> | ||
2191 | <entry>-</entry> | ||
2192 | <entry>-</entry> | ||
2193 | <entry>-</entry> | ||
2194 | <entry>u<subscript>7</subscript></entry> | ||
2195 | <entry>u<subscript>6</subscript></entry> | ||
2196 | <entry>u<subscript>5</subscript></entry> | ||
2197 | <entry>u<subscript>4</subscript></entry> | ||
2198 | <entry>u<subscript>3</subscript></entry> | ||
2199 | <entry>u<subscript>2</subscript></entry> | ||
2200 | <entry>u<subscript>1</subscript></entry> | ||
2201 | <entry>u<subscript>0</subscript></entry> | ||
2202 | <entry>y<subscript>7</subscript></entry> | ||
2203 | <entry>y<subscript>6</subscript></entry> | ||
2204 | <entry>y<subscript>5</subscript></entry> | ||
2205 | <entry>y<subscript>4</subscript></entry> | ||
2206 | <entry>y<subscript>3</subscript></entry> | ||
2207 | <entry>y<subscript>2</subscript></entry> | ||
2208 | <entry>y<subscript>1</subscript></entry> | ||
2209 | <entry>y<subscript>0</subscript></entry> | ||
2210 | </row> | ||
2211 | <row id="V4L2-MBUS-FMT-YUYV8-1X16"> | ||
2212 | <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry> | ||
2213 | <entry>0x2011</entry> | ||
2214 | <entry></entry> | ||
2215 | <entry>-</entry> | ||
2216 | <entry>-</entry> | ||
2217 | <entry>-</entry> | ||
2218 | <entry>-</entry> | ||
2219 | <entry>y<subscript>7</subscript></entry> | ||
2220 | <entry>y<subscript>6</subscript></entry> | ||
2221 | <entry>y<subscript>5</subscript></entry> | ||
2222 | <entry>y<subscript>4</subscript></entry> | ||
2223 | <entry>y<subscript>3</subscript></entry> | ||
2224 | <entry>y<subscript>2</subscript></entry> | ||
2225 | <entry>y<subscript>1</subscript></entry> | ||
2226 | <entry>y<subscript>0</subscript></entry> | ||
2227 | <entry>u<subscript>7</subscript></entry> | ||
2228 | <entry>u<subscript>6</subscript></entry> | ||
2229 | <entry>u<subscript>5</subscript></entry> | ||
2230 | <entry>u<subscript>4</subscript></entry> | ||
2231 | <entry>u<subscript>3</subscript></entry> | ||
2232 | <entry>u<subscript>2</subscript></entry> | ||
2233 | <entry>u<subscript>1</subscript></entry> | ||
2234 | <entry>u<subscript>0</subscript></entry> | ||
2235 | </row> | ||
2236 | <row> | ||
2237 | <entry></entry> | ||
2238 | <entry></entry> | ||
2239 | <entry></entry> | ||
2240 | <entry>-</entry> | ||
2241 | <entry>-</entry> | ||
2242 | <entry>-</entry> | ||
2243 | <entry>-</entry> | ||
2244 | <entry>y<subscript>7</subscript></entry> | ||
2245 | <entry>y<subscript>6</subscript></entry> | ||
2246 | <entry>y<subscript>5</subscript></entry> | ||
2247 | <entry>y<subscript>4</subscript></entry> | ||
2248 | <entry>y<subscript>3</subscript></entry> | ||
2249 | <entry>y<subscript>2</subscript></entry> | ||
2250 | <entry>y<subscript>1</subscript></entry> | ||
2251 | <entry>y<subscript>0</subscript></entry> | ||
2252 | <entry>v<subscript>7</subscript></entry> | ||
2253 | <entry>v<subscript>6</subscript></entry> | ||
2254 | <entry>v<subscript>5</subscript></entry> | ||
2255 | <entry>v<subscript>4</subscript></entry> | ||
2256 | <entry>v<subscript>3</subscript></entry> | ||
2257 | <entry>v<subscript>2</subscript></entry> | ||
2258 | <entry>v<subscript>1</subscript></entry> | ||
2259 | <entry>v<subscript>0</subscript></entry> | ||
2260 | </row> | ||
2261 | <row id="V4L2-MBUS-FMT-YVYU8-1X16"> | ||
2262 | <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry> | ||
2263 | <entry>0x2012</entry> | ||
2264 | <entry></entry> | ||
2265 | <entry>-</entry> | ||
2266 | <entry>-</entry> | ||
2267 | <entry>-</entry> | ||
2268 | <entry>-</entry> | ||
2269 | <entry>y<subscript>7</subscript></entry> | ||
2270 | <entry>y<subscript>6</subscript></entry> | ||
2271 | <entry>y<subscript>5</subscript></entry> | ||
2272 | <entry>y<subscript>4</subscript></entry> | ||
2273 | <entry>y<subscript>3</subscript></entry> | ||
2274 | <entry>y<subscript>2</subscript></entry> | ||
2275 | <entry>y<subscript>1</subscript></entry> | ||
2276 | <entry>y<subscript>0</subscript></entry> | ||
2277 | <entry>v<subscript>7</subscript></entry> | ||
2278 | <entry>v<subscript>6</subscript></entry> | ||
2279 | <entry>v<subscript>5</subscript></entry> | ||
2280 | <entry>v<subscript>4</subscript></entry> | ||
2281 | <entry>v<subscript>3</subscript></entry> | ||
2282 | <entry>v<subscript>2</subscript></entry> | ||
2283 | <entry>v<subscript>1</subscript></entry> | ||
2284 | <entry>v<subscript>0</subscript></entry> | ||
2285 | </row> | ||
2286 | <row> | ||
2287 | <entry></entry> | ||
2288 | <entry></entry> | ||
2289 | <entry></entry> | ||
2290 | <entry>-</entry> | ||
2291 | <entry>-</entry> | ||
2292 | <entry>-</entry> | ||
2293 | <entry>-</entry> | ||
2294 | <entry>y<subscript>7</subscript></entry> | ||
2295 | <entry>y<subscript>6</subscript></entry> | ||
2296 | <entry>y<subscript>5</subscript></entry> | ||
2297 | <entry>y<subscript>4</subscript></entry> | ||
2298 | <entry>y<subscript>3</subscript></entry> | ||
2299 | <entry>y<subscript>2</subscript></entry> | ||
2300 | <entry>y<subscript>1</subscript></entry> | ||
2301 | <entry>y<subscript>0</subscript></entry> | ||
2302 | <entry>u<subscript>7</subscript></entry> | ||
2303 | <entry>u<subscript>6</subscript></entry> | ||
2304 | <entry>u<subscript>5</subscript></entry> | ||
2305 | <entry>u<subscript>4</subscript></entry> | ||
2306 | <entry>u<subscript>3</subscript></entry> | ||
2307 | <entry>u<subscript>2</subscript></entry> | ||
2308 | <entry>u<subscript>1</subscript></entry> | ||
2309 | <entry>u<subscript>0</subscript></entry> | ||
2310 | </row> | ||
2311 | <row id="V4L2-MBUS-FMT-YUYV10-1X20"> | ||
2312 | <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry> | ||
2313 | <entry>0x200d</entry> | ||
2314 | <entry></entry> | ||
2315 | <entry>y<subscript>9</subscript></entry> | ||
2316 | <entry>y<subscript>8</subscript></entry> | ||
2317 | <entry>y<subscript>7</subscript></entry> | ||
2318 | <entry>y<subscript>6</subscript></entry> | ||
2319 | <entry>y<subscript>5</subscript></entry> | ||
2320 | <entry>y<subscript>4</subscript></entry> | ||
2321 | <entry>y<subscript>3</subscript></entry> | ||
2322 | <entry>y<subscript>2</subscript></entry> | ||
2323 | <entry>y<subscript>1</subscript></entry> | ||
2324 | <entry>y<subscript>0</subscript></entry> | ||
2325 | <entry>u<subscript>9</subscript></entry> | ||
2326 | <entry>u<subscript>8</subscript></entry> | ||
2327 | <entry>u<subscript>7</subscript></entry> | ||
2328 | <entry>u<subscript>6</subscript></entry> | ||
2329 | <entry>u<subscript>5</subscript></entry> | ||
2330 | <entry>u<subscript>4</subscript></entry> | ||
2331 | <entry>u<subscript>3</subscript></entry> | ||
2332 | <entry>u<subscript>2</subscript></entry> | ||
2333 | <entry>u<subscript>1</subscript></entry> | ||
2334 | <entry>u<subscript>0</subscript></entry> | ||
2335 | </row> | ||
2336 | <row> | ||
2337 | <entry></entry> | ||
2338 | <entry></entry> | ||
2339 | <entry></entry> | ||
2340 | <entry>y<subscript>9</subscript></entry> | ||
2341 | <entry>y<subscript>8</subscript></entry> | ||
2342 | <entry>y<subscript>7</subscript></entry> | ||
2343 | <entry>y<subscript>6</subscript></entry> | ||
2344 | <entry>y<subscript>5</subscript></entry> | ||
2345 | <entry>y<subscript>4</subscript></entry> | ||
2346 | <entry>y<subscript>3</subscript></entry> | ||
2347 | <entry>y<subscript>2</subscript></entry> | ||
2348 | <entry>y<subscript>1</subscript></entry> | ||
2349 | <entry>y<subscript>0</subscript></entry> | ||
2350 | <entry>v<subscript>9</subscript></entry> | ||
2351 | <entry>v<subscript>8</subscript></entry> | ||
2352 | <entry>v<subscript>7</subscript></entry> | ||
2353 | <entry>v<subscript>6</subscript></entry> | ||
2354 | <entry>v<subscript>5</subscript></entry> | ||
2355 | <entry>v<subscript>4</subscript></entry> | ||
2356 | <entry>v<subscript>3</subscript></entry> | ||
2357 | <entry>v<subscript>2</subscript></entry> | ||
2358 | <entry>v<subscript>1</subscript></entry> | ||
2359 | <entry>v<subscript>0</subscript></entry> | ||
2360 | </row> | ||
2361 | <row id="V4L2-MBUS-FMT-YVYU10-1X20"> | ||
2362 | <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry> | ||
2363 | <entry>0x200e</entry> | ||
2364 | <entry></entry> | ||
2365 | <entry>y<subscript>9</subscript></entry> | ||
2366 | <entry>y<subscript>8</subscript></entry> | ||
2367 | <entry>y<subscript>7</subscript></entry> | ||
2368 | <entry>y<subscript>6</subscript></entry> | ||
2369 | <entry>y<subscript>5</subscript></entry> | ||
2370 | <entry>y<subscript>4</subscript></entry> | ||
2371 | <entry>y<subscript>3</subscript></entry> | ||
2372 | <entry>y<subscript>2</subscript></entry> | ||
2373 | <entry>y<subscript>1</subscript></entry> | ||
2374 | <entry>y<subscript>0</subscript></entry> | ||
2375 | <entry>v<subscript>9</subscript></entry> | ||
2376 | <entry>v<subscript>8</subscript></entry> | ||
2377 | <entry>v<subscript>7</subscript></entry> | ||
2378 | <entry>v<subscript>6</subscript></entry> | ||
2379 | <entry>v<subscript>5</subscript></entry> | ||
2380 | <entry>v<subscript>4</subscript></entry> | ||
2381 | <entry>v<subscript>3</subscript></entry> | ||
2382 | <entry>v<subscript>2</subscript></entry> | ||
2383 | <entry>v<subscript>1</subscript></entry> | ||
2384 | <entry>v<subscript>0</subscript></entry> | ||
2385 | </row> | ||
2386 | <row> | ||
2387 | <entry></entry> | ||
2388 | <entry></entry> | ||
2389 | <entry></entry> | ||
2390 | <entry>y<subscript>9</subscript></entry> | ||
2391 | <entry>y<subscript>8</subscript></entry> | ||
2392 | <entry>y<subscript>7</subscript></entry> | ||
2393 | <entry>y<subscript>6</subscript></entry> | ||
2394 | <entry>y<subscript>5</subscript></entry> | ||
2395 | <entry>y<subscript>4</subscript></entry> | ||
2396 | <entry>y<subscript>3</subscript></entry> | ||
2397 | <entry>y<subscript>2</subscript></entry> | ||
2398 | <entry>y<subscript>1</subscript></entry> | ||
2399 | <entry>y<subscript>0</subscript></entry> | ||
2400 | <entry>u<subscript>9</subscript></entry> | ||
2401 | <entry>u<subscript>8</subscript></entry> | ||
2402 | <entry>u<subscript>7</subscript></entry> | ||
2403 | <entry>u<subscript>6</subscript></entry> | ||
2404 | <entry>u<subscript>5</subscript></entry> | ||
2405 | <entry>u<subscript>4</subscript></entry> | ||
2406 | <entry>u<subscript>3</subscript></entry> | ||
2407 | <entry>u<subscript>2</subscript></entry> | ||
2408 | <entry>u<subscript>1</subscript></entry> | ||
2409 | <entry>u<subscript>0</subscript></entry> | ||
2410 | </row> | ||
2411 | </tbody> | ||
2412 | </tgroup> | ||
2413 | </table> | ||
2414 | </section> | ||
2415 | </section> | ||
2416 | </section> | ||
diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/v4l/v4l2.xml index 7859d7d9da39..2ada2f86bb54 100644 --- a/Documentation/DocBook/v4l/v4l2.xml +++ b/Documentation/DocBook/v4l/v4l2.xml | |||
@@ -439,6 +439,7 @@ and discussions on the V4L mailing list.</revremark> | |||
439 | <section id="radio"> &sub-dev-radio; </section> | 439 | <section id="radio"> &sub-dev-radio; </section> |
440 | <section id="rds"> &sub-dev-rds; </section> | 440 | <section id="rds"> &sub-dev-rds; </section> |
441 | <section id="event"> &sub-dev-event; </section> | 441 | <section id="event"> &sub-dev-event; </section> |
442 | <section id="subdev"> &sub-dev-subdev; </section> | ||
442 | </chapter> | 443 | </chapter> |
443 | 444 | ||
444 | <chapter id="driver"> | 445 | <chapter id="driver"> |
@@ -506,6 +507,9 @@ and discussions on the V4L mailing list.</revremark> | |||
506 | &sub-reqbufs; | 507 | &sub-reqbufs; |
507 | &sub-s-hw-freq-seek; | 508 | &sub-s-hw-freq-seek; |
508 | &sub-streamon; | 509 | &sub-streamon; |
510 | &sub-subdev-enum-frame-size; | ||
511 | &sub-subdev-enum-mbus-code; | ||
512 | &sub-subdev-g-fmt; | ||
509 | &sub-subscribe-event; | 513 | &sub-subscribe-event; |
510 | <!-- End of ioctls. --> | 514 | <!-- End of ioctls. --> |
511 | &sub-mmap; | 515 | &sub-mmap; |
diff --git a/Documentation/DocBook/v4l/vidioc-streamon.xml b/Documentation/DocBook/v4l/vidioc-streamon.xml index e42bff1f2c0a..75ed39bf4d2b 100644 --- a/Documentation/DocBook/v4l/vidioc-streamon.xml +++ b/Documentation/DocBook/v4l/vidioc-streamon.xml | |||
@@ -93,6 +93,15 @@ synchronize with other events.</para> | |||
93 | been allocated (memory mapping) or enqueued (output) yet.</para> | 93 | been allocated (memory mapping) or enqueued (output) yet.</para> |
94 | </listitem> | 94 | </listitem> |
95 | </varlistentry> | 95 | </varlistentry> |
96 | <varlistentry> | ||
97 | <term><errorcode>EPIPE</errorcode></term> | ||
98 | <listitem> | ||
99 | <para>The driver implements <link | ||
100 | linkend="pad-level-formats">pad-level format configuration</link> and | ||
101 | the pipeline configuration is invalid. | ||
102 | </para> | ||
103 | </listitem> | ||
104 | </varlistentry> | ||
96 | </variablelist> | 105 | </variablelist> |
97 | </refsect1> | 106 | </refsect1> |
98 | </refentry> | 107 | </refentry> |
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml new file mode 100644 index 000000000000..79ce42b7c60c --- /dev/null +++ b/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml | |||
@@ -0,0 +1,154 @@ | |||
1 | <refentry id="vidioc-subdev-enum-frame-size"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refname> | ||
9 | <refpurpose>Enumerate media bus frame sizes</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_subdev_frame_size_enum * | ||
19 | <parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</para> | ||
38 | </listitem> | ||
39 | </varlistentry> | ||
40 | <varlistentry> | ||
41 | <term><parameter>argp</parameter></term> | ||
42 | <listitem> | ||
43 | <para></para> | ||
44 | </listitem> | ||
45 | </varlistentry> | ||
46 | </variablelist> | ||
47 | </refsect1> | ||
48 | |||
49 | <refsect1> | ||
50 | <title>Description</title> | ||
51 | |||
52 | <note> | ||
53 | <title>Experimental</title> | ||
54 | <para>This is an <link linkend="experimental">experimental</link> | ||
55 | interface and may change in the future.</para> | ||
56 | </note> | ||
57 | |||
58 | <para>This ioctl allows applications to enumerate all frame sizes | ||
59 | supported by a sub-device on the given pad for the given media bus format. | ||
60 | Supported formats can be retrieved with the &VIDIOC-SUBDEV-ENUM-MBUS-CODE; | ||
61 | ioctl.</para> | ||
62 | |||
63 | <para>To enumerate frame sizes applications initialize the | ||
64 | <structfield>pad</structfield>, <structfield>code</structfield> and | ||
65 | <structfield>index</structfield> fields of the | ||
66 | &v4l2-subdev-mbus-code-enum; and call the | ||
67 | <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to | ||
68 | the structure. Drivers fill the minimum and maximum frame sizes or return | ||
69 | an &EINVAL; if one of the input parameters is invalid.</para> | ||
70 | |||
71 | <para>Sub-devices that only support discrete frame sizes (such as most | ||
72 | sensors) will return one or more frame sizes with identical minimum and | ||
73 | maximum values.</para> | ||
74 | |||
75 | <para>Not all possible sizes in given [minimum, maximum] ranges need to be | ||
76 | supported. For instance, a scaler that uses a fixed-point scaling ratio | ||
77 | might not be able to produce every frame size between the minimum and | ||
78 | maximum values. Applications must use the &VIDIOC-SUBDEV-S-FMT; ioctl to | ||
79 | try the sub-device for an exact supported frame size.</para> | ||
80 | |||
81 | <para>Available frame sizes may depend on the current 'try' formats at other | ||
82 | pads of the sub-device, as well as on the current active links and the | ||
83 | current values of V4L2 controls. See &VIDIOC-SUBDEV-G-FMT; for more | ||
84 | information about try formats.</para> | ||
85 | |||
86 | <table pgwide="1" frame="none" id="v4l2-subdev-frame-size-enum"> | ||
87 | <title>struct <structname>v4l2_subdev_frame_size_enum</structname></title> | ||
88 | <tgroup cols="3"> | ||
89 | &cs-str; | ||
90 | <tbody valign="top"> | ||
91 | <row> | ||
92 | <entry>__u32</entry> | ||
93 | <entry><structfield>index</structfield></entry> | ||
94 | <entry>Number of the format in the enumeration, set by the | ||
95 | application.</entry> | ||
96 | </row> | ||
97 | <row> | ||
98 | <entry>__u32</entry> | ||
99 | <entry><structfield>pad</structfield></entry> | ||
100 | <entry>Pad number as reported by the media controller API.</entry> | ||
101 | </row> | ||
102 | <row> | ||
103 | <entry>__u32</entry> | ||
104 | <entry><structfield>code</structfield></entry> | ||
105 | <entry>The media bus format code, as defined in | ||
106 | <xref linkend="v4l2-mbus-format" />.</entry> | ||
107 | </row> | ||
108 | <row> | ||
109 | <entry>__u32</entry> | ||
110 | <entry><structfield>min_width</structfield></entry> | ||
111 | <entry>Minimum frame width, in pixels.</entry> | ||
112 | </row> | ||
113 | <row> | ||
114 | <entry>__u32</entry> | ||
115 | <entry><structfield>max_width</structfield></entry> | ||
116 | <entry>Maximum frame width, in pixels.</entry> | ||
117 | </row> | ||
118 | <row> | ||
119 | <entry>__u32</entry> | ||
120 | <entry><structfield>min_height</structfield></entry> | ||
121 | <entry>Minimum frame height, in pixels.</entry> | ||
122 | </row> | ||
123 | <row> | ||
124 | <entry>__u32</entry> | ||
125 | <entry><structfield>max_height</structfield></entry> | ||
126 | <entry>Maximum frame height, in pixels.</entry> | ||
127 | </row> | ||
128 | <row> | ||
129 | <entry>__u32</entry> | ||
130 | <entry><structfield>reserved</structfield>[9]</entry> | ||
131 | <entry>Reserved for future extensions. Applications and drivers must | ||
132 | set the array to zero.</entry> | ||
133 | </row> | ||
134 | </tbody> | ||
135 | </tgroup> | ||
136 | </table> | ||
137 | </refsect1> | ||
138 | |||
139 | <refsect1> | ||
140 | &return-value; | ||
141 | |||
142 | <variablelist> | ||
143 | <varlistentry> | ||
144 | <term><errorcode>EINVAL</errorcode></term> | ||
145 | <listitem> | ||
146 | <para>The &v4l2-subdev-frame-size-enum; <structfield>pad</structfield> | ||
147 | references a non-existing pad, the <structfield>code</structfield> is | ||
148 | invalid for the given pad or the <structfield>index</structfield> | ||
149 | field is out of bounds.</para> | ||
150 | </listitem> | ||
151 | </varlistentry> | ||
152 | </variablelist> | ||
153 | </refsect1> | ||
154 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml new file mode 100644 index 000000000000..a6b3432449f6 --- /dev/null +++ b/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml | |||
@@ -0,0 +1,119 @@ | |||
1 | <refentry id="vidioc-subdev-enum-mbus-code"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBDEV_ENUM_MBUS_CODE</refname> | ||
9 | <refpurpose>Enumerate media bus formats</refpurpose> | ||
10 | </refnamediv> | ||
11 | |||
12 | <refsynopsisdiv> | ||
13 | <funcsynopsis> | ||
14 | <funcprototype> | ||
15 | <funcdef>int <function>ioctl</function></funcdef> | ||
16 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
17 | <paramdef>int <parameter>request</parameter></paramdef> | ||
18 | <paramdef>struct v4l2_subdev_mbus_code_enum * | ||
19 | <parameter>argp</parameter></paramdef> | ||
20 | </funcprototype> | ||
21 | </funcsynopsis> | ||
22 | </refsynopsisdiv> | ||
23 | |||
24 | <refsect1> | ||
25 | <title>Arguments</title> | ||
26 | |||
27 | <variablelist> | ||
28 | <varlistentry> | ||
29 | <term><parameter>fd</parameter></term> | ||
30 | <listitem> | ||
31 | <para>&fd;</para> | ||
32 | </listitem> | ||
33 | </varlistentry> | ||
34 | <varlistentry> | ||
35 | <term><parameter>request</parameter></term> | ||
36 | <listitem> | ||
37 | <para>VIDIOC_SUBDEV_ENUM_MBUS_CODE</para> | ||
38 | </listitem> | ||
39 | </varlistentry> | ||
40 | <varlistentry> | ||
41 | <term><parameter>argp</parameter></term> | ||
42 | <listitem> | ||
43 | <para></para> | ||
44 | </listitem> | ||
45 | </varlistentry> | ||
46 | </variablelist> | ||
47 | </refsect1> | ||
48 | |||
49 | <refsect1> | ||
50 | <title>Description</title> | ||
51 | |||
52 | <note> | ||
53 | <title>Experimental</title> | ||
54 | <para>This is an <link linkend="experimental">experimental</link> | ||
55 | interface and may change in the future.</para> | ||
56 | </note> | ||
57 | |||
58 | <para>To enumerate media bus formats available at a given sub-device pad | ||
59 | applications initialize the <structfield>pad</structfield> and | ||
60 | <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and | ||
61 | call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a | ||
62 | pointer to this structure. Drivers fill the rest of the structure or return | ||
63 | an &EINVAL; if either the <structfield>pad</structfield> or | ||
64 | <structfield>index</structfield> are invalid. All media bus formats are | ||
65 | enumerable by beginning at index zero and incrementing by one until | ||
66 | <errorcode>EINVAL</errorcode> is returned.</para> | ||
67 | |||
68 | <para>Available media bus formats may depend on the current 'try' formats | ||
69 | at other pads of the sub-device, as well as on the current active links. See | ||
70 | &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para> | ||
71 | |||
72 | <table pgwide="1" frame="none" id="v4l2-subdev-mbus-code-enum"> | ||
73 | <title>struct <structname>v4l2_subdev_mbus_code_enum</structname></title> | ||
74 | <tgroup cols="3"> | ||
75 | &cs-str; | ||
76 | <tbody valign="top"> | ||
77 | <row> | ||
78 | <entry>__u32</entry> | ||
79 | <entry><structfield>pad</structfield></entry> | ||
80 | <entry>Pad number as reported by the media controller API.</entry> | ||
81 | </row> | ||
82 | <row> | ||
83 | <entry>__u32</entry> | ||
84 | <entry><structfield>index</structfield></entry> | ||
85 | <entry>Number of the format in the enumeration, set by the | ||
86 | application.</entry> | ||
87 | </row> | ||
88 | <row> | ||
89 | <entry>__u32</entry> | ||
90 | <entry><structfield>code</structfield></entry> | ||
91 | <entry>The media bus format code, as defined in | ||
92 | <xref linkend="v4l2-mbus-format" />.</entry> | ||
93 | </row> | ||
94 | <row> | ||
95 | <entry>__u32</entry> | ||
96 | <entry><structfield>reserved</structfield>[9]</entry> | ||
97 | <entry>Reserved for future extensions. Applications and drivers must | ||
98 | set the array to zero.</entry> | ||
99 | </row> | ||
100 | </tbody> | ||
101 | </tgroup> | ||
102 | </table> | ||
103 | </refsect1> | ||
104 | |||
105 | <refsect1> | ||
106 | &return-value; | ||
107 | |||
108 | <variablelist> | ||
109 | <varlistentry> | ||
110 | <term><errorcode>EINVAL</errorcode></term> | ||
111 | <listitem> | ||
112 | <para>The &v4l2-subdev-mbus-code-enum; <structfield>pad</structfield> | ||
113 | references a non-existing pad, or the <structfield>index</structfield> | ||
114 | field is out of bounds.</para> | ||
115 | </listitem> | ||
116 | </varlistentry> | ||
117 | </variablelist> | ||
118 | </refsect1> | ||
119 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml new file mode 100644 index 000000000000..f367c570c530 --- /dev/null +++ b/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml | |||
@@ -0,0 +1,180 @@ | |||
1 | <refentry id="vidioc-subdev-g-fmt"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | |||
7 | <refnamediv> | ||
8 | <refname>VIDIOC_SUBDEV_G_FMT</refname> | ||
9 | <refname>VIDIOC_SUBDEV_S_FMT</refname> | ||
10 | <refpurpose>Get or set the data format on a subdev pad</refpurpose> | ||
11 | </refnamediv> | ||
12 | |||
13 | <refsynopsisdiv> | ||
14 | <funcsynopsis> | ||
15 | <funcprototype> | ||
16 | <funcdef>int <function>ioctl</function></funcdef> | ||
17 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
18 | <paramdef>int <parameter>request</parameter></paramdef> | ||
19 | <paramdef>struct v4l2_subdev_format *<parameter>argp</parameter> | ||
20 | </paramdef> | ||
21 | </funcprototype> | ||
22 | </funcsynopsis> | ||
23 | </refsynopsisdiv> | ||
24 | |||
25 | <refsect1> | ||
26 | <title>Arguments</title> | ||
27 | |||
28 | <variablelist> | ||
29 | <varlistentry> | ||
30 | <term><parameter>fd</parameter></term> | ||
31 | <listitem> | ||
32 | <para>&fd;</para> | ||
33 | </listitem> | ||
34 | </varlistentry> | ||
35 | <varlistentry> | ||
36 | <term><parameter>request</parameter></term> | ||
37 | <listitem> | ||
38 | <para>VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</para> | ||
39 | </listitem> | ||
40 | </varlistentry> | ||
41 | <varlistentry> | ||
42 | <term><parameter>argp</parameter></term> | ||
43 | <listitem> | ||
44 | <para></para> | ||
45 | </listitem> | ||
46 | </varlistentry> | ||
47 | </variablelist> | ||
48 | </refsect1> | ||
49 | |||
50 | <refsect1> | ||
51 | <title>Description</title> | ||
52 | |||
53 | <note> | ||
54 | <title>Experimental</title> | ||
55 | <para>This is an <link linkend="experimental">experimental</link> | ||
56 | interface and may change in the future.</para> | ||
57 | </note> | ||
58 | |||
59 | <para>These ioctls are used to negotiate the frame format at specific | ||
60 | subdev pads in the image pipeline.</para> | ||
61 | |||
62 | <para>To retrieve the current format applications set the | ||
63 | <structfield>pad</structfield> field of a &v4l2-subdev-format; to the | ||
64 | desired pad number as reported by the media API and the | ||
65 | <structfield>which</structfield> field to | ||
66 | <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. When they call the | ||
67 | <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl with a pointer to this | ||
68 | structure the driver fills the members of the <structfield>format</structfield> | ||
69 | field.</para> | ||
70 | |||
71 | <para>To change the current format applications set both the | ||
72 | <structfield>pad</structfield> and <structfield>which</structfield> fields | ||
73 | and all members of the <structfield>format</structfield> field. When they | ||
74 | call the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl with a pointer to this | ||
75 | structure the driver verifies the requested format, adjusts it based on the | ||
76 | hardware capabilities and configures the device. Upon return the | ||
77 | &v4l2-subdev-format; contains the current format as would be returned by a | ||
78 | <constant>VIDIOC_SUBDEV_G_FMT</constant> call.</para> | ||
79 | |||
80 | <para>Applications can query the device capabilities by setting the | ||
81 | <structfield>which</structfield> to | ||
82 | <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' formats are not | ||
83 | applied to the device by the driver, but are changed exactly as active | ||
84 | formats and stored in the sub-device file handle. Two applications querying | ||
85 | the same sub-device would thus not interact with each other.</para> | ||
86 | |||
87 | <para>For instance, to try a format at the output pad of a sub-device, | ||
88 | applications would first set the try format at the sub-device input with the | ||
89 | <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl. They would then either | ||
90 | retrieve the default format at the output pad with the | ||
91 | <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl, or set the desired output | ||
92 | pad format with the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl and check | ||
93 | the returned value.</para> | ||
94 | |||
95 | <para>Try formats do not depend on active formats, but can depend on the | ||
96 | current links configuration or sub-device controls value. For instance, a | ||
97 | low-pass noise filter might crop pixels at the frame boundaries, modifying | ||
98 | its output frame size.</para> | ||
99 | |||
100 | <para>Drivers must not return an error solely because the requested format | ||
101 | doesn't match the device capabilities. They must instead modify the format | ||
102 | to match what the hardware can provide. The modified format should be as | ||
103 | close as possible to the original request.</para> | ||
104 | |||
105 | <table pgwide="1" frame="none" id="v4l2-subdev-format"> | ||
106 | <title>struct <structname>v4l2_subdev_format</structname></title> | ||
107 | <tgroup cols="3"> | ||
108 | &cs-str; | ||
109 | <tbody valign="top"> | ||
110 | <row> | ||
111 | <entry>__u32</entry> | ||
112 | <entry><structfield>pad</structfield></entry> | ||
113 | <entry>Pad number as reported by the media controller API.</entry> | ||
114 | </row> | ||
115 | <row> | ||
116 | <entry>__u32</entry> | ||
117 | <entry><structfield>which</structfield></entry> | ||
118 | <entry>Format to modified, from &v4l2-subdev-format-whence;.</entry> | ||
119 | </row> | ||
120 | <row> | ||
121 | <entry>&v4l2-mbus-framefmt;</entry> | ||
122 | <entry><structfield>format</structfield></entry> | ||
123 | <entry>Definition of an image format, see <xref | ||
124 | linkend="v4l2-mbus-framefmt" /> for details.</entry> | ||
125 | </row> | ||
126 | <row> | ||
127 | <entry>__u32</entry> | ||
128 | <entry><structfield>reserved</structfield>[8]</entry> | ||
129 | <entry>Reserved for future extensions. Applications and drivers must | ||
130 | set the array to zero.</entry> | ||
131 | </row> | ||
132 | </tbody> | ||
133 | </tgroup> | ||
134 | </table> | ||
135 | |||
136 | <table pgwide="1" frame="none" id="v4l2-subdev-format-whence"> | ||
137 | <title>enum <structname>v4l2_subdev_format_whence</structname></title> | ||
138 | <tgroup cols="3"> | ||
139 | &cs-def; | ||
140 | <tbody valign="top"> | ||
141 | <row> | ||
142 | <entry>V4L2_SUBDEV_FORMAT_TRY</entry> | ||
143 | <entry>0</entry> | ||
144 | <entry>Try formats, used for querying device capabilities.</entry> | ||
145 | </row> | ||
146 | <row> | ||
147 | <entry>V4L2_SUBDEV_FORMAT_ACTIVE</entry> | ||
148 | <entry>1</entry> | ||
149 | <entry>Active formats, applied to the hardware.</entry> | ||
150 | </row> | ||
151 | </tbody> | ||
152 | </tgroup> | ||
153 | </table> | ||
154 | </refsect1> | ||
155 | |||
156 | <refsect1> | ||
157 | &return-value; | ||
158 | |||
159 | <variablelist> | ||
160 | <varlistentry> | ||
161 | <term><errorcode>EBUSY</errorcode></term> | ||
162 | <listitem> | ||
163 | <para>The format can't be changed because the pad is currently busy. | ||
164 | This can be caused, for instance, by an active video stream on the | ||
165 | pad. The ioctl must not be retried without performing another action | ||
166 | to fix the problem first. Only returned by | ||
167 | <constant>VIDIOC_SUBDEV_S_FMT</constant></para> | ||
168 | </listitem> | ||
169 | </varlistentry> | ||
170 | <varlistentry> | ||
171 | <term><errorcode>EINVAL</errorcode></term> | ||
172 | <listitem> | ||
173 | <para>The &v4l2-subdev-format; <structfield>pad</structfield> | ||
174 | references a non-existing pad, or the <structfield>which</structfield> | ||
175 | field references a non-existing format.</para> | ||
176 | </listitem> | ||
177 | </varlistentry> | ||
178 | </variablelist> | ||
179 | </refsect1> | ||
180 | </refentry> | ||
diff --git a/drivers/media/video/v4l2-subdev.c b/drivers/media/video/v4l2-subdev.c index bc763db385df..207cc5cceb29 100644 --- a/drivers/media/video/v4l2-subdev.c +++ b/drivers/media/video/v4l2-subdev.c | |||
@@ -149,6 +149,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg) | |||
149 | struct video_device *vdev = video_devdata(file); | 149 | struct video_device *vdev = video_devdata(file); |
150 | struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); | 150 | struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); |
151 | struct v4l2_fh *vfh = file->private_data; | 151 | struct v4l2_fh *vfh = file->private_data; |
152 | #if defined(CONFIG_VIDEO_V4L2_SUBDEV_API) | ||
153 | struct v4l2_subdev_fh *subdev_fh = to_v4l2_subdev_fh(vfh); | ||
154 | #endif | ||
152 | 155 | ||
153 | switch (cmd) { | 156 | switch (cmd) { |
154 | case VIDIOC_QUERYCTRL: | 157 | case VIDIOC_QUERYCTRL: |
@@ -183,7 +186,53 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg) | |||
183 | 186 | ||
184 | case VIDIOC_UNSUBSCRIBE_EVENT: | 187 | case VIDIOC_UNSUBSCRIBE_EVENT: |
185 | return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg); | 188 | return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg); |
189 | #if defined(CONFIG_VIDEO_V4L2_SUBDEV_API) | ||
190 | case VIDIOC_SUBDEV_G_FMT: { | ||
191 | struct v4l2_subdev_format *format = arg; | ||
192 | |||
193 | if (format->which != V4L2_SUBDEV_FORMAT_TRY && | ||
194 | format->which != V4L2_SUBDEV_FORMAT_ACTIVE) | ||
195 | return -EINVAL; | ||
196 | |||
197 | if (format->pad >= sd->entity.num_pads) | ||
198 | return -EINVAL; | ||
199 | |||
200 | return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh, format); | ||
201 | } | ||
202 | |||
203 | case VIDIOC_SUBDEV_S_FMT: { | ||
204 | struct v4l2_subdev_format *format = arg; | ||
205 | |||
206 | if (format->which != V4L2_SUBDEV_FORMAT_TRY && | ||
207 | format->which != V4L2_SUBDEV_FORMAT_ACTIVE) | ||
208 | return -EINVAL; | ||
209 | |||
210 | if (format->pad >= sd->entity.num_pads) | ||
211 | return -EINVAL; | ||
186 | 212 | ||
213 | return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh, format); | ||
214 | } | ||
215 | |||
216 | case VIDIOC_SUBDEV_ENUM_MBUS_CODE: { | ||
217 | struct v4l2_subdev_mbus_code_enum *code = arg; | ||
218 | |||
219 | if (code->pad >= sd->entity.num_pads) | ||
220 | return -EINVAL; | ||
221 | |||
222 | return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh, | ||
223 | code); | ||
224 | } | ||
225 | |||
226 | case VIDIOC_SUBDEV_ENUM_FRAME_SIZE: { | ||
227 | struct v4l2_subdev_frame_size_enum *fse = arg; | ||
228 | |||
229 | if (fse->pad >= sd->entity.num_pads) | ||
230 | return -EINVAL; | ||
231 | |||
232 | return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh, | ||
233 | fse); | ||
234 | } | ||
235 | #endif | ||
187 | default: | 236 | default: |
188 | return -ENOIOCTLCMD; | 237 | return -ENOIOCTLCMD; |
189 | } | 238 | } |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index c33f22a6a404..43918a34db9f 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -372,6 +372,7 @@ header-y += usbdevice_fs.h | |||
372 | header-y += utime.h | 372 | header-y += utime.h |
373 | header-y += utsname.h | 373 | header-y += utsname.h |
374 | header-y += v4l2-mediabus.h | 374 | header-y += v4l2-mediabus.h |
375 | header-y += v4l2-subdev.h | ||
375 | header-y += veth.h | 376 | header-y += veth.h |
376 | header-y += vhost.h | 377 | header-y += vhost.h |
377 | header-y += videodev2.h | 378 | header-y += videodev2.h |
diff --git a/include/linux/v4l2-subdev.h b/include/linux/v4l2-subdev.h new file mode 100644 index 000000000000..8dbb44873821 --- /dev/null +++ b/include/linux/v4l2-subdev.h | |||
@@ -0,0 +1,90 @@ | |||
1 | /* | ||
2 | * V4L2 subdev userspace API | ||
3 | * | ||
4 | * Copyright (C) 2010 Nokia Corporation | ||
5 | * | ||
6 | * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
7 | * Sakari Ailus <sakari.ailus@iki.fi> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #ifndef __LINUX_V4L2_SUBDEV_H | ||
24 | #define __LINUX_V4L2_SUBDEV_H | ||
25 | |||
26 | #include <linux/ioctl.h> | ||
27 | #include <linux/types.h> | ||
28 | #include <linux/v4l2-mediabus.h> | ||
29 | |||
30 | /** | ||
31 | * enum v4l2_subdev_format_whence - Media bus format type | ||
32 | * @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only | ||
33 | * @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device | ||
34 | */ | ||
35 | enum v4l2_subdev_format_whence { | ||
36 | V4L2_SUBDEV_FORMAT_TRY = 0, | ||
37 | V4L2_SUBDEV_FORMAT_ACTIVE = 1, | ||
38 | }; | ||
39 | |||
40 | /** | ||
41 | * struct v4l2_subdev_format - Pad-level media bus format | ||
42 | * @which: format type (from enum v4l2_subdev_format_whence) | ||
43 | * @pad: pad number, as reported by the media API | ||
44 | * @format: media bus format (format code and frame size) | ||
45 | */ | ||
46 | struct v4l2_subdev_format { | ||
47 | __u32 which; | ||
48 | __u32 pad; | ||
49 | struct v4l2_mbus_framefmt format; | ||
50 | __u32 reserved[8]; | ||
51 | }; | ||
52 | |||
53 | /** | ||
54 | * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration | ||
55 | * @pad: pad number, as reported by the media API | ||
56 | * @index: format index during enumeration | ||
57 | * @code: format code (from enum v4l2_mbus_pixelcode) | ||
58 | */ | ||
59 | struct v4l2_subdev_mbus_code_enum { | ||
60 | __u32 pad; | ||
61 | __u32 index; | ||
62 | __u32 code; | ||
63 | __u32 reserved[9]; | ||
64 | }; | ||
65 | |||
66 | /** | ||
67 | * struct v4l2_subdev_frame_size_enum - Media bus format enumeration | ||
68 | * @pad: pad number, as reported by the media API | ||
69 | * @index: format index during enumeration | ||
70 | * @code: format code (from enum v4l2_mbus_pixelcode) | ||
71 | */ | ||
72 | struct v4l2_subdev_frame_size_enum { | ||
73 | __u32 index; | ||
74 | __u32 pad; | ||
75 | __u32 code; | ||
76 | __u32 min_width; | ||
77 | __u32 max_width; | ||
78 | __u32 min_height; | ||
79 | __u32 max_height; | ||
80 | __u32 reserved[9]; | ||
81 | }; | ||
82 | |||
83 | #define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format) | ||
84 | #define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format) | ||
85 | #define VIDIOC_SUBDEV_ENUM_MBUS_CODE \ | ||
86 | _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum) | ||
87 | #define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ | ||
88 | _IOWR('V', 74, struct v4l2_subdev_frame_size_enum) | ||
89 | |||
90 | #endif | ||
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index d4d3653426a9..4215650151be 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
@@ -21,6 +21,7 @@ | |||
21 | #ifndef _V4L2_SUBDEV_H | 21 | #ifndef _V4L2_SUBDEV_H |
22 | #define _V4L2_SUBDEV_H | 22 | #define _V4L2_SUBDEV_H |
23 | 23 | ||
24 | #include <linux/v4l2-subdev.h> | ||
24 | #include <media/media-entity.h> | 25 | #include <media/media-entity.h> |
25 | #include <media/v4l2-common.h> | 26 | #include <media/v4l2-common.h> |
26 | #include <media/v4l2-dev.h> | 27 | #include <media/v4l2-dev.h> |
@@ -414,6 +415,15 @@ struct v4l2_subdev_ir_ops { | |||
414 | }; | 415 | }; |
415 | 416 | ||
416 | struct v4l2_subdev_pad_ops { | 417 | struct v4l2_subdev_pad_ops { |
418 | int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, | ||
419 | struct v4l2_subdev_mbus_code_enum *code); | ||
420 | int (*enum_frame_size)(struct v4l2_subdev *sd, | ||
421 | struct v4l2_subdev_fh *fh, | ||
422 | struct v4l2_subdev_frame_size_enum *fse); | ||
423 | int (*get_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, | ||
424 | struct v4l2_subdev_format *format); | ||
425 | int (*set_fmt)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, | ||
426 | struct v4l2_subdev_format *format); | ||
417 | }; | 427 | }; |
418 | 428 | ||
419 | struct v4l2_subdev_ops { | 429 | struct v4l2_subdev_ops { |