File Index
Files and directories
Sign in
FILE

pixfmt-rgb.rst

File preview with syntax highlighting.

linux-6.19.14/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst RESTRUCTUREDTEXT
   1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
   2.. c:namespace:: V4L
   3
   4.. _pixfmt-rgb:
   5
   6***********
   7RGB Formats
   8***********
   9
  10These formats encode each pixel as a triplet of RGB values. They are packed
  11formats, meaning that the RGB values for one pixel are stored consecutively in
  12memory and each pixel consumes an integer number of bytes. When the number of
  13bits required to store a pixel is not aligned to a byte boundary, the data is
  14padded with additional bits to fill the remaining byte.
  15
  16The formats differ by the number of bits per RGB component (typically but not
  17always the same for all components), the order of components in memory, and the
  18presence of an alpha component or additional padding bits.
  19
  20The usage and value of the alpha bits in formats that support them (named ARGB
  21or a permutation thereof, collectively referred to as alpha formats) depend on
  22the device type and hardware operation. :ref:`Capture <capture>` devices
  23(including capture queues of mem-to-mem devices) fill the alpha component in
  24memory. When the device captures an alpha channel the alpha component will have
  25a meaningful value. Otherwise, when the device doesn't capture an alpha channel
  26but can set the alpha bit to a user-configurable value, the
  27:ref:`V4L2_CID_ALPHA_COMPONENT <v4l2-alpha-component>` control is used to
  28specify that alpha value, and the alpha component of all pixels will be set to
  29the value specified by that control. Otherwise a corresponding format without
  30an alpha component (XRGB or XBGR) must be used instead of an alpha format.
  31
  32:ref:`Output <output>` devices (including output queues of mem-to-mem devices
  33and :ref:`video output overlay <osd>` devices) read the alpha component from
  34memory. When the device processes the alpha channel the alpha component must be
  35filled with meaningful values by applications. Otherwise a corresponding format
  36without an alpha component (XRGB or XBGR) must be used instead of an alpha
  37format.
  38
  39Formats that contain padding bits are named XRGB (or a permutation thereof).
  40The padding bits contain undefined values and must be ignored by applications,
  41devices and drivers, for both :ref:`capture` and :ref:`output` devices.
  42
  43.. note::
  44
  45   - In all the tables that follow, bit 7 is the most significant bit in a byte.
  46   - 'r', 'g' and 'b' denote bits of the red, green and blue components
  47     respectively. 'a' denotes bits of the alpha component (if supported by the
  48     format), and 'x' denotes padding bits.
  49
  50
  51Less Than 8 Bits Per Component
  52==============================
  53
  54These formats store an RGB triplet in one, two or four bytes. They are named
  55based on the order of the RGB components as seen in a 8-, 16- or 32-bit word,
  56which is then stored in memory in little endian byte order (unless otherwise
  57noted by the presence of bit 31 in the 4CC value), and on the number of bits
  58for each component. For instance, the RGB565 format stores a pixel in a 16-bit
  59word [15:0] laid out at as [R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
  60R\ :sub:`0` G\ :sub:`5` G\ :sub:`4` G\ :sub:`3` G\ :sub:`2` G\ :sub:`1`
  61G\ :sub:`0` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2` B\ :sub:`1` B\ :sub:`0`], and
  62stored in memory in two bytes, [R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
  63R\ :sub:`0` G\ :sub:`5` G\ :sub:`4` G\ :sub:`3`] followed by [G\ :sub:`2`
  64G\ :sub:`1` G\ :sub:`0` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2` B\ :sub:`1`
  65B\ :sub:`0`].
  66
  67.. raw:: latex
  68
  69    \begingroup
  70    \tiny
  71    \setlength{\tabcolsep}{2pt}
  72
  73.. tabularcolumns:: |p{2.8cm}|p{2.0cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
  74
  75
  76.. flat-table:: RGB Formats With Less Than 8 Bits Per Component
  77    :header-rows:  2
  78    :stub-columns: 0
  79
  80    * - Identifier
  81      - Code
  82      - :cspan:`7` Byte 0 in memory
  83      - :cspan:`7` Byte 1
  84      - :cspan:`7` Byte 2
  85      - :cspan:`7` Byte 3
  86    * -
  87      -
  88      - 7
  89      - 6
  90      - 5
  91      - 4
  92      - 3
  93      - 2
  94      - 1
  95      - 0
  96
  97      - 7
  98      - 6
  99      - 5
 100      - 4
 101      - 3
 102      - 2
 103      - 1
 104      - 0
 105
 106      - 7
 107      - 6
 108      - 5
 109      - 4
 110      - 3
 111      - 2
 112      - 1
 113      - 0
 114
 115      - 7
 116      - 6
 117      - 5
 118      - 4
 119      - 3
 120      - 2
 121      - 1
 122      - 0
 123    * .. _V4L2-PIX-FMT-RGB332:
 124
 125      - ``V4L2_PIX_FMT_RGB332``
 126      - 'RGB1'
 127
 128      - r\ :sub:`2`
 129      - r\ :sub:`1`
 130      - r\ :sub:`0`
 131      - g\ :sub:`2`
 132      - g\ :sub:`1`
 133      - g\ :sub:`0`
 134      - b\ :sub:`1`
 135      - b\ :sub:`0`
 136      -
 137    * .. _V4L2-PIX-FMT-ARGB444:
 138
 139      - ``V4L2_PIX_FMT_ARGB444``
 140      - 'AR12'
 141
 142      - g\ :sub:`3`
 143      - g\ :sub:`2`
 144      - g\ :sub:`1`
 145      - g\ :sub:`0`
 146      - b\ :sub:`3`
 147      - b\ :sub:`2`
 148      - b\ :sub:`1`
 149      - b\ :sub:`0`
 150
 151      - a\ :sub:`3`
 152      - a\ :sub:`2`
 153      - a\ :sub:`1`
 154      - a\ :sub:`0`
 155      - r\ :sub:`3`
 156      - r\ :sub:`2`
 157      - r\ :sub:`1`
 158      - r\ :sub:`0`
 159      -
 160    * .. _V4L2-PIX-FMT-XRGB444:
 161
 162      - ``V4L2_PIX_FMT_XRGB444``
 163      - 'XR12'
 164
 165      - g\ :sub:`3`
 166      - g\ :sub:`2`
 167      - g\ :sub:`1`
 168      - g\ :sub:`0`
 169      - b\ :sub:`3`
 170      - b\ :sub:`2`
 171      - b\ :sub:`1`
 172      - b\ :sub:`0`
 173
 174      - x
 175      - x
 176      - x
 177      - x
 178      - r\ :sub:`3`
 179      - r\ :sub:`2`
 180      - r\ :sub:`1`
 181      - r\ :sub:`0`
 182      -
 183    * .. _V4L2-PIX-FMT-RGBA444:
 184
 185      - ``V4L2_PIX_FMT_RGBA444``
 186      - 'RA12'
 187
 188      - b\ :sub:`3`
 189      - b\ :sub:`2`
 190      - b\ :sub:`1`
 191      - b\ :sub:`0`
 192      - a\ :sub:`3`
 193      - a\ :sub:`2`
 194      - a\ :sub:`1`
 195      - a\ :sub:`0`
 196
 197      - r\ :sub:`3`
 198      - r\ :sub:`2`
 199      - r\ :sub:`1`
 200      - r\ :sub:`0`
 201      - g\ :sub:`3`
 202      - g\ :sub:`2`
 203      - g\ :sub:`1`
 204      - g\ :sub:`0`
 205      -
 206    * .. _V4L2-PIX-FMT-RGBX444:
 207
 208      - ``V4L2_PIX_FMT_RGBX444``
 209      - 'RX12'
 210
 211      - b\ :sub:`3`
 212      - b\ :sub:`2`
 213      - b\ :sub:`1`
 214      - b\ :sub:`0`
 215      - x
 216      - x
 217      - x
 218      - x
 219
 220      - r\ :sub:`3`
 221      - r\ :sub:`2`
 222      - r\ :sub:`1`
 223      - r\ :sub:`0`
 224      - g\ :sub:`3`
 225      - g\ :sub:`2`
 226      - g\ :sub:`1`
 227      - g\ :sub:`0`
 228      -
 229    * .. _V4L2-PIX-FMT-ABGR444:
 230
 231      - ``V4L2_PIX_FMT_ABGR444``
 232      - 'AB12'
 233
 234      - g\ :sub:`3`
 235      - g\ :sub:`2`
 236      - g\ :sub:`1`
 237      - g\ :sub:`0`
 238      - r\ :sub:`3`
 239      - r\ :sub:`2`
 240      - r\ :sub:`1`
 241      - r\ :sub:`0`
 242
 243      - a\ :sub:`3`
 244      - a\ :sub:`2`
 245      - a\ :sub:`1`
 246      - a\ :sub:`0`
 247      - b\ :sub:`3`
 248      - b\ :sub:`2`
 249      - b\ :sub:`1`
 250      - b\ :sub:`0`
 251      -
 252    * .. _V4L2-PIX-FMT-XBGR444:
 253
 254      - ``V4L2_PIX_FMT_XBGR444``
 255      - 'XB12'
 256
 257      - g\ :sub:`3`
 258      - g\ :sub:`2`
 259      - g\ :sub:`1`
 260      - g\ :sub:`0`
 261      - r\ :sub:`3`
 262      - r\ :sub:`2`
 263      - r\ :sub:`1`
 264      - r\ :sub:`0`
 265
 266      - x
 267      - x
 268      - x
 269      - x
 270      - b\ :sub:`3`
 271      - b\ :sub:`2`
 272      - b\ :sub:`1`
 273      - b\ :sub:`0`
 274      -
 275    * .. _V4L2-PIX-FMT-BGRA444:
 276
 277      - ``V4L2_PIX_FMT_BGRA444``
 278      - 'BA12'
 279
 280      - r\ :sub:`3`
 281      - r\ :sub:`2`
 282      - r\ :sub:`1`
 283      - r\ :sub:`0`
 284      - a\ :sub:`3`
 285      - a\ :sub:`2`
 286      - a\ :sub:`1`
 287      - a\ :sub:`0`
 288
 289      - b\ :sub:`3`
 290      - b\ :sub:`2`
 291      - b\ :sub:`1`
 292      - b\ :sub:`0`
 293      - g\ :sub:`3`
 294      - g\ :sub:`2`
 295      - g\ :sub:`1`
 296      - g\ :sub:`0`
 297      -
 298    * .. _V4L2-PIX-FMT-BGRX444:
 299
 300      - ``V4L2_PIX_FMT_BGRX444``
 301      - 'BX12'
 302
 303      - r\ :sub:`3`
 304      - r\ :sub:`2`
 305      - r\ :sub:`1`
 306      - r\ :sub:`0`
 307      - x
 308      - x
 309      - x
 310      - x
 311
 312      - b\ :sub:`3`
 313      - b\ :sub:`2`
 314      - b\ :sub:`1`
 315      - b\ :sub:`0`
 316      - g\ :sub:`3`
 317      - g\ :sub:`2`
 318      - g\ :sub:`1`
 319      - g\ :sub:`0`
 320      -
 321    * .. _V4L2-PIX-FMT-ARGB555:
 322
 323      - ``V4L2_PIX_FMT_ARGB555``
 324      - 'AR15'
 325
 326      - g\ :sub:`2`
 327      - g\ :sub:`1`
 328      - g\ :sub:`0`
 329      - b\ :sub:`4`
 330      - b\ :sub:`3`
 331      - b\ :sub:`2`
 332      - b\ :sub:`1`
 333      - b\ :sub:`0`
 334
 335      - a
 336      - r\ :sub:`4`
 337      - r\ :sub:`3`
 338      - r\ :sub:`2`
 339      - r\ :sub:`1`
 340      - r\ :sub:`0`
 341      - g\ :sub:`4`
 342      - g\ :sub:`3`
 343      -
 344    * .. _V4L2-PIX-FMT-XRGB555:
 345
 346      - ``V4L2_PIX_FMT_XRGB555``
 347      - 'XR15'
 348
 349      - g\ :sub:`2`
 350      - g\ :sub:`1`
 351      - g\ :sub:`0`
 352      - b\ :sub:`4`
 353      - b\ :sub:`3`
 354      - b\ :sub:`2`
 355      - b\ :sub:`1`
 356      - b\ :sub:`0`
 357
 358      - x
 359      - r\ :sub:`4`
 360      - r\ :sub:`3`
 361      - r\ :sub:`2`
 362      - r\ :sub:`1`
 363      - r\ :sub:`0`
 364      - g\ :sub:`4`
 365      - g\ :sub:`3`
 366      -
 367    * .. _V4L2-PIX-FMT-RGBA555:
 368
 369      - ``V4L2_PIX_FMT_RGBA555``
 370      - 'RA15'
 371
 372      - g\ :sub:`1`
 373      - g\ :sub:`0`
 374      - b\ :sub:`4`
 375      - b\ :sub:`3`
 376      - b\ :sub:`2`
 377      - b\ :sub:`1`
 378      - b\ :sub:`0`
 379      - a
 380
 381      - r\ :sub:`4`
 382      - r\ :sub:`3`
 383      - r\ :sub:`2`
 384      - r\ :sub:`1`
 385      - r\ :sub:`0`
 386      - g\ :sub:`4`
 387      - g\ :sub:`3`
 388      - g\ :sub:`2`
 389      -
 390    * .. _V4L2-PIX-FMT-RGBX555:
 391
 392      - ``V4L2_PIX_FMT_RGBX555``
 393      - 'RX15'
 394
 395      - g\ :sub:`1`
 396      - g\ :sub:`0`
 397      - b\ :sub:`4`
 398      - b\ :sub:`3`
 399      - b\ :sub:`2`
 400      - b\ :sub:`1`
 401      - b\ :sub:`0`
 402      - x
 403
 404      - r\ :sub:`4`
 405      - r\ :sub:`3`
 406      - r\ :sub:`2`
 407      - r\ :sub:`1`
 408      - r\ :sub:`0`
 409      - g\ :sub:`4`
 410      - g\ :sub:`3`
 411      - g\ :sub:`2`
 412      -
 413    * .. _V4L2-PIX-FMT-ABGR555:
 414
 415      - ``V4L2_PIX_FMT_ABGR555``
 416      - 'AB15'
 417
 418      - g\ :sub:`2`
 419      - g\ :sub:`1`
 420      - g\ :sub:`0`
 421      - r\ :sub:`4`
 422      - r\ :sub:`3`
 423      - r\ :sub:`2`
 424      - r\ :sub:`1`
 425      - r\ :sub:`0`
 426
 427      - a
 428      - b\ :sub:`4`
 429      - b\ :sub:`3`
 430      - b\ :sub:`2`
 431      - b\ :sub:`1`
 432      - b\ :sub:`0`
 433      - g\ :sub:`4`
 434      - g\ :sub:`3`
 435      -
 436    * .. _V4L2-PIX-FMT-XBGR555:
 437
 438      - ``V4L2_PIX_FMT_XBGR555``
 439      - 'XB15'
 440
 441      - g\ :sub:`2`
 442      - g\ :sub:`1`
 443      - g\ :sub:`0`
 444      - r\ :sub:`4`
 445      - r\ :sub:`3`
 446      - r\ :sub:`2`
 447      - r\ :sub:`1`
 448      - r\ :sub:`0`
 449
 450      - x
 451      - b\ :sub:`4`
 452      - b\ :sub:`3`
 453      - b\ :sub:`2`
 454      - b\ :sub:`1`
 455      - b\ :sub:`0`
 456      - g\ :sub:`4`
 457      - g\ :sub:`3`
 458      -
 459    * .. _V4L2-PIX-FMT-BGRA555:
 460
 461      - ``V4L2_PIX_FMT_BGRA555``
 462      - 'BA15'
 463
 464      - g\ :sub:`1`
 465      - g\ :sub:`0`
 466      - r\ :sub:`4`
 467      - r\ :sub:`3`
 468      - r\ :sub:`2`
 469      - r\ :sub:`1`
 470      - r\ :sub:`0`
 471      - a
 472
 473      - b\ :sub:`4`
 474      - b\ :sub:`3`
 475      - b\ :sub:`2`
 476      - b\ :sub:`1`
 477      - b\ :sub:`0`
 478      - g\ :sub:`4`
 479      - g\ :sub:`3`
 480      - g\ :sub:`2`
 481      -
 482    * .. _V4L2-PIX-FMT-BGRX555:
 483
 484      - ``V4L2_PIX_FMT_BGRX555``
 485      - 'BX15'
 486
 487      - g\ :sub:`1`
 488      - g\ :sub:`0`
 489      - r\ :sub:`4`
 490      - r\ :sub:`3`
 491      - r\ :sub:`2`
 492      - r\ :sub:`1`
 493      - r\ :sub:`0`
 494      - x
 495
 496      - b\ :sub:`4`
 497      - b\ :sub:`3`
 498      - b\ :sub:`2`
 499      - b\ :sub:`1`
 500      - b\ :sub:`0`
 501      - g\ :sub:`4`
 502      - g\ :sub:`3`
 503      - g\ :sub:`2`
 504      -
 505    * .. _V4L2-PIX-FMT-RGB565:
 506
 507      - ``V4L2_PIX_FMT_RGB565``
 508      - 'RGBP'
 509
 510      - g\ :sub:`2`
 511      - g\ :sub:`1`
 512      - g\ :sub:`0`
 513      - b\ :sub:`4`
 514      - b\ :sub:`3`
 515      - b\ :sub:`2`
 516      - b\ :sub:`1`
 517      - b\ :sub:`0`
 518
 519      - r\ :sub:`4`
 520      - r\ :sub:`3`
 521      - r\ :sub:`2`
 522      - r\ :sub:`1`
 523      - r\ :sub:`0`
 524      - g\ :sub:`5`
 525      - g\ :sub:`4`
 526      - g\ :sub:`3`
 527      -
 528    * .. _V4L2-PIX-FMT-ARGB555X:
 529
 530      - ``V4L2_PIX_FMT_ARGB555X``
 531      - 'AR15' | (1 << 31)
 532
 533      - a
 534      - r\ :sub:`4`
 535      - r\ :sub:`3`
 536      - r\ :sub:`2`
 537      - r\ :sub:`1`
 538      - r\ :sub:`0`
 539      - g\ :sub:`4`
 540      - g\ :sub:`3`
 541
 542      - g\ :sub:`2`
 543      - g\ :sub:`1`
 544      - g\ :sub:`0`
 545      - b\ :sub:`4`
 546      - b\ :sub:`3`
 547      - b\ :sub:`2`
 548      - b\ :sub:`1`
 549      - b\ :sub:`0`
 550      -
 551    * .. _V4L2-PIX-FMT-XRGB555X:
 552
 553      - ``V4L2_PIX_FMT_XRGB555X``
 554      - 'XR15' | (1 << 31)
 555
 556      - x
 557      - r\ :sub:`4`
 558      - r\ :sub:`3`
 559      - r\ :sub:`2`
 560      - r\ :sub:`1`
 561      - r\ :sub:`0`
 562      - g\ :sub:`4`
 563      - g\ :sub:`3`
 564
 565      - g\ :sub:`2`
 566      - g\ :sub:`1`
 567      - g\ :sub:`0`
 568      - b\ :sub:`4`
 569      - b\ :sub:`3`
 570      - b\ :sub:`2`
 571      - b\ :sub:`1`
 572      - b\ :sub:`0`
 573      -
 574    * .. _V4L2-PIX-FMT-RGB565X:
 575
 576      - ``V4L2_PIX_FMT_RGB565X``
 577      - 'RGBR'
 578
 579      - r\ :sub:`4`
 580      - r\ :sub:`3`
 581      - r\ :sub:`2`
 582      - r\ :sub:`1`
 583      - r\ :sub:`0`
 584      - g\ :sub:`5`
 585      - g\ :sub:`4`
 586      - g\ :sub:`3`
 587
 588      - g\ :sub:`2`
 589      - g\ :sub:`1`
 590      - g\ :sub:`0`
 591      - b\ :sub:`4`
 592      - b\ :sub:`3`
 593      - b\ :sub:`2`
 594      - b\ :sub:`1`
 595      - b\ :sub:`0`
 596      -
 597    * .. _V4L2-PIX-FMT-BGR666:
 598
 599      - ``V4L2_PIX_FMT_BGR666``
 600      - 'BGRH'
 601
 602      - b\ :sub:`5`
 603      - b\ :sub:`4`
 604      - b\ :sub:`3`
 605      - b\ :sub:`2`
 606      - b\ :sub:`1`
 607      - b\ :sub:`0`
 608      - g\ :sub:`5`
 609      - g\ :sub:`4`
 610
 611      - g\ :sub:`3`
 612      - g\ :sub:`2`
 613      - g\ :sub:`1`
 614      - g\ :sub:`0`
 615      - r\ :sub:`5`
 616      - r\ :sub:`4`
 617      - r\ :sub:`3`
 618      - r\ :sub:`2`
 619
 620      - r\ :sub:`1`
 621      - r\ :sub:`0`
 622      - x
 623      - x
 624      - x
 625      - x
 626      - x
 627      - x
 628
 629      - x
 630      - x
 631      - x
 632      - x
 633      - x
 634      - x
 635      - x
 636      - x
 637
 638.. raw:: latex
 639
 640    \endgroup
 641
 642
 6438 Bits Per Component
 644====================
 645
 646These formats store an RGB triplet in three or four bytes. They are named based
 647on the order of the RGB components as stored in memory, and on the total number
 648of bits per pixel. For instance, RGB24 format stores a pixel with [R\ :sub:`7`
 649R\ :sub:`6` R\ :sub:`5` R\ :sub:`4` R\ :sub:`3` R\ :sub:`2` R\ :sub:`1`
 650R\ :sub:`0`] in the first byte, [G\ :sub:`7` G\ :sub:`6` G\ :sub:`5` G\ :sub:`4`
 651G\ :sub:`3` G\ :sub:`2` G\ :sub:`1` G\ :sub:`0`] in the second byte and
 652[B\ :sub:`7` B\ :sub:`6` B\ :sub:`5` B\ :sub:`4` B\ :sub:`3` B\ :sub:`2`
 653B\ :sub:`1` B\ :sub:`0`] in the third byte. This differs from the DRM format
 654nomenclature that instead use the order of components as seen in a 24- or
 65532-bit little endian word.
 656
 657.. raw:: latex
 658
 659    \small
 660
 661.. flat-table:: RGB Formats With 8 Bits Per Component
 662    :header-rows:  1
 663    :stub-columns: 0
 664
 665    * - Identifier
 666      - Code
 667      - Byte 0 in memory
 668      - Byte 1
 669      - Byte 2
 670      - Byte 3
 671    * .. _V4L2-PIX-FMT-BGR24:
 672
 673      - ``V4L2_PIX_FMT_BGR24``
 674      - 'BGR3'
 675
 676      - B\ :sub:`7-0`
 677      - G\ :sub:`7-0`
 678      - R\ :sub:`7-0`
 679      -
 680    * .. _V4L2-PIX-FMT-RGB24:
 681
 682      - ``V4L2_PIX_FMT_RGB24``
 683      - 'RGB3'
 684
 685      - R\ :sub:`7-0`
 686      - G\ :sub:`7-0`
 687      - B\ :sub:`7-0`
 688      -
 689    * .. _V4L2-PIX-FMT-ABGR32:
 690
 691      - ``V4L2_PIX_FMT_ABGR32``
 692      - 'AR24'
 693
 694      - B\ :sub:`7-0`
 695      - G\ :sub:`7-0`
 696      - R\ :sub:`7-0`
 697      - A\ :sub:`7-0`
 698    * .. _V4L2-PIX-FMT-XBGR32:
 699
 700      - ``V4L2_PIX_FMT_XBGR32``
 701      - 'XR24'
 702
 703      - B\ :sub:`7-0`
 704      - G\ :sub:`7-0`
 705      - R\ :sub:`7-0`
 706      - X\ :sub:`7-0`
 707    * .. _V4L2-PIX-FMT-BGRA32:
 708
 709      - ``V4L2_PIX_FMT_BGRA32``
 710      - 'RA24'
 711
 712      - A\ :sub:`7-0`
 713      - B\ :sub:`7-0`
 714      - G\ :sub:`7-0`
 715      - R\ :sub:`7-0`
 716    * .. _V4L2-PIX-FMT-BGRX32:
 717
 718      - ``V4L2_PIX_FMT_BGRX32``
 719      - 'RX24'
 720
 721      - X\ :sub:`7-0`
 722      - B\ :sub:`7-0`
 723      - G\ :sub:`7-0`
 724      - R\ :sub:`7-0`
 725    * .. _V4L2-PIX-FMT-RGBA32:
 726
 727      - ``V4L2_PIX_FMT_RGBA32``
 728      - 'AB24'
 729
 730      - R\ :sub:`7-0`
 731      - G\ :sub:`7-0`
 732      - B\ :sub:`7-0`
 733      - A\ :sub:`7-0`
 734    * .. _V4L2-PIX-FMT-RGBX32:
 735
 736      - ``V4L2_PIX_FMT_RGBX32``
 737      - 'XB24'
 738
 739      - R\ :sub:`7-0`
 740      - G\ :sub:`7-0`
 741      - B\ :sub:`7-0`
 742      - X\ :sub:`7-0`
 743    * .. _V4L2-PIX-FMT-ARGB32:
 744
 745      - ``V4L2_PIX_FMT_ARGB32``
 746      - 'BA24'
 747
 748      - A\ :sub:`7-0`
 749      - R\ :sub:`7-0`
 750      - G\ :sub:`7-0`
 751      - B\ :sub:`7-0`
 752    * .. _V4L2-PIX-FMT-XRGB32:
 753
 754      - ``V4L2_PIX_FMT_XRGB32``
 755      - 'BX24'
 756
 757      - X\ :sub:`7-0`
 758      - R\ :sub:`7-0`
 759      - G\ :sub:`7-0`
 760      - B\ :sub:`7-0`
 761
 762.. raw:: latex
 763
 764    \normalsize
 765
 766
 76710 Bits Per Component
 768=====================
 769
 770These formats store a 30-bit RGB triplet with an optional 2 bit alpha in four
 771bytes. They are named based on the order of the RGB components as seen in a
 77232-bit word, which is then stored in memory in little endian byte order
 773(unless otherwise noted by the presence of bit 31 in the 4CC value), and on the
 774number of bits for each component.
 775
 776.. raw:: latex
 777
 778    \begingroup
 779    \tiny
 780    \setlength{\tabcolsep}{2pt}
 781
 782.. tabularcolumns:: |p{3.2cm}|p{0.8cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
 783
 784
 785.. flat-table:: RGB Formats 10 Bits Per Color Component
 786    :header-rows:  2
 787    :stub-columns: 0
 788
 789    * - Identifier
 790      - Code
 791      - :cspan:`7` Byte 0 in memory
 792      - :cspan:`7` Byte 1
 793      - :cspan:`7` Byte 2
 794      - :cspan:`7` Byte 3
 795    * -
 796      -
 797      - 7
 798      - 6
 799      - 5
 800      - 4
 801      - 3
 802      - 2
 803      - 1
 804      - 0
 805
 806      - 7
 807      - 6
 808      - 5
 809      - 4
 810      - 3
 811      - 2
 812      - 1
 813      - 0
 814
 815      - 7
 816      - 6
 817      - 5
 818      - 4
 819      - 3
 820      - 2
 821      - 1
 822      - 0
 823
 824      - 7
 825      - 6
 826      - 5
 827      - 4
 828      - 3
 829      - 2
 830      - 1
 831      - 0
 832    * .. _V4L2-PIX-FMT-RGBX1010102:
 833
 834      - ``V4L2_PIX_FMT_RGBX1010102``
 835      - 'RX30'
 836
 837      - b\ :sub:`5`
 838      - b\ :sub:`4`
 839      - b\ :sub:`3`
 840      - b\ :sub:`2`
 841      - b\ :sub:`1`
 842      - b\ :sub:`0`
 843      - x
 844      - x
 845
 846      - g\ :sub:`3`
 847      - g\ :sub:`2`
 848      - g\ :sub:`1`
 849      - g\ :sub:`0`
 850      - b\ :sub:`9`
 851      - b\ :sub:`8`
 852      - b\ :sub:`7`
 853      - b\ :sub:`6`
 854
 855      - r\ :sub:`1`
 856      - r\ :sub:`0`
 857      - g\ :sub:`9`
 858      - g\ :sub:`8`
 859      - g\ :sub:`7`
 860      - g\ :sub:`6`
 861      - g\ :sub:`5`
 862      - g\ :sub:`4`
 863
 864      - r\ :sub:`9`
 865      - r\ :sub:`8`
 866      - r\ :sub:`7`
 867      - r\ :sub:`6`
 868      - r\ :sub:`5`
 869      - r\ :sub:`4`
 870      - r\ :sub:`3`
 871      - r\ :sub:`2`
 872    * .. _V4L2-PIX-FMT-RGBA1010102:
 873
 874      - ``V4L2_PIX_FMT_RGBA1010102``
 875      - 'RA30'
 876
 877      - b\ :sub:`5`
 878      - b\ :sub:`4`
 879      - b\ :sub:`3`
 880      - b\ :sub:`2`
 881      - b\ :sub:`1`
 882      - b\ :sub:`0`
 883      - a\ :sub:`1`
 884      - a\ :sub:`0`
 885
 886      - g\ :sub:`3`
 887      - g\ :sub:`2`
 888      - g\ :sub:`1`
 889      - g\ :sub:`0`
 890      - b\ :sub:`9`
 891      - b\ :sub:`8`
 892      - b\ :sub:`7`
 893      - b\ :sub:`6`
 894
 895      - r\ :sub:`1`
 896      - r\ :sub:`0`
 897      - g\ :sub:`9`
 898      - g\ :sub:`8`
 899      - g\ :sub:`7`
 900      - g\ :sub:`6`
 901      - g\ :sub:`5`
 902      - g\ :sub:`4`
 903
 904      - r\ :sub:`9`
 905      - r\ :sub:`8`
 906      - r\ :sub:`7`
 907      - r\ :sub:`6`
 908      - r\ :sub:`5`
 909      - r\ :sub:`4`
 910      - r\ :sub:`3`
 911      - r\ :sub:`2`
 912    * .. _V4L2-PIX-FMT-ARGB2101010:
 913
 914      - ``V4L2_PIX_FMT_ARGB2101010``
 915      - 'AR30'
 916
 917      - b\ :sub:`7`
 918      - b\ :sub:`6`
 919      - b\ :sub:`5`
 920      - b\ :sub:`4`
 921      - b\ :sub:`3`
 922      - b\ :sub:`2`
 923      - b\ :sub:`1`
 924      - b\ :sub:`0`
 925
 926      - g\ :sub:`5`
 927      - g\ :sub:`4`
 928      - g\ :sub:`3`
 929      - g\ :sub:`2`
 930      - g\ :sub:`1`
 931      - g\ :sub:`0`
 932      - b\ :sub:`9`
 933      - b\ :sub:`8`
 934
 935      - r\ :sub:`3`
 936      - r\ :sub:`2`
 937      - r\ :sub:`1`
 938      - r\ :sub:`0`
 939      - g\ :sub:`9`
 940      - g\ :sub:`8`
 941      - g\ :sub:`7`
 942      - g\ :sub:`6`
 943
 944      - a\ :sub:`1`
 945      - a\ :sub:`0`
 946      - r\ :sub:`9`
 947      - r\ :sub:`8`
 948      - r\ :sub:`7`
 949      - r\ :sub:`6`
 950      - r\ :sub:`5`
 951      - r\ :sub:`4`
 952
 953.. raw:: latex
 954
 955    \endgroup
 956
 95712 Bits Per Component
 958==============================
 959
 960These formats store an RGB triplet in six or eight bytes, with 12 bits per component.
 961Expand the bits per component to 16 bits, data in the high bits, zeros in the low bits,
 962arranged in little endian order.
 963
 964.. raw:: latex
 965
 966    \small
 967
 968.. flat-table:: RGB Formats With 12 Bits Per Component
 969    :header-rows:  1
 970
 971    * - Identifier
 972      - Code
 973      - Byte 1-0
 974      - Byte 3-2
 975      - Byte 5-4
 976      - Byte 7-6
 977    * .. _V4L2-PIX-FMT-BGR48-12:
 978
 979      - ``V4L2_PIX_FMT_BGR48_12``
 980      - 'B312'
 981
 982      - B\ :sub:`15-4`
 983      - G\ :sub:`15-4`
 984      - R\ :sub:`15-4`
 985      -
 986    * .. _V4L2-PIX-FMT-ABGR64-12:
 987
 988      - ``V4L2_PIX_FMT_ABGR64_12``
 989      - 'B412'
 990
 991      - B\ :sub:`15-4`
 992      - G\ :sub:`15-4`
 993      - R\ :sub:`15-4`
 994      - A\ :sub:`15-4`
 995
 996.. raw:: latex
 997
 998    \normalsize
 999
100016 Bits Per Component
1001=====================
1002
1003These formats store an RGB triplet in six bytes, with 16 bits per component
1004stored in memory in little endian byte order. They are named based on the order
1005of the RGB components as stored in memory. For instance, RGB48 stores R\
1006:sub:`7:0` and R\ :sub:`15:8` in bytes 0 and 1 respectively. This differs from
1007the DRM format nomenclature that instead uses the order of components as seen in
1008the 48-bits little endian word.
1009
1010.. raw:: latex
1011
1012    \small
1013
1014.. flat-table:: RGB Formats With 16 Bits Per Component
1015    :header-rows:  1
1016
1017    * - Identifier
1018      - Code
1019      - Byte 0
1020      - Byte 1
1021      - Byte 2
1022      - Byte 3
1023      - Byte 4
1024      - Byte 5
1025
1026    * .. _V4L2-PIX-FMT-BGR48:
1027
1028      - ``V4L2_PIX_FMT_BGR48``
1029      - 'BGR6'
1030
1031      - B\ :sub:`7-0`
1032      - B\ :sub:`15-8`
1033      - G\ :sub:`7-0`
1034      - G\ :sub:`15-8`
1035      - R\ :sub:`7-0`
1036      - R\ :sub:`15-8`
1037
1038    * .. _V4L2-PIX-FMT-RGB48:
1039
1040      - ``V4L2_PIX_FMT_RGB48``
1041      - 'RGB6'
1042
1043      - R\ :sub:`7-0`
1044      - R\ :sub:`15-8`
1045      - G\ :sub:`7-0`
1046      - G\ :sub:`15-8`
1047      - B\ :sub:`7-0`
1048      - B\ :sub:`15-8`
1049
1050.. raw:: latex
1051
1052    \normalsize
1053
1054Deprecated RGB Formats
1055======================
1056
1057Formats defined in :ref:`pixfmt-rgb-deprecated` are deprecated and must not be
1058used by new drivers. They are documented here for reference. The meaning of
1059their alpha bits ``(a)`` is ill-defined and they are interpreted as in either
1060the corresponding ARGB or XRGB format, depending on the driver.
1061
1062.. raw:: latex
1063
1064    \begingroup
1065    \tiny
1066    \setlength{\tabcolsep}{2pt}
1067
1068.. tabularcolumns:: |p{2.6cm}|p{0.70cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
1069
1070.. _pixfmt-rgb-deprecated:
1071
1072.. flat-table:: Deprecated Packed RGB Image Formats
1073    :header-rows:  2
1074    :stub-columns: 0
1075
1076    * - Identifier
1077      - Code
1078      - :cspan:`7` Byte 0 in memory
1079
1080      - :cspan:`7` Byte 1
1081
1082      - :cspan:`7` Byte 2
1083
1084      - :cspan:`7` Byte 3
1085    * -
1086      -
1087      - 7
1088      - 6
1089      - 5
1090      - 4
1091      - 3
1092      - 2
1093      - 1
1094      - 0
1095
1096      - 7
1097      - 6
1098      - 5
1099      - 4
1100      - 3
1101      - 2
1102      - 1
1103      - 0
1104
1105      - 7
1106      - 6
1107      - 5
1108      - 4
1109      - 3
1110      - 2
1111      - 1
1112      - 0
1113
1114      - 7
1115      - 6
1116      - 5
1117      - 4
1118      - 3
1119      - 2
1120      - 1
1121      - 0
1122    * .. _V4L2-PIX-FMT-RGB444:
1123
1124      - ``V4L2_PIX_FMT_RGB444``
1125      - 'R444'
1126
1127      - g\ :sub:`3`
1128      - g\ :sub:`2`
1129      - g\ :sub:`1`
1130      - g\ :sub:`0`
1131      - b\ :sub:`3`
1132      - b\ :sub:`2`
1133      - b\ :sub:`1`
1134      - b\ :sub:`0`
1135
1136      - a\ :sub:`3`
1137      - a\ :sub:`2`
1138      - a\ :sub:`1`
1139      - a\ :sub:`0`
1140      - r\ :sub:`3`
1141      - r\ :sub:`2`
1142      - r\ :sub:`1`
1143      - r\ :sub:`0`
1144      -
1145    * .. _V4L2-PIX-FMT-RGB555:
1146
1147      - ``V4L2_PIX_FMT_RGB555``
1148      - 'RGBO'
1149
1150      - g\ :sub:`2`
1151      - g\ :sub:`1`
1152      - g\ :sub:`0`
1153      - b\ :sub:`4`
1154      - b\ :sub:`3`
1155      - b\ :sub:`2`
1156      - b\ :sub:`1`
1157      - b\ :sub:`0`
1158
1159      - a
1160      - r\ :sub:`4`
1161      - r\ :sub:`3`
1162      - r\ :sub:`2`
1163      - r\ :sub:`1`
1164      - r\ :sub:`0`
1165      - g\ :sub:`4`
1166      - g\ :sub:`3`
1167      -
1168    * .. _V4L2-PIX-FMT-RGB555X:
1169
1170      - ``V4L2_PIX_FMT_RGB555X``
1171      - 'RGBQ'
1172
1173      - a
1174      - r\ :sub:`4`
1175      - r\ :sub:`3`
1176      - r\ :sub:`2`
1177      - r\ :sub:`1`
1178      - r\ :sub:`0`
1179      - g\ :sub:`4`
1180      - g\ :sub:`3`
1181
1182      - g\ :sub:`2`
1183      - g\ :sub:`1`
1184      - g\ :sub:`0`
1185      - b\ :sub:`4`
1186      - b\ :sub:`3`
1187      - b\ :sub:`2`
1188      - b\ :sub:`1`
1189      - b\ :sub:`0`
1190      -
1191    * .. _V4L2-PIX-FMT-BGR32:
1192
1193      - ``V4L2_PIX_FMT_BGR32``
1194      - 'BGR4'
1195
1196      - b\ :sub:`7`
1197      - b\ :sub:`6`
1198      - b\ :sub:`5`
1199      - b\ :sub:`4`
1200      - b\ :sub:`3`
1201      - b\ :sub:`2`
1202      - b\ :sub:`1`
1203      - b\ :sub:`0`
1204
1205      - g\ :sub:`7`
1206      - g\ :sub:`6`
1207      - g\ :sub:`5`
1208      - g\ :sub:`4`
1209      - g\ :sub:`3`
1210      - g\ :sub:`2`
1211      - g\ :sub:`1`
1212      - g\ :sub:`0`
1213
1214      - r\ :sub:`7`
1215      - r\ :sub:`6`
1216      - r\ :sub:`5`
1217      - r\ :sub:`4`
1218      - r\ :sub:`3`
1219      - r\ :sub:`2`
1220      - r\ :sub:`1`
1221      - r\ :sub:`0`
1222
1223      - a\ :sub:`7`
1224      - a\ :sub:`6`
1225      - a\ :sub:`5`
1226      - a\ :sub:`4`
1227      - a\ :sub:`3`
1228      - a\ :sub:`2`
1229      - a\ :sub:`1`
1230      - a\ :sub:`0`
1231    * .. _V4L2-PIX-FMT-RGB32:
1232
1233      - ``V4L2_PIX_FMT_RGB32``
1234      - 'RGB4'
1235
1236      - a\ :sub:`7`
1237      - a\ :sub:`6`
1238      - a\ :sub:`5`
1239      - a\ :sub:`4`
1240      - a\ :sub:`3`
1241      - a\ :sub:`2`
1242      - a\ :sub:`1`
1243      - a\ :sub:`0`
1244
1245      - r\ :sub:`7`
1246      - r\ :sub:`6`
1247      - r\ :sub:`5`
1248      - r\ :sub:`4`
1249      - r\ :sub:`3`
1250      - r\ :sub:`2`
1251      - r\ :sub:`1`
1252      - r\ :sub:`0`
1253
1254      - g\ :sub:`7`
1255      - g\ :sub:`6`
1256      - g\ :sub:`5`
1257      - g\ :sub:`4`
1258      - g\ :sub:`3`
1259      - g\ :sub:`2`
1260      - g\ :sub:`1`
1261      - g\ :sub:`0`
1262
1263      - b\ :sub:`7`
1264      - b\ :sub:`6`
1265      - b\ :sub:`5`
1266      - b\ :sub:`4`
1267      - b\ :sub:`3`
1268      - b\ :sub:`2`
1269      - b\ :sub:`1`
1270      - b\ :sub:`0`
1271
1272.. raw:: latex
1273
1274    \endgroup
1275
1276A test utility to determine which RGB formats a driver actually supports
1277is available from the LinuxTV v4l-dvb repository. See
1278`https://linuxtv.org/repo/ <https://linuxtv.org/repo/>`__ for access
1279instructions.
~/ Read-only file preview.