cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pixfmt-packed-yuv.rst (8402B)


      1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
      2
      3.. _packed-yuv:
      4
      5******************
      6Packed YUV formats
      7******************
      8
      9Similarly to the packed RGB formats, the packed YUV formats store the Y, Cb and
     10Cr components consecutively in memory. They may apply subsampling to the chroma
     11components and thus differ in how they interlave the three components.
     12
     13.. note::
     14
     15   - In all the tables that follow, bit 7 is the most significant bit in a byte.
     16   - 'Y', 'Cb' and 'Cr' denote bits of the luma, blue chroma (also known as
     17     'U') and red chroma (also known as 'V') components respectively. 'A'
     18     denotes bits of the alpha component (if supported by the format), and 'X'
     19     denotes padding bits.
     20
     21
     224:4:4 Subsampling
     23=================
     24
     25These formats do not subsample the chroma components and store each pixels as a
     26full triplet of Y, Cb and Cr values.
     27
     28The next table lists the packed YUV 4:4:4 formats with less than 8 bits per
     29component. They are named based on the order of the Y, Cb and Cr components as
     30seen in a 16-bit word, which is then stored in memory in little endian byte
     31order, and on the number of bits for each component. For instance the YUV565
     32format stores a pixel in a 16-bit word [15:0] laid out at as [Y'\ :sub:`4-0`
     33Cb\ :sub:`5-0` Cr\ :sub:`4-0`], and stored in memory in two bytes,
     34[Cb\ :sub:`2-0` Cr\ :sub:`4-0`] followed by [Y'\ :sub:`4-0` Cb\ :sub:`5-3`].
     35
     36.. raw:: latex
     37
     38    \begingroup
     39    \scriptsize
     40    \setlength{\tabcolsep}{2pt}
     41
     42.. tabularcolumns:: |p{3.5cm}|p{0.96cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|p{0.52cm}|
     43
     44.. flat-table:: Packed YUV 4:4:4 Image Formats (less than 8bpc)
     45    :header-rows:  2
     46    :stub-columns: 0
     47
     48    * - Identifier
     49      - Code
     50
     51      - :cspan:`7` Byte 0 in memory
     52
     53      - :cspan:`7` Byte 1
     54
     55    * -
     56      -
     57      - 7
     58      - 6
     59      - 5
     60      - 4
     61      - 3
     62      - 2
     63      - 1
     64      - 0
     65
     66      - 7
     67      - 6
     68      - 5
     69      - 4
     70      - 3
     71      - 2
     72      - 1
     73      - 0
     74
     75    * .. _V4L2-PIX-FMT-YUV444:
     76
     77      - ``V4L2_PIX_FMT_YUV444``
     78      - 'Y444'
     79
     80      - Cb\ :sub:`3`
     81      - Cb\ :sub:`2`
     82      - Cb\ :sub:`1`
     83      - Cb\ :sub:`0`
     84      - Cr\ :sub:`3`
     85      - Cr\ :sub:`2`
     86      - Cr\ :sub:`1`
     87      - Cr\ :sub:`0`
     88
     89      - a\ :sub:`3`
     90      - a\ :sub:`2`
     91      - a\ :sub:`1`
     92      - a\ :sub:`0`
     93      - Y'\ :sub:`3`
     94      - Y'\ :sub:`2`
     95      - Y'\ :sub:`1`
     96      - Y'\ :sub:`0`
     97
     98    * .. _V4L2-PIX-FMT-YUV555:
     99
    100      - ``V4L2_PIX_FMT_YUV555``
    101      - 'YUVO'
    102
    103      - Cb\ :sub:`2`
    104      - Cb\ :sub:`1`
    105      - Cb\ :sub:`0`
    106      - Cr\ :sub:`4`
    107      - Cr\ :sub:`3`
    108      - Cr\ :sub:`2`
    109      - Cr\ :sub:`1`
    110      - Cr\ :sub:`0`
    111
    112      - a
    113      - Y'\ :sub:`4`
    114      - Y'\ :sub:`3`
    115      - Y'\ :sub:`2`
    116      - Y'\ :sub:`1`
    117      - Y'\ :sub:`0`
    118      - Cb\ :sub:`4`
    119      - Cb\ :sub:`3`
    120
    121    * .. _V4L2-PIX-FMT-YUV565:
    122
    123      - ``V4L2_PIX_FMT_YUV565``
    124      - 'YUVP'
    125
    126      - Cb\ :sub:`2`
    127      - Cb\ :sub:`1`
    128      - Cb\ :sub:`0`
    129      - Cr\ :sub:`4`
    130      - Cr\ :sub:`3`
    131      - Cr\ :sub:`2`
    132      - Cr\ :sub:`1`
    133      - Cr\ :sub:`0`
    134
    135      - Y'\ :sub:`4`
    136      - Y'\ :sub:`3`
    137      - Y'\ :sub:`2`
    138      - Y'\ :sub:`1`
    139      - Y'\ :sub:`0`
    140      - Cb\ :sub:`5`
    141      - Cb\ :sub:`4`
    142      - Cb\ :sub:`3`
    143
    144.. raw:: latex
    145
    146    \endgroup
    147
    148.. note::
    149
    150    For the YUV444 and YUV555 formats, the value of alpha bits is undefined
    151    when reading from the driver, ignored when writing to the driver, except
    152    when alpha blending has been negotiated for a :ref:`Video Overlay
    153    <overlay>` or :ref:`Video Output Overlay <osd>`.
    154
    155
    156The next table lists the packed YUV 4:4:4 formats with 8 bits per component.
    157They are named based on the order of the Y, Cb and Cr components as stored in
    158memory, and on the total number of bits per pixel. For instance, the VUYX32
    159format stores a pixel with Cr\ :sub:`7-0` in the first byte, Cb\ :sub:`7-0` in
    160the second byte and Y'\ :sub:`7-0` in the third byte.
    161
    162.. flat-table:: Packed YUV Image Formats (8bpc)
    163    :header-rows: 1
    164    :stub-columns: 0
    165
    166    * - Identifier
    167      - Code
    168      - Byte 0
    169      - Byte 1
    170      - Byte 2
    171      - Byte 3
    172
    173    * .. _V4L2-PIX-FMT-YUV32:
    174
    175      - ``V4L2_PIX_FMT_YUV32``
    176      - 'YUV4'
    177
    178      - A\ :sub:`7-0`
    179      - Y'\ :sub:`7-0`
    180      - Cb\ :sub:`7-0`
    181      - Cr\ :sub:`7-0`
    182
    183    * .. _V4L2-PIX-FMT-AYUV32:
    184
    185      - ``V4L2_PIX_FMT_AYUV32``
    186      - 'AYUV'
    187
    188      - A\ :sub:`7-0`
    189      - Y'\ :sub:`7-0`
    190      - Cb\ :sub:`7-0`
    191      - Cr\ :sub:`7-0`
    192
    193    * .. _V4L2-PIX-FMT-XYUV32:
    194
    195      - ``V4L2_PIX_FMT_XYUV32``
    196      - 'XYUV'
    197
    198      - X\ :sub:`7-0`
    199      - Y'\ :sub:`7-0`
    200      - Cb\ :sub:`7-0`
    201      - Cr\ :sub:`7-0`
    202
    203    * .. _V4L2-PIX-FMT-VUYA32:
    204
    205      - ``V4L2_PIX_FMT_VUYA32``
    206      - 'VUYA'
    207
    208      - Cr\ :sub:`7-0`
    209      - Cb\ :sub:`7-0`
    210      - Y'\ :sub:`7-0`
    211      - A\ :sub:`7-0`
    212
    213    * .. _V4L2-PIX-FMT-VUYX32:
    214
    215      - ``V4L2_PIX_FMT_VUYX32``
    216      - 'VUYX'
    217
    218      - Cr\ :sub:`7-0`
    219      - Cb\ :sub:`7-0`
    220      - Y'\ :sub:`7-0`
    221      - X\ :sub:`7-0`
    222
    223    * .. _V4L2-PIX-FMT-YUV24:
    224
    225      - ``V4L2_PIX_FMT_YUV24``
    226      - 'YUV3'
    227
    228      - Y'\ :sub:`7-0`
    229      - Cb\ :sub:`7-0`
    230      - Cr\ :sub:`7-0`
    231      - -\
    232
    233.. note::
    234
    235    - The alpha component is expected to contain a meaningful value that can be
    236      used by drivers and applications.
    237    - The padding bits contain undefined values that must be ignored by all
    238      applications and drivers.
    239
    240
    2414:2:2 Subsampling
    242=================
    243
    244These formats, commonly referred to as YUYV or YUY2, subsample the chroma
    245components horizontally by 2, storing 2 pixels in 4 bytes.
    246
    247.. raw:: latex
    248
    249    \footnotesize
    250
    251.. tabularcolumns:: |p{3.4cm}|p{1.2cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|
    252
    253.. flat-table:: Packed YUV 4:2:2 Formats
    254    :header-rows: 1
    255    :stub-columns: 0
    256
    257    * - Identifier
    258      - Code
    259      - Byte 0
    260      - Byte 1
    261      - Byte 2
    262      - Byte 3
    263      - Byte 4
    264      - Byte 5
    265      - Byte 6
    266      - Byte 7
    267    * .. _V4L2-PIX-FMT-UYVY:
    268
    269      - ``V4L2_PIX_FMT_UYVY``
    270      - 'UYVY'
    271
    272      - Cb\ :sub:`0`
    273      - Y'\ :sub:`0`
    274      - Cr\ :sub:`0`
    275      - Y'\ :sub:`1`
    276      - Cb\ :sub:`2`
    277      - Y'\ :sub:`2`
    278      - Cr\ :sub:`2`
    279      - Y'\ :sub:`3`
    280    * .. _V4L2-PIX-FMT-VYUY:
    281
    282      - ``V4L2_PIX_FMT_VYUY``
    283      - 'VYUY'
    284
    285      - Cr\ :sub:`0`
    286      - Y'\ :sub:`0`
    287      - Cb\ :sub:`0`
    288      - Y'\ :sub:`1`
    289      - Cr\ :sub:`2`
    290      - Y'\ :sub:`2`
    291      - Cb\ :sub:`2`
    292      - Y'\ :sub:`3`
    293    * .. _V4L2-PIX-FMT-YUYV:
    294
    295      - ``V4L2_PIX_FMT_YUYV``
    296      - 'YUYV'
    297
    298      - Y'\ :sub:`0`
    299      - Cb\ :sub:`0`
    300      - Y'\ :sub:`1`
    301      - Cr\ :sub:`0`
    302      - Y'\ :sub:`2`
    303      - Cb\ :sub:`2`
    304      - Y'\ :sub:`3`
    305      - Cr\ :sub:`2`
    306    * .. _V4L2-PIX-FMT-YVYU:
    307
    308      - ``V4L2_PIX_FMT_YVYU``
    309      - 'YVYU'
    310
    311      - Y'\ :sub:`0`
    312      - Cr\ :sub:`0`
    313      - Y'\ :sub:`1`
    314      - Cb\ :sub:`0`
    315      - Y'\ :sub:`2`
    316      - Cr\ :sub:`2`
    317      - Y'\ :sub:`3`
    318      - Cb\ :sub:`2`
    319
    320.. raw:: latex
    321
    322    \normalsize
    323
    324**Color Sample Location:**
    325Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
    326horizontally.
    327
    328
    3294:1:1 Subsampling
    330=================
    331
    332This format subsamples the chroma components horizontally by 4, storing 8
    333pixels in 12 bytes.
    334
    335.. raw:: latex
    336
    337    \scriptsize
    338
    339.. tabularcolumns:: |p{2.9cm}|p{0.8cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|p{0.5cm}|
    340
    341.. flat-table:: Packed YUV 4:1:1 Formats
    342    :header-rows: 1
    343    :stub-columns: 0
    344
    345    * - Identifier
    346      - Code
    347      - Byte 0
    348      - Byte 1
    349      - Byte 2
    350      - Byte 3
    351      - Byte 4
    352      - Byte 5
    353      - Byte 6
    354      - Byte 7
    355      - Byte 8
    356      - Byte 9
    357      - Byte 10
    358      - Byte 11
    359    * .. _V4L2-PIX-FMT-Y41P:
    360
    361      - ``V4L2_PIX_FMT_Y41P``
    362      - 'Y41P'
    363
    364      - Cb\ :sub:`0`
    365      - Y'\ :sub:`0`
    366      - Cr\ :sub:`0`
    367      - Y'\ :sub:`1`
    368      - Cb\ :sub:`4`
    369      - Y'\ :sub:`2`
    370      - Cr\ :sub:`4`
    371      - Y'\ :sub:`3`
    372      - Y'\ :sub:`4`
    373      - Y'\ :sub:`5`
    374      - Y'\ :sub:`6`
    375      - Y'\ :sub:`7`
    376
    377.. raw:: latex
    378
    379    \normalsize
    380
    381.. note::
    382
    383    Do not confuse ``V4L2_PIX_FMT_Y41P`` with
    384    :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>`. Y41P is derived from
    385    "YUV 4:1:1 **packed**", while YUV411P stands for "YUV 4:1:1 **planar**".
    386
    387**Color Sample Location:**
    388Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
    389horizontally.