Planar pixel formats are documented in separate files. This duplicates information, as those formats share comon traits. Consolidate them in a single file and summarize their descriptions in a single table. 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>
		
			
				
	
	
		
			274 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
 | |
| 
 | |
| .. _yuv-formats:
 | |
| 
 | |
| ***********
 | |
| YUV Formats
 | |
| ***********
 | |
| 
 | |
| YUV is the format native to TV broadcast and composite video signals. It
 | |
| separates the brightness information (Y) from the color information (U
 | |
| and V or Cb and Cr). The color information consists of red and blue
 | |
| *color difference* signals, this way the green component can be
 | |
| 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.
 | |
| 
 | |
| 
 | |
| 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::
 | |
|     :maxdepth: 1
 | |
| 
 | |
|     pixfmt-packed-yuv
 | |
|     pixfmt-yuv-planar
 | |
|     pixfmt-yuv-luma
 | |
|     pixfmt-y8i
 | |
|     pixfmt-y12i
 | |
|     pixfmt-uv8
 | |
|     pixfmt-m420
 |