162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. _yuv-formats:
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci***********
662306a36Sopenharmony_ciYUV Formats
762306a36Sopenharmony_ci***********
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciYUV is the format native to TV broadcast and composite video signals. It
1062306a36Sopenharmony_ciseparates the brightness information (Y) from the color information (U
1162306a36Sopenharmony_ciand V or Cb and Cr). The color information consists of red and blue
1262306a36Sopenharmony_ci*color difference* signals, this way the green component can be
1362306a36Sopenharmony_cireconstructed by subtracting from the brightness component. See
1462306a36Sopenharmony_ci:ref:`colorspaces` for conversion examples. YUV was chosen because
1562306a36Sopenharmony_ciearly television would only transmit brightness information. To add
1662306a36Sopenharmony_cicolor in a way compatible with existing receivers a new signal carrier
1762306a36Sopenharmony_ciwas added to transmit the color difference signals.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciSubsampling
2162306a36Sopenharmony_ci===========
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciYUV formats commonly encode images with a lower resolution for the chroma
2462306a36Sopenharmony_cicomponents than for the luma component. This compression technique, taking
2562306a36Sopenharmony_ciadvantage of the human eye being more sensitive to luminance than color
2662306a36Sopenharmony_cidifferences, is called chroma subsampling.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciWhile many combinations of subsampling factors in the horizontal and vertical
2962306a36Sopenharmony_cidirection are possible, common factors are 1 (no subsampling), 2 and 4, with
3062306a36Sopenharmony_cihorizontal subsampling always larger than or equal to vertical subsampling.
3162306a36Sopenharmony_ciCommon combinations are named as follows.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci- `4:4:4`: No subsampling
3462306a36Sopenharmony_ci- `4:2:2`: Horizontal subsampling by 2, no vertical subsampling
3562306a36Sopenharmony_ci- `4:2:0`: Horizontal subsampling by 2, vertical subsampling by 2
3662306a36Sopenharmony_ci- `4:1:1`: Horizontal subsampling by 4, no vertical subsampling
3762306a36Sopenharmony_ci- `4:1:0`: Horizontal subsampling by 4, vertical subsampling by 4
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciSubsampling the chroma component effectively creates chroma values that can be
4062306a36Sopenharmony_cilocated in different spatial locations:
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci- .. _yuv-chroma-centered:
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  The subsampled chroma value may be calculated by simply averaging the chroma
4562306a36Sopenharmony_ci  value of two consecutive pixels. It effectively models the chroma of a pixel
4662306a36Sopenharmony_ci  sited between the two original pixels. This is referred to as centered or
4762306a36Sopenharmony_ci  interstitially sited chroma.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci- .. _yuv-chroma-cosited:
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  The other option is to subsample chroma values in a way that place them in
5262306a36Sopenharmony_ci  the same spatial sites as the pixels. This may be performed by skipping every
5362306a36Sopenharmony_ci  other chroma sample (creating aliasing artifacts), or with filters using an
5462306a36Sopenharmony_ci  odd number of taps. This is referred to as co-sited chroma.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciThe following examples show different combination of chroma siting in a 4x4
5762306a36Sopenharmony_ciimage.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci.. flat-table:: 4:2:2 subsampling, interstitially sited
6062306a36Sopenharmony_ci    :header-rows: 1
6162306a36Sopenharmony_ci    :stub-columns: 1
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci    * -
6462306a36Sopenharmony_ci      - 0
6562306a36Sopenharmony_ci      -
6662306a36Sopenharmony_ci      - 1
6762306a36Sopenharmony_ci      -
6862306a36Sopenharmony_ci      - 2
6962306a36Sopenharmony_ci      -
7062306a36Sopenharmony_ci      - 3
7162306a36Sopenharmony_ci    * - 0
7262306a36Sopenharmony_ci      - Y
7362306a36Sopenharmony_ci      - C
7462306a36Sopenharmony_ci      - Y
7562306a36Sopenharmony_ci      -
7662306a36Sopenharmony_ci      - Y
7762306a36Sopenharmony_ci      - C
7862306a36Sopenharmony_ci      - Y
7962306a36Sopenharmony_ci    * - 1
8062306a36Sopenharmony_ci      - Y
8162306a36Sopenharmony_ci      - C
8262306a36Sopenharmony_ci      - Y
8362306a36Sopenharmony_ci      -
8462306a36Sopenharmony_ci      - Y
8562306a36Sopenharmony_ci      - C
8662306a36Sopenharmony_ci      - Y
8762306a36Sopenharmony_ci    * - 2
8862306a36Sopenharmony_ci      - Y
8962306a36Sopenharmony_ci      - C
9062306a36Sopenharmony_ci      - Y
9162306a36Sopenharmony_ci      -
9262306a36Sopenharmony_ci      - Y
9362306a36Sopenharmony_ci      - C
9462306a36Sopenharmony_ci      - Y
9562306a36Sopenharmony_ci    * - 3
9662306a36Sopenharmony_ci      - Y
9762306a36Sopenharmony_ci      - C
9862306a36Sopenharmony_ci      - Y
9962306a36Sopenharmony_ci      -
10062306a36Sopenharmony_ci      - Y
10162306a36Sopenharmony_ci      - C
10262306a36Sopenharmony_ci      - Y
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci.. flat-table:: 4:2:2 subsampling, co-sited
10562306a36Sopenharmony_ci    :header-rows: 1
10662306a36Sopenharmony_ci    :stub-columns: 1
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci    * -
10962306a36Sopenharmony_ci      - 0
11062306a36Sopenharmony_ci      -
11162306a36Sopenharmony_ci      - 1
11262306a36Sopenharmony_ci      -
11362306a36Sopenharmony_ci      - 2
11462306a36Sopenharmony_ci      -
11562306a36Sopenharmony_ci      - 3
11662306a36Sopenharmony_ci    * - 0
11762306a36Sopenharmony_ci      - Y/C
11862306a36Sopenharmony_ci      -
11962306a36Sopenharmony_ci      - Y
12062306a36Sopenharmony_ci      -
12162306a36Sopenharmony_ci      - Y/C
12262306a36Sopenharmony_ci      -
12362306a36Sopenharmony_ci      - Y
12462306a36Sopenharmony_ci    * - 1
12562306a36Sopenharmony_ci      - Y/C
12662306a36Sopenharmony_ci      -
12762306a36Sopenharmony_ci      - Y
12862306a36Sopenharmony_ci      -
12962306a36Sopenharmony_ci      - Y/C
13062306a36Sopenharmony_ci      -
13162306a36Sopenharmony_ci      - Y
13262306a36Sopenharmony_ci    * - 2
13362306a36Sopenharmony_ci      - Y/C
13462306a36Sopenharmony_ci      -
13562306a36Sopenharmony_ci      - Y
13662306a36Sopenharmony_ci      -
13762306a36Sopenharmony_ci      - Y/C
13862306a36Sopenharmony_ci      -
13962306a36Sopenharmony_ci      - Y
14062306a36Sopenharmony_ci    * - 3
14162306a36Sopenharmony_ci      - Y/C
14262306a36Sopenharmony_ci      -
14362306a36Sopenharmony_ci      - Y
14462306a36Sopenharmony_ci      -
14562306a36Sopenharmony_ci      - Y/C
14662306a36Sopenharmony_ci      -
14762306a36Sopenharmony_ci      - Y
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci.. flat-table:: 4:2:0 subsampling, horizontally interstitially sited, vertically co-sited
15062306a36Sopenharmony_ci    :header-rows: 1
15162306a36Sopenharmony_ci    :stub-columns: 1
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci    * -
15462306a36Sopenharmony_ci      - 0
15562306a36Sopenharmony_ci      -
15662306a36Sopenharmony_ci      - 1
15762306a36Sopenharmony_ci      -
15862306a36Sopenharmony_ci      - 2
15962306a36Sopenharmony_ci      -
16062306a36Sopenharmony_ci      - 3
16162306a36Sopenharmony_ci    * - 0
16262306a36Sopenharmony_ci      - Y
16362306a36Sopenharmony_ci      - C
16462306a36Sopenharmony_ci      - Y
16562306a36Sopenharmony_ci      -
16662306a36Sopenharmony_ci      - Y
16762306a36Sopenharmony_ci      - C
16862306a36Sopenharmony_ci      - Y
16962306a36Sopenharmony_ci    * - 1
17062306a36Sopenharmony_ci      - Y
17162306a36Sopenharmony_ci      -
17262306a36Sopenharmony_ci      - Y
17362306a36Sopenharmony_ci      -
17462306a36Sopenharmony_ci      - Y
17562306a36Sopenharmony_ci      -
17662306a36Sopenharmony_ci      - Y
17762306a36Sopenharmony_ci    * - 2
17862306a36Sopenharmony_ci      - Y
17962306a36Sopenharmony_ci      - C
18062306a36Sopenharmony_ci      - Y
18162306a36Sopenharmony_ci      -
18262306a36Sopenharmony_ci      - Y
18362306a36Sopenharmony_ci      - C
18462306a36Sopenharmony_ci      - Y
18562306a36Sopenharmony_ci    * - 3
18662306a36Sopenharmony_ci      - Y
18762306a36Sopenharmony_ci      -
18862306a36Sopenharmony_ci      - Y
18962306a36Sopenharmony_ci      -
19062306a36Sopenharmony_ci      - Y
19162306a36Sopenharmony_ci      -
19262306a36Sopenharmony_ci      - Y
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci.. flat-table:: 4:1:0 subsampling, horizontally and vertically interstitially sited
19562306a36Sopenharmony_ci    :header-rows: 1
19662306a36Sopenharmony_ci    :stub-columns: 1
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci    * -
19962306a36Sopenharmony_ci      - 0
20062306a36Sopenharmony_ci      -
20162306a36Sopenharmony_ci      - 1
20262306a36Sopenharmony_ci      -
20362306a36Sopenharmony_ci      - 2
20462306a36Sopenharmony_ci      -
20562306a36Sopenharmony_ci      - 3
20662306a36Sopenharmony_ci    * - 0
20762306a36Sopenharmony_ci      - Y
20862306a36Sopenharmony_ci      -
20962306a36Sopenharmony_ci      - Y
21062306a36Sopenharmony_ci      -
21162306a36Sopenharmony_ci      - Y
21262306a36Sopenharmony_ci      -
21362306a36Sopenharmony_ci      - Y
21462306a36Sopenharmony_ci    * -
21562306a36Sopenharmony_ci      -
21662306a36Sopenharmony_ci      -
21762306a36Sopenharmony_ci      -
21862306a36Sopenharmony_ci      -
21962306a36Sopenharmony_ci      -
22062306a36Sopenharmony_ci      -
22162306a36Sopenharmony_ci      -
22262306a36Sopenharmony_ci    * - 1
22362306a36Sopenharmony_ci      - Y
22462306a36Sopenharmony_ci      -
22562306a36Sopenharmony_ci      - Y
22662306a36Sopenharmony_ci      -
22762306a36Sopenharmony_ci      - Y
22862306a36Sopenharmony_ci      -
22962306a36Sopenharmony_ci      - Y
23062306a36Sopenharmony_ci    * -
23162306a36Sopenharmony_ci      -
23262306a36Sopenharmony_ci      -
23362306a36Sopenharmony_ci      -
23462306a36Sopenharmony_ci      - C
23562306a36Sopenharmony_ci      -
23662306a36Sopenharmony_ci      -
23762306a36Sopenharmony_ci      -
23862306a36Sopenharmony_ci    * - 2
23962306a36Sopenharmony_ci      - Y
24062306a36Sopenharmony_ci      -
24162306a36Sopenharmony_ci      - Y
24262306a36Sopenharmony_ci      -
24362306a36Sopenharmony_ci      - Y
24462306a36Sopenharmony_ci      -
24562306a36Sopenharmony_ci      - Y
24662306a36Sopenharmony_ci    * -
24762306a36Sopenharmony_ci      -
24862306a36Sopenharmony_ci      -
24962306a36Sopenharmony_ci      -
25062306a36Sopenharmony_ci      -
25162306a36Sopenharmony_ci      -
25262306a36Sopenharmony_ci      -
25362306a36Sopenharmony_ci      -
25462306a36Sopenharmony_ci    * - 3
25562306a36Sopenharmony_ci      - Y
25662306a36Sopenharmony_ci      -
25762306a36Sopenharmony_ci      - Y
25862306a36Sopenharmony_ci      -
25962306a36Sopenharmony_ci      - Y
26062306a36Sopenharmony_ci      -
26162306a36Sopenharmony_ci      - Y
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci.. toctree::
26562306a36Sopenharmony_ci    :maxdepth: 1
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci    pixfmt-packed-yuv
26862306a36Sopenharmony_ci    pixfmt-yuv-planar
26962306a36Sopenharmony_ci    pixfmt-yuv-luma
27062306a36Sopenharmony_ci    pixfmt-y8i
27162306a36Sopenharmony_ci    pixfmt-y12i
27262306a36Sopenharmony_ci    pixfmt-uv8
27362306a36Sopenharmony_ci    pixfmt-m420
274