162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. _packed-yuv:
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci******************
662306a36Sopenharmony_ciPacked YUV formats
762306a36Sopenharmony_ci******************
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciSimilarly to the packed RGB formats, the packed YUV formats store the Y, Cb and
1062306a36Sopenharmony_ciCr components consecutively in memory. They may apply subsampling to the chroma
1162306a36Sopenharmony_cicomponents and thus differ in how they interlave the three components.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci.. note::
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci   - In all the tables that follow, bit 7 is the most significant bit in a byte.
1662306a36Sopenharmony_ci   - 'Y', 'Cb' and 'Cr' denote bits of the luma, blue chroma (also known as
1762306a36Sopenharmony_ci     'U') and red chroma (also known as 'V') components respectively. 'A'
1862306a36Sopenharmony_ci     denotes bits of the alpha component (if supported by the format), and 'X'
1962306a36Sopenharmony_ci     denotes padding bits.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci4:4:4 Subsampling
2362306a36Sopenharmony_ci=================
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciThese formats do not subsample the chroma components and store each pixels as a
2662306a36Sopenharmony_cifull triplet of Y, Cb and Cr values.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciThe next table lists the packed YUV 4:4:4 formats with less than 8 bits per
2962306a36Sopenharmony_cicomponent. They are named based on the order of the Y, Cb and Cr components as
3062306a36Sopenharmony_ciseen in a 16-bit word, which is then stored in memory in little endian byte
3162306a36Sopenharmony_ciorder, and on the number of bits for each component. For instance the YUV565
3262306a36Sopenharmony_ciformat stores a pixel in a 16-bit word [15:0] laid out at as [Y'\ :sub:`4-0`
3362306a36Sopenharmony_ciCb\ :sub:`5-0` Cr\ :sub:`4-0`], and stored in memory in two bytes,
3462306a36Sopenharmony_ci[Cb\ :sub:`2-0` Cr\ :sub:`4-0`] followed by [Y'\ :sub:`4-0` Cb\ :sub:`5-3`].
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci.. raw:: latex
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci    \begingroup
3962306a36Sopenharmony_ci    \scriptsize
4062306a36Sopenharmony_ci    \setlength{\tabcolsep}{2pt}
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci.. 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}|
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci.. flat-table:: Packed YUV 4:4:4 Image Formats (less than 8bpc)
4562306a36Sopenharmony_ci    :header-rows:  2
4662306a36Sopenharmony_ci    :stub-columns: 0
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci    * - Identifier
4962306a36Sopenharmony_ci      - Code
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci      - :cspan:`7` Byte 0 in memory
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci      - :cspan:`7` Byte 1
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci    * -
5662306a36Sopenharmony_ci      -
5762306a36Sopenharmony_ci      - 7
5862306a36Sopenharmony_ci      - 6
5962306a36Sopenharmony_ci      - 5
6062306a36Sopenharmony_ci      - 4
6162306a36Sopenharmony_ci      - 3
6262306a36Sopenharmony_ci      - 2
6362306a36Sopenharmony_ci      - 1
6462306a36Sopenharmony_ci      - 0
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci      - 7
6762306a36Sopenharmony_ci      - 6
6862306a36Sopenharmony_ci      - 5
6962306a36Sopenharmony_ci      - 4
7062306a36Sopenharmony_ci      - 3
7162306a36Sopenharmony_ci      - 2
7262306a36Sopenharmony_ci      - 1
7362306a36Sopenharmony_ci      - 0
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV444:
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV444``
7862306a36Sopenharmony_ci      - 'Y444'
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci      - Cb\ :sub:`3`
8162306a36Sopenharmony_ci      - Cb\ :sub:`2`
8262306a36Sopenharmony_ci      - Cb\ :sub:`1`
8362306a36Sopenharmony_ci      - Cb\ :sub:`0`
8462306a36Sopenharmony_ci      - Cr\ :sub:`3`
8562306a36Sopenharmony_ci      - Cr\ :sub:`2`
8662306a36Sopenharmony_ci      - Cr\ :sub:`1`
8762306a36Sopenharmony_ci      - Cr\ :sub:`0`
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci      - a\ :sub:`3`
9062306a36Sopenharmony_ci      - a\ :sub:`2`
9162306a36Sopenharmony_ci      - a\ :sub:`1`
9262306a36Sopenharmony_ci      - a\ :sub:`0`
9362306a36Sopenharmony_ci      - Y'\ :sub:`3`
9462306a36Sopenharmony_ci      - Y'\ :sub:`2`
9562306a36Sopenharmony_ci      - Y'\ :sub:`1`
9662306a36Sopenharmony_ci      - Y'\ :sub:`0`
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV555:
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV555``
10162306a36Sopenharmony_ci      - 'YUVO'
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci      - Cb\ :sub:`2`
10462306a36Sopenharmony_ci      - Cb\ :sub:`1`
10562306a36Sopenharmony_ci      - Cb\ :sub:`0`
10662306a36Sopenharmony_ci      - Cr\ :sub:`4`
10762306a36Sopenharmony_ci      - Cr\ :sub:`3`
10862306a36Sopenharmony_ci      - Cr\ :sub:`2`
10962306a36Sopenharmony_ci      - Cr\ :sub:`1`
11062306a36Sopenharmony_ci      - Cr\ :sub:`0`
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci      - a
11362306a36Sopenharmony_ci      - Y'\ :sub:`4`
11462306a36Sopenharmony_ci      - Y'\ :sub:`3`
11562306a36Sopenharmony_ci      - Y'\ :sub:`2`
11662306a36Sopenharmony_ci      - Y'\ :sub:`1`
11762306a36Sopenharmony_ci      - Y'\ :sub:`0`
11862306a36Sopenharmony_ci      - Cb\ :sub:`4`
11962306a36Sopenharmony_ci      - Cb\ :sub:`3`
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV565:
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV565``
12462306a36Sopenharmony_ci      - 'YUVP'
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci      - Cb\ :sub:`2`
12762306a36Sopenharmony_ci      - Cb\ :sub:`1`
12862306a36Sopenharmony_ci      - Cb\ :sub:`0`
12962306a36Sopenharmony_ci      - Cr\ :sub:`4`
13062306a36Sopenharmony_ci      - Cr\ :sub:`3`
13162306a36Sopenharmony_ci      - Cr\ :sub:`2`
13262306a36Sopenharmony_ci      - Cr\ :sub:`1`
13362306a36Sopenharmony_ci      - Cr\ :sub:`0`
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci      - Y'\ :sub:`4`
13662306a36Sopenharmony_ci      - Y'\ :sub:`3`
13762306a36Sopenharmony_ci      - Y'\ :sub:`2`
13862306a36Sopenharmony_ci      - Y'\ :sub:`1`
13962306a36Sopenharmony_ci      - Y'\ :sub:`0`
14062306a36Sopenharmony_ci      - Cb\ :sub:`5`
14162306a36Sopenharmony_ci      - Cb\ :sub:`4`
14262306a36Sopenharmony_ci      - Cb\ :sub:`3`
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci.. raw:: latex
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci    \endgroup
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci.. note::
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci    For the YUV444 and YUV555 formats, the value of alpha bits is undefined
15162306a36Sopenharmony_ci    when reading from the driver, ignored when writing to the driver, except
15262306a36Sopenharmony_ci    when alpha blending has been negotiated for a :ref:`Video Overlay
15362306a36Sopenharmony_ci    <overlay>` or :ref:`Video Output Overlay <osd>`.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ciThe next table lists the packed YUV 4:4:4 formats with 8 bits per component.
15762306a36Sopenharmony_ciThey are named based on the order of the Y, Cb and Cr components as stored in
15862306a36Sopenharmony_cimemory, and on the total number of bits per pixel. For instance, the VUYX32
15962306a36Sopenharmony_ciformat stores a pixel with Cr\ :sub:`7-0` in the first byte, Cb\ :sub:`7-0` in
16062306a36Sopenharmony_cithe second byte and Y'\ :sub:`7-0` in the third byte.
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci.. flat-table:: Packed YUV Image Formats (8bpc)
16362306a36Sopenharmony_ci    :header-rows: 1
16462306a36Sopenharmony_ci    :stub-columns: 0
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci    * - Identifier
16762306a36Sopenharmony_ci      - Code
16862306a36Sopenharmony_ci      - Byte 0
16962306a36Sopenharmony_ci      - Byte 1
17062306a36Sopenharmony_ci      - Byte 2
17162306a36Sopenharmony_ci      - Byte 3
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV32:
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV32``
17662306a36Sopenharmony_ci      - 'YUV4'
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci      - A\ :sub:`7-0`
17962306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
18062306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
18162306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-AYUV32:
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_AYUV32``
18662306a36Sopenharmony_ci      - 'AYUV'
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci      - A\ :sub:`7-0`
18962306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
19062306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
19162306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-XYUV32:
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_XYUV32``
19662306a36Sopenharmony_ci      - 'XYUV'
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci      - X\ :sub:`7-0`
19962306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
20062306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
20162306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-VUYA32:
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_VUYA32``
20662306a36Sopenharmony_ci      - 'VUYA'
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
20962306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
21062306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
21162306a36Sopenharmony_ci      - A\ :sub:`7-0`
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-VUYX32:
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_VUYX32``
21662306a36Sopenharmony_ci      - 'VUYX'
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
21962306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
22062306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
22162306a36Sopenharmony_ci      - X\ :sub:`7-0`
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUVA32:
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUVA32``
22662306a36Sopenharmony_ci      - 'YUVA'
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
22962306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
23062306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
23162306a36Sopenharmony_ci      - A\ :sub:`7-0`
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUVX32:
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUVX32``
23662306a36Sopenharmony_ci      - 'YUVX'
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
23962306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
24062306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
24162306a36Sopenharmony_ci      - X\ :sub:`7-0`
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV24:
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV24``
24662306a36Sopenharmony_ci      - 'YUV3'
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci      - Y'\ :sub:`7-0`
24962306a36Sopenharmony_ci      - Cb\ :sub:`7-0`
25062306a36Sopenharmony_ci      - Cr\ :sub:`7-0`
25162306a36Sopenharmony_ci      - -\
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci.. note::
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci    - The alpha component is expected to contain a meaningful value that can be
25662306a36Sopenharmony_ci      used by drivers and applications.
25762306a36Sopenharmony_ci    - The padding bits contain undefined values that must be ignored by all
25862306a36Sopenharmony_ci      applications and drivers.
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciThe next table lists the packed YUV 4:4:4 formats with 12 bits per component.
26162306a36Sopenharmony_ciExpand the bits per component to 16 bits, data in the high bits, zeros in the low bits,
26262306a36Sopenharmony_ciarranged in little endian order, storing 1 pixel in 6 bytes.
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci.. flat-table:: Packed YUV 4:4:4 Image Formats (12bpc)
26562306a36Sopenharmony_ci    :header-rows: 1
26662306a36Sopenharmony_ci    :stub-columns: 0
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci    * - Identifier
26962306a36Sopenharmony_ci      - Code
27062306a36Sopenharmony_ci      - Byte 1-0
27162306a36Sopenharmony_ci      - Byte 3-2
27262306a36Sopenharmony_ci      - Byte 5-4
27362306a36Sopenharmony_ci      - Byte 7-6
27462306a36Sopenharmony_ci      - Byte 9-8
27562306a36Sopenharmony_ci      - Byte 11-10
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUV48-12:
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUV48_12``
28062306a36Sopenharmony_ci      - 'Y312'
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci      - Y'\ :sub:`0`
28362306a36Sopenharmony_ci      - Cb\ :sub:`0`
28462306a36Sopenharmony_ci      - Cr\ :sub:`0`
28562306a36Sopenharmony_ci      - Y'\ :sub:`1`
28662306a36Sopenharmony_ci      - Cb\ :sub:`1`
28762306a36Sopenharmony_ci      - Cr\ :sub:`1`
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci4:2:2 Subsampling
29062306a36Sopenharmony_ci=================
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ciThese formats, commonly referred to as YUYV or YUY2, subsample the chroma
29362306a36Sopenharmony_cicomponents horizontally by 2, storing 2 pixels in a container. The container
29462306a36Sopenharmony_ciis 32-bits for 8-bit formats, and 64-bits for 10+-bit formats.
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ciThe packed YUYV formats with more than 8 bits per component are stored as four
29762306a36Sopenharmony_ci16-bit little-endian words. Each word's most significant bits contain one
29862306a36Sopenharmony_cicomponent, and the least significant bits are zero padding.
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci.. raw:: latex
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci    \footnotesize
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci.. 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}|
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci.. flat-table:: Packed YUV 4:2:2 Formats in 32-bit container
30762306a36Sopenharmony_ci    :header-rows: 1
30862306a36Sopenharmony_ci    :stub-columns: 0
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ci    * - Identifier
31162306a36Sopenharmony_ci      - Code
31262306a36Sopenharmony_ci      - Byte 0
31362306a36Sopenharmony_ci      - Byte 1
31462306a36Sopenharmony_ci      - Byte 2
31562306a36Sopenharmony_ci      - Byte 3
31662306a36Sopenharmony_ci      - Byte 4
31762306a36Sopenharmony_ci      - Byte 5
31862306a36Sopenharmony_ci      - Byte 6
31962306a36Sopenharmony_ci      - Byte 7
32062306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-UYVY:
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_UYVY``
32362306a36Sopenharmony_ci      - 'UYVY'
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci      - Cb\ :sub:`0`
32662306a36Sopenharmony_ci      - Y'\ :sub:`0`
32762306a36Sopenharmony_ci      - Cr\ :sub:`0`
32862306a36Sopenharmony_ci      - Y'\ :sub:`1`
32962306a36Sopenharmony_ci      - Cb\ :sub:`2`
33062306a36Sopenharmony_ci      - Y'\ :sub:`2`
33162306a36Sopenharmony_ci      - Cr\ :sub:`2`
33262306a36Sopenharmony_ci      - Y'\ :sub:`3`
33362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-VYUY:
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_VYUY``
33662306a36Sopenharmony_ci      - 'VYUY'
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci      - Cr\ :sub:`0`
33962306a36Sopenharmony_ci      - Y'\ :sub:`0`
34062306a36Sopenharmony_ci      - Cb\ :sub:`0`
34162306a36Sopenharmony_ci      - Y'\ :sub:`1`
34262306a36Sopenharmony_ci      - Cr\ :sub:`2`
34362306a36Sopenharmony_ci      - Y'\ :sub:`2`
34462306a36Sopenharmony_ci      - Cb\ :sub:`2`
34562306a36Sopenharmony_ci      - Y'\ :sub:`3`
34662306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YUYV:
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YUYV``
34962306a36Sopenharmony_ci      - 'YUYV'
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci      - Y'\ :sub:`0`
35262306a36Sopenharmony_ci      - Cb\ :sub:`0`
35362306a36Sopenharmony_ci      - Y'\ :sub:`1`
35462306a36Sopenharmony_ci      - Cr\ :sub:`0`
35562306a36Sopenharmony_ci      - Y'\ :sub:`2`
35662306a36Sopenharmony_ci      - Cb\ :sub:`2`
35762306a36Sopenharmony_ci      - Y'\ :sub:`3`
35862306a36Sopenharmony_ci      - Cr\ :sub:`2`
35962306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-YVYU:
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_YVYU``
36262306a36Sopenharmony_ci      - 'YVYU'
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci      - Y'\ :sub:`0`
36562306a36Sopenharmony_ci      - Cr\ :sub:`0`
36662306a36Sopenharmony_ci      - Y'\ :sub:`1`
36762306a36Sopenharmony_ci      - Cb\ :sub:`0`
36862306a36Sopenharmony_ci      - Y'\ :sub:`2`
36962306a36Sopenharmony_ci      - Cr\ :sub:`2`
37062306a36Sopenharmony_ci      - Y'\ :sub:`3`
37162306a36Sopenharmony_ci      - Cb\ :sub:`2`
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ci.. 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}|
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_ci.. flat-table:: Packed YUV 4:2:2 Formats in 64-bit container
37662306a36Sopenharmony_ci    :header-rows: 1
37762306a36Sopenharmony_ci    :stub-columns: 0
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ci    * - Identifier
38062306a36Sopenharmony_ci      - Code
38162306a36Sopenharmony_ci      - Word 0
38262306a36Sopenharmony_ci      - Word 1
38362306a36Sopenharmony_ci      - Word 2
38462306a36Sopenharmony_ci      - Word 3
38562306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-Y210:
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_Y210``
38862306a36Sopenharmony_ci      - 'Y210'
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci      - Y'\ :sub:`0` (bits 15-6)
39162306a36Sopenharmony_ci      - Cb\ :sub:`0` (bits 15-6)
39262306a36Sopenharmony_ci      - Y'\ :sub:`1` (bits 15-6)
39362306a36Sopenharmony_ci      - Cr\ :sub:`0` (bits 15-6)
39462306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-Y212:
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_Y212``
39762306a36Sopenharmony_ci      - 'Y212'
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ci      - Y'\ :sub:`0` (bits 15-4)
40062306a36Sopenharmony_ci      - Cb\ :sub:`0` (bits 15-4)
40162306a36Sopenharmony_ci      - Y'\ :sub:`1` (bits 15-4)
40262306a36Sopenharmony_ci      - Cr\ :sub:`0` (bits 15-4)
40362306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-Y216:
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_Y216``
40662306a36Sopenharmony_ci      - 'Y216'
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci      - Y'\ :sub:`0` (bits 15-0)
40962306a36Sopenharmony_ci      - Cb\ :sub:`0` (bits 15-0)
41062306a36Sopenharmony_ci      - Y'\ :sub:`1` (bits 15-0)
41162306a36Sopenharmony_ci      - Cr\ :sub:`0` (bits 15-0)
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ci.. raw:: latex
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_ci    \normalsize
41662306a36Sopenharmony_ci
41762306a36Sopenharmony_ci**Color Sample Location:**
41862306a36Sopenharmony_ciChroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
41962306a36Sopenharmony_cihorizontally.
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci4:1:1 Subsampling
42362306a36Sopenharmony_ci=================
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ciThis format subsamples the chroma components horizontally by 4, storing 8
42662306a36Sopenharmony_cipixels in 12 bytes.
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci.. raw:: latex
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci    \scriptsize
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci.. 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}|
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ci.. flat-table:: Packed YUV 4:1:1 Formats
43562306a36Sopenharmony_ci    :header-rows: 1
43662306a36Sopenharmony_ci    :stub-columns: 0
43762306a36Sopenharmony_ci
43862306a36Sopenharmony_ci    * - Identifier
43962306a36Sopenharmony_ci      - Code
44062306a36Sopenharmony_ci      - Byte 0
44162306a36Sopenharmony_ci      - Byte 1
44262306a36Sopenharmony_ci      - Byte 2
44362306a36Sopenharmony_ci      - Byte 3
44462306a36Sopenharmony_ci      - Byte 4
44562306a36Sopenharmony_ci      - Byte 5
44662306a36Sopenharmony_ci      - Byte 6
44762306a36Sopenharmony_ci      - Byte 7
44862306a36Sopenharmony_ci      - Byte 8
44962306a36Sopenharmony_ci      - Byte 9
45062306a36Sopenharmony_ci      - Byte 10
45162306a36Sopenharmony_ci      - Byte 11
45262306a36Sopenharmony_ci    * .. _V4L2-PIX-FMT-Y41P:
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci      - ``V4L2_PIX_FMT_Y41P``
45562306a36Sopenharmony_ci      - 'Y41P'
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ci      - Cb\ :sub:`0`
45862306a36Sopenharmony_ci      - Y'\ :sub:`0`
45962306a36Sopenharmony_ci      - Cr\ :sub:`0`
46062306a36Sopenharmony_ci      - Y'\ :sub:`1`
46162306a36Sopenharmony_ci      - Cb\ :sub:`4`
46262306a36Sopenharmony_ci      - Y'\ :sub:`2`
46362306a36Sopenharmony_ci      - Cr\ :sub:`4`
46462306a36Sopenharmony_ci      - Y'\ :sub:`3`
46562306a36Sopenharmony_ci      - Y'\ :sub:`4`
46662306a36Sopenharmony_ci      - Y'\ :sub:`5`
46762306a36Sopenharmony_ci      - Y'\ :sub:`6`
46862306a36Sopenharmony_ci      - Y'\ :sub:`7`
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_ci.. raw:: latex
47162306a36Sopenharmony_ci
47262306a36Sopenharmony_ci    \normalsize
47362306a36Sopenharmony_ci
47462306a36Sopenharmony_ci.. note::
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_ci    Do not confuse ``V4L2_PIX_FMT_Y41P`` with
47762306a36Sopenharmony_ci    :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>`. Y41P is derived from
47862306a36Sopenharmony_ci    "YUV 4:1:1 **packed**", while YUV411P stands for "YUV 4:1:1 **planar**".
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci**Color Sample Location:**
48162306a36Sopenharmony_ciChroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
48262306a36Sopenharmony_cihorizontally.
483