Lines Matching +full:10 +full:- +full:bits
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
4 .. planar-yuv:
13 - Semi-planar formats use two planes. The first plane is the luma plane and
17 - Fully planar formats use three planes to store the Y, Cb and Cr components
27 and applications that support the multi-planar API, described in
28 :ref:`planar-apis`. Unless explicitly documented as supporting non-contiguous
32 Semi-Planar YUV Formats
47 For non-contiguous formats, no constraints are enforced by the format on the
50 All components are stored with the same number of bits per component.
58 .. flat-table:: Overview of Semi-Planar YUV Formats
59 :header-rows: 1
60 :stub-columns: 0
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
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
230 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
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:
241 ---------------------------
243 Semi-planar YUV 4:2:0 formats. The chroma plane is subsampled by 2 in each
248 .. flat-table:: Sample 4x4 NV12 Image
249 :header-rows: 0
250 :stub-columns: 0
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`
283 .. flat-table:: Sample 4x4 NV12M Image
284 :header-rows: 0
285 :stub-columns: 0
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`
320 .. _V4L2-PIX-FMT-NV15:
323 ----
325 Semi-planar 10-bit YUV 4:2:0 format similar to NV12, using 10-bit components
329 .. flat-table:: Sample 4x4 NV15 Image (1 byte per cell)
330 :header-rows: 0
331 :stub-columns: 0
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]`
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:
381 ----------
383 Semi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is
396 Z-order in memory, alternating Z and mirrored Z shapes horizontally.
405 .. kernel-figure:: nv12mt.svg
413 .. kernel-figure:: nv12mt_example.svg
446 two non-contiguous planes.
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:
456 ----------
458 ``V4L2_PIX_FMT_NV15_4L4`` Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling.
460 As a side-effect, each group of 4 components are stored over 5 bytes
461 (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes).
464 10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
469 it means that the low bits and high bits of one pixel may be in different tiles.
470 The 10 bit pixels are packed, so 5 bytes contain 4 10-bit pixels layout like
472 byte 0: Y0(bits 9-2)
473 byte 1: Y0(bits 1-0) Y1(bits 9-4)
474 byte 2: Y1(bits 3-0) Y2(bits 9-6)
475 byte 3: Y2(bits 5-0) Y3(bits 9-8)
476 byte 4: Y3(bits 7-0)
481 ``V4L2_PIX_FMT_MT2110T`` is one of Mediatek packed 10bit YUV 4:2:0 formats.
482 It is fully packed 10bit 4:2:0 format like NV15 (15 bits per pixel), except
483 that the lower two bits data is stored in separate partitions. The format is
486 partition represent the 2 least significant bits of pixel data. The remaining
487 64 bytes represent the 8 most significant bits of pixel data.
489 .. kernel-figure:: mt2110t.svg
496 ``V4L2_PIX_FMT_MM21`` frame. A partition is a sub-tile of size 16 x 4. The
497 lower two bits is said to be tiled since each bytes contains the lower two
498 bits of the column of for pixel matching the same index. The chroma tiles
501 .. flat-table:: MT2110T LSB bits layout
502 :header-rows: 1
503 :stub-columns: 1
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`
532 the least significant two bits layout is in raster order. This means the first byte
535 .. flat-table:: MT2110R LSB bits layout
536 :header-rows: 2
537 :stub-columns: 1
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`
595 .. _V4L2-PIX-FMT-NV16:
596 .. _V4L2-PIX-FMT-NV61:
597 .. _V4L2-PIX-FMT-NV16M:
598 .. _V4L2-PIX-FMT-NV61M:
601 ---------------------------
603 Semi-planar YUV 4:2:2 formats. The chroma plane is subsampled by 2 in the
608 .. flat-table:: Sample 4x4 NV16 Image
609 :header-rows: 0
610 :stub-columns: 0
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`
653 .. flat-table:: Sample 4x4 NV16M Image
654 :header-rows: 0
655 :stub-columns: 0
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`
700 .. _V4L2-PIX-FMT-NV20:
703 ----
705 Semi-planar 10-bit YUV 4:2:2 format similar to NV16, using 10-bit components
709 .. flat-table:: Sample 4x4 NV20 Image (1 byte per cell)
710 :header-rows: 0
711 :stub-columns: 0
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]`
763 .. _V4L2-PIX-FMT-NV24:
764 .. _V4L2-PIX-FMT-NV42:
767 -------------
769 Semi-planar YUV 4:4:4 formats. The chroma plane is not subsampled.
774 .. flat-table:: Sample 4x4 NV24 Image
775 :header-rows: 0
776 :stub-columns: 0
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`
836 .. _V4L2-PIX-FMT-P010-4L4:
839 -------------------
841 P010 is like NV12 with 10 bits per component, expanded to 16 bits.
842 Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian order.
844 .. flat-table:: Sample 4x4 P010 Image
845 :header-rows: 0
846 :stub-columns: 0
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`
879 .. _V4L2-PIX-FMT-P012:
880 .. _V4L2-PIX-FMT-P012M:
883 --------------
885 P012 is like NV12 with 12 bits per component, expanded to 16 bits.
886 Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian order.
888 .. flat-table:: Sample 4x4 P012 Image
889 :header-rows: 0
890 :stub-columns: 0
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`
923 .. flat-table:: Sample 4x4 P012M Image
924 :header-rows: 0
925 :stub-columns: 0
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`
973 For non-contiguous formats, no constraints are enforced by the format on the
976 All components are stored with the same number of bits per component.
988 .. flat-table:: Overview of Fully Planar YUV Formats
989 :header-rows: 1
990 :stub-columns: 0
992 * - Identifier
993 - Code
994 - Bits per component
995 - Subsampling
996 - Planes order [4]_
997 - Contiguous [5]_
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
1082 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
1085 .. _V4L2-PIX-FMT-YUV410:
1086 .. _V4L2-PIX-FMT-YVU410:
1089 -----------------
1096 .. flat-table:: Sample 4x4 YUV410 Image
1097 :header-rows: 0
1098 :stub-columns: 0
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`
1126 .. _V4L2-PIX-FMT-YUV411P:
1129 -------
1136 .. flat-table:: Sample 4x4 YUV411P Image
1137 :header-rows: 0
1138 :stub-columns: 0
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`
1178 .. _V4L2-PIX-FMT-YUV420:
1179 .. _V4L2-PIX-FMT-YVU420:
1180 .. _V4L2-PIX-FMT-YUV420M:
1181 .. _V4L2-PIX-FMT-YVU420M:
1184 -----------------------------------
1191 .. flat-table:: Sample 4x4 YUV420 Image
1192 :header-rows: 0
1193 :stub-columns: 0
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`
1228 .. flat-table:: Sample 4x4 YUV420M Image
1229 :header-rows: 0
1230 :stub-columns: 0
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`
1268 .. _V4L2-PIX-FMT-YUV422P:
1269 .. _V4L2-PIX-FMT-YUV422M:
1270 .. _V4L2-PIX-FMT-YVU422M:
1273 ----------------------------
1280 .. flat-table:: Sample 4x4 YUV422P Image
1281 :header-rows: 0
1282 :stub-columns: 0
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`
1329 .. flat-table:: Sample 4x4 YUV422M Image
1330 :header-rows: 0
1331 :stub-columns: 0
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`
1381 .. _V4L2-PIX-FMT-YUV444M:
1382 .. _V4L2-PIX-FMT-YVU444M:
1385 -------------------
1391 .. flat-table:: Sample 4x4 YUV444M Image
1392 :header-rows: 0
1393 :stub-columns: 0
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`