1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
254f38fcaSMauro Carvalho Chehab
354f38fcaSMauro Carvalho Chehab.. _yuv-formats:
454f38fcaSMauro Carvalho Chehab
554f38fcaSMauro Carvalho Chehab***********
654f38fcaSMauro Carvalho ChehabYUV Formats
754f38fcaSMauro Carvalho Chehab***********
854f38fcaSMauro Carvalho Chehab
954f38fcaSMauro Carvalho ChehabYUV is the format native to TV broadcast and composite video signals. It
1054f38fcaSMauro Carvalho Chehabseparates the brightness information (Y) from the color information (U
1154f38fcaSMauro Carvalho Chehaband V or Cb and Cr). The color information consists of red and blue
1254f38fcaSMauro Carvalho Chehab*color difference* signals, this way the green component can be
1354f38fcaSMauro Carvalho Chehabreconstructed by subtracting from the brightness component. See
1454f38fcaSMauro Carvalho Chehab:ref:`colorspaces` for conversion examples. YUV was chosen because
1554f38fcaSMauro Carvalho Chehabearly television would only transmit brightness information. To add
1654f38fcaSMauro Carvalho Chehabcolor in a way compatible with existing receivers a new signal carrier
17e3ae4c20SLaurent Pinchartwas added to transmit the color difference signals.
18e3ae4c20SLaurent Pinchart
19e3ae4c20SLaurent Pinchart
20e3ae4c20SLaurent PinchartSubsampling
21e3ae4c20SLaurent Pinchart===========
22e3ae4c20SLaurent Pinchart
23e3ae4c20SLaurent PinchartYUV formats commonly encode images with a lower resolution for the chroma
24e3ae4c20SLaurent Pinchartcomponents than for the luma component. This compression technique, taking
25e3ae4c20SLaurent Pinchartadvantage of the human eye being more sensitive to luminance than color
26e3ae4c20SLaurent Pinchartdifferences, is called chroma subsampling.
27e3ae4c20SLaurent Pinchart
28e3ae4c20SLaurent PinchartWhile many combinations of subsampling factors in the horizontal and vertical
29e3ae4c20SLaurent Pinchartdirection are possible, common factors are 1 (no subsampling), 2 and 4, with
30e3ae4c20SLaurent Pincharthorizontal subsampling always larger than or equal to vertical subsampling.
31e3ae4c20SLaurent PinchartCommon combinations are named as follows.
32e3ae4c20SLaurent Pinchart
33e3ae4c20SLaurent Pinchart- `4:4:4`: No subsampling
34e3ae4c20SLaurent Pinchart- `4:2:2`: Horizontal subsampling by 2, no vertical subsampling
35e3ae4c20SLaurent Pinchart- `4:2:0`: Horizontal subsampling by 2, vertical subsampling by 2
36e3ae4c20SLaurent Pinchart- `4:1:1`: Horizontal subsampling by 4, no vertical subsampling
37e3ae4c20SLaurent Pinchart- `4:1:0`: Horizontal subsampling by 4, vertical subsampling by 4
38e3ae4c20SLaurent Pinchart
39e3ae4c20SLaurent PinchartSubsampling the chroma component effectively creates chroma values that can be
40e3ae4c20SLaurent Pinchartlocated in different spatial locations:
41e3ae4c20SLaurent Pinchart
42e3ae4c20SLaurent Pinchart- .. _yuv-chroma-centered:
43e3ae4c20SLaurent Pinchart
44e3ae4c20SLaurent Pinchart  The subsampled chroma value may be calculated by simply averaging the chroma
45e3ae4c20SLaurent Pinchart  value of two consecutive pixels. It effectively models the chroma of a pixel
46e3ae4c20SLaurent Pinchart  sited between the two original pixels. This is referred to as centered or
47e3ae4c20SLaurent Pinchart  interstitially sited chroma.
48e3ae4c20SLaurent Pinchart
49e3ae4c20SLaurent Pinchart- .. _yuv-chroma-cosited:
50e3ae4c20SLaurent Pinchart
51e3ae4c20SLaurent Pinchart  The other option is to subsample chroma values in a way that place them in
52e3ae4c20SLaurent Pinchart  the same spatial sites as the pixels. This may be performed by skipping every
53e3ae4c20SLaurent Pinchart  other chroma sample (creating aliasing artifacts), or with filters using an
54e3ae4c20SLaurent Pinchart  odd number of taps. This is referred to as co-sited chroma.
55e3ae4c20SLaurent Pinchart
56e3ae4c20SLaurent PinchartThe following examples show different combination of chroma siting in a 4x4
57e3ae4c20SLaurent Pinchartimage.
58e3ae4c20SLaurent Pinchart
59e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:2 subsampling, interstitially sited
60e3ae4c20SLaurent Pinchart    :header-rows: 1
61e3ae4c20SLaurent Pinchart    :stub-columns: 1
62e3ae4c20SLaurent Pinchart
63e3ae4c20SLaurent Pinchart    * -
64e3ae4c20SLaurent Pinchart      - 0
65e3ae4c20SLaurent Pinchart      -
66e3ae4c20SLaurent Pinchart      - 1
67e3ae4c20SLaurent Pinchart      -
68e3ae4c20SLaurent Pinchart      - 2
69e3ae4c20SLaurent Pinchart      -
70e3ae4c20SLaurent Pinchart      - 3
71e3ae4c20SLaurent Pinchart    * - 0
72e3ae4c20SLaurent Pinchart      - Y
73e3ae4c20SLaurent Pinchart      - C
74e3ae4c20SLaurent Pinchart      - Y
75e3ae4c20SLaurent Pinchart      -
76e3ae4c20SLaurent Pinchart      - Y
77e3ae4c20SLaurent Pinchart      - C
78e3ae4c20SLaurent Pinchart      - Y
79e3ae4c20SLaurent Pinchart    * - 1
80e3ae4c20SLaurent Pinchart      - Y
81e3ae4c20SLaurent Pinchart      - C
82e3ae4c20SLaurent Pinchart      - Y
83e3ae4c20SLaurent Pinchart      -
84e3ae4c20SLaurent Pinchart      - Y
85e3ae4c20SLaurent Pinchart      - C
86e3ae4c20SLaurent Pinchart      - Y
87e3ae4c20SLaurent Pinchart    * - 2
88e3ae4c20SLaurent Pinchart      - Y
89e3ae4c20SLaurent Pinchart      - C
90e3ae4c20SLaurent Pinchart      - Y
91e3ae4c20SLaurent Pinchart      -
92e3ae4c20SLaurent Pinchart      - Y
93e3ae4c20SLaurent Pinchart      - C
94e3ae4c20SLaurent Pinchart      - Y
95e3ae4c20SLaurent Pinchart    * - 3
96e3ae4c20SLaurent Pinchart      - Y
97e3ae4c20SLaurent Pinchart      - C
98e3ae4c20SLaurent Pinchart      - Y
99e3ae4c20SLaurent Pinchart      -
100e3ae4c20SLaurent Pinchart      - Y
101e3ae4c20SLaurent Pinchart      - C
102e3ae4c20SLaurent Pinchart      - Y
103e3ae4c20SLaurent Pinchart
104e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:2 subsampling, co-sited
105e3ae4c20SLaurent Pinchart    :header-rows: 1
106e3ae4c20SLaurent Pinchart    :stub-columns: 1
107e3ae4c20SLaurent Pinchart
108e3ae4c20SLaurent Pinchart    * -
109e3ae4c20SLaurent Pinchart      - 0
110e3ae4c20SLaurent Pinchart      -
111e3ae4c20SLaurent Pinchart      - 1
112e3ae4c20SLaurent Pinchart      -
113e3ae4c20SLaurent Pinchart      - 2
114e3ae4c20SLaurent Pinchart      -
115e3ae4c20SLaurent Pinchart      - 3
116e3ae4c20SLaurent Pinchart    * - 0
117e3ae4c20SLaurent Pinchart      - Y/C
118e3ae4c20SLaurent Pinchart      -
119e3ae4c20SLaurent Pinchart      - Y
120e3ae4c20SLaurent Pinchart      -
121e3ae4c20SLaurent Pinchart      - Y/C
122e3ae4c20SLaurent Pinchart      -
123e3ae4c20SLaurent Pinchart      - Y
124e3ae4c20SLaurent Pinchart    * - 1
125e3ae4c20SLaurent Pinchart      - Y/C
126e3ae4c20SLaurent Pinchart      -
127e3ae4c20SLaurent Pinchart      - Y
128e3ae4c20SLaurent Pinchart      -
129e3ae4c20SLaurent Pinchart      - Y/C
130e3ae4c20SLaurent Pinchart      -
131e3ae4c20SLaurent Pinchart      - Y
132e3ae4c20SLaurent Pinchart    * - 2
133e3ae4c20SLaurent Pinchart      - Y/C
134e3ae4c20SLaurent Pinchart      -
135e3ae4c20SLaurent Pinchart      - Y
136e3ae4c20SLaurent Pinchart      -
137e3ae4c20SLaurent Pinchart      - Y/C
138e3ae4c20SLaurent Pinchart      -
139e3ae4c20SLaurent Pinchart      - Y
140e3ae4c20SLaurent Pinchart    * - 3
141e3ae4c20SLaurent Pinchart      - Y/C
142e3ae4c20SLaurent Pinchart      -
143e3ae4c20SLaurent Pinchart      - Y
144e3ae4c20SLaurent Pinchart      -
145e3ae4c20SLaurent Pinchart      - Y/C
146e3ae4c20SLaurent Pinchart      -
147e3ae4c20SLaurent Pinchart      - Y
148e3ae4c20SLaurent Pinchart
149e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:0 subsampling, horizontally interstitially sited, vertically co-sited
150e3ae4c20SLaurent Pinchart    :header-rows: 1
151e3ae4c20SLaurent Pinchart    :stub-columns: 1
152e3ae4c20SLaurent Pinchart
153e3ae4c20SLaurent Pinchart    * -
154e3ae4c20SLaurent Pinchart      - 0
155e3ae4c20SLaurent Pinchart      -
156e3ae4c20SLaurent Pinchart      - 1
157e3ae4c20SLaurent Pinchart      -
158e3ae4c20SLaurent Pinchart      - 2
159e3ae4c20SLaurent Pinchart      -
160e3ae4c20SLaurent Pinchart      - 3
161e3ae4c20SLaurent Pinchart    * - 0
162e3ae4c20SLaurent Pinchart      - Y
163e3ae4c20SLaurent Pinchart      - C
164e3ae4c20SLaurent Pinchart      - Y
165e3ae4c20SLaurent Pinchart      -
166e3ae4c20SLaurent Pinchart      - Y
167e3ae4c20SLaurent Pinchart      - C
168e3ae4c20SLaurent Pinchart      - Y
169e3ae4c20SLaurent Pinchart    * - 1
170e3ae4c20SLaurent Pinchart      - Y
171e3ae4c20SLaurent Pinchart      -
172e3ae4c20SLaurent Pinchart      - Y
173e3ae4c20SLaurent Pinchart      -
174e3ae4c20SLaurent Pinchart      - Y
175e3ae4c20SLaurent Pinchart      -
176e3ae4c20SLaurent Pinchart      - Y
177e3ae4c20SLaurent Pinchart    * - 2
178e3ae4c20SLaurent Pinchart      - Y
179e3ae4c20SLaurent Pinchart      - C
180e3ae4c20SLaurent Pinchart      - Y
181e3ae4c20SLaurent Pinchart      -
182e3ae4c20SLaurent Pinchart      - Y
183e3ae4c20SLaurent Pinchart      - C
184e3ae4c20SLaurent Pinchart      - Y
185e3ae4c20SLaurent Pinchart    * - 3
186e3ae4c20SLaurent Pinchart      - Y
187e3ae4c20SLaurent Pinchart      -
188e3ae4c20SLaurent Pinchart      - Y
189e3ae4c20SLaurent Pinchart      -
190e3ae4c20SLaurent Pinchart      - Y
191e3ae4c20SLaurent Pinchart      -
192e3ae4c20SLaurent Pinchart      - Y
193e3ae4c20SLaurent Pinchart
194e3ae4c20SLaurent Pinchart.. flat-table:: 4:1:0 subsampling, horizontally and vertically interstitially sited
195e3ae4c20SLaurent Pinchart    :header-rows: 1
196e3ae4c20SLaurent Pinchart    :stub-columns: 1
197e3ae4c20SLaurent Pinchart
198e3ae4c20SLaurent Pinchart    * -
199e3ae4c20SLaurent Pinchart      - 0
200e3ae4c20SLaurent Pinchart      -
201e3ae4c20SLaurent Pinchart      - 1
202e3ae4c20SLaurent Pinchart      -
203e3ae4c20SLaurent Pinchart      - 2
204e3ae4c20SLaurent Pinchart      -
205e3ae4c20SLaurent Pinchart      - 3
206e3ae4c20SLaurent Pinchart    * - 0
207e3ae4c20SLaurent Pinchart      - Y
208e3ae4c20SLaurent Pinchart      -
209e3ae4c20SLaurent Pinchart      - Y
210e3ae4c20SLaurent Pinchart      -
211e3ae4c20SLaurent Pinchart      - Y
212e3ae4c20SLaurent Pinchart      -
213e3ae4c20SLaurent Pinchart      - Y
214e3ae4c20SLaurent Pinchart    * -
215e3ae4c20SLaurent Pinchart      -
216e3ae4c20SLaurent Pinchart      -
217e3ae4c20SLaurent Pinchart      -
218e3ae4c20SLaurent Pinchart      -
219e3ae4c20SLaurent Pinchart      -
220e3ae4c20SLaurent Pinchart      -
221e3ae4c20SLaurent Pinchart      -
222e3ae4c20SLaurent Pinchart    * - 1
223e3ae4c20SLaurent Pinchart      - Y
224e3ae4c20SLaurent Pinchart      -
225e3ae4c20SLaurent Pinchart      - Y
226e3ae4c20SLaurent Pinchart      -
227e3ae4c20SLaurent Pinchart      - Y
228e3ae4c20SLaurent Pinchart      -
229e3ae4c20SLaurent Pinchart      - Y
230e3ae4c20SLaurent Pinchart    * -
231e3ae4c20SLaurent Pinchart      -
232e3ae4c20SLaurent Pinchart      -
233e3ae4c20SLaurent Pinchart      -
234e3ae4c20SLaurent Pinchart      - C
235e3ae4c20SLaurent Pinchart      -
236e3ae4c20SLaurent Pinchart      -
237e3ae4c20SLaurent Pinchart      -
238e3ae4c20SLaurent Pinchart    * - 2
239e3ae4c20SLaurent Pinchart      - Y
240e3ae4c20SLaurent Pinchart      -
241e3ae4c20SLaurent Pinchart      - Y
242e3ae4c20SLaurent Pinchart      -
243e3ae4c20SLaurent Pinchart      - Y
244e3ae4c20SLaurent Pinchart      -
245e3ae4c20SLaurent Pinchart      - Y
246e3ae4c20SLaurent Pinchart    * -
247e3ae4c20SLaurent Pinchart      -
248e3ae4c20SLaurent Pinchart      -
249e3ae4c20SLaurent Pinchart      -
250e3ae4c20SLaurent Pinchart      -
251e3ae4c20SLaurent Pinchart      -
252e3ae4c20SLaurent Pinchart      -
253e3ae4c20SLaurent Pinchart      -
254e3ae4c20SLaurent Pinchart    * - 3
255e3ae4c20SLaurent Pinchart      - Y
256e3ae4c20SLaurent Pinchart      -
257e3ae4c20SLaurent Pinchart      - Y
258e3ae4c20SLaurent Pinchart      -
259e3ae4c20SLaurent Pinchart      - Y
260e3ae4c20SLaurent Pinchart      -
261e3ae4c20SLaurent Pinchart      - Y
26254f38fcaSMauro Carvalho Chehab
26354f38fcaSMauro Carvalho Chehab
26454f38fcaSMauro Carvalho Chehab.. toctree::
26554f38fcaSMauro Carvalho Chehab    :maxdepth: 1
26654f38fcaSMauro Carvalho Chehab
26754f38fcaSMauro Carvalho Chehab    pixfmt-packed-yuv
268*da785536SLaurent Pinchart    pixfmt-yuv-planar
269af4f4505SLaurent Pinchart    pixfmt-yuv-luma
27054f38fcaSMauro Carvalho Chehab    pixfmt-y8i
27154f38fcaSMauro Carvalho Chehab    pixfmt-y12i
27254f38fcaSMauro Carvalho Chehab    pixfmt-uv8
27354f38fcaSMauro Carvalho Chehab    pixfmt-m420
274