2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-25 21:54:06 +08:00

media: doc: pixfmt-yuv: Document subsampling in more details

Document YUV subsampling, including chroma spatial siting, and replace
the siting examples in individual formats by references to the common
documentation.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Laurent Pinchart 2020-12-07 00:03:09 +01:00 committed by Mauro Carvalho Chehab
parent a1bcf9b9a7
commit e3ae4c204d
18 changed files with 278 additions and 884 deletions

View File

@ -67,60 +67,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -72,58 +72,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -84,61 +84,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -80,74 +80,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -84,74 +84,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -66,45 +66,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
- C
- Y
- Y
- C
- Y
* - 1
- Y
- C
- Y
- Y
- C
- Y
* - 2
- Y
- C
- Y
- Y
- C
- Y
* - 3
- Y
- C
- Y
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -66,43 +66,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
-
- 2
- 3
* - 0
- Y
- C
- Y
- Y
- C
- Y
* - 1
- Y
- C
- Y
- Y
- C
- Y
* - 2
- Y
- C
- Y
- Y
- C
- Y
* - 3
- Y
- C
- Y
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -89,63 +89,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
- 1
-
- 2
- 3
- 4
- 5
-
- 6
- 7
* - 0
- Y
- Y
- C
- Y
- Y
- Y
- Y
- C
- Y
- Y
* - 1
- Y
- Y
- C
- Y
- Y
- Y
- Y
- C
- Y
- Y
* - 2
- Y
- Y
- C
- Y
- Y
- Y
- Y
- C
- Y
- Y
* - 3
- Y
- Y
- C
- Y
- Y
- Y
- Y
- C
- Y
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -68,60 +68,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
-
- Y
-
- Y
-
- Y
* -
* - 1
- Y
-
- Y
-
- Y
-
- Y
* -
-
-
-
- C
-
-
-
* - 2
- Y
-
- Y
-
- Y
-
- Y
* -
* - 3
- Y
-
- Y
-
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -76,40 +76,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
- 1
-
- 2
- 3
* - 0
- Y
- Y
- C
- Y
- Y
* - 1
- Y
- Y
- C
- Y
- Y
* - 2
- Y
- Y
- C
- Y
- Y
* - 3
- Y
- Y
- C
- Y
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -77,67 +77,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
-
- Y
-
- Y
-
- Y
* -
-
- C
-
-
-
- C
-
* - 1
- Y
-
- Y
-
- Y
-
- Y
* -
* - 2
- Y
-
- Y
-
- Y
-
- Y
* -
-
- C
-
-
-
- C
-
* - 3
- Y
-
- Y
-
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -86,67 +86,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
-
- Y
-
- Y
-
- Y
* -
-
- C
-
-
-
- C
-
* - 1
- Y
-
- Y
-
- Y
-
- Y
* -
* - 2
- Y
-
- Y
-
- Y
-
- Y
* -
-
- C
-
-
-
- C
-
* - 3
- Y
-
- Y
-
- Y
-
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally and vertically.

View File

@ -97,45 +97,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
- C
- Y
- Y
- C
- Y
* - 1
- Y
- C
- Y
- Y
- C
- Y
* - 2
- Y
- C
- Y
- Y
- C
- Y
* - 3
- Y
- C
- Y
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -85,45 +85,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
- C
- Y
- Y
- C
- Y
* - 1
- Y
- C
- Y
- Y
- C
- Y
* - 2
- Y
- C
- Y
- Y
- C
- Y
* - 3
- Y
- C
- Y
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -107,35 +107,4 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
- 1
- 2
- 3
* - 0
- YC
- YC
- YC
- YC
* - 1
- YC
- YC
- YC
- YC
* - 2
- YC
- YC
- YC
- YC
* - 3
- YC
- YC
- YC
- YC
Chroma samples are :ref:`co-sited<yuv-chroma-cosited>`.

View File

