162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. planar-yuv:
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci******************
662306a36Sopenharmony_ciPlanar YUV formats
762306a36Sopenharmony_ci******************
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciPlanar formats split luma and chroma data in separate memory regions. They
1062306a36Sopenharmony_ciexist in two variants:
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci- Semi-planar formats use two planes. The first plane is the luma plane and
1362306a36Sopenharmony_ci  stores the Y components. The second plane is the chroma plane and stores the
1462306a36Sopenharmony_ci  Cb and Cr components interleaved.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci- Fully planar formats use three planes to store the Y, Cb and Cr components
1762306a36Sopenharmony_ci  separately.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciWithin a plane, components are stored in pixel order, which may be linear or
2062306a36Sopenharmony_citiled. Padding may be supported at the end of the lines, and the line stride of
2162306a36Sopenharmony_cithe chroma planes may be constrained by the line stride of the luma plane.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciSome planar formats allow planes to be placed in independent memory locations.
2462306a36Sopenharmony_ciThey are identified by an 'M' suffix in their name (such as in
2562306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12M``). Those formats are intended to be used only in drivers
2662306a36Sopenharmony_ciand applications that support the multi-planar API, described in
2762306a36Sopenharmony_ci:ref:`planar-apis`. Unless explicitly documented as supporting non-contiguous
2862306a36Sopenharmony_ciplanes, formats require the planes to follow each other immediately in memory.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciSemi-Planar YUV Formats
3262306a36Sopenharmony_ci=======================
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciThese formats are commonly referred to as NV formats (NV12, NV16, ...). They
3562306a36Sopenharmony_ciuse two planes, and store the luma components in the first plane and the chroma
3662306a36Sopenharmony_cicomponents in the second plane. The Cb and Cr components are interleaved in the
3762306a36Sopenharmony_cichroma plane, with Cb and Cr always stored in pairs. The chroma order is
3862306a36Sopenharmony_ciexposed as different formats.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciFor memory contiguous formats, the number of padding pixels at the end of the
4162306a36Sopenharmony_cichroma lines is identical to the padding of the luma lines. Without horizontal
4262306a36Sopenharmony_cisubsampling, the chroma line stride (in bytes) is thus equal to twice the luma
4362306a36Sopenharmony_ciline stride. With horizontal subsampling by 2, the chroma line stride is equal
4462306a36Sopenharmony_cito the luma line stride. Vertical subsampling doesn't affect the line stride.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciFor non-contiguous formats, no constraints are enforced by the format on the
4762306a36Sopenharmony_cirelationship between the luma and chroma line padding and stride.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciAll components are stored with the same number of bits per component.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci.. raw:: latex
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci    \footnotesize
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci.. tabularcolumns:: |p{5.2cm}|p{1.0cm}|p{1.5cm}|p{1.9cm}|p{1.2cm}|p{1.8cm}|p{2.7cm}|
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci.. flat-table:: Overview of Semi-Planar YUV Formats
5862306a36Sopenharmony_ci    :header-rows:  1
5962306a36Sopenharmony_ci    :stub-columns: 0
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci    * - Identifier
6262306a36Sopenharmony_ci      - Code
6362306a36Sopenharmony_ci      - Bits per component
6462306a36Sopenharmony_ci      - Subsampling
6562306a36Sopenharmony_ci      - Chroma order [1]_
6662306a36Sopenharmony_ci      - Contiguous [2]_
6762306a36Sopenharmony_ci      - Tiling [3]_
6862306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV12
6962306a36Sopenharmony_ci      - 'NV12'
7062306a36Sopenharmony_ci      - 8
7162306a36Sopenharmony_ci      - 4:2:0
7262306a36Sopenharmony_ci      - Cb, Cr
7362306a36Sopenharmony_ci      - Yes
7462306a36Sopenharmony_ci      - Linear
7562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV21
7662306a36Sopenharmony_ci      - 'NV21'
7762306a36Sopenharmony_ci      - 8
7862306a36Sopenharmony_ci      - 4:2:0
7962306a36Sopenharmony_ci      - Cr, Cb
8062306a36Sopenharmony_ci      - Yes
8162306a36Sopenharmony_ci      - Linear
8262306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV12M
8362306a36Sopenharmony_ci      - 'NM12'
8462306a36Sopenharmony_ci      - 8
8562306a36Sopenharmony_ci      - 4:2:0
8662306a36Sopenharmony_ci      - Cb, Cr
8762306a36Sopenharmony_ci      - No
8862306a36Sopenharmony_ci      - Linear
8962306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV21M
9062306a36Sopenharmony_ci      - 'NM21'
9162306a36Sopenharmony_ci      - 8
9262306a36Sopenharmony_ci      - 4:2:0
9362306a36Sopenharmony_ci      - Cr, Cb
9462306a36Sopenharmony_ci      - No
9562306a36Sopenharmony_ci      - Linear
9662306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV12MT
9762306a36Sopenharmony_ci      - 'TM12'
9862306a36Sopenharmony_ci      - 8
9962306a36Sopenharmony_ci      - 4:2:0
10062306a36Sopenharmony_ci      - Cb, Cr
10162306a36Sopenharmony_ci      - No
10262306a36Sopenharmony_ci      - 64x32 tiles
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci        Horizontal Z order
10562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV12MT_16X16
10662306a36Sopenharmony_ci      - 'VM12'
10762306a36Sopenharmony_ci      - 8
10862306a36Sopenharmony_ci      - 4:2:2
10962306a36Sopenharmony_ci      - Cb, Cr
11062306a36Sopenharmony_ci      - No
11162306a36Sopenharmony_ci      - 16x16 tiles
11262306a36Sopenharmony_ci    * - V4L2_PIX_FMT_P010
11362306a36Sopenharmony_ci      - 'P010'
11462306a36Sopenharmony_ci      - 10
11562306a36Sopenharmony_ci      - 4:2:0
11662306a36Sopenharmony_ci      - Cb, Cr
11762306a36Sopenharmony_ci      - Yes
11862306a36Sopenharmony_ci      - Linear
11962306a36Sopenharmony_ci    * - V4L2_PIX_FMT_P010_4L4
12062306a36Sopenharmony_ci      - 'T010'
12162306a36Sopenharmony_ci      - 10
12262306a36Sopenharmony_ci      - 4:2:0
12362306a36Sopenharmony_ci      - Cb, Cr
12462306a36Sopenharmony_ci      - Yes
12562306a36Sopenharmony_ci      - 4x4 tiles
12662306a36Sopenharmony_ci    * - V4L2_PIX_FMT_P012
12762306a36Sopenharmony_ci      - 'P012'
12862306a36Sopenharmony_ci      - 12
12962306a36Sopenharmony_ci      - 4:2:0
13062306a36Sopenharmony_ci      - Cb, Cr
13162306a36Sopenharmony_ci      - Yes
13262306a36Sopenharmony_ci      - Linear
13362306a36Sopenharmony_ci    * - V4L2_PIX_FMT_P012M
13462306a36Sopenharmony_ci      - 'PM12'
13562306a36Sopenharmony_ci      - 12
13662306a36Sopenharmony_ci      - 4:2:0
13762306a36Sopenharmony_ci      - Cb, Cr
13862306a36Sopenharmony_ci      - No
13962306a36Sopenharmony_ci      - Linear
14062306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV15_4L4
14162306a36Sopenharmony_ci      - 'VT15'
14262306a36Sopenharmony_ci      - 15
14362306a36Sopenharmony_ci      - 4:2:0
14462306a36Sopenharmony_ci      - Cb, Cr
14562306a36Sopenharmony_ci      - Yes
14662306a36Sopenharmony_ci      - 4x4 tiles
14762306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV16
14862306a36Sopenharmony_ci      - 'NV16'
14962306a36Sopenharmony_ci      - 8
15062306a36Sopenharmony_ci      - 4:2:2
15162306a36Sopenharmony_ci      - Cb, Cr
15262306a36Sopenharmony_ci      - Yes
15362306a36Sopenharmony_ci      - Linear
15462306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV61
15562306a36Sopenharmony_ci      - 'NV61'
15662306a36Sopenharmony_ci      - 8
15762306a36Sopenharmony_ci      - 4:2:2
15862306a36Sopenharmony_ci      - Cr, Cb
15962306a36Sopenharmony_ci      - Yes
16062306a36Sopenharmony_ci      - Linear
16162306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV16M
16262306a36Sopenharmony_ci      - 'NM16'
16362306a36Sopenharmony_ci      - 8
16462306a36Sopenharmony_ci      - 4:2:2
16562306a36Sopenharmony_ci      - Cb, Cr
16662306a36Sopenharmony_ci      - No
16762306a36Sopenharmony_ci      - Linear
16862306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV61M
16962306a36Sopenharmony_ci      - 'NM61'
17062306a36Sopenharmony_ci      - 8
17162306a36Sopenharmony_ci      - 4:2:2
17262306a36Sopenharmony_ci      - Cr, Cb
17362306a36Sopenharmony_ci      - No
17462306a36Sopenharmony_ci      - Linear
17562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV24
17662306a36Sopenharmony_ci      - 'NV24'
17762306a36Sopenharmony_ci      - 8
17862306a36Sopenharmony_ci      - 4:4:4
17962306a36Sopenharmony_ci      - Cb, Cr
18062306a36Sopenharmony_ci      - Yes
18162306a36Sopenharmony_ci      - Linear
18262306a36Sopenharmony_ci    * - V4L2_PIX_FMT_NV42
18362306a36Sopenharmony_ci      - 'NV42'
18462306a36Sopenharmony_ci      - 8
18562306a36Sopenharmony_ci      - 4:4:4
18662306a36Sopenharmony_ci      - Cr, Cb
18762306a36Sopenharmony_ci      - Yes
18862306a36Sopenharmony_ci      - Linear
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci.. raw:: latex
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci    \normalsize
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci.. [1] Order of chroma samples in the second plane
19562306a36Sopenharmony_ci.. [2] Indicates if planes have to be contiguous in memory or can be
19662306a36Sopenharmony_ci       disjoint
19762306a36Sopenharmony_ci.. [3] Macroblock size in pixels
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci**Color Sample Location:**
20162306a36Sopenharmony_ciChroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
20262306a36Sopenharmony_cihorizontally.
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12:
20662306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV21:
20762306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12M:
20862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV21M:
20962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-P010:
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ciNV12, NV21, NV12M and NV21M
21262306a36Sopenharmony_ci---------------------------
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ciSemi-planar YUV 4:2:0 formats. The chroma plane is subsampled by 2 in each
21562306a36Sopenharmony_cidirection. Chroma lines contain half the number of pixels and the same number
21662306a36Sopenharmony_ciof bytes as luma lines, and the chroma plane contains half the number of lines
21762306a36Sopenharmony_ciof the luma plane.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci.. flat-table:: Sample 4x4 NV12 Image
22062306a36Sopenharmony_ci    :header-rows:  0
22162306a36Sopenharmony_ci    :stub-columns: 0
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci    * - start + 0:
22462306a36Sopenharmony_ci      - Y'\ :sub:`00`
22562306a36Sopenharmony_ci      - Y'\ :sub:`01`
22662306a36Sopenharmony_ci      - Y'\ :sub:`02`
22762306a36Sopenharmony_ci      - Y'\ :sub:`03`
22862306a36Sopenharmony_ci    * - start + 4:
22962306a36Sopenharmony_ci      - Y'\ :sub:`10`
23062306a36Sopenharmony_ci      - Y'\ :sub:`11`
23162306a36Sopenharmony_ci      - Y'\ :sub:`12`
23262306a36Sopenharmony_ci      - Y'\ :sub:`13`
23362306a36Sopenharmony_ci    * - start + 8:
23462306a36Sopenharmony_ci      - Y'\ :sub:`20`
23562306a36Sopenharmony_ci      - Y'\ :sub:`21`
23662306a36Sopenharmony_ci      - Y'\ :sub:`22`
23762306a36Sopenharmony_ci      - Y'\ :sub:`23`
23862306a36Sopenharmony_ci    * - start + 12:
23962306a36Sopenharmony_ci      - Y'\ :sub:`30`
24062306a36Sopenharmony_ci      - Y'\ :sub:`31`
24162306a36Sopenharmony_ci      - Y'\ :sub:`32`
24262306a36Sopenharmony_ci      - Y'\ :sub:`33`
24362306a36Sopenharmony_ci    * - start + 16:
24462306a36Sopenharmony_ci      - Cb\ :sub:`00`
24562306a36Sopenharmony_ci      - Cr\ :sub:`00`
24662306a36Sopenharmony_ci      - Cb\ :sub:`01`
24762306a36Sopenharmony_ci      - Cr\ :sub:`01`
24862306a36Sopenharmony_ci    * - start + 20:
24962306a36Sopenharmony_ci      - Cb\ :sub:`10`
25062306a36Sopenharmony_ci      - Cr\ :sub:`10`
25162306a36Sopenharmony_ci      - Cb\ :sub:`11`
25262306a36Sopenharmony_ci      - Cr\ :sub:`11`
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci.. flat-table:: Sample 4x4 NV12M Image
25562306a36Sopenharmony_ci    :header-rows:  0
25662306a36Sopenharmony_ci    :stub-columns: 0
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ci    * - start0 + 0:
25962306a36Sopenharmony_ci      - Y'\ :sub:`00`
26062306a36Sopenharmony_ci      - Y'\ :sub:`01`
26162306a36Sopenharmony_ci      - Y'\ :sub:`02`
26262306a36Sopenharmony_ci      - Y'\ :sub:`03`
26362306a36Sopenharmony_ci    * - start0 + 4:
26462306a36Sopenharmony_ci      - Y'\ :sub:`10`
26562306a36Sopenharmony_ci      - Y'\ :sub:`11`
26662306a36Sopenharmony_ci      - Y'\ :sub:`12`
26762306a36Sopenharmony_ci      - Y'\ :sub:`13`
26862306a36Sopenharmony_ci    * - start0 + 8:
26962306a36Sopenharmony_ci      - Y'\ :sub:`20`
27062306a36Sopenharmony_ci      - Y'\ :sub:`21`
27162306a36Sopenharmony_ci      - Y'\ :sub:`22`
27262306a36Sopenharmony_ci      - Y'\ :sub:`23`
27362306a36Sopenharmony_ci    * - start0 + 12:
27462306a36Sopenharmony_ci      - Y'\ :sub:`30`
27562306a36Sopenharmony_ci      - Y'\ :sub:`31`
27662306a36Sopenharmony_ci      - Y'\ :sub:`32`
27762306a36Sopenharmony_ci      - Y'\ :sub:`33`
27862306a36Sopenharmony_ci    * -
27962306a36Sopenharmony_ci    * - start1 + 0:
28062306a36Sopenharmony_ci      - Cb\ :sub:`00`
28162306a36Sopenharmony_ci      - Cr\ :sub:`00`
28262306a36Sopenharmony_ci      - Cb\ :sub:`01`
28362306a36Sopenharmony_ci      - Cr\ :sub:`01`
28462306a36Sopenharmony_ci    * - start1 + 4:
28562306a36Sopenharmony_ci      - Cb\ :sub:`10`
28662306a36Sopenharmony_ci      - Cr\ :sub:`10`
28762306a36Sopenharmony_ci      - Cb\ :sub:`11`
28862306a36Sopenharmony_ci      - Cr\ :sub:`11`
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12MT:
29262306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12MT-16X16:
29362306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12-4L4:
29462306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12-16L16:
29562306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12-32L32:
29662306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12M-8L128:
29762306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12-8L128:
29862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12M-10BE-8L128:
29962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV12-10BE-8L128:
30062306a36Sopenharmony_ci.. _V4L2-PIX-FMT-MM21:
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ciTiled NV12
30362306a36Sopenharmony_ci----------
30462306a36Sopenharmony_ci
30562306a36Sopenharmony_ciSemi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is
30662306a36Sopenharmony_cisubsampled by 2 in each direction. Chroma lines contain half the number of
30762306a36Sopenharmony_cipixels and the same number of bytes as luma lines, and the chroma plane
30862306a36Sopenharmony_cicontains half the number of lines of the luma plane. Each tile follows the
30962306a36Sopenharmony_ciprevious one linearly in memory (from left to right, top to bottom).
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12MT_16X16`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
31262306a36Sopenharmony_cipixels in 2D 16x16 tiles, and stores tiles linearly in memory.
31362306a36Sopenharmony_ciThe line stride and image height must be aligned to a multiple of 16.
31462306a36Sopenharmony_ciThe layouts of the luma and chroma planes are identical.
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12MT`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
31762306a36Sopenharmony_cipixels in 2D 64x32 tiles, and stores 2x2 groups of tiles in
31862306a36Sopenharmony_ciZ-order in memory, alternating Z and mirrored Z shapes horizontally.
31962306a36Sopenharmony_ciThe line stride must be a multiple of 128 pixels to ensure an
32062306a36Sopenharmony_ciinteger number of Z shapes. The image height must be a multiple of 32 pixels.
32162306a36Sopenharmony_ciIf the vertical resolution is an odd number of tiles, the last row of
32262306a36Sopenharmony_citiles is stored in linear order. The layouts of the luma and chroma
32362306a36Sopenharmony_ciplanes are identical.
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 tiles, and stores
32662306a36Sopenharmony_citiles linearly in memory. The line stride and image height must be
32762306a36Sopenharmony_cialigned to a multiple of 4. The layouts of the luma and chroma planes are
32862306a36Sopenharmony_ciidentical.
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12_16L16`` stores pixels in 16x16 tiles, and stores
33162306a36Sopenharmony_citiles linearly in memory. The line stride and image height must be
33262306a36Sopenharmony_cialigned to a multiple of 16. The layouts of the luma and chroma planes are
33362306a36Sopenharmony_ciidentical.
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12_32L32`` stores pixels in 32x32 tiles, and stores
33662306a36Sopenharmony_citiles linearly in memory. The line stride and image height must be
33762306a36Sopenharmony_cialigned to a multiple of 32. The layouts of the luma and chroma planes are
33862306a36Sopenharmony_ciidentical.
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12M_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
34162306a36Sopenharmony_cipixels in 2D 8x128 tiles, and stores tiles linearly in memory.
34262306a36Sopenharmony_ciThe image height must be aligned to a multiple of 128.
34362306a36Sopenharmony_ciThe layouts of the luma and chroma planes are identical.
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores
34662306a36Sopenharmony_citwo planes in one memory.
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
34962306a36Sopenharmony_ci10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
35062306a36Sopenharmony_cithe data is arranged in big endian order.
35162306a36Sopenharmony_ciThe image height must be aligned to a multiple of 128.
35262306a36Sopenharmony_ciThe layouts of the luma and chroma planes are identical.
35362306a36Sopenharmony_ciNote the tile size is 8bytes multiplied by 128 bytes,
35462306a36Sopenharmony_ciit means that the low bits and high bits of one pixel may be in different tiles.
35562306a36Sopenharmony_ciThe 10 bit pixels are packed, so 5 bytes contain 4 10-bit pixels layout like
35662306a36Sopenharmony_cithis (for luma):
35762306a36Sopenharmony_cibyte 0: Y0(bits 9-2)
35862306a36Sopenharmony_cibyte 1: Y0(bits 1-0) Y1(bits 9-4)
35962306a36Sopenharmony_cibyte 2: Y1(bits 3-0) Y2(bits 9-6)
36062306a36Sopenharmony_cibyte 3: Y2(bits 5-0) Y3(bits 9-8)
36162306a36Sopenharmony_cibyte 4: Y3(bits 7-0)
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores
36462306a36Sopenharmony_citwo planes in one memory.
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ci``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels
36762306a36Sopenharmony_ciin 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
36862306a36Sopenharmony_ciimage height must be aligned to a multiple of 32. The number of luma and chroma
36962306a36Sopenharmony_citiles are identical, even though the tile size differ. The image is formed of
37062306a36Sopenharmony_citwo non-contiguous planes.
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci.. _nv12mt:
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ci.. kernel-figure:: nv12mt.svg
37562306a36Sopenharmony_ci    :alt:    nv12mt.svg
37662306a36Sopenharmony_ci    :align:  center
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci    V4L2_PIX_FMT_NV12MT macroblock Z shape memory layout
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_ci.. _nv12mt_ex:
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci.. kernel-figure:: nv12mt_example.svg
38362306a36Sopenharmony_ci    :alt:    nv12mt_example.svg
38462306a36Sopenharmony_ci    :align:  center
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci    Example V4L2_PIX_FMT_NV12MT memory layout of tiles
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV15-4L4:
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ciTiled NV15
39162306a36Sopenharmony_ci----------
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ciSemi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling.
39462306a36Sopenharmony_ciAll components are packed without any padding between each other.
39562306a36Sopenharmony_ciAs a side-effect, each group of 4 components are stored over 5 bytes
39662306a36Sopenharmony_ci(YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes).
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV16:
39962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV61:
40062306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV16M:
40162306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV61M:
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ciNV16, NV61, NV16M and NV61M
40462306a36Sopenharmony_ci---------------------------
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ciSemi-planar YUV 4:2:2 formats. The chroma plane is subsampled by 2 in the
40762306a36Sopenharmony_cihorizontal direction. Chroma lines contain half the number of pixels and the
40862306a36Sopenharmony_cisame number of bytes as luma lines, and the chroma plane contains the same
40962306a36Sopenharmony_cinumber of lines as the luma plane.
41062306a36Sopenharmony_ci
41162306a36Sopenharmony_ci.. flat-table:: Sample 4x4 NV16 Image
41262306a36Sopenharmony_ci    :header-rows:  0
41362306a36Sopenharmony_ci    :stub-columns: 0
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_ci    * - start + 0:
41662306a36Sopenharmony_ci      - Y'\ :sub:`00`
41762306a36Sopenharmony_ci      - Y'\ :sub:`01`
41862306a36Sopenharmony_ci      - Y'\ :sub:`02`
41962306a36Sopenharmony_ci      - Y'\ :sub:`03`
42062306a36Sopenharmony_ci    * - start + 4:
42162306a36Sopenharmony_ci      - Y'\ :sub:`10`
42262306a36Sopenharmony_ci      - Y'\ :sub:`11`
42362306a36Sopenharmony_ci      - Y'\ :sub:`12`
42462306a36Sopenharmony_ci      - Y'\ :sub:`13`
42562306a36Sopenharmony_ci    * - start + 8:
42662306a36Sopenharmony_ci      - Y'\ :sub:`20`
42762306a36Sopenharmony_ci      - Y'\ :sub:`21`
42862306a36Sopenharmony_ci      - Y'\ :sub:`22`
42962306a36Sopenharmony_ci      - Y'\ :sub:`23`
43062306a36Sopenharmony_ci    * - start + 12:
43162306a36Sopenharmony_ci      - Y'\ :sub:`30`
43262306a36Sopenharmony_ci      - Y'\ :sub:`31`
43362306a36Sopenharmony_ci      - Y'\ :sub:`32`
43462306a36Sopenharmony_ci      - Y'\ :sub:`33`
43562306a36Sopenharmony_ci    * - start + 16:
43662306a36Sopenharmony_ci      - Cb\ :sub:`00`
43762306a36Sopenharmony_ci      - Cr\ :sub:`00`
43862306a36Sopenharmony_ci      - Cb\ :sub:`01`
43962306a36Sopenharmony_ci      - Cr\ :sub:`01`
44062306a36Sopenharmony_ci    * - start + 20:
44162306a36Sopenharmony_ci      - Cb\ :sub:`10`
44262306a36Sopenharmony_ci      - Cr\ :sub:`10`
44362306a36Sopenharmony_ci      - Cb\ :sub:`11`
44462306a36Sopenharmony_ci      - Cr\ :sub:`11`
44562306a36Sopenharmony_ci    * - start + 24:
44662306a36Sopenharmony_ci      - Cb\ :sub:`20`
44762306a36Sopenharmony_ci      - Cr\ :sub:`20`
44862306a36Sopenharmony_ci      - Cb\ :sub:`21`
44962306a36Sopenharmony_ci      - Cr\ :sub:`21`
45062306a36Sopenharmony_ci    * - start + 28:
45162306a36Sopenharmony_ci      - Cb\ :sub:`30`
45262306a36Sopenharmony_ci      - Cr\ :sub:`30`
45362306a36Sopenharmony_ci      - Cb\ :sub:`31`
45462306a36Sopenharmony_ci      - Cr\ :sub:`31`
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci.. flat-table:: Sample 4x4 NV16M Image
45762306a36Sopenharmony_ci    :header-rows:  0
45862306a36Sopenharmony_ci    :stub-columns: 0
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci    * - start0 + 0:
46162306a36Sopenharmony_ci      - Y'\ :sub:`00`
46262306a36Sopenharmony_ci      - Y'\ :sub:`01`
46362306a36Sopenharmony_ci      - Y'\ :sub:`02`
46462306a36Sopenharmony_ci      - Y'\ :sub:`03`
46562306a36Sopenharmony_ci    * - start0 + 4:
46662306a36Sopenharmony_ci      - Y'\ :sub:`10`
46762306a36Sopenharmony_ci      - Y'\ :sub:`11`
46862306a36Sopenharmony_ci      - Y'\ :sub:`12`
46962306a36Sopenharmony_ci      - Y'\ :sub:`13`
47062306a36Sopenharmony_ci    * - start0 + 8:
47162306a36Sopenharmony_ci      - Y'\ :sub:`20`
47262306a36Sopenharmony_ci      - Y'\ :sub:`21`
47362306a36Sopenharmony_ci      - Y'\ :sub:`22`
47462306a36Sopenharmony_ci      - Y'\ :sub:`23`
47562306a36Sopenharmony_ci    * - start0 + 12:
47662306a36Sopenharmony_ci      - Y'\ :sub:`30`
47762306a36Sopenharmony_ci      - Y'\ :sub:`31`
47862306a36Sopenharmony_ci      - Y'\ :sub:`32`
47962306a36Sopenharmony_ci      - Y'\ :sub:`33`
48062306a36Sopenharmony_ci    * -
48162306a36Sopenharmony_ci    * - start1 + 0:
48262306a36Sopenharmony_ci      - Cb\ :sub:`00`
48362306a36Sopenharmony_ci      - Cr\ :sub:`00`
48462306a36Sopenharmony_ci      - Cb\ :sub:`02`
48562306a36Sopenharmony_ci      - Cr\ :sub:`02`
48662306a36Sopenharmony_ci    * - start1 + 4:
48762306a36Sopenharmony_ci      - Cb\ :sub:`10`
48862306a36Sopenharmony_ci      - Cr\ :sub:`10`
48962306a36Sopenharmony_ci      - Cb\ :sub:`12`
49062306a36Sopenharmony_ci      - Cr\ :sub:`12`
49162306a36Sopenharmony_ci    * - start1 + 8:
49262306a36Sopenharmony_ci      - Cb\ :sub:`20`
49362306a36Sopenharmony_ci      - Cr\ :sub:`20`
49462306a36Sopenharmony_ci      - Cb\ :sub:`22`
49562306a36Sopenharmony_ci      - Cr\ :sub:`22`
49662306a36Sopenharmony_ci    * - start1 + 12:
49762306a36Sopenharmony_ci      - Cb\ :sub:`30`
49862306a36Sopenharmony_ci      - Cr\ :sub:`30`
49962306a36Sopenharmony_ci      - Cb\ :sub:`32`
50062306a36Sopenharmony_ci      - Cr\ :sub:`32`
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV24:
50462306a36Sopenharmony_ci.. _V4L2-PIX-FMT-NV42:
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ciNV24 and NV42
50762306a36Sopenharmony_ci-------------
50862306a36Sopenharmony_ci
50962306a36Sopenharmony_ciSemi-planar YUV 4:4:4 formats. The chroma plane is not subsampled.
51062306a36Sopenharmony_ciChroma lines contain the same number of pixels and twice the
51162306a36Sopenharmony_cinumber of bytes as luma lines, and the chroma plane contains the same
51262306a36Sopenharmony_cinumber of lines as the luma plane.
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci.. flat-table:: Sample 4x4 NV24 Image
51562306a36Sopenharmony_ci    :header-rows:  0
51662306a36Sopenharmony_ci    :stub-columns: 0
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci    * - start + 0:
51962306a36Sopenharmony_ci      - Y'\ :sub:`00`
52062306a36Sopenharmony_ci      - Y'\ :sub:`01`
52162306a36Sopenharmony_ci      - Y'\ :sub:`02`
52262306a36Sopenharmony_ci      - Y'\ :sub:`03`
52362306a36Sopenharmony_ci    * - start + 4:
52462306a36Sopenharmony_ci      - Y'\ :sub:`10`
52562306a36Sopenharmony_ci      - Y'\ :sub:`11`
52662306a36Sopenharmony_ci      - Y'\ :sub:`12`
52762306a36Sopenharmony_ci      - Y'\ :sub:`13`
52862306a36Sopenharmony_ci    * - start + 8:
52962306a36Sopenharmony_ci      - Y'\ :sub:`20`
53062306a36Sopenharmony_ci      - Y'\ :sub:`21`
53162306a36Sopenharmony_ci      - Y'\ :sub:`22`
53262306a36Sopenharmony_ci      - Y'\ :sub:`23`
53362306a36Sopenharmony_ci    * - start + 12:
53462306a36Sopenharmony_ci      - Y'\ :sub:`30`
53562306a36Sopenharmony_ci      - Y'\ :sub:`31`
53662306a36Sopenharmony_ci      - Y'\ :sub:`32`
53762306a36Sopenharmony_ci      - Y'\ :sub:`33`
53862306a36Sopenharmony_ci    * - start + 16:
53962306a36Sopenharmony_ci      - Cb\ :sub:`00`
54062306a36Sopenharmony_ci      - Cr\ :sub:`00`
54162306a36Sopenharmony_ci      - Cb\ :sub:`01`
54262306a36Sopenharmony_ci      - Cr\ :sub:`01`
54362306a36Sopenharmony_ci      - Cb\ :sub:`02`
54462306a36Sopenharmony_ci      - Cr\ :sub:`02`
54562306a36Sopenharmony_ci      - Cb\ :sub:`03`
54662306a36Sopenharmony_ci      - Cr\ :sub:`03`
54762306a36Sopenharmony_ci    * - start + 24:
54862306a36Sopenharmony_ci      - Cb\ :sub:`10`
54962306a36Sopenharmony_ci      - Cr\ :sub:`10`
55062306a36Sopenharmony_ci      - Cb\ :sub:`11`
55162306a36Sopenharmony_ci      - Cr\ :sub:`11`
55262306a36Sopenharmony_ci      - Cb\ :sub:`12`
55362306a36Sopenharmony_ci      - Cr\ :sub:`12`
55462306a36Sopenharmony_ci      - Cb\ :sub:`13`
55562306a36Sopenharmony_ci      - Cr\ :sub:`13`
55662306a36Sopenharmony_ci    * - start + 32:
55762306a36Sopenharmony_ci      - Cb\ :sub:`20`
55862306a36Sopenharmony_ci      - Cr\ :sub:`20`
55962306a36Sopenharmony_ci      - Cb\ :sub:`21`
56062306a36Sopenharmony_ci      - Cr\ :sub:`21`
56162306a36Sopenharmony_ci      - Cb\ :sub:`22`
56262306a36Sopenharmony_ci      - Cr\ :sub:`22`
56362306a36Sopenharmony_ci      - Cb\ :sub:`23`
56462306a36Sopenharmony_ci      - Cr\ :sub:`23`
56562306a36Sopenharmony_ci    * - start + 40:
56662306a36Sopenharmony_ci      - Cb\ :sub:`30`
56762306a36Sopenharmony_ci      - Cr\ :sub:`30`
56862306a36Sopenharmony_ci      - Cb\ :sub:`31`
56962306a36Sopenharmony_ci      - Cr\ :sub:`31`
57062306a36Sopenharmony_ci      - Cb\ :sub:`32`
57162306a36Sopenharmony_ci      - Cr\ :sub:`32`
57262306a36Sopenharmony_ci      - Cb\ :sub:`33`
57362306a36Sopenharmony_ci      - Cr\ :sub:`33`
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_ci.. _V4L2_PIX_FMT_P010:
57662306a36Sopenharmony_ci.. _V4L2-PIX-FMT-P010-4L4:
57762306a36Sopenharmony_ci
57862306a36Sopenharmony_ciP010 and tiled P010
57962306a36Sopenharmony_ci-------------------
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ciP010 is like NV12 with 10 bits per component, expanded to 16 bits.
58262306a36Sopenharmony_ciData in the 10 high bits, zeros in the 6 low bits, arranged in little endian order.
58362306a36Sopenharmony_ci
58462306a36Sopenharmony_ci.. flat-table:: Sample 4x4 P010 Image
58562306a36Sopenharmony_ci    :header-rows:  0
58662306a36Sopenharmony_ci    :stub-columns: 0
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_ci    * - start + 0:
58962306a36Sopenharmony_ci      - Y'\ :sub:`00`
59062306a36Sopenharmony_ci      - Y'\ :sub:`01`
59162306a36Sopenharmony_ci      - Y'\ :sub:`02`
59262306a36Sopenharmony_ci      - Y'\ :sub:`03`
59362306a36Sopenharmony_ci    * - start + 8:
59462306a36Sopenharmony_ci      - Y'\ :sub:`10`
59562306a36Sopenharmony_ci      - Y'\ :sub:`11`
59662306a36Sopenharmony_ci      - Y'\ :sub:`12`
59762306a36Sopenharmony_ci      - Y'\ :sub:`13`
59862306a36Sopenharmony_ci    * - start + 16:
59962306a36Sopenharmony_ci      - Y'\ :sub:`20`
60062306a36Sopenharmony_ci      - Y'\ :sub:`21`
60162306a36Sopenharmony_ci      - Y'\ :sub:`22`
60262306a36Sopenharmony_ci      - Y'\ :sub:`23`
60362306a36Sopenharmony_ci    * - start + 24:
60462306a36Sopenharmony_ci      - Y'\ :sub:`30`
60562306a36Sopenharmony_ci      - Y'\ :sub:`31`
60662306a36Sopenharmony_ci      - Y'\ :sub:`32`
60762306a36Sopenharmony_ci      - Y'\ :sub:`33`
60862306a36Sopenharmony_ci    * - start + 32:
60962306a36Sopenharmony_ci      - Cb\ :sub:`00`
61062306a36Sopenharmony_ci      - Cr\ :sub:`00`
61162306a36Sopenharmony_ci      - Cb\ :sub:`01`
61262306a36Sopenharmony_ci      - Cr\ :sub:`01`
61362306a36Sopenharmony_ci    * - start + 40:
61462306a36Sopenharmony_ci      - Cb\ :sub:`10`
61562306a36Sopenharmony_ci      - Cr\ :sub:`10`
61662306a36Sopenharmony_ci      - Cb\ :sub:`11`
61762306a36Sopenharmony_ci      - Cr\ :sub:`11`
61862306a36Sopenharmony_ci
61962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-P012:
62062306a36Sopenharmony_ci.. _V4L2-PIX-FMT-P012M:
62162306a36Sopenharmony_ci
62262306a36Sopenharmony_ciP012 and P012M
62362306a36Sopenharmony_ci--------------
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_ciP012 is like NV12 with 12 bits per component, expanded to 16 bits.
62662306a36Sopenharmony_ciData in the 12 high bits, zeros in the 4 low bits, arranged in little endian order.
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ci.. flat-table:: Sample 4x4 P012 Image
62962306a36Sopenharmony_ci    :header-rows:  0
63062306a36Sopenharmony_ci    :stub-columns: 0
63162306a36Sopenharmony_ci
63262306a36Sopenharmony_ci    * - start + 0:
63362306a36Sopenharmony_ci      - Y'\ :sub:`00`
63462306a36Sopenharmony_ci      - Y'\ :sub:`01`
63562306a36Sopenharmony_ci      - Y'\ :sub:`02`
63662306a36Sopenharmony_ci      - Y'\ :sub:`03`
63762306a36Sopenharmony_ci    * - start + 8:
63862306a36Sopenharmony_ci      - Y'\ :sub:`10`
63962306a36Sopenharmony_ci      - Y'\ :sub:`11`
64062306a36Sopenharmony_ci      - Y'\ :sub:`12`
64162306a36Sopenharmony_ci      - Y'\ :sub:`13`
64262306a36Sopenharmony_ci    * - start + 16:
64362306a36Sopenharmony_ci      - Y'\ :sub:`20`
64462306a36Sopenharmony_ci      - Y'\ :sub:`21`
64562306a36Sopenharmony_ci      - Y'\ :sub:`22`
64662306a36Sopenharmony_ci      - Y'\ :sub:`23`
64762306a36Sopenharmony_ci    * - start + 24:
64862306a36Sopenharmony_ci      - Y'\ :sub:`30`
64962306a36Sopenharmony_ci      - Y'\ :sub:`31`
65062306a36Sopenharmony_ci      - Y'\ :sub:`32`
65162306a36Sopenharmony_ci      - Y'\ :sub:`33`
65262306a36Sopenharmony_ci    * - start + 32:
65362306a36Sopenharmony_ci      - Cb\ :sub:`00`
65462306a36Sopenharmony_ci      - Cr\ :sub:`00`
65562306a36Sopenharmony_ci      - Cb\ :sub:`01`
65662306a36Sopenharmony_ci      - Cr\ :sub:`01`
65762306a36Sopenharmony_ci    * - start + 40:
65862306a36Sopenharmony_ci      - Cb\ :sub:`10`
65962306a36Sopenharmony_ci      - Cr\ :sub:`10`
66062306a36Sopenharmony_ci      - Cb\ :sub:`11`
66162306a36Sopenharmony_ci      - Cr\ :sub:`11`
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_ci.. flat-table:: Sample 4x4 P012M Image
66462306a36Sopenharmony_ci    :header-rows:  0
66562306a36Sopenharmony_ci    :stub-columns: 0
66662306a36Sopenharmony_ci
66762306a36Sopenharmony_ci    * - start0 + 0:
66862306a36Sopenharmony_ci      - Y'\ :sub:`00`
66962306a36Sopenharmony_ci      - Y'\ :sub:`01`
67062306a36Sopenharmony_ci      - Y'\ :sub:`02`
67162306a36Sopenharmony_ci      - Y'\ :sub:`03`
67262306a36Sopenharmony_ci    * - start0 + 8:
67362306a36Sopenharmony_ci      - Y'\ :sub:`10`
67462306a36Sopenharmony_ci      - Y'\ :sub:`11`
67562306a36Sopenharmony_ci      - Y'\ :sub:`12`
67662306a36Sopenharmony_ci      - Y'\ :sub:`13`
67762306a36Sopenharmony_ci    * - start0 + 16:
67862306a36Sopenharmony_ci      - Y'\ :sub:`20`
67962306a36Sopenharmony_ci      - Y'\ :sub:`21`
68062306a36Sopenharmony_ci      - Y'\ :sub:`22`
68162306a36Sopenharmony_ci      - Y'\ :sub:`23`
68262306a36Sopenharmony_ci    * - start0 + 24:
68362306a36Sopenharmony_ci      - Y'\ :sub:`30`
68462306a36Sopenharmony_ci      - Y'\ :sub:`31`
68562306a36Sopenharmony_ci      - Y'\ :sub:`32`
68662306a36Sopenharmony_ci      - Y'\ :sub:`33`
68762306a36Sopenharmony_ci    * -
68862306a36Sopenharmony_ci    * - start1 + 0:
68962306a36Sopenharmony_ci      - Cb\ :sub:`00`
69062306a36Sopenharmony_ci      - Cr\ :sub:`00`
69162306a36Sopenharmony_ci      - Cb\ :sub:`01`
69262306a36Sopenharmony_ci      - Cr\ :sub:`01`
69362306a36Sopenharmony_ci    * - start1 + 8:
69462306a36Sopenharmony_ci      - Cb\ :sub:`10`
69562306a36Sopenharmony_ci      - Cr\ :sub:`10`
69662306a36Sopenharmony_ci      - Cb\ :sub:`11`
69762306a36Sopenharmony_ci      - Cr\ :sub:`11`
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ci
70062306a36Sopenharmony_ciFully Planar YUV Formats
70162306a36Sopenharmony_ci========================
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_ciThese formats store the Y, Cb and Cr components in three separate planes. The
70462306a36Sopenharmony_ciluma plane comes first, and the order of the two chroma planes varies between
70562306a36Sopenharmony_ciformats. The two chroma planes always use the same subsampling.
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ciFor memory contiguous formats, the number of padding pixels at the end of the
70862306a36Sopenharmony_cichroma lines is identical to the padding of the luma lines. The chroma line
70962306a36Sopenharmony_cistride (in bytes) is thus equal to the luma line stride divided by the
71062306a36Sopenharmony_cihorizontal subsampling factor. Vertical subsampling doesn't affect the line
71162306a36Sopenharmony_cistride.
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ciFor non-contiguous formats, no constraints are enforced by the format on the
71462306a36Sopenharmony_cirelationship between the luma and chroma line padding and stride.
71562306a36Sopenharmony_ci
71662306a36Sopenharmony_ciAll components are stored with the same number of bits per component.
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ci``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 tiles, and stores tiles linearly
71962306a36Sopenharmony_ciin memory. The line stride must be aligned to multiple of 8 and image height to
72062306a36Sopenharmony_cia multiple of 4. The layouts of the luma and chroma planes are identical.
72162306a36Sopenharmony_ci
72262306a36Sopenharmony_ci.. raw:: latex
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci    \small
72562306a36Sopenharmony_ci
72662306a36Sopenharmony_ci.. tabularcolumns:: |p{5.0cm}|p{1.1cm}|p{1.5cm}|p{2.2cm}|p{1.2cm}|p{3.7cm}|
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci.. flat-table:: Overview of Fully Planar YUV Formats
72962306a36Sopenharmony_ci    :header-rows:  1
73062306a36Sopenharmony_ci    :stub-columns: 0
73162306a36Sopenharmony_ci
73262306a36Sopenharmony_ci    * - Identifier
73362306a36Sopenharmony_ci      - Code
73462306a36Sopenharmony_ci      - Bits per component
73562306a36Sopenharmony_ci      - Subsampling
73662306a36Sopenharmony_ci      - Planes order [4]_
73762306a36Sopenharmony_ci      - Contiguous [5]_
73862306a36Sopenharmony_ci
73962306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV410
74062306a36Sopenharmony_ci      - 'YUV9'
74162306a36Sopenharmony_ci      - 8
74262306a36Sopenharmony_ci      - 4:1:0
74362306a36Sopenharmony_ci      - Y, Cb, Cr
74462306a36Sopenharmony_ci      - Yes
74562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YVU410
74662306a36Sopenharmony_ci      - 'YVU9'
74762306a36Sopenharmony_ci      - 8
74862306a36Sopenharmony_ci      - 4:1:0
74962306a36Sopenharmony_ci      - Y, Cr, Cb
75062306a36Sopenharmony_ci      - Yes
75162306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV411P
75262306a36Sopenharmony_ci      - '411P'
75362306a36Sopenharmony_ci      - 8
75462306a36Sopenharmony_ci      - 4:1:1
75562306a36Sopenharmony_ci      - Y, Cb, Cr
75662306a36Sopenharmony_ci      - Yes
75762306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV420M
75862306a36Sopenharmony_ci      - 'YM12'
75962306a36Sopenharmony_ci      - 8
76062306a36Sopenharmony_ci      - 4:2:0
76162306a36Sopenharmony_ci      - Y, Cb, Cr
76262306a36Sopenharmony_ci      - No
76362306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YVU420M
76462306a36Sopenharmony_ci      - 'YM21'
76562306a36Sopenharmony_ci      - 8
76662306a36Sopenharmony_ci      - 4:2:0
76762306a36Sopenharmony_ci      - Y, Cr, Cb
76862306a36Sopenharmony_ci      - No
76962306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV420
77062306a36Sopenharmony_ci      - 'YU12'
77162306a36Sopenharmony_ci      - 8
77262306a36Sopenharmony_ci      - 4:2:0
77362306a36Sopenharmony_ci      - Y, Cb, Cr
77462306a36Sopenharmony_ci      - Yes
77562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YVU420
77662306a36Sopenharmony_ci      - 'YV12'
77762306a36Sopenharmony_ci      - 8
77862306a36Sopenharmony_ci      - 4:2:0
77962306a36Sopenharmony_ci      - Y, Cr, Cb
78062306a36Sopenharmony_ci      - Yes
78162306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV422P
78262306a36Sopenharmony_ci      - '422P'
78362306a36Sopenharmony_ci      - 8
78462306a36Sopenharmony_ci      - 4:2:2
78562306a36Sopenharmony_ci      - Y, Cb, Cr
78662306a36Sopenharmony_ci      - Yes
78762306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV422M
78862306a36Sopenharmony_ci      - 'YM16'
78962306a36Sopenharmony_ci      - 8
79062306a36Sopenharmony_ci      - 4:2:2
79162306a36Sopenharmony_ci      - Y, Cb, Cr
79262306a36Sopenharmony_ci      - No
79362306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YVU422M
79462306a36Sopenharmony_ci      - 'YM61'
79562306a36Sopenharmony_ci      - 8
79662306a36Sopenharmony_ci      - 4:2:2
79762306a36Sopenharmony_ci      - Y, Cr, Cb
79862306a36Sopenharmony_ci      - No
79962306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YUV444M
80062306a36Sopenharmony_ci      - 'YM24'
80162306a36Sopenharmony_ci      - 8
80262306a36Sopenharmony_ci      - 4:4:4
80362306a36Sopenharmony_ci      - Y, Cb, Cr
80462306a36Sopenharmony_ci      - No
80562306a36Sopenharmony_ci    * - V4L2_PIX_FMT_YVU444M
80662306a36Sopenharmony_ci      - 'YM42'
80762306a36Sopenharmony_ci      - 8
80862306a36Sopenharmony_ci      - 4:4:4
80962306a36Sopenharmony_ci      - Y, Cr, Cb
81062306a36Sopenharmony_ci      - No
81162306a36Sopenharmony_ci
81262306a36Sopenharmony_ci.. raw:: latex
81362306a36Sopenharmony_ci
81462306a36Sopenharmony_ci    \normalsize
81562306a36Sopenharmony_ci
81662306a36Sopenharmony_ci.. [4] Order of luma and chroma planes
81762306a36Sopenharmony_ci.. [5] Indicates if planes have to be contiguous in memory or can be
81862306a36Sopenharmony_ci       disjoint
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_ci
82162306a36Sopenharmony_ci**Color Sample Location:**
82262306a36Sopenharmony_ciChroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
82362306a36Sopenharmony_cihorizontally.
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV410:
82662306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YVU410:
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ciYUV410 and YVU410
82962306a36Sopenharmony_ci-----------------
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_ciPlanar YUV 4:1:0 formats. The chroma planes are subsampled by 4 in each
83262306a36Sopenharmony_cidirection. Chroma lines contain a quarter of the number of pixels and bytes of
83362306a36Sopenharmony_cithe luma lines, and the chroma planes contain a quarter of the number of lines
83462306a36Sopenharmony_ciof the luma plane.
83562306a36Sopenharmony_ci
83662306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV410 Image
83762306a36Sopenharmony_ci    :header-rows:  0
83862306a36Sopenharmony_ci    :stub-columns: 0
83962306a36Sopenharmony_ci
84062306a36Sopenharmony_ci    * - start + 0:
84162306a36Sopenharmony_ci      - Y'\ :sub:`00`
84262306a36Sopenharmony_ci      - Y'\ :sub:`01`
84362306a36Sopenharmony_ci      - Y'\ :sub:`02`
84462306a36Sopenharmony_ci      - Y'\ :sub:`03`
84562306a36Sopenharmony_ci    * - start + 4:
84662306a36Sopenharmony_ci      - Y'\ :sub:`10`
84762306a36Sopenharmony_ci      - Y'\ :sub:`11`
84862306a36Sopenharmony_ci      - Y'\ :sub:`12`
84962306a36Sopenharmony_ci      - Y'\ :sub:`13`
85062306a36Sopenharmony_ci    * - start + 8:
85162306a36Sopenharmony_ci      - Y'\ :sub:`20`
85262306a36Sopenharmony_ci      - Y'\ :sub:`21`
85362306a36Sopenharmony_ci      - Y'\ :sub:`22`
85462306a36Sopenharmony_ci      - Y'\ :sub:`23`
85562306a36Sopenharmony_ci    * - start + 12:
85662306a36Sopenharmony_ci      - Y'\ :sub:`30`
85762306a36Sopenharmony_ci      - Y'\ :sub:`31`
85862306a36Sopenharmony_ci      - Y'\ :sub:`32`
85962306a36Sopenharmony_ci      - Y'\ :sub:`33`
86062306a36Sopenharmony_ci    * - start + 16:
86162306a36Sopenharmony_ci      - Cr\ :sub:`00`
86262306a36Sopenharmony_ci    * - start + 17:
86362306a36Sopenharmony_ci      - Cb\ :sub:`00`
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci
86662306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV411P:
86762306a36Sopenharmony_ci
86862306a36Sopenharmony_ciYUV411P
86962306a36Sopenharmony_ci-------
87062306a36Sopenharmony_ci
87162306a36Sopenharmony_ciPlanar YUV 4:1:1 formats. The chroma planes are subsampled by 4 in the
87262306a36Sopenharmony_cihorizontal direction. Chroma lines contain a quarter of the number of pixels
87362306a36Sopenharmony_ciand bytes of the luma lines, and the chroma planes contain the same number of
87462306a36Sopenharmony_cilines as the luma plane.
87562306a36Sopenharmony_ci
87662306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV411P Image
87762306a36Sopenharmony_ci    :header-rows:  0
87862306a36Sopenharmony_ci    :stub-columns: 0
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_ci    * - start + 0:
88162306a36Sopenharmony_ci      - Y'\ :sub:`00`
88262306a36Sopenharmony_ci      - Y'\ :sub:`01`
88362306a36Sopenharmony_ci      - Y'\ :sub:`02`
88462306a36Sopenharmony_ci      - Y'\ :sub:`03`
88562306a36Sopenharmony_ci    * - start + 4:
88662306a36Sopenharmony_ci      - Y'\ :sub:`10`
88762306a36Sopenharmony_ci      - Y'\ :sub:`11`
88862306a36Sopenharmony_ci      - Y'\ :sub:`12`
88962306a36Sopenharmony_ci      - Y'\ :sub:`13`
89062306a36Sopenharmony_ci    * - start + 8:
89162306a36Sopenharmony_ci      - Y'\ :sub:`20`
89262306a36Sopenharmony_ci      - Y'\ :sub:`21`
89362306a36Sopenharmony_ci      - Y'\ :sub:`22`
89462306a36Sopenharmony_ci      - Y'\ :sub:`23`
89562306a36Sopenharmony_ci    * - start + 12:
89662306a36Sopenharmony_ci      - Y'\ :sub:`30`
89762306a36Sopenharmony_ci      - Y'\ :sub:`31`
89862306a36Sopenharmony_ci      - Y'\ :sub:`32`
89962306a36Sopenharmony_ci      - Y'\ :sub:`33`
90062306a36Sopenharmony_ci    * - start + 16:
90162306a36Sopenharmony_ci      - Cb\ :sub:`00`
90262306a36Sopenharmony_ci    * - start + 17:
90362306a36Sopenharmony_ci      - Cb\ :sub:`10`
90462306a36Sopenharmony_ci    * - start + 18:
90562306a36Sopenharmony_ci      - Cb\ :sub:`20`
90662306a36Sopenharmony_ci    * - start + 19:
90762306a36Sopenharmony_ci      - Cb\ :sub:`30`
90862306a36Sopenharmony_ci    * - start + 20:
90962306a36Sopenharmony_ci      - Cr\ :sub:`00`
91062306a36Sopenharmony_ci    * - start + 21:
91162306a36Sopenharmony_ci      - Cr\ :sub:`10`
91262306a36Sopenharmony_ci    * - start + 22:
91362306a36Sopenharmony_ci      - Cr\ :sub:`20`
91462306a36Sopenharmony_ci    * - start + 23:
91562306a36Sopenharmony_ci      - Cr\ :sub:`30`
91662306a36Sopenharmony_ci
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV420:
91962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YVU420:
92062306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV420M:
92162306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YVU420M:
92262306a36Sopenharmony_ci
92362306a36Sopenharmony_ciYUV420, YVU420, YUV420M and YVU420M
92462306a36Sopenharmony_ci-----------------------------------
92562306a36Sopenharmony_ci
92662306a36Sopenharmony_ciPlanar YUV 4:2:0 formats. The chroma planes are subsampled by 2 in each
92762306a36Sopenharmony_cidirection. Chroma lines contain half of the number of pixels and bytes of the
92862306a36Sopenharmony_ciluma lines, and the chroma planes contain half of the number of lines of the
92962306a36Sopenharmony_ciluma plane.
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV420 Image
93262306a36Sopenharmony_ci    :header-rows:  0
93362306a36Sopenharmony_ci    :stub-columns: 0
93462306a36Sopenharmony_ci
93562306a36Sopenharmony_ci    * - start + 0:
93662306a36Sopenharmony_ci      - Y'\ :sub:`00`
93762306a36Sopenharmony_ci      - Y'\ :sub:`01`
93862306a36Sopenharmony_ci      - Y'\ :sub:`02`
93962306a36Sopenharmony_ci      - Y'\ :sub:`03`
94062306a36Sopenharmony_ci    * - start + 4:
94162306a36Sopenharmony_ci      - Y'\ :sub:`10`
94262306a36Sopenharmony_ci      - Y'\ :sub:`11`
94362306a36Sopenharmony_ci      - Y'\ :sub:`12`
94462306a36Sopenharmony_ci      - Y'\ :sub:`13`
94562306a36Sopenharmony_ci    * - start + 8:
94662306a36Sopenharmony_ci      - Y'\ :sub:`20`
94762306a36Sopenharmony_ci      - Y'\ :sub:`21`
94862306a36Sopenharmony_ci      - Y'\ :sub:`22`
94962306a36Sopenharmony_ci      - Y'\ :sub:`23`
95062306a36Sopenharmony_ci    * - start + 12:
95162306a36Sopenharmony_ci      - Y'\ :sub:`30`
95262306a36Sopenharmony_ci      - Y'\ :sub:`31`
95362306a36Sopenharmony_ci      - Y'\ :sub:`32`
95462306a36Sopenharmony_ci      - Y'\ :sub:`33`
95562306a36Sopenharmony_ci    * - start + 16:
95662306a36Sopenharmony_ci      - Cr\ :sub:`00`
95762306a36Sopenharmony_ci      - Cr\ :sub:`01`
95862306a36Sopenharmony_ci    * - start + 18:
95962306a36Sopenharmony_ci      - Cr\ :sub:`10`
96062306a36Sopenharmony_ci      - Cr\ :sub:`11`
96162306a36Sopenharmony_ci    * - start + 20:
96262306a36Sopenharmony_ci      - Cb\ :sub:`00`
96362306a36Sopenharmony_ci      - Cb\ :sub:`01`
96462306a36Sopenharmony_ci    * - start + 22:
96562306a36Sopenharmony_ci      - Cb\ :sub:`10`
96662306a36Sopenharmony_ci      - Cb\ :sub:`11`
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV420M Image
96962306a36Sopenharmony_ci    :header-rows:  0
97062306a36Sopenharmony_ci    :stub-columns: 0
97162306a36Sopenharmony_ci
97262306a36Sopenharmony_ci    * - start0 + 0:
97362306a36Sopenharmony_ci      - Y'\ :sub:`00`
97462306a36Sopenharmony_ci      - Y'\ :sub:`01`
97562306a36Sopenharmony_ci      - Y'\ :sub:`02`
97662306a36Sopenharmony_ci      - Y'\ :sub:`03`
97762306a36Sopenharmony_ci    * - start0 + 4:
97862306a36Sopenharmony_ci      - Y'\ :sub:`10`
97962306a36Sopenharmony_ci      - Y'\ :sub:`11`
98062306a36Sopenharmony_ci      - Y'\ :sub:`12`
98162306a36Sopenharmony_ci      - Y'\ :sub:`13`
98262306a36Sopenharmony_ci    * - start0 + 8:
98362306a36Sopenharmony_ci      - Y'\ :sub:`20`
98462306a36Sopenharmony_ci      - Y'\ :sub:`21`
98562306a36Sopenharmony_ci      - Y'\ :sub:`22`
98662306a36Sopenharmony_ci      - Y'\ :sub:`23`
98762306a36Sopenharmony_ci    * - start0 + 12:
98862306a36Sopenharmony_ci      - Y'\ :sub:`30`
98962306a36Sopenharmony_ci      - Y'\ :sub:`31`
99062306a36Sopenharmony_ci      - Y'\ :sub:`32`
99162306a36Sopenharmony_ci      - Y'\ :sub:`33`
99262306a36Sopenharmony_ci    * -
99362306a36Sopenharmony_ci    * - start1 + 0:
99462306a36Sopenharmony_ci      - Cb\ :sub:`00`
99562306a36Sopenharmony_ci      - Cb\ :sub:`01`
99662306a36Sopenharmony_ci    * - start1 + 2:
99762306a36Sopenharmony_ci      - Cb\ :sub:`10`
99862306a36Sopenharmony_ci      - Cb\ :sub:`11`
99962306a36Sopenharmony_ci    * -
100062306a36Sopenharmony_ci    * - start2 + 0:
100162306a36Sopenharmony_ci      - Cr\ :sub:`00`
100262306a36Sopenharmony_ci      - Cr\ :sub:`01`
100362306a36Sopenharmony_ci    * - start2 + 2:
100462306a36Sopenharmony_ci      - Cr\ :sub:`10`
100562306a36Sopenharmony_ci      - Cr\ :sub:`11`
100662306a36Sopenharmony_ci
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV422P:
100962306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV422M:
101062306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YVU422M:
101162306a36Sopenharmony_ci
101262306a36Sopenharmony_ciYUV422P, YUV422M and YVU422M
101362306a36Sopenharmony_ci----------------------------
101462306a36Sopenharmony_ci
101562306a36Sopenharmony_ciPlanar YUV 4:2:2 formats. The chroma planes are subsampled by 2 in the
101662306a36Sopenharmony_cihorizontal direction. Chroma lines contain half of the number of pixels and
101762306a36Sopenharmony_cibytes of the luma lines, and the chroma planes contain the same number of lines
101862306a36Sopenharmony_cias the luma plane.
101962306a36Sopenharmony_ci
102062306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV422P Image
102162306a36Sopenharmony_ci    :header-rows:  0
102262306a36Sopenharmony_ci    :stub-columns: 0
102362306a36Sopenharmony_ci
102462306a36Sopenharmony_ci    * - start + 0:
102562306a36Sopenharmony_ci      - Y'\ :sub:`00`
102662306a36Sopenharmony_ci      - Y'\ :sub:`01`
102762306a36Sopenharmony_ci      - Y'\ :sub:`02`
102862306a36Sopenharmony_ci      - Y'\ :sub:`03`
102962306a36Sopenharmony_ci    * - start + 4:
103062306a36Sopenharmony_ci      - Y'\ :sub:`10`
103162306a36Sopenharmony_ci      - Y'\ :sub:`11`
103262306a36Sopenharmony_ci      - Y'\ :sub:`12`
103362306a36Sopenharmony_ci      - Y'\ :sub:`13`
103462306a36Sopenharmony_ci    * - start + 8:
103562306a36Sopenharmony_ci      - Y'\ :sub:`20`
103662306a36Sopenharmony_ci      - Y'\ :sub:`21`
103762306a36Sopenharmony_ci      - Y'\ :sub:`22`
103862306a36Sopenharmony_ci      - Y'\ :sub:`23`
103962306a36Sopenharmony_ci    * - start + 12:
104062306a36Sopenharmony_ci      - Y'\ :sub:`30`
104162306a36Sopenharmony_ci      - Y'\ :sub:`31`
104262306a36Sopenharmony_ci      - Y'\ :sub:`32`
104362306a36Sopenharmony_ci      - Y'\ :sub:`33`
104462306a36Sopenharmony_ci    * - start + 16:
104562306a36Sopenharmony_ci      - Cb\ :sub:`00`
104662306a36Sopenharmony_ci      - Cb\ :sub:`01`
104762306a36Sopenharmony_ci    * - start + 18:
104862306a36Sopenharmony_ci      - Cb\ :sub:`10`
104962306a36Sopenharmony_ci      - Cb\ :sub:`11`
105062306a36Sopenharmony_ci    * - start + 20:
105162306a36Sopenharmony_ci      - Cb\ :sub:`20`
105262306a36Sopenharmony_ci      - Cb\ :sub:`21`
105362306a36Sopenharmony_ci    * - start + 22:
105462306a36Sopenharmony_ci      - Cb\ :sub:`30`
105562306a36Sopenharmony_ci      - Cb\ :sub:`31`
105662306a36Sopenharmony_ci    * - start + 24:
105762306a36Sopenharmony_ci      - Cr\ :sub:`00`
105862306a36Sopenharmony_ci      - Cr\ :sub:`01`
105962306a36Sopenharmony_ci    * - start + 26:
106062306a36Sopenharmony_ci      - Cr\ :sub:`10`
106162306a36Sopenharmony_ci      - Cr\ :sub:`11`
106262306a36Sopenharmony_ci    * - start + 28:
106362306a36Sopenharmony_ci      - Cr\ :sub:`20`
106462306a36Sopenharmony_ci      - Cr\ :sub:`21`
106562306a36Sopenharmony_ci    * - start + 30:
106662306a36Sopenharmony_ci      - Cr\ :sub:`30`
106762306a36Sopenharmony_ci      - Cr\ :sub:`31`
106862306a36Sopenharmony_ci
106962306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV422M Image
107062306a36Sopenharmony_ci    :header-rows:  0
107162306a36Sopenharmony_ci    :stub-columns: 0
107262306a36Sopenharmony_ci
107362306a36Sopenharmony_ci    * - start0 + 0:
107462306a36Sopenharmony_ci      - Y'\ :sub:`00`
107562306a36Sopenharmony_ci      - Y'\ :sub:`01`
107662306a36Sopenharmony_ci      - Y'\ :sub:`02`
107762306a36Sopenharmony_ci      - Y'\ :sub:`03`
107862306a36Sopenharmony_ci    * - start0 + 4:
107962306a36Sopenharmony_ci      - Y'\ :sub:`10`
108062306a36Sopenharmony_ci      - Y'\ :sub:`11`
108162306a36Sopenharmony_ci      - Y'\ :sub:`12`
108262306a36Sopenharmony_ci      - Y'\ :sub:`13`
108362306a36Sopenharmony_ci    * - start0 + 8:
108462306a36Sopenharmony_ci      - Y'\ :sub:`20`
108562306a36Sopenharmony_ci      - Y'\ :sub:`21`
108662306a36Sopenharmony_ci      - Y'\ :sub:`22`
108762306a36Sopenharmony_ci      - Y'\ :sub:`23`
108862306a36Sopenharmony_ci    * - start0 + 12:
108962306a36Sopenharmony_ci      - Y'\ :sub:`30`
109062306a36Sopenharmony_ci      - Y'\ :sub:`31`
109162306a36Sopenharmony_ci      - Y'\ :sub:`32`
109262306a36Sopenharmony_ci      - Y'\ :sub:`33`
109362306a36Sopenharmony_ci    * -
109462306a36Sopenharmony_ci    * - start1 + 0:
109562306a36Sopenharmony_ci      - Cb\ :sub:`00`
109662306a36Sopenharmony_ci      - Cb\ :sub:`01`
109762306a36Sopenharmony_ci    * - start1 + 2:
109862306a36Sopenharmony_ci      - Cb\ :sub:`10`
109962306a36Sopenharmony_ci      - Cb\ :sub:`11`
110062306a36Sopenharmony_ci    * - start1 + 4:
110162306a36Sopenharmony_ci      - Cb\ :sub:`20`
110262306a36Sopenharmony_ci      - Cb\ :sub:`21`
110362306a36Sopenharmony_ci    * - start1 + 6:
110462306a36Sopenharmony_ci      - Cb\ :sub:`30`
110562306a36Sopenharmony_ci      - Cb\ :sub:`31`
110662306a36Sopenharmony_ci    * -
110762306a36Sopenharmony_ci    * - start2 + 0:
110862306a36Sopenharmony_ci      - Cr\ :sub:`00`
110962306a36Sopenharmony_ci      - Cr\ :sub:`01`
111062306a36Sopenharmony_ci    * - start2 + 2:
111162306a36Sopenharmony_ci      - Cr\ :sub:`10`
111262306a36Sopenharmony_ci      - Cr\ :sub:`11`
111362306a36Sopenharmony_ci    * - start2 + 4:
111462306a36Sopenharmony_ci      - Cr\ :sub:`20`
111562306a36Sopenharmony_ci      - Cr\ :sub:`21`
111662306a36Sopenharmony_ci    * - start2 + 6:
111762306a36Sopenharmony_ci      - Cr\ :sub:`30`
111862306a36Sopenharmony_ci      - Cr\ :sub:`31`
111962306a36Sopenharmony_ci
112062306a36Sopenharmony_ci
112162306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YUV444M:
112262306a36Sopenharmony_ci.. _V4L2-PIX-FMT-YVU444M:
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_ciYUV444M and YVU444M
112562306a36Sopenharmony_ci-------------------
112662306a36Sopenharmony_ci
112762306a36Sopenharmony_ciPlanar YUV 4:4:4 formats. The chroma planes are no subsampled. Chroma lines
112862306a36Sopenharmony_cicontain the same number of pixels and bytes of the luma lines, and the chroma
112962306a36Sopenharmony_ciplanes contain the same number of lines as the luma plane.
113062306a36Sopenharmony_ci
113162306a36Sopenharmony_ci.. flat-table:: Sample 4x4 YUV444M Image
113262306a36Sopenharmony_ci    :header-rows:  0
113362306a36Sopenharmony_ci    :stub-columns: 0
113462306a36Sopenharmony_ci
113562306a36Sopenharmony_ci    * - start0 + 0:
113662306a36Sopenharmony_ci      - Y'\ :sub:`00`
113762306a36Sopenharmony_ci      - Y'\ :sub:`01`
113862306a36Sopenharmony_ci      - Y'\ :sub:`02`
113962306a36Sopenharmony_ci      - Y'\ :sub:`03`
114062306a36Sopenharmony_ci    * - start0 + 4:
114162306a36Sopenharmony_ci      - Y'\ :sub:`10`
114262306a36Sopenharmony_ci      - Y'\ :sub:`11`
114362306a36Sopenharmony_ci      - Y'\ :sub:`12`
114462306a36Sopenharmony_ci      - Y'\ :sub:`13`
114562306a36Sopenharmony_ci    * - start0 + 8:
114662306a36Sopenharmony_ci      - Y'\ :sub:`20`
114762306a36Sopenharmony_ci      - Y'\ :sub:`21`
114862306a36Sopenharmony_ci      - Y'\ :sub:`22`
114962306a36Sopenharmony_ci      - Y'\ :sub:`23`
115062306a36Sopenharmony_ci    * - start0 + 12:
115162306a36Sopenharmony_ci      - Y'\ :sub:`30`
115262306a36Sopenharmony_ci      - Y'\ :sub:`31`
115362306a36Sopenharmony_ci      - Y'\ :sub:`32`
115462306a36Sopenharmony_ci      - Y'\ :sub:`33`
115562306a36Sopenharmony_ci    * -
115662306a36Sopenharmony_ci    * - start1 + 0:
115762306a36Sopenharmony_ci      - Cb\ :sub:`00`
115862306a36Sopenharmony_ci      - Cb\ :sub:`01`
115962306a36Sopenharmony_ci      - Cb\ :sub:`02`
116062306a36Sopenharmony_ci      - Cb\ :sub:`03`
116162306a36Sopenharmony_ci    * - start1 + 4:
116262306a36Sopenharmony_ci      - Cb\ :sub:`10`
116362306a36Sopenharmony_ci      - Cb\ :sub:`11`
116462306a36Sopenharmony_ci      - Cb\ :sub:`12`
116562306a36Sopenharmony_ci      - Cb\ :sub:`13`
116662306a36Sopenharmony_ci    * - start1 + 8:
116762306a36Sopenharmony_ci      - Cb\ :sub:`20`
116862306a36Sopenharmony_ci      - Cb\ :sub:`21`
116962306a36Sopenharmony_ci      - Cb\ :sub:`22`
117062306a36Sopenharmony_ci      - Cb\ :sub:`23`
117162306a36Sopenharmony_ci    * - start1 + 12:
117262306a36Sopenharmony_ci      - Cb\ :sub:`20`
117362306a36Sopenharmony_ci      - Cb\ :sub:`21`
117462306a36Sopenharmony_ci      - Cb\ :sub:`32`
117562306a36Sopenharmony_ci      - Cb\ :sub:`33`
117662306a36Sopenharmony_ci    * -
117762306a36Sopenharmony_ci    * - start2 + 0:
117862306a36Sopenharmony_ci      - Cr\ :sub:`00`
117962306a36Sopenharmony_ci      - Cr\ :sub:`01`
118062306a36Sopenharmony_ci      - Cr\ :sub:`02`
118162306a36Sopenharmony_ci      - Cr\ :sub:`03`
118262306a36Sopenharmony_ci    * - start2 + 4:
118362306a36Sopenharmony_ci      - Cr\ :sub:`10`
118462306a36Sopenharmony_ci      - Cr\ :sub:`11`
118562306a36Sopenharmony_ci      - Cr\ :sub:`12`
118662306a36Sopenharmony_ci      - Cr\ :sub:`13`
118762306a36Sopenharmony_ci    * - start2 + 8:
118862306a36Sopenharmony_ci      - Cr\ :sub:`20`
118962306a36Sopenharmony_ci      - Cr\ :sub:`21`
119062306a36Sopenharmony_ci      - Cr\ :sub:`22`
119162306a36Sopenharmony_ci      - Cr\ :sub:`23`
119262306a36Sopenharmony_ci    * - start2 + 12:
119362306a36Sopenharmony_ci      - Cr\ :sub:`30`
119462306a36Sopenharmony_ci      - Cr\ :sub:`31`
119562306a36Sopenharmony_ci      - Cr\ :sub:`32`
119662306a36Sopenharmony_ci      - Cr\ :sub:`33`
1197