Lines Matching +full:1 +full:- +full:of +full:- +full:4
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
3 .. planar-yuv:
12 - Semi-planar formats use two planes. The first plane is the luma plane and
16 - Fully planar formats use three planes to store the Y, Cb and Cr components
20 tiled. Padding may be supported at the end of the lines, and the line stride of
21 the chroma planes may be constrained by the line stride of the luma plane.
26 and applications that support the multi-planar API, described in
27 :ref:`planar-apis`. Unless explicitly documented as supporting non-contiguous
31 Semi-Planar YUV Formats
40 For memory contiguous formats, the number of padding pixels at the end of the
41 chroma lines is identical to the padding of the luma lines. Without horizontal
46 For non-contiguous formats, no constraints are enforced by the format on the
49 All components are stored with the same number of bits per component.
57 .. flat-table:: Overview of Semi-Planar YUV Formats
58 :header-rows: 1
59 :stub-columns: 0
61 * - Identifier
62 - Code
63 - Bits per component
64 - Subsampling
65 - Chroma order [1]_
66 - Contiguous [2]_
67 - Tiling [3]_
68 * - V4L2_PIX_FMT_NV12
69 - 'NV12'
70 - 8
71 - 4:2:0
72 - Cb, Cr
73 - Yes
74 - Linear
75 * - V4L2_PIX_FMT_NV21
76 - 'NV21'
77 - 8
78 - 4:2:0
79 - Cr, Cb
80 - Yes
81 - Linear
82 * - V4L2_PIX_FMT_NV12M
83 - 'NM12'
84 - 8
85 - 4:2:0
86 - Cb, Cr
87 - No
88 - Linear
89 * - V4L2_PIX_FMT_NV21M
90 - 'NM21'
91 - 8
92 - 4:2:0
93 - Cr, Cb
94 - No
95 - Linear
96 * - V4L2_PIX_FMT_NV12MT
97 - 'TM12'
98 - 8
99 - 4:2:0
100 - Cb, Cr
101 - No
102 - 64x32 tiles
105 * - V4L2_PIX_FMT_NV12MT_16X16
106 - 'VM12'
107 - 8
108 - 4:2:2
109 - Cb, Cr
110 - No
111 - 16x16 tiles
112 * - V4L2_PIX_FMT_P010
113 - 'P010'
114 - 10
115 - 4:2:0
116 - Cb, Cr
117 - Yes
118 - Linear
119 * - V4L2_PIX_FMT_P010_4L4
120 - 'T010'
121 - 10
122 - 4:2:0
123 - Cb, Cr
124 - Yes
125 - 4x4 tiles
126 * - V4L2_PIX_FMT_P012
127 - 'P012'
128 - 12
129 - 4:2:0
130 - Cb, Cr
131 - Yes
132 - Linear
133 * - V4L2_PIX_FMT_P012M
134 - 'PM12'
135 - 12
136 - 4:2:0
137 - Cb, Cr
138 - No
139 - Linear
140 * - V4L2_PIX_FMT_NV15_4L4
141 - 'VT15'
142 - 15
143 - 4:2:0
144 - Cb, Cr
145 - Yes
146 - 4x4 tiles
147 * - V4L2_PIX_FMT_MT2110T
148 - 'MT2T'
149 - 15
150 - 4:2:0
151 - Cb, Cr
152 - No
153 - 16x32 / 16x16 tiles tiled low bits
154 * - V4L2_PIX_FMT_MT2110R
155 - 'MT2R'
156 - 15
157 - 4:2:0
158 - Cb, Cr
159 - No
160 - 16x32 / 16x16 tiles raster low bits
161 * - V4L2_PIX_FMT_NV16
162 - 'NV16'
163 - 8
164 - 4:2:2
165 - Cb, Cr
166 - Yes
167 - Linear
168 * - V4L2_PIX_FMT_NV61
169 - 'NV61'
170 - 8
171 - 4:2:2
172 - Cr, Cb
173 - Yes
174 - Linear
175 * - V4L2_PIX_FMT_NV16M
176 - 'NM16'
177 - 8
178 - 4:2:2
179 - Cb, Cr
180 - No
181 - Linear
182 * - V4L2_PIX_FMT_NV61M
183 - 'NM61'
184 - 8
185 - 4:2:2
186 - Cr, Cb
187 - No
188 - Linear
189 * - V4L2_PIX_FMT_NV24
190 - 'NV24'
191 - 8
192 - 4:4:4
193 - Cb, Cr
194 - Yes
195 - Linear
196 * - V4L2_PIX_FMT_NV42
197 - 'NV42'
198 - 8
199 - 4:4:4
200 - Cr, Cb
201 - Yes
202 - Linear
208 .. [1] Order of chroma samples in the second plane citation in Semi-Planar YUV Formats
215 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
219 .. _V4L2-PIX-FMT-NV12:
220 .. _V4L2-PIX-FMT-NV21:
221 .. _V4L2-PIX-FMT-NV12M:
222 .. _V4L2-PIX-FMT-NV21M:
223 .. _V4L2-PIX-FMT-P010:
226 ---------------------------
228 Semi-planar YUV 4:2:0 formats. The chroma plane is subsampled by 2 in each
229 direction. Chroma lines contain half the number of pixels and the same number
230 of bytes as luma lines, and the chroma plane contains half the number of lines
231 of the luma plane.
233 .. flat-table:: Sample 4x4 NV12 Image
234 :header-rows: 0
235 :stub-columns: 0
237 * - start + 0:
238 - Y'\ :sub:`00`
239 - Y'\ :sub:`01`
240 - Y'\ :sub:`02`
241 - Y'\ :sub:`03`
242 * - start + 4:
243 - Y'\ :sub:`10`
244 - Y'\ :sub:`11`
245 - Y'\ :sub:`12`
246 - Y'\ :sub:`13`
247 * - start + 8:
248 - Y'\ :sub:`20`
249 - Y'\ :sub:`21`
250 - Y'\ :sub:`22`
251 - Y'\ :sub:`23`
252 * - start + 12:
253 - Y'\ :sub:`30`
254 - Y'\ :sub:`31`
255 - Y'\ :sub:`32`
256 - Y'\ :sub:`33`
257 * - start + 16:
258 - Cb\ :sub:`00`
259 - Cr\ :sub:`00`
260 - Cb\ :sub:`01`
261 - Cr\ :sub:`01`
262 * - start + 20:
263 - Cb\ :sub:`10`
264 - Cr\ :sub:`10`
265 - Cb\ :sub:`11`
266 - Cr\ :sub:`11`
268 .. flat-table:: Sample 4x4 NV12M Image
269 :header-rows: 0
270 :stub-columns: 0
272 * - start0 + 0:
273 - Y'\ :sub:`00`
274 - Y'\ :sub:`01`
275 - Y'\ :sub:`02`
276 - Y'\ :sub:`03`
277 * - start0 + 4:
278 - Y'\ :sub:`10`
279 - Y'\ :sub:`11`
280 - Y'\ :sub:`12`
281 - Y'\ :sub:`13`
282 * - start0 + 8:
283 - Y'\ :sub:`20`
284 - Y'\ :sub:`21`
285 - Y'\ :sub:`22`
286 - Y'\ :sub:`23`
287 * - start0 + 12:
288 - Y'\ :sub:`30`
289 - Y'\ :sub:`31`
290 - Y'\ :sub:`32`
291 - Y'\ :sub:`33`
292 * -
293 * - start1 + 0:
294 - Cb\ :sub:`00`
295 - Cr\ :sub:`00`
296 - Cb\ :sub:`01`
297 - Cr\ :sub:`01`
298 * - start1 + 4:
299 - Cb\ :sub:`10`
300 - Cr\ :sub:`10`
301 - Cb\ :sub:`11`
302 - Cr\ :sub:`11`
305 .. _V4L2-PIX-FMT-NV12MT:
306 .. _V4L2-PIX-FMT-NV12MT-16X16:
307 .. _V4L2-PIX-FMT-NV12-4L4:
308 .. _V4L2-PIX-FMT-NV12-16L16:
309 .. _V4L2-PIX-FMT-NV12-32L32:
310 .. _V4L2-PIX-FMT-NV12M-8L128:
311 .. _V4L2-PIX-FMT-NV12-8L128:
312 .. _V4L2-PIX-FMT-MM21:
315 ----------
317 Semi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is
318 subsampled by 2 in each direction. Chroma lines contain half the number of
319 pixels and the same number of bytes as luma lines, and the chroma plane
320 contains half the number of lines of the luma plane. Each tile follows the
325 The line stride and image height must be aligned to a multiple of 16.
326 The layouts of the luma and chroma planes are identical.
329 pixels in 2D 64x32 tiles, and stores 2x2 groups of tiles in
330 Z-order in memory, alternating Z and mirrored Z shapes horizontally.
331 The line stride must be a multiple of 128 pixels to ensure an
332 integer number of Z shapes. The image height must be a multiple of 32 pixels.
333 If the vertical resolution is an odd number of tiles, the last row of
334 tiles is stored in linear order. The layouts of the luma and chroma
339 .. kernel-figure:: nv12mt.svg
347 .. kernel-figure:: nv12mt_example.svg
351 Example V4L2_PIX_FMT_NV12MT memory layout of tiles
353 ``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 tiles, and stores
355 aligned to a multiple of 4. The layouts of the luma and chroma planes are
360 aligned to a multiple of 16. The layouts of the luma and chroma planes are
365 aligned to a multiple of 32. The layouts of the luma and chroma planes are
370 The image height must be aligned to a multiple of 128.
371 The layouts of the luma and chroma planes are identical.
377 in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
378 image height must be aligned to a multiple of 32. The number of luma and chroma
379 tiles are identical, even though the tile size differ. The image is formed of
380 two non-contiguous planes.
383 .. _V4L2-PIX-FMT-NV15-4L4:
384 .. _V4L2-PIX-FMT-NV12M-10BE-8L128:
385 .. _V4L2-PIX-FMT-NV12-10BE-8L128:
386 .. _V4L2-PIX-FMT-MT2110T:
387 .. _V4L2-PIX-FMT-MT2110R:
390 ----------
392 ``V4L2_PIX_FMT_NV15_4L4`` Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling.
394 As a side-effect, each group of 4 components are stored over 5 bytes
395 (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes).
400 The image height must be aligned to a multiple of 128.
401 The layouts of the luma and chroma planes are identical.
403 it means that the low bits and high bits of one pixel may be in different tiles.
404 The 10 bit pixels are packed, so 5 bytes contain 4 10-bit pixels layout like
406 byte 0: Y0(bits 9-2)
407 byte 1: Y0(bits 1-0) Y1(bits 9-4)
408 byte 2: Y1(bits 3-0) Y2(bits 9-6)
409 byte 3: Y2(bits 5-0) Y3(bits 9-8)
410 byte 4: Y3(bits 7-0)
415 ``V4L2_PIX_FMT_MT2110T`` is one of Mediatek packed 10bit YUV 4:2:0 formats.
416 It is fully packed 10bit 4:2:0 format like NV15 (15 bits per pixel), except
418 composed of 16x32 luma tiles, and 16x16 chroma tiles. Each tiles is 640 bytes
419 long, divided into 8 partitions of 80 bytes. The first 16 bytes of the
420 partition represent the 2 least significant bits of pixel data. The remaining
421 64 bytes represent the 8 most significant bits of pixel data.
423 .. kernel-figure:: mt2110t.svg
427 Layout of MT2110T Chroma Tile
429 Filtering out the upper part of each partitions results in a valid
430 ``V4L2_PIX_FMT_MM21`` frame. A partition is a sub-tile of size 16 x 4. The
432 bits of the column of for pixel matching the same index. The chroma tiles
433 only have 4 partitions.
435 .. flat-table:: MT2110T LSB bits layout
436 :header-rows: 1
437 :stub-columns: 1
439 * -
440 - start + 0:
441 - start + 1:
442 - . . .
443 - start\ +\ 15:
444 * - Bits 1:0
445 - Y'\ :sub:`0:0`
446 - Y'\ :sub:`0:1`
447 - . . .
448 - Y'\ :sub:`0:15`
449 * - Bit 3:2
450 - Y'\ :sub:`1:0`
451 - Y'\ :sub:`1:1`
452 - . . .
453 - Y'\ :sub:`1:15`
454 * - Bits 5:4
455 - Y'\ :sub:`2:0`
456 - Y'\ :sub:`2:1`
457 - . . .
458 - Y'\ :sub:`2:15`
459 * - Bits 7:6
460 - Y'\ :sub:`3:0`
461 - Y'\ :sub:`3:1`
462 - . . .
463 - Y'\ :sub:`3:15`
467 contains 4 pixels of the first row, with 4 bytes per line.
469 .. flat-table:: MT2110R LSB bits layout
470 :header-rows: 2
471 :stub-columns: 1
473 * -
474 - :cspan:`3` Byte 0
475 - ...
476 - :cspan:`3` Byte 3
477 * -
478 - 7:6
479 - 5:4
480 - 3:2
481 - 1:0
482 - ...
483 - 7:6
484 - 5:4
485 - 3:2
486 - 1:0
487 * - start + 0:
488 - Y'\ :sub:`0:3`
489 - Y'\ :sub:`0:2`
490 - Y'\ :sub:`0:1`
491 - Y'\ :sub:`0:0`
492 - ...
493 - Y'\ :sub:`0:15`
494 - Y'\ :sub:`0:14`
495 - Y'\ :sub:`0:13`
496 - Y'\ :sub:`0:12`
497 * - start + 4:
498 - Y'\ :sub:`1:3`
499 - Y'\ :sub:`1:2`
500 - Y'\ :sub:`1:1`
501 - Y'\ :sub:`1:0`
502 - ...
503 - Y'\ :sub:`1:15`
504 - Y'\ :sub:`1:14`
505 - Y'\ :sub:`1:13`
506 - Y'\ :sub:`1:12`
507 * - start + 8:
508 - Y'\ :sub:`2:3`
509 - Y'\ :sub:`2:2`
510 - Y'\ :sub:`2:1`
511 - Y'\ :sub:`2:0`
512 - ...
513 - Y'\ :sub:`2:15`
514 - Y'\ :sub:`2:14`
515 - Y'\ :sub:`2:13`
516 - Y'\ :sub:`2:12`
517 * - start\ +\ 12:
518 - Y'\ :sub:`3:3`
519 - Y'\ :sub:`3:2`
520 - Y'\ :sub:`3:1`
521 - Y'\ :sub:`3:0`
522 - ...
523 - Y'\ :sub:`3:15`
524 - Y'\ :sub:`3:14`
525 - Y'\ :sub:`3:13`
526 - Y'\ :sub:`3:12`
529 .. _V4L2-PIX-FMT-NV16:
530 .. _V4L2-PIX-FMT-NV61:
531 .. _V4L2-PIX-FMT-NV16M:
532 .. _V4L2-PIX-FMT-NV61M:
535 ---------------------------
537 Semi-planar YUV 4:2:2 formats. The chroma plane is subsampled by 2 in the
538 horizontal direction. Chroma lines contain half the number of pixels and the
539 same number of bytes as luma lines, and the chroma plane contains the same
540 number of lines as the luma plane.
542 .. flat-table:: Sample 4x4 NV16 Image
543 :header-rows: 0
544 :stub-columns: 0
546 * - start + 0:
547 - Y'\ :sub:`00`
548 - Y'\ :sub:`01`
549 - Y'\ :sub:`02`
550 - Y'\ :sub:`03`
551 * - start + 4:
552 - Y'\ :sub:`10`
553 - Y'\ :sub:`11`
554 - Y'\ :sub:`12`
555 - Y'\ :sub:`13`
556 * - start + 8:
557 - Y'\ :sub:`20`
558 - Y'\ :sub:`21`
559 - Y'\ :sub:`22`
560 - Y'\ :sub:`23`
561 * - start + 12:
562 - Y'\ :sub:`30`
563 - Y'\ :sub:`31`
564 - Y'\ :sub:`32`
565 - Y'\ :sub:`33`
566 * - start + 16:
567 - Cb\ :sub:`00`
568 - Cr\ :sub:`00`
569 - Cb\ :sub:`01`
570 - Cr\ :sub:`01`
571 * - start + 20:
572 - Cb\ :sub:`10`
573 - Cr\ :sub:`10`
574 - Cb\ :sub:`11`
575 - Cr\ :sub:`11`
576 * - start + 24:
577 - Cb\ :sub:`20`
578 - Cr\ :sub:`20`
579 - Cb\ :sub:`21`
580 - Cr\ :sub:`21`
581 * - start + 28:
582 - Cb\ :sub:`30`
583 - Cr\ :sub:`30`
584 - Cb\ :sub:`31`
585 - Cr\ :sub:`31`
587 .. flat-table:: Sample 4x4 NV16M Image
588 :header-rows: 0
589 :stub-columns: 0
591 * - start0 + 0:
592 - Y'\ :sub:`00`
593 - Y'\ :sub:`01`
594 - Y'\ :sub:`02`
595 - Y'\ :sub:`03`
596 * - start0 + 4:
597 - Y'\ :sub:`10`
598 - Y'\ :sub:`11`
599 - Y'\ :sub:`12`
600 - Y'\ :sub:`13`
601 * - start0 + 8:
602 - Y'\ :sub:`20`
603 - Y'\ :sub:`21`
604 - Y'\ :sub:`22`
605 - Y'\ :sub:`23`
606 * - start0 + 12:
607 - Y'\ :sub:`30`
608 - Y'\ :sub:`31`
609 - Y'\ :sub:`32`
610 - Y'\ :sub:`33`
611 * -
612 * - start1 + 0:
613 - Cb\ :sub:`00`
614 - Cr\ :sub:`00`
615 - Cb\ :sub:`02`
616 - Cr\ :sub:`02`
617 * - start1 + 4:
618 - Cb\ :sub:`10`
619 - Cr\ :sub:`10`
620 - Cb\ :sub:`12`
621 - Cr\ :sub:`12`
622 * - start1 + 8:
623 - Cb\ :sub:`20`
624 - Cr\ :sub:`20`
625 - Cb\ :sub:`22`
626 - Cr\ :sub:`22`
627 * - start1 + 12:
628 - Cb\ :sub:`30`
629 - Cr\ :sub:`30`
630 - Cb\ :sub:`32`
631 - Cr\ :sub:`32`
634 .. _V4L2-PIX-FMT-NV24:
635 .. _V4L2-PIX-FMT-NV42:
638 -------------
640 Semi-planar YUV 4:4:4 formats. The chroma plane is not subsampled.
641 Chroma lines contain the same number of pixels and twice the
642 number of bytes as luma lines, and the chroma plane contains the same
643 number of lines as the luma plane.
645 .. flat-table:: Sample 4x4 NV24 Image
646 :header-rows: 0
647 :stub-columns: 0
649 * - start + 0:
650 - Y'\ :sub:`00`
651 - Y'\ :sub:`01`
652 - Y'\ :sub:`02`
653 - Y'\ :sub:`03`
654 * - start + 4:
655 - Y'\ :sub:`10`
656 - Y'\ :sub:`11`
657 - Y'\ :sub:`12`
658 - Y'\ :sub:`13`
659 * - start + 8:
660 - Y'\ :sub:`20`
661 - Y'\ :sub:`21`
662 - Y'\ :sub:`22`
663 - Y'\ :sub:`23`
664 * - start + 12:
665 - Y'\ :sub:`30`
666 - Y'\ :sub:`31`
667 - Y'\ :sub:`32`
668 - Y'\ :sub:`33`
669 * - start + 16:
670 - Cb\ :sub:`00`
671 - Cr\ :sub:`00`
672 - Cb\ :sub:`01`
673 - Cr\ :sub:`01`
674 - Cb\ :sub:`02`
675 - Cr\ :sub:`02`
676 - Cb\ :sub:`03`
677 - Cr\ :sub:`03`
678 * - start + 24:
679 - Cb\ :sub:`10`
680 - Cr\ :sub:`10`
681 - Cb\ :sub:`11`
682 - Cr\ :sub:`11`
683 - Cb\ :sub:`12`
684 - Cr\ :sub:`12`
685 - Cb\ :sub:`13`
686 - Cr\ :sub:`13`
687 * - start + 32:
688 - Cb\ :sub:`20`
689 - Cr\ :sub:`20`
690 - Cb\ :sub:`21`
691 - Cr\ :sub:`21`
692 - Cb\ :sub:`22`
693 - Cr\ :sub:`22`
694 - Cb\ :sub:`23`
695 - Cr\ :sub:`23`
696 * - start + 40:
697 - Cb\ :sub:`30`
698 - Cr\ :sub:`30`
699 - Cb\ :sub:`31`
700 - Cr\ :sub:`31`
701 - Cb\ :sub:`32`
702 - Cr\ :sub:`32`
703 - Cb\ :sub:`33`
704 - Cr\ :sub:`33`
707 .. _V4L2-PIX-FMT-P010-4L4:
710 -------------------
715 .. flat-table:: Sample 4x4 P010 Image
716 :header-rows: 0
717 :stub-columns: 0
719 * - start + 0:
720 - Y'\ :sub:`00`
721 - Y'\ :sub:`01`
722 - Y'\ :sub:`02`
723 - Y'\ :sub:`03`
724 * - start + 8:
725 - Y'\ :sub:`10`
726 - Y'\ :sub:`11`
727 - Y'\ :sub:`12`
728 - Y'\ :sub:`13`
729 * - start + 16:
730 - Y'\ :sub:`20`
731 - Y'\ :sub:`21`
732 - Y'\ :sub:`22`
733 - Y'\ :sub:`23`
734 * - start + 24:
735 - Y'\ :sub:`30`
736 - Y'\ :sub:`31`
737 - Y'\ :sub:`32`
738 - Y'\ :sub:`33`
739 * - start + 32:
740 - Cb\ :sub:`00`
741 - Cr\ :sub:`00`
742 - Cb\ :sub:`01`
743 - Cr\ :sub:`01`
744 * - start + 40:
745 - Cb\ :sub:`10`
746 - Cr\ :sub:`10`
747 - Cb\ :sub:`11`
748 - Cr\ :sub:`11`
750 .. _V4L2-PIX-FMT-P012:
751 .. _V4L2-PIX-FMT-P012M:
754 --------------
757 Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian order.
759 .. flat-table:: Sample 4x4 P012 Image
760 :header-rows: 0
761 :stub-columns: 0
763 * - start + 0:
764 - Y'\ :sub:`00`
765 - Y'\ :sub:`01`
766 - Y'\ :sub:`02`
767 - Y'\ :sub:`03`
768 * - start + 8:
769 - Y'\ :sub:`10`
770 - Y'\ :sub:`11`
771 - Y'\ :sub:`12`
772 - Y'\ :sub:`13`
773 * - start + 16:
774 - Y'\ :sub:`20`
775 - Y'\ :sub:`21`
776 - Y'\ :sub:`22`
777 - Y'\ :sub:`23`
778 * - start + 24:
779 - Y'\ :sub:`30`
780 - Y'\ :sub:`31`
781 - Y'\ :sub:`32`
782 - Y'\ :sub:`33`
783 * - start + 32:
784 - Cb\ :sub:`00`
785 - Cr\ :sub:`00`
786 - Cb\ :sub:`01`
787 - Cr\ :sub:`01`
788 * - start + 40:
789 - Cb\ :sub:`10`
790 - Cr\ :sub:`10`
791 - Cb\ :sub:`11`
792 - Cr\ :sub:`11`
794 .. flat-table:: Sample 4x4 P012M Image
795 :header-rows: 0
796 :stub-columns: 0
798 * - start0 + 0:
799 - Y'\ :sub:`00`
800 - Y'\ :sub:`01`
801 - Y'\ :sub:`02`
802 - Y'\ :sub:`03`
803 * - start0 + 8:
804 - Y'\ :sub:`10`
805 - Y'\ :sub:`11`
806 - Y'\ :sub:`12`
807 - Y'\ :sub:`13`
808 * - start0 + 16:
809 - Y'\ :sub:`20`
810 - Y'\ :sub:`21`
811 - Y'\ :sub:`22`
812 - Y'\ :sub:`23`
813 * - start0 + 24:
814 - Y'\ :sub:`30`
815 - Y'\ :sub:`31`
816 - Y'\ :sub:`32`
817 - Y'\ :sub:`33`
818 * -
819 * - start1 + 0:
820 - Cb\ :sub:`00`
821 - Cr\ :sub:`00`
822 - Cb\ :sub:`01`
823 - Cr\ :sub:`01`
824 * - start1 + 8:
825 - Cb\ :sub:`10`
826 - Cr\ :sub:`10`
827 - Cb\ :sub:`11`
828 - Cr\ :sub:`11`
835 luma plane comes first, and the order of the two chroma planes varies between
838 For memory contiguous formats, the number of padding pixels at the end of the
839 chroma lines is identical to the padding of the luma lines. The chroma line
844 For non-contiguous formats, no constraints are enforced by the format on the
847 All components are stored with the same number of bits per component.
849 ``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 tiles, and stores tiles linearly
850 in memory. The line stride must be aligned to multiple of 8 and image height to
851 a multiple of 4. The layouts of the luma and chroma planes are identical.
859 .. flat-table:: Overview of Fully Planar YUV Formats
860 :header-rows: 1
861 :stub-columns: 0
863 * - Identifier
864 - Code
865 - Bits per component
866 - Subsampling
867 - Planes order [4]_
868 - Contiguous [5]_
870 * - V4L2_PIX_FMT_YUV410
871 - 'YUV9'
872 - 8
873 - 4:1:0
874 - Y, Cb, Cr
875 - Yes
876 * - V4L2_PIX_FMT_YVU410
877 - 'YVU9'
878 - 8
879 - 4:1:0
880 - Y, Cr, Cb
881 - Yes
882 * - V4L2_PIX_FMT_YUV411P
883 - '411P'
884 - 8
885 - 4:1:1
886 - Y, Cb, Cr
887 - Yes
888 * - V4L2_PIX_FMT_YUV420M
889 - 'YM12'
890 - 8
891 - 4:2:0
892 - Y, Cb, Cr
893 - No
894 * - V4L2_PIX_FMT_YVU420M
895 - 'YM21'
896 - 8
897 - 4:2:0
898 - Y, Cr, Cb
899 - No
900 * - V4L2_PIX_FMT_YUV420
901 - 'YU12'
902 - 8
903 - 4:2:0
904 - Y, Cb, Cr
905 - Yes
906 * - V4L2_PIX_FMT_YVU420
907 - 'YV12'
908 - 8
909 - 4:2:0
910 - Y, Cr, Cb
911 - Yes
912 * - V4L2_PIX_FMT_YUV422P
913 - '422P'
914 - 8
915 - 4:2:2
916 - Y, Cb, Cr
917 - Yes
918 * - V4L2_PIX_FMT_YUV422M
919 - 'YM16'
920 - 8
921 - 4:2:2
922 - Y, Cb, Cr
923 - No
924 * - V4L2_PIX_FMT_YVU422M
925 - 'YM61'
926 - 8
927 - 4:2:2
928 - Y, Cr, Cb
929 - No
930 * - V4L2_PIX_FMT_YUV444M
931 - 'YM24'
932 - 8
933 - 4:4:4
934 - Y, Cb, Cr
935 - No
936 * - V4L2_PIX_FMT_YVU444M
937 - 'YM42'
938 - 8
939 - 4:4:4
940 - Y, Cr, Cb
941 - No
947 .. [4] Order of luma and chroma planes citation in Fully Planar YUV Formats
953 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
956 .. _V4L2-PIX-FMT-YUV410:
957 .. _V4L2-PIX-FMT-YVU410:
960 -----------------
962 Planar YUV 4:1:0 formats. The chroma planes are subsampled by 4 in each
963 direction. Chroma lines contain a quarter of the number of pixels and bytes of
964 the luma lines, and the chroma planes contain a quarter of the number of lines
965 of the luma plane.
967 .. flat-table:: Sample 4x4 YUV410 Image
968 :header-rows: 0
969 :stub-columns: 0
971 * - start + 0:
972 - Y'\ :sub:`00`
973 - Y'\ :sub:`01`
974 - Y'\ :sub:`02`
975 - Y'\ :sub:`03`
976 * - start + 4:
977 - Y'\ :sub:`10`
978 - Y'\ :sub:`11`
979 - Y'\ :sub:`12`
980 - Y'\ :sub:`13`
981 * - start + 8:
982 - Y'\ :sub:`20`
983 - Y'\ :sub:`21`
984 - Y'\ :sub:`22`
985 - Y'\ :sub:`23`
986 * - start + 12:
987 - Y'\ :sub:`30`
988 - Y'\ :sub:`31`
989 - Y'\ :sub:`32`
990 - Y'\ :sub:`33`
991 * - start + 16:
992 - Cr\ :sub:`00`
993 * - start + 17:
994 - Cb\ :sub:`00`
997 .. _V4L2-PIX-FMT-YUV411P:
1000 -------
1002 Planar YUV 4:1:1 formats. The chroma planes are subsampled by 4 in the
1003 horizontal direction. Chroma lines contain a quarter of the number of pixels
1004 and bytes of the luma lines, and the chroma planes contain the same number of
1007 .. flat-table:: Sample 4x4 YUV411P Image
1008 :header-rows: 0
1009 :stub-columns: 0
1011 * - start + 0:
1012 - Y'\ :sub:`00`
1013 - Y'\ :sub:`01`
1014 - Y'\ :sub:`02`
1015 - Y'\ :sub:`03`
1016 * - start + 4:
1017 - Y'\ :sub:`10`
1018 - Y'\ :sub:`11`
1019 - Y'\ :sub:`12`
1020 - Y'\ :sub:`13`
1021 * - start + 8:
1022 - Y'\ :sub:`20`
1023 - Y'\ :sub:`21`
1024 - Y'\ :sub:`22`
1025 - Y'\ :sub:`23`
1026 * - start + 12:
1027 - Y'\ :sub:`30`
1028 - Y'\ :sub:`31`
1029 - Y'\ :sub:`32`
1030 - Y'\ :sub:`33`
1031 * - start + 16:
1032 - Cb\ :sub:`00`
1033 * - start + 17:
1034 - Cb\ :sub:`10`
1035 * - start + 18:
1036 - Cb\ :sub:`20`
1037 * - start + 19:
1038 - Cb\ :sub:`30`
1039 * - start + 20:
1040 - Cr\ :sub:`00`
1041 * - start + 21:
1042 - Cr\ :sub:`10`
1043 * - start + 22:
1044 - Cr\ :sub:`20`
1045 * - start + 23:
1046 - Cr\ :sub:`30`
1049 .. _V4L2-PIX-FMT-YUV420:
1050 .. _V4L2-PIX-FMT-YVU420:
1051 .. _V4L2-PIX-FMT-YUV420M:
1052 .. _V4L2-PIX-FMT-YVU420M:
1055 -----------------------------------
1057 Planar YUV 4:2:0 formats. The chroma planes are subsampled by 2 in each
1058 direction. Chroma lines contain half of the number of pixels and bytes of the
1059 luma lines, and the chroma planes contain half of the number of lines of the
1062 .. flat-table:: Sample 4x4 YUV420 Image
1063 :header-rows: 0
1064 :stub-columns: 0
1066 * - start + 0:
1067 - Y'\ :sub:`00`
1068 - Y'\ :sub:`01`
1069 - Y'\ :sub:`02`
1070 - Y'\ :sub:`03`
1071 * - start + 4:
1072 - Y'\ :sub:`10`
1073 - Y'\ :sub:`11`
1074 - Y'\ :sub:`12`
1075 - Y'\ :sub:`13`
1076 * - start + 8:
1077 - Y'\ :sub:`20`
1078 - Y'\ :sub:`21`
1079 - Y'\ :sub:`22`
1080 - Y'\ :sub:`23`
1081 * - start + 12:
1082 - Y'\ :sub:`30`
1083 - Y'\ :sub:`31`
1084 - Y'\ :sub:`32`
1085 - Y'\ :sub:`33`
1086 * - start + 16:
1087 - Cr\ :sub:`00`
1088 - Cr\ :sub:`01`
1089 * - start + 18:
1090 - Cr\ :sub:`10`
1091 - Cr\ :sub:`11`
1092 * - start + 20:
1093 - Cb\ :sub:`00`
1094 - Cb\ :sub:`01`
1095 * - start + 22:
1096 - Cb\ :sub:`10`
1097 - Cb\ :sub:`11`
1099 .. flat-table:: Sample 4x4 YUV420M Image
1100 :header-rows: 0
1101 :stub-columns: 0
1103 * - start0 + 0:
1104 - Y'\ :sub:`00`
1105 - Y'\ :sub:`01`
1106 - Y'\ :sub:`02`
1107 - Y'\ :sub:`03`
1108 * - start0 + 4:
1109 - Y'\ :sub:`10`
1110 - Y'\ :sub:`11`
1111 - Y'\ :sub:`12`
1112 - Y'\ :sub:`13`
1113 * - start0 + 8:
1114 - Y'\ :sub:`20`
1115 - Y'\ :sub:`21`
1116 - Y'\ :sub:`22`
1117 - Y'\ :sub:`23`
1118 * - start0 + 12:
1119 - Y'\ :sub:`30`
1120 - Y'\ :sub:`31`
1121 - Y'\ :sub:`32`
1122 - Y'\ :sub:`33`
1123 * -
1124 * - start1 + 0:
1125 - Cb\ :sub:`00`
1126 - Cb\ :sub:`01`
1127 * - start1 + 2:
1128 - Cb\ :sub:`10`
1129 - Cb\ :sub:`11`
1130 * -
1131 * - start2 + 0:
1132 - Cr\ :sub:`00`
1133 - Cr\ :sub:`01`
1134 * - start2 + 2:
1135 - Cr\ :sub:`10`
1136 - Cr\ :sub:`11`
1139 .. _V4L2-PIX-FMT-YUV422P:
1140 .. _V4L2-PIX-FMT-YUV422M:
1141 .. _V4L2-PIX-FMT-YVU422M:
1144 ----------------------------
1146 Planar YUV 4:2:2 formats. The chroma planes are subsampled by 2 in the
1147 horizontal direction. Chroma lines contain half of the number of pixels and
1148 bytes of the luma lines, and the chroma planes contain the same number of lines
1151 .. flat-table:: Sample 4x4 YUV422P Image
1152 :header-rows: 0
1153 :stub-columns: 0
1155 * - start + 0:
1156 - Y'\ :sub:`00`
1157 - Y'\ :sub:`01`
1158 - Y'\ :sub:`02`
1159 - Y'\ :sub:`03`
1160 * - start + 4:
1161 - Y'\ :sub:`10`
1162 - Y'\ :sub:`11`
1163 - Y'\ :sub:`12`
1164 - Y'\ :sub:`13`
1165 * - start + 8:
1166 - Y'\ :sub:`20`
1167 - Y'\ :sub:`21`
1168 - Y'\ :sub:`22`
1169 - Y'\ :sub:`23`
1170 * - start + 12:
1171 - Y'\ :sub:`30`
1172 - Y'\ :sub:`31`
1173 - Y'\ :sub:`32`
1174 - Y'\ :sub:`33`
1175 * - start + 16:
1176 - Cb\ :sub:`00`
1177 - Cb\ :sub:`01`
1178 * - start + 18:
1179 - Cb\ :sub:`10`
1180 - Cb\ :sub:`11`
1181 * - start + 20:
1182 - Cb\ :sub:`20`
1183 - Cb\ :sub:`21`
1184 * - start + 22:
1185 - Cb\ :sub:`30`
1186 - Cb\ :sub:`31`
1187 * - start + 24:
1188 - Cr\ :sub:`00`
1189 - Cr\ :sub:`01`
1190 * - start + 26:
1191 - Cr\ :sub:`10`
1192 - Cr\ :sub:`11`
1193 * - start + 28:
1194 - Cr\ :sub:`20`
1195 - Cr\ :sub:`21`
1196 * - start + 30:
1197 - Cr\ :sub:`30`
1198 - Cr\ :sub:`31`
1200 .. flat-table:: Sample 4x4 YUV422M Image
1201 :header-rows: 0
1202 :stub-columns: 0
1204 * - start0 + 0:
1205 - Y'\ :sub:`00`
1206 - Y'\ :sub:`01`
1207 - Y'\ :sub:`02`
1208 - Y'\ :sub:`03`
1209 * - start0 + 4:
1210 - Y'\ :sub:`10`
1211 - Y'\ :sub:`11`
1212 - Y'\ :sub:`12`
1213 - Y'\ :sub:`13`
1214 * - start0 + 8:
1215 - Y'\ :sub:`20`
1216 - Y'\ :sub:`21`
1217 - Y'\ :sub:`22`
1218 - Y'\ :sub:`23`
1219 * - start0 + 12:
1220 - Y'\ :sub:`30`
1221 - Y'\ :sub:`31`
1222 - Y'\ :sub:`32`
1223 - Y'\ :sub:`33`
1224 * -
1225 * - start1 + 0:
1226 - Cb\ :sub:`00`
1227 - Cb\ :sub:`01`
1228 * - start1 + 2:
1229 - Cb\ :sub:`10`
1230 - Cb\ :sub:`11`
1231 * - start1 + 4:
1232 - Cb\ :sub:`20`
1233 - Cb\ :sub:`21`
1234 * - start1 + 6:
1235 - Cb\ :sub:`30`
1236 - Cb\ :sub:`31`
1237 * -
1238 * - start2 + 0:
1239 - Cr\ :sub:`00`
1240 - Cr\ :sub:`01`
1241 * - start2 + 2:
1242 - Cr\ :sub:`10`
1243 - Cr\ :sub:`11`
1244 * - start2 + 4:
1245 - Cr\ :sub:`20`
1246 - Cr\ :sub:`21`
1247 * - start2 + 6:
1248 - Cr\ :sub:`30`
1249 - Cr\ :sub:`31`
1252 .. _V4L2-PIX-FMT-YUV444M:
1253 .. _V4L2-PIX-FMT-YVU444M:
1256 -------------------
1258 Planar YUV 4:4:4 formats. The chroma planes are no subsampled. Chroma lines
1259 contain the same number of pixels and bytes of the luma lines, and the chroma
1260 planes contain the same number of lines as the luma plane.
1262 .. flat-table:: Sample 4x4 YUV444M Image
1263 :header-rows: 0
1264 :stub-columns: 0
1266 * - start0 + 0:
1267 - Y'\ :sub:`00`
1268 - Y'\ :sub:`01`
1269 - Y'\ :sub:`02`
1270 - Y'\ :sub:`03`
1271 * - start0 + 4:
1272 - Y'\ :sub:`10`
1273 - Y'\ :sub:`11`
1274 - Y'\ :sub:`12`
1275 - Y'\ :sub:`13`
1276 * - start0 + 8:
1277 - Y'\ :sub:`20`
1278 - Y'\ :sub:`21`
1279 - Y'\ :sub:`22`
1280 - Y'\ :sub:`23`
1281 * - start0 + 12:
1282 - Y'\ :sub:`30`
1283 - Y'\ :sub:`31`
1284 - Y'\ :sub:`32`
1285 - Y'\ :sub:`33`
1286 * -
1287 * - start1 + 0:
1288 - Cb\ :sub:`00`
1289 - Cb\ :sub:`01`
1290 - Cb\ :sub:`02`
1291 - Cb\ :sub:`03`
1292 * - start1 + 4:
1293 - Cb\ :sub:`10`
1294 - Cb\ :sub:`11`
1295 - Cb\ :sub:`12`
1296 - Cb\ :sub:`13`
1297 * - start1 + 8:
1298 - Cb\ :sub:`20`
1299 - Cb\ :sub:`21`
1300 - Cb\ :sub:`22`
1301 - Cb\ :sub:`23`
1302 * - start1 + 12:
1303 - Cb\ :sub:`20`
1304 - Cb\ :sub:`21`
1305 - Cb\ :sub:`32`
1306 - Cb\ :sub:`33`
1307 * -
1308 * - start2 + 0:
1309 - Cr\ :sub:`00`
1310 - Cr\ :sub:`01`
1311 - Cr\ :sub:`02`
1312 - Cr\ :sub:`03`
1313 * - start2 + 4:
1314 - Cr\ :sub:`10`
1315 - Cr\ :sub:`11`
1316 - Cr\ :sub:`12`
1317 - Cr\ :sub:`13`
1318 * - start2 + 8:
1319 - Cr\ :sub:`20`
1320 - Cr\ :sub:`21`
1321 - Cr\ :sub:`22`
1322 - Cr\ :sub:`23`
1323 * - start2 + 12:
1324 - Cr\ :sub:`30`
1325 - Cr\ :sub:`31`
1326 - Cr\ :sub:`32`
1327 - Cr\ :sub:`33`