@ -69,50 +69,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
- C
- Y
-
- Y
- C
- Y
* - 1
- Y
- C
- Y
-
- Y
- C
- Y
* - 2
- Y
- C
- Y
-
- Y
- C
- Y
* - 3
- Y
- C
- Y
-
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -66,43 +66,5 @@ Each cell is one byte.
**Color Sample Location:**
.. flat-table::
:header-rows: 0
:stub-columns: 0
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
- C
- Y
- Y
- C
- Y
* - 1
- Y
- C
- Y
- Y
- C
- Y
* - 2
- Y
- C
- Y
- Y
- C
- Y
* - 3
- Y
- C
- Y
- Y
- C
- Y
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
horizontally.

View File

@ -14,11 +14,251 @@ reconstructed by subtracting from the brightness component. See
:ref:`colorspaces` for conversion examples. YUV was chosen because
early television would only transmit brightness information. To add
color in a way compatible with existing receivers a new signal carrier
was added to transmit the color difference signals. Secondary in the YUV
format the U and V components usually have lower resolution than the Y
component. This is an analog video compression technique taking
advantage of a property of the human visual system, being more sensitive
to brightness information.
was added to transmit the color difference signals.
Subsampling
===========
YUV formats commonly encode images with a lower resolution for the chroma
components than for the luma component. This compression technique, taking
advantage of the human eye being more sensitive to luminance than color
differences, is called chroma subsampling.
While many combinations of subsampling factors in the horizontal and vertical
direction are possible, common factors are 1 (no subsampling), 2 and 4, with
horizontal subsampling always larger than or equal to vertical subsampling.
Common combinations are named as follows.
- `4:4:4`: No subsampling
- `4:2:2`: Horizontal subsampling by 2, no vertical subsampling
- `4:2:0`: Horizontal subsampling by 2, vertical subsampling by 2
- `4:1:1`: Horizontal subsampling by 4, no vertical subsampling
- `4:1:0`: Horizontal subsampling by 4, vertical subsampling by 4
Subsampling the chroma component effectively creates chroma values that can be
located in different spatial locations:
- .. _yuv-chroma-centered:
The subsampled chroma value may be calculated by simply averaging the chroma
value of two consecutive pixels. It effectively models the chroma of a pixel
sited between the two original pixels. This is referred to as centered or
interstitially sited chroma.
- .. _yuv-chroma-cosited:
The other option is to subsample chroma values in a way that place them in
the same spatial sites as the pixels. This may be performed by skipping every
other chroma sample (creating aliasing artifacts), or with filters using an
odd number of taps. This is referred to as co-sited chroma.
The following examples show different combination of chroma siting in a 4x4
image.
.. flat-table:: 4:2:2 subsampling, interstitially sited
:header-rows: 1
:stub-columns: 1
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
- C
- Y
-
- Y
- C
- Y
* - 1
- Y
- C
- Y
-
- Y
- C
- Y
* - 2
- Y
- C
- Y
-
- Y
- C
- Y
* - 3
- Y
- C
- Y
-
- Y
- C
- Y
.. flat-table:: 4:2:2 subsampling, co-sited
:header-rows: 1
:stub-columns: 1
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y/C
-
- Y
-
- Y/C
-
- Y
* - 1
- Y/C
-
- Y
-
- Y/C
-
- Y
* - 2
- Y/C
-
- Y
-
- Y/C
-
- Y
* - 3
- Y/C
-
- Y
-
- Y/C
-
- Y
.. flat-table:: 4:2:0 subsampling, horizontally interstitially sited, vertically co-sited
:header-rows: 1
:stub-columns: 1
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
- C
- Y
-
- Y
- C
- Y
* - 1
- Y
-
- Y
-
- Y
-
- Y
* - 2
- Y
- C
- Y
-
- Y
- C
- Y
* - 3
- Y
-
- Y
-
- Y
-
- Y
.. flat-table:: 4:1:0 subsampling, horizontally and vertically interstitially sited
:header-rows: 1
:stub-columns: 1
* -
- 0
-
- 1
-
- 2
-
- 3
* - 0
- Y
-
- Y
-
- Y
-
- Y
* -
-
-
-
-
-
-
-
* - 1
- Y
-
- Y
-
- Y
-
- Y
* -
-
-
-
- C
-
-
-
* - 2
- Y
-
- Y
-
- Y
-
- Y
* -
-
-
-
-
-
-
-
* - 3
- Y
-
- Y
-
- Y
-
- Y
.. toctree::