xref: /linux/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst (revision 778b8ebe5192e7a7f00563a7456517dfa63e1d90)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2.. c:namespace:: V4L
3
4.. planar-yuv:
5
6******************
7Planar YUV formats
8******************
9
10Planar formats split luma and chroma data in separate memory regions. They
11exist in two variants:
12
13- Semi-planar formats use two planes. The first plane is the luma plane and
14  stores the Y components. The second plane is the chroma plane and stores the
15  Cb and Cr components interleaved.
16
17- Fully planar formats use three planes to store the Y, Cb and Cr components
18  separately.
19
20Within a plane, components are stored in pixel order, which may be linear or
21tiled. Padding may be supported at the end of the lines, and the line stride of
22the chroma planes may be constrained by the line stride of the luma plane.
23
24Some planar formats allow planes to be placed in independent memory locations.
25They are identified by an 'M' suffix in their name (such as in
26``V4L2_PIX_FMT_NV12M``). Those formats are intended to be used only in drivers
27and applications that support the multi-planar API, described in
28:ref:`planar-apis`. Unless explicitly documented as supporting non-contiguous
29planes, formats require the planes to follow each other immediately in memory.
30
31
32Semi-Planar YUV Formats
33=======================
34
35These formats are commonly referred to as NV formats (NV12, NV16, ...). They
36use two planes, and store the luma components in the first plane and the chroma
37components in the second plane. The Cb and Cr components are interleaved in the
38chroma plane, with Cb and Cr always stored in pairs. The chroma order is
39exposed as different formats.
40
41For memory contiguous formats, the number of padding pixels at the end of the
42chroma lines is identical to the padding of the luma lines. Without horizontal
43subsampling, the chroma line stride (in bytes) is thus equal to twice the luma
44line stride. With horizontal subsampling by 2, the chroma line stride is equal
45to the luma line stride. Vertical subsampling doesn't affect the line stride.
46
47For non-contiguous formats, no constraints are enforced by the format on the
48relationship between the luma and chroma line padding and stride.
49
50All components are stored with the same number of bits per component.
51
52.. raw:: latex
53
54    \footnotesize
55
56.. tabularcolumns:: |p{5.2cm}|p{1.0cm}|p{1.5cm}|p{1.9cm}|p{1.2cm}|p{1.8cm}|p{2.7cm}|
57
58.. flat-table:: Overview of Semi-Planar YUV Formats
59    :header-rows:  1
60    :stub-columns: 0
61
62    * - Identifier
63      - Code
64      - Bits per component
65      - Subsampling
66      - Chroma order [1]_
67      - Contiguous [2]_
68      - Tiling [3]_
69    * - V4L2_PIX_FMT_NV12
70      - 'NV12'
71      - 8
72      - 4:2:0
73      - Cb, Cr
74      - Yes
75      - Linear
76    * - V4L2_PIX_FMT_NV21
77      - 'NV21'
78      - 8
79      - 4:2:0
80      - Cr, Cb
81      - Yes
82      - Linear
83    * - V4L2_PIX_FMT_NV12M
84      - 'NM12'
85      - 8
86      - 4:2:0
87      - Cb, Cr
88      - No
89      - Linear
90    * - V4L2_PIX_FMT_NV21M
91      - 'NM21'
92      - 8
93      - 4:2:0
94      - Cr, Cb
95      - No
96      - Linear
97    * - V4L2_PIX_FMT_NV12MT
98      - 'TM12'
99      - 8
100      - 4:2:0
101      - Cb, Cr
102      - No
103      - 64x32 tiles
104
105        Horizontal Z order
106    * - V4L2_PIX_FMT_NV12MT_16X16
107      - 'VM12'
108      - 8
109      - 4:2:2
110      - Cb, Cr
111      - No
112      - 16x16 tiles
113    * - V4L2_PIX_FMT_P010
114      - 'P010'
115      - 10
116      - 4:2:0
117      - Cb, Cr
118      - Yes
119      - Linear
120    * - V4L2_PIX_FMT_P010_4L4
121      - 'T010'
122      - 10
123      - 4:2:0
124      - Cb, Cr
125      - Yes
126      - 4x4 tiles
127    * - V4L2_PIX_FMT_P012
128      - 'P012'
129      - 12
130      - 4:2:0
131      - Cb, Cr
132      - Yes
133      - Linear
134    * - V4L2_PIX_FMT_P012M
135      - 'PM12'
136      - 12
137      - 4:2:0
138      - Cb, Cr
139      - No
140      - Linear
141    * - V4L2_PIX_FMT_NV15
142      - 'NV15'
143      - 10
144      - 4:2:0
145      - Cb, Cr
146      - Yes
147      - Linear
148    * - V4L2_PIX_FMT_NV15_4L4
149      - 'VT15'
150      - 15
151      - 4:2:0
152      - Cb, Cr
153      - Yes
154      - 4x4 tiles
155    * - V4L2_PIX_FMT_MT2110T
156      - 'MT2T'
157      - 15
158      - 4:2:0
159      - Cb, Cr
160      - No
161      - 16x32 / 16x16 tiles tiled low bits
162    * - V4L2_PIX_FMT_MT2110R
163      - 'MT2R'
164      - 15
165      - 4:2:0
166      - Cb, Cr
167      - No
168      - 16x32 / 16x16 tiles raster low bits
169    * - V4L2_PIX_FMT_NV16
170      - 'NV16'
171      - 8
172      - 4:2:2
173      - Cb, Cr
174      - Yes
175      - Linear
176    * - V4L2_PIX_FMT_NV61
177      - 'NV61'
178      - 8
179      - 4:2:2
180      - Cr, Cb
181      - Yes
182      - Linear
183    * - V4L2_PIX_FMT_NV16M
184      - 'NM16'
185      - 8
186      - 4:2:2
187      - Cb, Cr
188      - No
189      - Linear
190    * - V4L2_PIX_FMT_NV61M
191      - 'NM61'
192      - 8
193      - 4:2:2
194      - Cr, Cb
195      - No
196      - Linear
197    * - V4L2_PIX_FMT_NV20
198      - 'NV20'
199      - 10
200      - 4:2:2
201      - Cb, Cr
202      - Yes
203      - Linear
204    * - V4L2_PIX_FMT_NV24
205      - 'NV24'
206      - 8
207      - 4:4:4
208      - Cb, Cr
209      - Yes
210      - Linear
211    * - V4L2_PIX_FMT_NV42
212      - 'NV42'
213      - 8
214      - 4:4:4
215      - Cr, Cb
216      - Yes
217      - Linear
218
219.. raw:: latex
220
221    \normalsize
222
223.. [1] Order of chroma samples in the second plane
224.. [2] Indicates if planes have to be contiguous in memory or can be
225       disjoint
226.. [3] Macroblock size in pixels
227
228
229**Color Sample Location:**
230Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
231horizontally.
232
233
234.. _V4L2-PIX-FMT-NV12:
235.. _V4L2-PIX-FMT-NV21:
236.. _V4L2-PIX-FMT-NV12M:
237.. _V4L2-PIX-FMT-NV21M:
238.. _V4L2-PIX-FMT-P010:
239
240NV12, NV21, NV12M and NV21M
241---------------------------
242
243Semi-planar YUV 4:2:0 formats. The chroma plane is subsampled by 2 in each
244direction. Chroma lines contain half the number of pixels and the same number
245of bytes as luma lines, and the chroma plane contains half the number of lines
246of the luma plane.
247
248.. flat-table:: Sample 4x4 NV12 Image
249    :header-rows:  0
250    :stub-columns: 0
251
252    * - start + 0:
253      - Y'\ :sub:`00`
254      - Y'\ :sub:`01`
255      - Y'\ :sub:`02`
256      - Y'\ :sub:`03`
257    * - start + 4:
258      - Y'\ :sub:`10`
259      - Y'\ :sub:`11`
260      - Y'\ :sub:`12`
261      - Y'\ :sub:`13`
262    * - start + 8:
263      - Y'\ :sub:`20`
264      - Y'\ :sub:`21`
265      - Y'\ :sub:`22`
266      - Y'\ :sub:`23`
267    * - start + 12:
268      - Y'\ :sub:`30`
269      - Y'\ :sub:`31`
270      - Y'\ :sub:`32`
271      - Y'\ :sub:`33`
272    * - start + 16:
273      - Cb\ :sub:`00`
274      - Cr\ :sub:`00`
275      - Cb\ :sub:`01`
276      - Cr\ :sub:`01`
277    * - start + 20:
278      - Cb\ :sub:`10`
279      - Cr\ :sub:`10`
280      - Cb\ :sub:`11`
281      - Cr\ :sub:`11`
282
283.. flat-table:: Sample 4x4 NV12M Image
284    :header-rows:  0
285    :stub-columns: 0
286
287    * - start0 + 0:
288      - Y'\ :sub:`00`
289      - Y'\ :sub:`01`
290      - Y'\ :sub:`02`
291      - Y'\ :sub:`03`
292    * - start0 + 4:
293      - Y'\ :sub:`10`
294      - Y'\ :sub:`11`
295      - Y'\ :sub:`12`
296      - Y'\ :sub:`13`
297    * - start0 + 8:
298      - Y'\ :sub:`20`
299      - Y'\ :sub:`21`
300      - Y'\ :sub:`22`
301      - Y'\ :sub:`23`
302    * - start0 + 12:
303      - Y'\ :sub:`30`
304      - Y'\ :sub:`31`
305      - Y'\ :sub:`32`
306      - Y'\ :sub:`33`
307    * -
308    * - start1 + 0:
309      - Cb\ :sub:`00`
310      - Cr\ :sub:`00`
311      - Cb\ :sub:`01`
312      - Cr\ :sub:`01`
313    * - start1 + 4:
314      - Cb\ :sub:`10`
315      - Cr\ :sub:`10`
316      - Cb\ :sub:`11`
317      - Cr\ :sub:`11`
318
319
320.. _V4L2-PIX-FMT-NV15:
321
322NV15
323----
324
325Semi-planar 10-bit YUV 4:2:0 format similar to NV12, using 10-bit components
326with no padding between each component. A group of 4 components are stored over
3275 bytes in little endian order.
328
329.. flat-table:: Sample 4x4 NV15 Image (1 byte per cell)
330    :header-rows:  0
331    :stub-columns: 0
332
333    * - start + 0:
334      - Y'\ :sub:`00[7:0]`
335      - Y'\ :sub:`01[5:0]`\ Y'\ :sub:`00[9:8]`
336      - Y'\ :sub:`02[3:0]`\ Y'\ :sub:`01[9:6]`
337      - Y'\ :sub:`03[1:0]`\ Y'\ :sub:`02[9:4]`
338      - Y'\ :sub:`03[9:2]`
339    * - start + 5:
340      - Y'\ :sub:`10[7:0]`
341      - Y'\ :sub:`11[5:0]`\ Y'\ :sub:`10[9:8]`
342      - Y'\ :sub:`12[3:0]`\ Y'\ :sub:`11[9:6]`
343      - Y'\ :sub:`13[1:0]`\ Y'\ :sub:`12[9:4]`
344      - Y'\ :sub:`13[9:2]`
345    * - start + 10:
346      - Y'\ :sub:`20[7:0]`
347      - Y'\ :sub:`21[5:0]`\ Y'\ :sub:`20[9:8]`
348      - Y'\ :sub:`22[3:0]`\ Y'\ :sub:`21[9:6]`
349      - Y'\ :sub:`23[1:0]`\ Y'\ :sub:`22[9:4]`
350      - Y'\ :sub:`23[9:2]`
351    * - start + 15:
352      - Y'\ :sub:`30[7:0]`
353      - Y'\ :sub:`31[5:0]`\ Y'\ :sub:`30[9:8]`
354      - Y'\ :sub:`32[3:0]`\ Y'\ :sub:`31[9:6]`
355      - Y'\ :sub:`33[1:0]`\ Y'\ :sub:`32[9:4]`
356      - Y'\ :sub:`33[9:2]`
357    * - start + 20:
358      - Cb\ :sub:`00[7:0]`
359      - Cr\ :sub:`00[5:0]`\ Cb\ :sub:`00[9:8]`
360      - Cb\ :sub:`01[3:0]`\ Cr\ :sub:`00[9:6]`
361      - Cr\ :sub:`01[1:0]`\ Cb\ :sub:`01[9:4]`
362      - Cr\ :sub:`01[9:2]`
363    * - start + 25:
364      - Cb\ :sub:`10[7:0]`
365      - Cr\ :sub:`10[5:0]`\ Cb\ :sub:`10[9:8]`
366      - Cb\ :sub:`11[3:0]`\ Cr\ :sub:`10[9:6]`
367      - Cr\ :sub:`11[1:0]`\ Cb\ :sub:`11[9:4]`
368      - Cr\ :sub:`11[9:2]`
369
370
371.. _V4L2-PIX-FMT-NV12MT:
372.. _V4L2-PIX-FMT-NV12MT-16X16:
373.. _V4L2-PIX-FMT-NV12-4L4:
374.. _V4L2-PIX-FMT-NV12-16L16:
375.. _V4L2-PIX-FMT-NV12-32L32:
376.. _V4L2-PIX-FMT-NV12M-8L128:
377.. _V4L2-PIX-FMT-NV12-8L128:
378.. _V4L2-PIX-FMT-MM21:
379
380Tiled NV12
381----------
382
383Semi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is
384subsampled by 2 in each direction. Chroma lines contain half the number of
385pixels and the same number of bytes as luma lines, and the chroma plane
386contains half the number of lines of the luma plane. Each tile follows the
387previous one linearly in memory (from left to right, top to bottom).
388
389``V4L2_PIX_FMT_NV12MT_16X16`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
390pixels in 2D 16x16 tiles, and stores tiles linearly in memory.
391The line stride and image height must be aligned to a multiple of 16.
392The layouts of the luma and chroma planes are identical.
393
394``V4L2_PIX_FMT_NV12MT`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
395pixels in 2D 64x32 tiles, and stores 2x2 groups of tiles in
396Z-order in memory, alternating Z and mirrored Z shapes horizontally.
397The line stride must be a multiple of 128 pixels to ensure an
398integer number of Z shapes. The image height must be a multiple of 32 pixels.
399If the vertical resolution is an odd number of tiles, the last row of
400tiles is stored in linear order. The layouts of the luma and chroma
401planes are identical.
402
403.. _nv12mt:
404
405.. kernel-figure:: nv12mt.svg
406    :alt:    nv12mt.svg
407    :align:  center
408
409    V4L2_PIX_FMT_NV12MT macroblock Z shape memory layout
410
411.. _nv12mt_ex:
412
413.. kernel-figure:: nv12mt_example.svg
414    :alt:    nv12mt_example.svg
415    :align:  center
416
417    Example V4L2_PIX_FMT_NV12MT memory layout of tiles
418
419``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 tiles, and stores
420tiles linearly in memory. The line stride and image height must be
421aligned to a multiple of 4. The layouts of the luma and chroma planes are
422identical.
423
424``V4L2_PIX_FMT_NV12_16L16`` stores pixels in 16x16 tiles, and stores
425tiles linearly in memory. The line stride and image height must be
426aligned to a multiple of 16. The layouts of the luma and chroma planes are
427identical.
428
429``V4L2_PIX_FMT_NV12_32L32`` stores pixels in 32x32 tiles, and stores
430tiles linearly in memory. The line stride and image height must be
431aligned to a multiple of 32. The layouts of the luma and chroma planes are
432identical.
433
434``V4L2_PIX_FMT_NV12M_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
435pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
436The image height must be aligned to a multiple of 128.
437The layouts of the luma and chroma planes are identical.
438
439``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores
440two planes in one memory.
441
442``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels
443in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
444image height must be aligned to a multiple of 32. The number of luma and chroma
445tiles are identical, even though the tile size differ. The image is formed of
446two non-contiguous planes.
447
448
449.. _V4L2-PIX-FMT-NV15-4L4:
450.. _V4L2-PIX-FMT-NV12M-10BE-8L128:
451.. _V4L2-PIX-FMT-NV12-10BE-8L128:
452.. _V4L2-PIX-FMT-MT2110T:
453.. _V4L2-PIX-FMT-MT2110R:
454
455Tiled NV15
456----------
457
458``V4L2_PIX_FMT_NV15_4L4`` Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling.
459All components are packed without any padding between each other.
460As a side-effect, each group of 4 components are stored over 5 bytes
461(YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes).
462
463``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
46410 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
465the data is arranged in big endian order.
466The image height must be aligned to a multiple of 128.
467The layouts of the luma and chroma planes are identical.
468Note the tile size is 8bytes multiplied by 128 bytes,
469it means that the low bits and high bits of one pixel may be in different tiles.
470The 10 bit pixels are packed, so 5 bytes contain 4 10-bit pixels layout like
471this (for luma):
472byte 0: Y0(bits 9-2)
473byte 1: Y0(bits 1-0) Y1(bits 9-4)
474byte 2: Y1(bits 3-0) Y2(bits 9-6)
475byte 3: Y2(bits 5-0) Y3(bits 9-8)
476byte 4: Y3(bits 7-0)
477
478``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores
479two planes in one memory.
480
481``V4L2_PIX_FMT_MT2110T`` is one of Mediatek packed 10bit YUV 4:2:0 formats.
482It is fully packed 10bit 4:2:0 format like NV15 (15 bits per pixel), except
483that the lower two bits data is stored in separate partitions. The format is
484composed of 16x32 luma tiles, and 16x16 chroma tiles. Each tiles is 640 bytes
485long, divided into 8 partitions of 80 bytes.  The first 16 bytes of the
486partition represent the 2 least significant bits of pixel data. The remaining
48764 bytes represent the 8 most significant bits of pixel data.
488
489.. kernel-figure:: mt2110t.svg
490    :alt:    mt2110t.svg
491    :align:  center
492
493    Layout of MT2110T Chroma Tile
494
495Filtering out the upper part of each partitions results in a valid
496``V4L2_PIX_FMT_MM21`` frame. A partition is a sub-tile of size 16 x 4. The
497lower two bits is said to be tiled since each bytes contains the lower two
498bits of the column of for pixel matching the same index. The chroma tiles
499only have 4 partitions.
500
501.. flat-table:: MT2110T LSB bits layout
502    :header-rows:  1
503    :stub-columns: 1
504
505    * -
506      - start + 0:
507      - start + 1:
508      - . . .
509      - start\ +\ 15:
510    * - Bits 1:0
511      - Y'\ :sub:`0:0`
512      - Y'\ :sub:`0:1`
513      - . . .
514      - Y'\ :sub:`0:15`
515    * - Bit 3:2
516      - Y'\ :sub:`1:0`
517      - Y'\ :sub:`1:1`
518      - . . .
519      - Y'\ :sub:`1:15`
520    * - Bits 5:4
521      - Y'\ :sub:`2:0`
522      - Y'\ :sub:`2:1`
523      - . . .
524      - Y'\ :sub:`2:15`
525    * - Bits 7:6
526      - Y'\ :sub:`3:0`
527      - Y'\ :sub:`3:1`
528      - . . .
529      - Y'\ :sub:`3:15`
530
531``V4L2_PIX_FMT_MT2110R`` is identical to ``V4L2_PIX_FMT_MT2110T`` except that
532the least significant two bits layout is in raster order. This means the first byte
533contains 4 pixels of the first row, with 4 bytes per line.
534
535.. flat-table:: MT2110R LSB bits layout
536    :header-rows:  2
537    :stub-columns: 1
538
539    * -
540      - :cspan:`3` Byte 0
541      - ...
542      - :cspan:`3` Byte 3
543    * -
544      - 7:6
545      - 5:4
546      - 3:2
547      - 1:0
548      - ...
549      - 7:6
550      - 5:4
551      - 3:2
552      - 1:0
553    * - start + 0:
554      - Y'\ :sub:`0:3`
555      - Y'\ :sub:`0:2`
556      - Y'\ :sub:`0:1`
557      - Y'\ :sub:`0:0`
558      - ...
559      - Y'\ :sub:`0:15`
560      - Y'\ :sub:`0:14`
561      - Y'\ :sub:`0:13`
562      - Y'\ :sub:`0:12`
563    * - start + 4:
564      - Y'\ :sub:`1:3`
565      - Y'\ :sub:`1:2`
566      - Y'\ :sub:`1:1`
567      - Y'\ :sub:`1:0`
568      - ...
569      - Y'\ :sub:`1:15`
570      - Y'\ :sub:`1:14`
571      - Y'\ :sub:`1:13`
572      - Y'\ :sub:`1:12`
573    * - start + 8:
574      - Y'\ :sub:`2:3`
575      - Y'\ :sub:`2:2`
576      - Y'\ :sub:`2:1`
577      - Y'\ :sub:`2:0`
578      - ...
579      - Y'\ :sub:`2:15`
580      - Y'\ :sub:`2:14`
581      - Y'\ :sub:`2:13`
582      - Y'\ :sub:`2:12`
583    * - start\ +\ 12:
584      - Y'\ :sub:`3:3`
585      - Y'\ :sub:`3:2`
586      - Y'\ :sub:`3:1`
587      - Y'\ :sub:`3:0`
588      - ...
589      - Y'\ :sub:`3:15`
590      - Y'\ :sub:`3:14`
591      - Y'\ :sub:`3:13`
592      - Y'\ :sub:`3:12`
593
594
595.. _V4L2-PIX-FMT-NV16:
596.. _V4L2-PIX-FMT-NV61:
597.. _V4L2-PIX-FMT-NV16M:
598.. _V4L2-PIX-FMT-NV61M:
599
600NV16, NV61, NV16M and NV61M
601---------------------------
602
603Semi-planar YUV 4:2:2 formats. The chroma plane is subsampled by 2 in the
604horizontal direction. Chroma lines contain half the number of pixels and the
605same number of bytes as luma lines, and the chroma plane contains the same
606number of lines as the luma plane.
607
608.. flat-table:: Sample 4x4 NV16 Image
609    :header-rows:  0
610    :stub-columns: 0
611
612    * - start + 0:
613      - Y'\ :sub:`00`
614      - Y'\ :sub:`01`
615      - Y'\ :sub:`02`
616      - Y'\ :sub:`03`
617    * - start + 4:
618      - Y'\ :sub:`10`
619      - Y'\ :sub:`11`
620      - Y'\ :sub:`12`
621      - Y'\ :sub:`13`
622    * - start + 8:
623      - Y'\ :sub:`20`
624      - Y'\ :sub:`21`
625      - Y'\ :sub:`22`
626      - Y'\ :sub:`23`
627    * - start + 12:
628      - Y'\ :sub:`30`
629      - Y'\ :sub:`31`
630      - Y'\ :sub:`32`
631      - Y'\ :sub:`33`
632    * - start + 16:
633      - Cb\ :sub:`00`
634      - Cr\ :sub:`00`
635      - Cb\ :sub:`01`
636      - Cr\ :sub:`01`
637    * - start + 20:
638      - Cb\ :sub:`10`
639      - Cr\ :sub:`10`
640      - Cb\ :sub:`11`
641      - Cr\ :sub:`11`
642    * - start + 24:
643      - Cb\ :sub:`20`
644      - Cr\ :sub:`20`
645      - Cb\ :sub:`21`
646      - Cr\ :sub:`21`
647    * - start + 28:
648      - Cb\ :sub:`30`
649      - Cr\ :sub:`30`
650      - Cb\ :sub:`31`
651      - Cr\ :sub:`31`
652
653.. flat-table:: Sample 4x4 NV16M Image
654    :header-rows:  0
655    :stub-columns: 0
656
657    * - start0 + 0:
658      - Y'\ :sub:`00`
659      - Y'\ :sub:`01`
660      - Y'\ :sub:`02`
661      - Y'\ :sub:`03`
662    * - start0 + 4:
663      - Y'\ :sub:`10`
664      - Y'\ :sub:`11`
665      - Y'\ :sub:`12`
666      - Y'\ :sub:`13`
667    * - start0 + 8:
668      - Y'\ :sub:`20`
669      - Y'\ :sub:`21`
670      - Y'\ :sub:`22`
671      - Y'\ :sub:`23`
672    * - start0 + 12:
673      - Y'\ :sub:`30`
674      - Y'\ :sub:`31`
675      - Y'\ :sub:`32`
676      - Y'\ :sub:`33`
677    * -
678    * - start1 + 0:
679      - Cb\ :sub:`00`
680      - Cr\ :sub:`00`
681      - Cb\ :sub:`02`
682      - Cr\ :sub:`02`
683    * - start1 + 4:
684      - Cb\ :sub:`10`
685      - Cr\ :sub:`10`
686      - Cb\ :sub:`12`
687      - Cr\ :sub:`12`
688    * - start1 + 8:
689      - Cb\ :sub:`20`
690      - Cr\ :sub:`20`
691      - Cb\ :sub:`22`
692      - Cr\ :sub:`22`
693    * - start1 + 12:
694      - Cb\ :sub:`30`
695      - Cr\ :sub:`30`
696      - Cb\ :sub:`32`
697      - Cr\ :sub:`32`
698
699
700.. _V4L2-PIX-FMT-NV20:
701
702NV20
703----
704
705Semi-planar 10-bit YUV 4:2:2 format similar to NV16, using 10-bit components
706with no padding between each component. A group of 4 components are stored over
7075 bytes in little endian order.
708
709.. flat-table:: Sample 4x4 NV20 Image (1 byte per cell)
710    :header-rows:  0
711    :stub-columns: 0
712
713    * - start + 0:
714      - Y'\ :sub:`00[7:0]`
715      - Y'\ :sub:`01[5:0]`\ Y'\ :sub:`00[9:8]`
716      - Y'\ :sub:`02[3:0]`\ Y'\ :sub:`01[9:6]`
717      - Y'\ :sub:`03[1:0]`\ Y'\ :sub:`02[9:4]`
718      - Y'\ :sub:`03[9:2]`
719    * - start + 5:
720      - Y'\ :sub:`10[7:0]`
721      - Y'\ :sub:`11[5:0]`\ Y'\ :sub:`10[9:8]`
722      - Y'\ :sub:`12[3:0]`\ Y'\ :sub:`11[9:6]`
723      - Y'\ :sub:`13[1:0]`\ Y'\ :sub:`12[9:4]`
724      - Y'\ :sub:`13[9:2]`
725    * - start + 10:
726      - Y'\ :sub:`20[7:0]`
727      - Y'\ :sub:`21[5:0]`\ Y'\ :sub:`20[9:8]`
728      - Y'\ :sub:`22[3:0]`\ Y'\ :sub:`21[9:6]`
729      - Y'\ :sub:`23[1:0]`\ Y'\ :sub:`22[9:4]`
730      - Y'\ :sub:`23[9:2]`
731    * - start + 15:
732      - Y'\ :sub:`30[7:0]`
733      - Y'\ :sub:`31[5:0]`\ Y'\ :sub:`30[9:8]`
734      - Y'\ :sub:`32[3:0]`\ Y'\ :sub:`31[9:6]`
735      - Y'\ :sub:`33[1:0]`\ Y'\ :sub:`32[9:4]`
736      - Y'\ :sub:`33[9:2]`
737    * - start + 20:
738      - Cb\ :sub:`00[7:0]`
739      - Cr\ :sub:`00[5:0]`\ Cb\ :sub:`00[9:8]`
740      - Cb\ :sub:`01[3:0]`\ Cr\ :sub:`00[9:6]`
741      - Cr\ :sub:`01[1:0]`\ Cb\ :sub:`01[9:4]`
742      - Cr\ :sub:`01[9:2]`
743    * - start + 25:
744      - Cb\ :sub:`10[7:0]`
745      - Cr\ :sub:`10[5:0]`\ Cb\ :sub:`10[9:8]`
746      - Cb\ :sub:`11[3:0]`\ Cr\ :sub:`10[9:6]`
747      - Cr\ :sub:`11[1:0]`\ Cb\ :sub:`11[9:4]`
748      - Cr\ :sub:`11[9:2]`
749    * - start + 30:
750      - Cb\ :sub:`20[7:0]`
751      - Cr\ :sub:`20[5:0]`\ Cb\ :sub:`20[9:8]`
752      - Cb\ :sub:`21[3:0]`\ Cr\ :sub:`20[9:6]`
753      - Cr\ :sub:`21[1:0]`\ Cb\ :sub:`21[9:4]`
754      - Cr\ :sub:`21[9:2]`
755    * - start + 35:
756      - Cb\ :sub:`30[7:0]`
757      - Cr\ :sub:`30[5:0]`\ Cb\ :sub:`30[9:8]`
758      - Cb\ :sub:`31[3:0]`\ Cr\ :sub:`30[9:6]`
759      - Cr\ :sub:`31[1:0]`\ Cb\ :sub:`31[9:4]`
760      - Cr\ :sub:`31[9:2]`
761
762
763.. _V4L2-PIX-FMT-NV24:
764.. _V4L2-PIX-FMT-NV42:
765
766NV24 and NV42
767-------------
768
769Semi-planar YUV 4:4:4 formats. The chroma plane is not subsampled.
770Chroma lines contain the same number of pixels and twice the
771number of bytes as luma lines, and the chroma plane contains the same
772number of lines as the luma plane.
773
774.. flat-table:: Sample 4x4 NV24 Image
775    :header-rows:  0
776    :stub-columns: 0
777
778    * - start + 0:
779      - Y'\ :sub:`00`
780      - Y'\ :sub:`01`
781      - Y'\ :sub:`02`
782      - Y'\ :sub:`03`
783    * - start + 4:
784      - Y'\ :sub:`10`
785      - Y'\ :sub:`11`
786      - Y'\ :sub:`12`
787      - Y'\ :sub:`13`
788    * - start + 8:
789      - Y'\ :sub:`20`
790      - Y'\ :sub:`21`
791      - Y'\ :sub:`22`
792      - Y'\ :sub:`23`
793    * - start + 12:
794      - Y'\ :sub:`30`
795      - Y'\ :sub:`31`
796      - Y'\ :sub:`32`
797      - Y'\ :sub:`33`
798    * - start + 16:
799      - Cb\ :sub:`00`
800      - Cr\ :sub:`00`
801      - Cb\ :sub:`01`
802      - Cr\ :sub:`01`
803      - Cb\ :sub:`02`
804      - Cr\ :sub:`02`
805      - Cb\ :sub:`03`
806      - Cr\ :sub:`03`
807    * - start + 24:
808      - Cb\ :sub:`10`
809      - Cr\ :sub:`10`
810      - Cb\ :sub:`11`
811      - Cr\ :sub:`11`
812      - Cb\ :sub:`12`
813      - Cr\ :sub:`12`
814      - Cb\ :sub:`13`
815      - Cr\ :sub:`13`
816    * - start + 32:
817      - Cb\ :sub:`20`
818      - Cr\ :sub:`20`
819      - Cb\ :sub:`21`
820      - Cr\ :sub:`21`
821      - Cb\ :sub:`22`
822      - Cr\ :sub:`22`
823      - Cb\ :sub:`23`
824      - Cr\ :sub:`23`
825    * - start + 40:
826      - Cb\ :sub:`30`
827      - Cr\ :sub:`30`
828      - Cb\ :sub:`31`
829      - Cr\ :sub:`31`
830      - Cb\ :sub:`32`
831      - Cr\ :sub:`32`
832      - Cb\ :sub:`33`
833      - Cr\ :sub:`33`
834
835.. _V4L2_PIX_FMT_P010:
836.. _V4L2-PIX-FMT-P010-4L4:
837
838P010 and tiled P010
839-------------------
840
841P010 is like NV12 with 10 bits per component, expanded to 16 bits.
842Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian order.
843
844.. flat-table:: Sample 4x4 P010 Image
845    :header-rows:  0
846    :stub-columns: 0
847
848    * - start + 0:
849      - Y'\ :sub:`00`
850      - Y'\ :sub:`01`
851      - Y'\ :sub:`02`
852      - Y'\ :sub:`03`
853    * - start + 8:
854      - Y'\ :sub:`10`
855      - Y'\ :sub:`11`
856      - Y'\ :sub:`12`
857      - Y'\ :sub:`13`
858    * - start + 16:
859      - Y'\ :sub:`20`
860      - Y'\ :sub:`21`
861      - Y'\ :sub:`22`
862      - Y'\ :sub:`23`
863    * - start + 24:
864      - Y'\ :sub:`30`
865      - Y'\ :sub:`31`
866      - Y'\ :sub:`32`
867      - Y'\ :sub:`33`
868    * - start + 32:
869      - Cb\ :sub:`00`
870      - Cr\ :sub:`00`
871      - Cb\ :sub:`01`
872      - Cr\ :sub:`01`
873    * - start + 40:
874      - Cb\ :sub:`10`
875      - Cr\ :sub:`10`
876      - Cb\ :sub:`11`
877      - Cr\ :sub:`11`
878
879.. _V4L2-PIX-FMT-P012:
880.. _V4L2-PIX-FMT-P012M:
881
882P012 and P012M
883--------------
884
885P012 is like NV12 with 12 bits per component, expanded to 16 bits.
886Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian order.
887
888.. flat-table:: Sample 4x4 P012 Image
889    :header-rows:  0
890    :stub-columns: 0
891
892    * - start + 0:
893      - Y'\ :sub:`00`
894      - Y'\ :sub:`01`
895      - Y'\ :sub:`02`
896      - Y'\ :sub:`03`
897    * - start + 8:
898      - Y'\ :sub:`10`
899      - Y'\ :sub:`11`
900      - Y'\ :sub:`12`
901      - Y'\ :sub:`13`
902    * - start + 16:
903      - Y'\ :sub:`20`
904      - Y'\ :sub:`21`
905      - Y'\ :sub:`22`
906      - Y'\ :sub:`23`
907    * - start + 24:
908      - Y'\ :sub:`30`
909      - Y'\ :sub:`31`
910      - Y'\ :sub:`32`
911      - Y'\ :sub:`33`
912    * - start + 32:
913      - Cb\ :sub:`00`
914      - Cr\ :sub:`00`
915      - Cb\ :sub:`01`
916      - Cr\ :sub:`01`
917    * - start + 40:
918      - Cb\ :sub:`10`
919      - Cr\ :sub:`10`
920      - Cb\ :sub:`11`
921      - Cr\ :sub:`11`
922
923.. flat-table:: Sample 4x4 P012M Image
924    :header-rows:  0
925    :stub-columns: 0
926
927    * - start0 + 0:
928      - Y'\ :sub:`00`
929      - Y'\ :sub:`01`
930      - Y'\ :sub:`02`
931      - Y'\ :sub:`03`
932    * - start0 + 8:
933      - Y'\ :sub:`10`
934      - Y'\ :sub:`11`
935      - Y'\ :sub:`12`
936      - Y'\ :sub:`13`
937    * - start0 + 16:
938      - Y'\ :sub:`20`
939      - Y'\ :sub:`21`
940      - Y'\ :sub:`22`
941      - Y'\ :sub:`23`
942    * - start0 + 24:
943      - Y'\ :sub:`30`
944      - Y'\ :sub:`31`
945      - Y'\ :sub:`32`
946      - Y'\ :sub:`33`
947    * -
948    * - start1 + 0:
949      - Cb\ :sub:`00`
950      - Cr\ :sub:`00`
951      - Cb\ :sub:`01`
952      - Cr\ :sub:`01`
953    * - start1 + 8:
954      - Cb\ :sub:`10`
955      - Cr\ :sub:`10`
956      - Cb\ :sub:`11`
957      - Cr\ :sub:`11`
958
959
960Fully Planar YUV Formats
961========================
962
963These formats store the Y, Cb and Cr components in three separate planes. The
964luma plane comes first, and the order of the two chroma planes varies between
965formats. The two chroma planes always use the same subsampling.
966
967For memory contiguous formats, the number of padding pixels at the end of the
968chroma lines is identical to the padding of the luma lines. The chroma line
969stride (in bytes) is thus equal to the luma line stride divided by the
970horizontal subsampling factor. Vertical subsampling doesn't affect the line
971stride.
972
973For non-contiguous formats, no constraints are enforced by the format on the
974relationship between the luma and chroma line padding and stride.
975
976All components are stored with the same number of bits per component.
977
978``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 tiles, and stores tiles linearly
979in memory. The line stride must be aligned to multiple of 8 and image height to
980a multiple of 4. The layouts of the luma and chroma planes are identical.
981
982.. raw:: latex
983
984    \small
985
986.. tabularcolumns:: |p{5.0cm}|p{1.1cm}|p{1.5cm}|p{2.2cm}|p{1.2cm}|p{3.7cm}|
987
988.. flat-table:: Overview of Fully Planar YUV Formats
989    :header-rows:  1
990    :stub-columns: 0
991
992    * - Identifier
993      - Code
994      - Bits per component
995      - Subsampling
996      - Planes order [4]_
997      - Contiguous [5]_
998
999    * - V4L2_PIX_FMT_YUV410
1000      - 'YUV9'
1001      - 8
1002      - 4:1:0
1003      - Y, Cb, Cr
1004      - Yes
1005    * - V4L2_PIX_FMT_YVU410
1006      - 'YVU9'
1007      - 8
1008      - 4:1:0
1009      - Y, Cr, Cb
1010      - Yes
1011    * - V4L2_PIX_FMT_YUV411P
1012      - '411P'
1013      - 8
1014      - 4:1:1
1015      - Y, Cb, Cr
1016      - Yes
1017    * - V4L2_PIX_FMT_YUV420M
1018      - 'YM12'
1019      - 8
1020      - 4:2:0
1021      - Y, Cb, Cr
1022      - No
1023    * - V4L2_PIX_FMT_YVU420M
1024      - 'YM21'
1025      - 8
1026      - 4:2:0
1027      - Y, Cr, Cb
1028      - No
1029    * - V4L2_PIX_FMT_YUV420
1030      - 'YU12'
1031      - 8
1032      - 4:2:0
1033      - Y, Cb, Cr
1034      - Yes
1035    * - V4L2_PIX_FMT_YVU420
1036      - 'YV12'
1037      - 8
1038      - 4:2:0
1039      - Y, Cr, Cb
1040      - Yes
1041    * - V4L2_PIX_FMT_YUV422P
1042      - '422P'
1043      - 8
1044      - 4:2:2
1045      - Y, Cb, Cr
1046      - Yes
1047    * - V4L2_PIX_FMT_YUV422M
1048      - 'YM16'
1049      - 8
1050      - 4:2:2
1051      - Y, Cb, Cr
1052      - No
1053    * - V4L2_PIX_FMT_YVU422M
1054      - 'YM61'
1055      - 8
1056      - 4:2:2
1057      - Y, Cr, Cb
1058      - No
1059    * - V4L2_PIX_FMT_YUV444M
1060      - 'YM24'
1061      - 8
1062      - 4:4:4
1063      - Y, Cb, Cr
1064      - No
1065    * - V4L2_PIX_FMT_YVU444M
1066      - 'YM42'
1067      - 8
1068      - 4:4:4
1069      - Y, Cr, Cb
1070      - No
1071
1072.. raw:: latex
1073
1074    \normalsize
1075
1076.. [4] Order of luma and chroma planes
1077.. [5] Indicates if planes have to be contiguous in memory or can be
1078       disjoint
1079
1080
1081**Color Sample Location:**
1082Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
1083horizontally.
1084
1085.. _V4L2-PIX-FMT-YUV410:
1086.. _V4L2-PIX-FMT-YVU410:
1087
1088YUV410 and YVU410
1089-----------------
1090
1091Planar YUV 4:1:0 formats. The chroma planes are subsampled by 4 in each
1092direction. Chroma lines contain a quarter of the number of pixels and bytes of
1093the luma lines, and the chroma planes contain a quarter of the number of lines
1094of the luma plane.
1095
1096.. flat-table:: Sample 4x4 YUV410 Image
1097    :header-rows:  0
1098    :stub-columns: 0
1099
1100    * - start + 0:
1101      - Y'\ :sub:`00`
1102      - Y'\ :sub:`01`
1103      - Y'\ :sub:`02`
1104      - Y'\ :sub:`03`
1105    * - start + 4:
1106      - Y'\ :sub:`10`
1107      - Y'\ :sub:`11`
1108      - Y'\ :sub:`12`
1109      - Y'\ :sub:`13`
1110    * - start + 8:
1111      - Y'\ :sub:`20`
1112      - Y'\ :sub:`21`
1113      - Y'\ :sub:`22`
1114      - Y'\ :sub:`23`
1115    * - start + 12:
1116      - Y'\ :sub:`30`
1117      - Y'\ :sub:`31`
1118      - Y'\ :sub:`32`
1119      - Y'\ :sub:`33`
1120    * - start + 16:
1121      - Cr\ :sub:`00`
1122    * - start + 17:
1123      - Cb\ :sub:`00`
1124
1125
1126.. _V4L2-PIX-FMT-YUV411P:
1127
1128YUV411P
1129-------
1130
1131Planar YUV 4:1:1 formats. The chroma planes are subsampled by 4 in the
1132horizontal direction. Chroma lines contain a quarter of the number of pixels
1133and bytes of the luma lines, and the chroma planes contain the same number of
1134lines as the luma plane.
1135
1136.. flat-table:: Sample 4x4 YUV411P Image
1137    :header-rows:  0
1138    :stub-columns: 0
1139
1140    * - start + 0:
1141      - Y'\ :sub:`00`
1142      - Y'\ :sub:`01`
1143      - Y'\ :sub:`02`
1144      - Y'\ :sub:`03`
1145    * - start + 4:
1146      - Y'\ :sub:`10`
1147      - Y'\ :sub:`11`
1148      - Y'\ :sub:`12`
1149      - Y'\ :sub:`13`
1150    * - start + 8:
1151      - Y'\ :sub:`20`
1152      - Y'\ :sub:`21`
1153      - Y'\ :sub:`22`
1154      - Y'\ :sub:`23`
1155    * - start + 12:
1156      - Y'\ :sub:`30`
1157      - Y'\ :sub:`31`
1158      - Y'\ :sub:`32`
1159      - Y'\ :sub:`33`
1160    * - start + 16:
1161      - Cb\ :sub:`00`
1162    * - start + 17:
1163      - Cb\ :sub:`10`
1164    * - start + 18:
1165      - Cb\ :sub:`20`
1166    * - start + 19:
1167      - Cb\ :sub:`30`
1168    * - start + 20:
1169      - Cr\ :sub:`00`
1170    * - start + 21:
1171      - Cr\ :sub:`10`
1172    * - start + 22:
1173      - Cr\ :sub:`20`
1174    * - start + 23:
1175      - Cr\ :sub:`30`
1176
1177
1178.. _V4L2-PIX-FMT-YUV420:
1179.. _V4L2-PIX-FMT-YVU420:
1180.. _V4L2-PIX-FMT-YUV420M:
1181.. _V4L2-PIX-FMT-YVU420M:
1182
1183YUV420, YVU420, YUV420M and YVU420M
1184-----------------------------------
1185
1186Planar YUV 4:2:0 formats. The chroma planes are subsampled by 2 in each
1187direction. Chroma lines contain half of the number of pixels and bytes of the
1188luma lines, and the chroma planes contain half of the number of lines of the
1189luma plane.
1190
1191.. flat-table:: Sample 4x4 YUV420 Image
1192    :header-rows:  0
1193    :stub-columns: 0
1194
1195    * - start + 0:
1196      - Y'\ :sub:`00`
1197      - Y'\ :sub:`01`
1198      - Y'\ :sub:`02`
1199      - Y'\ :sub:`03`
1200    * - start + 4:
1201      - Y'\ :sub:`10`
1202      - Y'\ :sub:`11`
1203      - Y'\ :sub:`12`
1204      - Y'\ :sub:`13`
1205    * - start + 8:
1206      - Y'\ :sub:`20`
1207      - Y'\ :sub:`21`
1208      - Y'\ :sub:`22`
1209      - Y'\ :sub:`23`
1210    * - start + 12:
1211      - Y'\ :sub:`30`
1212      - Y'\ :sub:`31`
1213      - Y'\ :sub:`32`
1214      - Y'\ :sub:`33`
1215    * - start + 16:
1216      - Cr\ :sub:`00`
1217      - Cr\ :sub:`01`
1218    * - start + 18:
1219      - Cr\ :sub:`10`
1220      - Cr\ :sub:`11`
1221    * - start + 20:
1222      - Cb\ :sub:`00`
1223      - Cb\ :sub:`01`
1224    * - start + 22:
1225      - Cb\ :sub:`10`
1226      - Cb\ :sub:`11`
1227
1228.. flat-table:: Sample 4x4 YUV420M Image
1229    :header-rows:  0
1230    :stub-columns: 0
1231
1232    * - start0 + 0:
1233      - Y'\ :sub:`00`
1234      - Y'\ :sub:`01`
1235      - Y'\ :sub:`02`
1236      - Y'\ :sub:`03`
1237    * - start0 + 4:
1238      - Y'\ :sub:`10`
1239      - Y'\ :sub:`11`
1240      - Y'\ :sub:`12`
1241      - Y'\ :sub:`13`
1242    * - start0 + 8:
1243      - Y'\ :sub:`20`
1244      - Y'\ :sub:`21`
1245      - Y'\ :sub:`22`
1246      - Y'\ :sub:`23`
1247    * - start0 + 12:
1248      - Y'\ :sub:`30`
1249      - Y'\ :sub:`31`
1250      - Y'\ :sub:`32`
1251      - Y'\ :sub:`33`
1252    * -
1253    * - start1 + 0:
1254      - Cb\ :sub:`00`
1255      - Cb\ :sub:`01`
1256    * - start1 + 2:
1257      - Cb\ :sub:`10`
1258      - Cb\ :sub:`11`
1259    * -
1260    * - start2 + 0:
1261      - Cr\ :sub:`00`
1262      - Cr\ :sub:`01`
1263    * - start2 + 2:
1264      - Cr\ :sub:`10`
1265      - Cr\ :sub:`11`
1266
1267
1268.. _V4L2-PIX-FMT-YUV422P:
1269.. _V4L2-PIX-FMT-YUV422M:
1270.. _V4L2-PIX-FMT-YVU422M:
1271
1272YUV422P, YUV422M and YVU422M
1273----------------------------
1274
1275Planar YUV 4:2:2 formats. The chroma planes are subsampled by 2 in the
1276horizontal direction. Chroma lines contain half of the number of pixels and
1277bytes of the luma lines, and the chroma planes contain the same number of lines
1278as the luma plane.
1279
1280.. flat-table:: Sample 4x4 YUV422P Image
1281    :header-rows:  0
1282    :stub-columns: 0
1283
1284    * - start + 0:
1285      - Y'\ :sub:`00`
1286      - Y'\ :sub:`01`
1287      - Y'\ :sub:`02`
1288      - Y'\ :sub:`03`
1289    * - start + 4:
1290      - Y'\ :sub:`10`
1291      - Y'\ :sub:`11`
1292      - Y'\ :sub:`12`
1293      - Y'\ :sub:`13`
1294    * - start + 8:
1295      - Y'\ :sub:`20`
1296      - Y'\ :sub:`21`
1297      - Y'\ :sub:`22`
1298      - Y'\ :sub:`23`
1299    * - start + 12:
1300      - Y'\ :sub:`30`
1301      - Y'\ :sub:`31`
1302      - Y'\ :sub:`32`
1303      - Y'\ :sub:`33`
1304    * - start + 16:
1305      - Cb\ :sub:`00`
1306      - Cb\ :sub:`01`
1307    * - start + 18:
1308      - Cb\ :sub:`10`
1309      - Cb\ :sub:`11`
1310    * - start + 20:
1311      - Cb\ :sub:`20`
1312      - Cb\ :sub:`21`
1313    * - start + 22:
1314      - Cb\ :sub:`30`
1315      - Cb\ :sub:`31`
1316    * - start + 24:
1317      - Cr\ :sub:`00`
1318      - Cr\ :sub:`01`
1319    * - start + 26:
1320      - Cr\ :sub:`10`
1321      - Cr\ :sub:`11`
1322    * - start + 28:
1323      - Cr\ :sub:`20`
1324      - Cr\ :sub:`21`
1325    * - start + 30:
1326      - Cr\ :sub:`30`
1327      - Cr\ :sub:`31`
1328
1329.. flat-table:: Sample 4x4 YUV422M Image
1330    :header-rows:  0
1331    :stub-columns: 0
1332
1333    * - start0 + 0:
1334      - Y'\ :sub:`00`
1335      - Y'\ :sub:`01`
1336      - Y'\ :sub:`02`
1337      - Y'\ :sub:`03`
1338    * - start0 + 4:
1339      - Y'\ :sub:`10`
1340      - Y'\ :sub:`11`
1341      - Y'\ :sub:`12`
1342      - Y'\ :sub:`13`
1343    * - start0 + 8:
1344      - Y'\ :sub:`20`
1345      - Y'\ :sub:`21`
1346      - Y'\ :sub:`22`
1347      - Y'\ :sub:`23`
1348    * - start0 + 12:
1349      - Y'\ :sub:`30`
1350      - Y'\ :sub:`31`
1351      - Y'\ :sub:`32`
1352      - Y'\ :sub:`33`
1353    * -
1354    * - start1 + 0:
1355      - Cb\ :sub:`00`
1356      - Cb\ :sub:`01`
1357    * - start1 + 2:
1358      - Cb\ :sub:`10`
1359      - Cb\ :sub:`11`
1360    * - start1 + 4:
1361      - Cb\ :sub:`20`
1362      - Cb\ :sub:`21`
1363    * - start1 + 6:
1364      - Cb\ :sub:`30`
1365      - Cb\ :sub:`31`
1366    * -
1367    * - start2 + 0:
1368      - Cr\ :sub:`00`
1369      - Cr\ :sub:`01`
1370    * - start2 + 2:
1371      - Cr\ :sub:`10`
1372      - Cr\ :sub:`11`
1373    * - start2 + 4:
1374      - Cr\ :sub:`20`
1375      - Cr\ :sub:`21`
1376    * - start2 + 6:
1377      - Cr\ :sub:`30`
1378      - Cr\ :sub:`31`
1379
1380
1381.. _V4L2-PIX-FMT-YUV444M:
1382.. _V4L2-PIX-FMT-YVU444M:
1383
1384YUV444M and YVU444M
1385-------------------
1386
1387Planar YUV 4:4:4 formats. The chroma planes are no subsampled. Chroma lines
1388contain the same number of pixels and bytes of the luma lines, and the chroma
1389planes contain the same number of lines as the luma plane.
1390
1391.. flat-table:: Sample 4x4 YUV444M Image
1392    :header-rows:  0
1393    :stub-columns: 0
1394
1395    * - start0 + 0:
1396      - Y'\ :sub:`00`
1397      - Y'\ :sub:`01`
1398      - Y'\ :sub:`02`
1399      - Y'\ :sub:`03`
1400    * - start0 + 4:
1401      - Y'\ :sub:`10`
1402      - Y'\ :sub:`11`
1403      - Y'\ :sub:`12`
1404      - Y'\ :sub:`13`
1405    * - start0 + 8:
1406      - Y'\ :sub:`20`
1407      - Y'\ :sub:`21`
1408      - Y'\ :sub:`22`
1409      - Y'\ :sub:`23`
1410    * - start0 + 12:
1411      - Y'\ :sub:`30`
1412      - Y'\ :sub:`31`
1413      - Y'\ :sub:`32`
1414      - Y'\ :sub:`33`
1415    * -
1416    * - start1 + 0:
1417      - Cb\ :sub:`00`
1418      - Cb\ :sub:`01`
1419      - Cb\ :sub:`02`
1420      - Cb\ :sub:`03`
1421    * - start1 + 4:
1422      - Cb\ :sub:`10`
1423      - Cb\ :sub:`11`
1424      - Cb\ :sub:`12`
1425      - Cb\ :sub:`13`
1426    * - start1 + 8:
1427      - Cb\ :sub:`20`
1428      - Cb\ :sub:`21`
1429      - Cb\ :sub:`22`
1430      - Cb\ :sub:`23`
1431    * - start1 + 12:
1432      - Cb\ :sub:`20`
1433      - Cb\ :sub:`21`
1434      - Cb\ :sub:`32`
1435      - Cb\ :sub:`33`
1436    * -
1437    * - start2 + 0:
1438      - Cr\ :sub:`00`
1439      - Cr\ :sub:`01`
1440      - Cr\ :sub:`02`
1441      - Cr\ :sub:`03`
1442    * - start2 + 4:
1443      - Cr\ :sub:`10`
1444      - Cr\ :sub:`11`
1445      - Cr\ :sub:`12`
1446      - Cr\ :sub:`13`
1447    * - start2 + 8:
1448      - Cr\ :sub:`20`
1449      - Cr\ :sub:`21`
1450      - Cr\ :sub:`22`
1451      - Cr\ :sub:`23`
1452    * - start2 + 12:
1453      - Cr\ :sub:`30`
1454      - Cr\ :sub:`31`
1455      - Cr\ :sub:`32`
1456      - Cr\ :sub:`33`
1457