1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 2 3 .. planar-yuv: 4 5 ****************** 6 Planar YUV formats 7 ****************** 8 9 Planar formats split luma and chroma data in s 10 exist in two variants: 11 12 - Semi-planar formats use two planes. The firs 13 stores the Y components. The second plane is 14 Cb and Cr components interleaved. 15 16 - Fully planar formats use three planes to sto 17 separately. 18 19 Within a plane, components are stored in pixel 20 tiled. Padding may be supported at the end of 21 the chroma planes may be constrained by the li 22 23 Some planar formats allow planes to be placed 24 They are identified by an 'M' suffix in their 25 ``V4L2_PIX_FMT_NV12M``). Those formats are int 26 and applications that support the multi-planar 27 :ref:`planar-apis`. Unless explicitly document 28 planes, formats require the planes to follow e 29 30 31 Semi-Planar YUV Formats 32 ======================= 33 34 These formats are commonly referred to as NV f 35 use two planes, and store the luma components 36 components in the second plane. The Cb and Cr 37 chroma plane, with Cb and Cr always stored in 38 exposed as different formats. 39 40 For memory contiguous formats, the number of p 41 chroma lines is identical to the padding of th 42 subsampling, the chroma line stride (in bytes) 43 line stride. With horizontal subsampling by 2, 44 to the luma line stride. Vertical subsampling 45 46 For non-contiguous formats, no constraints are 47 relationship between the luma and chroma line 48 49 All components are stored with the same number 50 51 .. raw:: latex 52 53 \footnotesize 54 55 .. tabularcolumns:: |p{5.2cm}|p{1.0cm}|p{1.5cm 56 57 .. flat-table:: Overview of Semi-Planar YUV Fo 58 :header-rows: 1 59 :stub-columns: 0 60 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 103 104 Horizontal Z order 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 203 204 .. raw:: latex 205 206 \normalsize 207 208 .. [1] Order of chroma samples in the second p 209 .. [2] Indicates if planes have to be contiguo 210 disjoint 211 .. [3] Macroblock size in pixels 212 213 214 **Color Sample Location:** 215 Chroma samples are :ref:`interstitially sited< 216 horizontally. 217 218 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: 224 225 NV12, NV21, NV12M and NV21M 226 --------------------------- 227 228 Semi-planar YUV 4:2:0 formats. The chroma plan 229 direction. Chroma lines contain half the numbe 230 of bytes as luma lines, and the chroma plane c 231 of the luma plane. 232 233 .. flat-table:: Sample 4x4 NV12 Image 234 :header-rows: 0 235 :stub-columns: 0 236 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` 267 268 .. flat-table:: Sample 4x4 NV12M Image 269 :header-rows: 0 270 :stub-columns: 0 271 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` 303 304 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: 313 314 Tiled NV12 315 ---------- 316 317 Semi-planar YUV 4:2:0 formats, using macrobloc 318 subsampled by 2 in each direction. Chroma line 319 pixels and the same number of bytes as luma li 320 contains half the number of lines of the luma 321 previous one linearly in memory (from left to 322 323 ``V4L2_PIX_FMT_NV12MT_16X16`` is similar to `` 324 pixels in 2D 16x16 tiles, and stores tiles lin 325 The line stride and image height must be align 326 The layouts of the luma and chroma planes are 327 328 ``V4L2_PIX_FMT_NV12MT`` is similar to ``V4L2_P 329 pixels in 2D 64x32 tiles, and stores 2x2 group 330 Z-order in memory, alternating Z and mirrored 331 The line stride must be a multiple of 128 pixe 332 integer number of Z shapes. The image height m 333 If the vertical resolution is an odd number of 334 tiles is stored in linear order. The layouts o 335 planes are identical. 336 337 .. _nv12mt: 338 339 .. kernel-figure:: nv12mt.svg 340 :alt: nv12mt.svg 341 :align: center 342 343 V4L2_PIX_FMT_NV12MT macroblock Z shape mem 344 345 .. _nv12mt_ex: 346 347 .. kernel-figure:: nv12mt_example.svg 348 :alt: nv12mt_example.svg 349 :align: center 350 351 Example V4L2_PIX_FMT_NV12MT memory layout 352 353 ``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 354 tiles linearly in memory. The line stride and 355 aligned to a multiple of 4. The layouts of the 356 identical. 357 358 ``V4L2_PIX_FMT_NV12_16L16`` stores pixels in 1 359 tiles linearly in memory. The line stride and 360 aligned to a multiple of 16. The layouts of th 361 identical. 362 363 ``V4L2_PIX_FMT_NV12_32L32`` stores pixels in 3 364 tiles linearly in memory. The line stride and 365 aligned to a multiple of 32. The layouts of th 366 identical. 367 368 ``V4L2_PIX_FMT_NV12M_8L128`` is similar to ``V 369 pixels in 2D 8x128 tiles, and stores tiles lin 370 The image height must be aligned to a multiple 371 The layouts of the luma and chroma planes are 372 373 ``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4 374 two planes in one memory. 375 376 ``V4L2_PIX_FMT_MM21`` store luma pixel in 16x3 377 in 16x16 tiles. The line stride must be aligne 378 image height must be aligned to a multiple of 379 tiles are identical, even though the tile size 380 two non-contiguous planes. 381 382 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: 388 389 Tiled NV15 390 ---------- 391 392 ``V4L2_PIX_FMT_NV15_4L4`` Semi-planar 10-bit Y 393 All components are packed without any padding 394 As a side-effect, each group of 4 components a 395 (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 byte 396 397 ``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar t 398 10 bits pixels in 2D 8x128 tiles, and stores t 399 the data is arranged in big endian order. 400 The image height must be aligned to a multiple 401 The layouts of the luma and chroma planes are 402 Note the tile size is 8bytes multiplied by 128 403 it means that the low bits and high bits of on 404 The 10 bit pixels are packed, so 5 bytes conta 405 this (for luma): 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) 411 412 ``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to 413 two planes in one memory. 414 415 ``V4L2_PIX_FMT_MT2110T`` is one of Mediatek pa 416 It is fully packed 10bit 4:2:0 format like NV1 417 that the lower two bits data is stored in sepa 418 composed of 16x32 luma tiles, and 16x16 chroma 419 long, divided into 8 partitions of 80 bytes. 420 partition represent the 2 least significant bi 421 64 bytes represent the 8 most significant bits 422 423 .. kernel-figure:: mt2110t.svg 424 :alt: mt2110t.svg 425 :align: center 426 427 Layout of MT2110T Chroma Tile 428 429 Filtering out the upper part of each partition 430 ``V4L2_PIX_FMT_MM21`` frame. A partition is a 431 lower two bits is said to be tiled since each 432 bits of the column of for pixel matching the s 433 only have 4 partitions. 434 435 .. flat-table:: MT2110T LSB bits layout 436 :header-rows: 1 437 :stub-columns: 1 438 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` 464 465 ``V4L2_PIX_FMT_MT2110R`` is identical to ``V4L 466 the least significant two bits layout is in ra 467 contains 4 pixels of the first row, with 4 byt 468 469 .. flat-table:: MT2110R LSB bits layout 470 :header-rows: 2 471 :stub-columns: 1 472 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` 527 528 529 .. _V4L2-PIX-FMT-NV16: 530 .. _V4L2-PIX-FMT-NV61: 531 .. _V4L2-PIX-FMT-NV16M: 532 .. _V4L2-PIX-FMT-NV61M: 533 534 NV16, NV61, NV16M and NV61M 535 --------------------------- 536 537 Semi-planar YUV 4:2:2 formats. The chroma plan 538 horizontal direction. Chroma lines contain hal 539 same number of bytes as luma lines, and the ch 540 number of lines as the luma plane. 541 542 .. flat-table:: Sample 4x4 NV16 Image 543 :header-rows: 0 544 :stub-columns: 0 545 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` 586 587 .. flat-table:: Sample 4x4 NV16M Image 588 :header-rows: 0 589 :stub-columns: 0 590 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` 632 633 634 .. _V4L2-PIX-FMT-NV24: 635 .. _V4L2-PIX-FMT-NV42: 636 637 NV24 and NV42 638 ------------- 639 640 Semi-planar YUV 4:4:4 formats. The chroma plan 641 Chroma lines contain the same number of pixels 642 number of bytes as luma lines, and the chroma 643 number of lines as the luma plane. 644 645 .. flat-table:: Sample 4x4 NV24 Image 646 :header-rows: 0 647 :stub-columns: 0 648 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` 705 706 .. _V4L2_PIX_FMT_P010: 707 .. _V4L2-PIX-FMT-P010-4L4: 708 709 P010 and tiled P010 710 ------------------- 711 712 P010 is like NV12 with 10 bits per component, 713 Data in the 10 high bits, zeros in the 6 low b 714 715 .. flat-table:: Sample 4x4 P010 Image 716 :header-rows: 0 717 :stub-columns: 0 718 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` 749 750 .. _V4L2-PIX-FMT-P012: 751 .. _V4L2-PIX-FMT-P012M: 752 753 P012 and P012M 754 -------------- 755 756 P012 is like NV12 with 12 bits per component, 757 Data in the 12 high bits, zeros in the 4 low b 758 759 .. flat-table:: Sample 4x4 P012 Image 760 :header-rows: 0 761 :stub-columns: 0 762 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` 793 794 .. flat-table:: Sample 4x4 P012M Image 795 :header-rows: 0 796 :stub-columns: 0 797 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` 829 830 831 Fully Planar YUV Formats 832 ======================== 833 834 These formats store the Y, Cb and Cr component 835 luma plane comes first, and the order of the t 836 formats. The two chroma planes always use the 837 838 For memory contiguous formats, the number of p 839 chroma lines is identical to the padding of th 840 stride (in bytes) is thus equal to the luma li 841 horizontal subsampling factor. Vertical subsam 842 stride. 843 844 For non-contiguous formats, no constraints are 845 relationship between the luma and chroma line 846 847 All components are stored with the same number 848 849 ``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 850 in memory. The line stride must be aligned to 851 a multiple of 4. The layouts of the luma and c 852 853 .. raw:: latex 854 855 \small 856 857 .. tabularcolumns:: |p{5.0cm}|p{1.1cm}|p{1.5cm 858 859 .. flat-table:: Overview of Fully Planar YUV F 860 :header-rows: 1 861 :stub-columns: 0 862 863 * - Identifier 864 - Code 865 - Bits per component 866 - Subsampling 867 - Planes order [4]_ 868 - Contiguous [5]_ 869 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 942 943 .. raw:: latex 944 945 \normalsize 946 947 .. [4] Order of luma and chroma planes 948 .. [5] Indicates if planes have to be contiguo 949 disjoint 950 951 952 **Color Sample Location:** 953 Chroma samples are :ref:`interstitially sited< 954 horizontally. 955 956 .. _V4L2-PIX-FMT-YUV410: 957 .. _V4L2-PIX-FMT-YVU410: 958 959 YUV410 and YVU410 960 ----------------- 961 962 Planar YUV 4:1:0 formats. The chroma planes ar 963 direction. Chroma lines contain a quarter of t 964 the luma lines, and the chroma planes contain 965 of the luma plane. 966 967 .. flat-table:: Sample 4x4 YUV410 Image 968 :header-rows: 0 969 :stub-columns: 0 970 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` 995 996 997 .. _V4L2-PIX-FMT-YUV411P: 998 999 YUV411P 1000 ------- 1001 1002 Planar YUV 4:1:1 formats. The chroma planes a 1003 horizontal direction. Chroma lines contain a 1004 and bytes of the luma lines, and the chroma p 1005 lines as the luma plane. 1006 1007 .. flat-table:: Sample 4x4 YUV411P Image 1008 :header-rows: 0 1009 :stub-columns: 0 1010 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` 1047 1048 1049 .. _V4L2-PIX-FMT-YUV420: 1050 .. _V4L2-PIX-FMT-YVU420: 1051 .. _V4L2-PIX-FMT-YUV420M: 1052 .. _V4L2-PIX-FMT-YVU420M: 1053 1054 YUV420, YVU420, YUV420M and YVU420M 1055 ----------------------------------- 1056 1057 Planar YUV 4:2:0 formats. The chroma planes a 1058 direction. Chroma lines contain half of the n 1059 luma lines, and the chroma planes contain hal 1060 luma plane. 1061 1062 .. flat-table:: Sample 4x4 YUV420 Image 1063 :header-rows: 0 1064 :stub-columns: 0 1065 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` 1098 1099 .. flat-table:: Sample 4x4 YUV420M Image 1100 :header-rows: 0 1101 :stub-columns: 0 1102 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` 1137 1138 1139 .. _V4L2-PIX-FMT-YUV422P: 1140 .. _V4L2-PIX-FMT-YUV422M: 1141 .. _V4L2-PIX-FMT-YVU422M: 1142 1143 YUV422P, YUV422M and YVU422M 1144 ---------------------------- 1145 1146 Planar YUV 4:2:2 formats. The chroma planes a 1147 horizontal direction. Chroma lines contain ha 1148 bytes of the luma lines, and the chroma plane 1149 as the luma plane. 1150 1151 .. flat-table:: Sample 4x4 YUV422P Image 1152 :header-rows: 0 1153 :stub-columns: 0 1154 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` 1199 1200 .. flat-table:: Sample 4x4 YUV422M Image 1201 :header-rows: 0 1202 :stub-columns: 0 1203 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` 1250 1251 1252 .. _V4L2-PIX-FMT-YUV444M: 1253 .. _V4L2-PIX-FMT-YVU444M: 1254 1255 YUV444M and YVU444M 1256 ------------------- 1257 1258 Planar YUV 4:4:4 formats. The chroma planes a 1259 contain the same number of pixels and bytes o 1260 planes contain the same number of lines as th 1261 1262 .. flat-table:: Sample 4x4 YUV444M Image 1263 :header-rows: 0 1264 :stub-columns: 0 1265 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`
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.