xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/v4l/pixfmt-packed-yuv.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun.. _packed-yuv:
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun******************
6*4882a593SmuzhiyunPacked YUV formats
7*4882a593Smuzhiyun******************
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunDescription
10*4882a593Smuzhiyun===========
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunSimilar to the packed RGB formats these formats store the Y, Cb and Cr
13*4882a593Smuzhiyuncomponent of each pixel in one 16 or 32 bit word.
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun.. raw:: latex
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun    \begingroup
19*4882a593Smuzhiyun    \tiny
20*4882a593Smuzhiyun    \setlength{\tabcolsep}{2pt}
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun.. _packed-yuv-formats:
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun.. tabularcolumns:: |p{2.5cm}|p{0.69cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun.. flat-table:: Packed YUV Image Formats
27*4882a593Smuzhiyun    :header-rows:  2
28*4882a593Smuzhiyun    :stub-columns: 0
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun    * - Identifier
31*4882a593Smuzhiyun      - Code
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun      - :cspan:`7` Byte 0 in memory
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun      - :cspan:`7` Byte 1
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun      - :cspan:`7` Byte 2
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun      - :cspan:`7` Byte 3
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun    * -
42*4882a593Smuzhiyun      -
43*4882a593Smuzhiyun      - 7
44*4882a593Smuzhiyun      - 6
45*4882a593Smuzhiyun      - 5
46*4882a593Smuzhiyun      - 4
47*4882a593Smuzhiyun      - 3
48*4882a593Smuzhiyun      - 2
49*4882a593Smuzhiyun      - 1
50*4882a593Smuzhiyun      - 0
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun      - 7
53*4882a593Smuzhiyun      - 6
54*4882a593Smuzhiyun      - 5
55*4882a593Smuzhiyun      - 4
56*4882a593Smuzhiyun      - 3
57*4882a593Smuzhiyun      - 2
58*4882a593Smuzhiyun      - 1
59*4882a593Smuzhiyun      - 0
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun      - 7
62*4882a593Smuzhiyun      - 6
63*4882a593Smuzhiyun      - 5
64*4882a593Smuzhiyun      - 4
65*4882a593Smuzhiyun      - 3
66*4882a593Smuzhiyun      - 2
67*4882a593Smuzhiyun      - 1
68*4882a593Smuzhiyun      - 0
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun      - 7
71*4882a593Smuzhiyun      - 6
72*4882a593Smuzhiyun      - 5
73*4882a593Smuzhiyun      - 4
74*4882a593Smuzhiyun      - 3
75*4882a593Smuzhiyun      - 2
76*4882a593Smuzhiyun      - 1
77*4882a593Smuzhiyun      - 0
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-YUV444:
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_YUV444``
82*4882a593Smuzhiyun      - 'Y444'
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun      - Cb\ :sub:`3`
85*4882a593Smuzhiyun      - Cb\ :sub:`2`
86*4882a593Smuzhiyun      - Cb\ :sub:`1`
87*4882a593Smuzhiyun      - Cb\ :sub:`0`
88*4882a593Smuzhiyun      - Cr\ :sub:`3`
89*4882a593Smuzhiyun      - Cr\ :sub:`2`
90*4882a593Smuzhiyun      - Cr\ :sub:`1`
91*4882a593Smuzhiyun      - Cr\ :sub:`0`
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun      - a\ :sub:`3`
94*4882a593Smuzhiyun      - a\ :sub:`2`
95*4882a593Smuzhiyun      - a\ :sub:`1`
96*4882a593Smuzhiyun      - a\ :sub:`0`
97*4882a593Smuzhiyun      - Y'\ :sub:`3`
98*4882a593Smuzhiyun      - Y'\ :sub:`2`
99*4882a593Smuzhiyun      - Y'\ :sub:`1`
100*4882a593Smuzhiyun      - Y'\ :sub:`0`
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun      -  :cspan:`15`
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-YUV555:
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_YUV555``
107*4882a593Smuzhiyun      - 'YUVO'
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun      - Cb\ :sub:`2`
110*4882a593Smuzhiyun      - Cb\ :sub:`1`
111*4882a593Smuzhiyun      - Cb\ :sub:`0`
112*4882a593Smuzhiyun      - Cr\ :sub:`4`
113*4882a593Smuzhiyun      - Cr\ :sub:`3`
114*4882a593Smuzhiyun      - Cr\ :sub:`2`
115*4882a593Smuzhiyun      - Cr\ :sub:`1`
116*4882a593Smuzhiyun      - Cr\ :sub:`0`
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun      - a
119*4882a593Smuzhiyun      - Y'\ :sub:`4`
120*4882a593Smuzhiyun      - Y'\ :sub:`3`
121*4882a593Smuzhiyun      - Y'\ :sub:`2`
122*4882a593Smuzhiyun      - Y'\ :sub:`1`
123*4882a593Smuzhiyun      - Y'\ :sub:`0`
124*4882a593Smuzhiyun      - Cb\ :sub:`4`
125*4882a593Smuzhiyun      - Cb\ :sub:`3`
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun      -  :cspan:`15`
128*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-YUV565:
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_YUV565``
131*4882a593Smuzhiyun      - 'YUVP'
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun      - Cb\ :sub:`2`
134*4882a593Smuzhiyun      - Cb\ :sub:`1`
135*4882a593Smuzhiyun      - Cb\ :sub:`0`
136*4882a593Smuzhiyun      - Cr\ :sub:`4`
137*4882a593Smuzhiyun      - Cr\ :sub:`3`
138*4882a593Smuzhiyun      - Cr\ :sub:`2`
139*4882a593Smuzhiyun      - Cr\ :sub:`1`
140*4882a593Smuzhiyun      - Cr\ :sub:`0`
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun      - Y'\ :sub:`4`
143*4882a593Smuzhiyun      - Y'\ :sub:`3`
144*4882a593Smuzhiyun      - Y'\ :sub:`2`
145*4882a593Smuzhiyun      - Y'\ :sub:`1`
146*4882a593Smuzhiyun      - Y'\ :sub:`0`
147*4882a593Smuzhiyun      - Cb\ :sub:`5`
148*4882a593Smuzhiyun      - Cb\ :sub:`4`
149*4882a593Smuzhiyun      - Cb\ :sub:`3`
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun      -  :cspan:`15`
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-YUV32:
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_YUV32``
156*4882a593Smuzhiyun      - 'YUV4'
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun      - a\ :sub:`7`
159*4882a593Smuzhiyun      - a\ :sub:`6`
160*4882a593Smuzhiyun      - a\ :sub:`5`
161*4882a593Smuzhiyun      - a\ :sub:`4`
162*4882a593Smuzhiyun      - a\ :sub:`3`
163*4882a593Smuzhiyun      - a\ :sub:`2`
164*4882a593Smuzhiyun      - a\ :sub:`1`
165*4882a593Smuzhiyun      - a\ :sub:`0`
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun      - Y'\ :sub:`7`
168*4882a593Smuzhiyun      - Y'\ :sub:`6`
169*4882a593Smuzhiyun      - Y'\ :sub:`5`
170*4882a593Smuzhiyun      - Y'\ :sub:`4`
171*4882a593Smuzhiyun      - Y'\ :sub:`3`
172*4882a593Smuzhiyun      - Y'\ :sub:`2`
173*4882a593Smuzhiyun      - Y'\ :sub:`1`
174*4882a593Smuzhiyun      - Y'\ :sub:`0`
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun      - Cb\ :sub:`7`
177*4882a593Smuzhiyun      - Cb\ :sub:`6`
178*4882a593Smuzhiyun      - Cb\ :sub:`5`
179*4882a593Smuzhiyun      - Cb\ :sub:`4`
180*4882a593Smuzhiyun      - Cb\ :sub:`3`
181*4882a593Smuzhiyun      - Cb\ :sub:`2`
182*4882a593Smuzhiyun      - Cb\ :sub:`1`
183*4882a593Smuzhiyun      - Cb\ :sub:`0`
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun      - Cr\ :sub:`7`
186*4882a593Smuzhiyun      - Cr\ :sub:`6`
187*4882a593Smuzhiyun      - Cr\ :sub:`5`
188*4882a593Smuzhiyun      - Cr\ :sub:`4`
189*4882a593Smuzhiyun      - Cr\ :sub:`3`
190*4882a593Smuzhiyun      - Cr\ :sub:`2`
191*4882a593Smuzhiyun      - Cr\ :sub:`1`
192*4882a593Smuzhiyun      - Cr\ :sub:`0`
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-AYUV32:
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_AYUV32``
197*4882a593Smuzhiyun      - 'AYUV'
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun      - a\ :sub:`7`
200*4882a593Smuzhiyun      - a\ :sub:`6`
201*4882a593Smuzhiyun      - a\ :sub:`5`
202*4882a593Smuzhiyun      - a\ :sub:`4`
203*4882a593Smuzhiyun      - a\ :sub:`3`
204*4882a593Smuzhiyun      - a\ :sub:`2`
205*4882a593Smuzhiyun      - a\ :sub:`1`
206*4882a593Smuzhiyun      - a\ :sub:`0`
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun      - Y'\ :sub:`7`
209*4882a593Smuzhiyun      - Y'\ :sub:`6`
210*4882a593Smuzhiyun      - Y'\ :sub:`5`
211*4882a593Smuzhiyun      - Y'\ :sub:`4`
212*4882a593Smuzhiyun      - Y'\ :sub:`3`
213*4882a593Smuzhiyun      - Y'\ :sub:`2`
214*4882a593Smuzhiyun      - Y'\ :sub:`1`
215*4882a593Smuzhiyun      - Y'\ :sub:`0`
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun      - Cb\ :sub:`7`
218*4882a593Smuzhiyun      - Cb\ :sub:`6`
219*4882a593Smuzhiyun      - Cb\ :sub:`5`
220*4882a593Smuzhiyun      - Cb\ :sub:`4`
221*4882a593Smuzhiyun      - Cb\ :sub:`3`
222*4882a593Smuzhiyun      - Cb\ :sub:`2`
223*4882a593Smuzhiyun      - Cb\ :sub:`1`
224*4882a593Smuzhiyun      - Cb\ :sub:`0`
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun      - Cr\ :sub:`7`
227*4882a593Smuzhiyun      - Cr\ :sub:`6`
228*4882a593Smuzhiyun      - Cr\ :sub:`5`
229*4882a593Smuzhiyun      - Cr\ :sub:`4`
230*4882a593Smuzhiyun      - Cr\ :sub:`3`
231*4882a593Smuzhiyun      - Cr\ :sub:`2`
232*4882a593Smuzhiyun      - Cr\ :sub:`1`
233*4882a593Smuzhiyun      - Cr\ :sub:`0`
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-XYUV32:
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_XYUV32``
238*4882a593Smuzhiyun      - 'XYUV'
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun      -
241*4882a593Smuzhiyun      -
242*4882a593Smuzhiyun      -
243*4882a593Smuzhiyun      -
244*4882a593Smuzhiyun      -
245*4882a593Smuzhiyun      -
246*4882a593Smuzhiyun      -
247*4882a593Smuzhiyun      -
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun      - Y'\ :sub:`7`
250*4882a593Smuzhiyun      - Y'\ :sub:`6`
251*4882a593Smuzhiyun      - Y'\ :sub:`5`
252*4882a593Smuzhiyun      - Y'\ :sub:`4`
253*4882a593Smuzhiyun      - Y'\ :sub:`3`
254*4882a593Smuzhiyun      - Y'\ :sub:`2`
255*4882a593Smuzhiyun      - Y'\ :sub:`1`
256*4882a593Smuzhiyun      - Y'\ :sub:`0`
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun      - Cb\ :sub:`7`
259*4882a593Smuzhiyun      - Cb\ :sub:`6`
260*4882a593Smuzhiyun      - Cb\ :sub:`5`
261*4882a593Smuzhiyun      - Cb\ :sub:`4`
262*4882a593Smuzhiyun      - Cb\ :sub:`3`
263*4882a593Smuzhiyun      - Cb\ :sub:`2`
264*4882a593Smuzhiyun      - Cb\ :sub:`1`
265*4882a593Smuzhiyun      - Cb\ :sub:`0`
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun      - Cr\ :sub:`7`
268*4882a593Smuzhiyun      - Cr\ :sub:`6`
269*4882a593Smuzhiyun      - Cr\ :sub:`5`
270*4882a593Smuzhiyun      - Cr\ :sub:`4`
271*4882a593Smuzhiyun      - Cr\ :sub:`3`
272*4882a593Smuzhiyun      - Cr\ :sub:`2`
273*4882a593Smuzhiyun      - Cr\ :sub:`1`
274*4882a593Smuzhiyun      - Cr\ :sub:`0`
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-VUYA32:
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_VUYA32``
279*4882a593Smuzhiyun      - 'VUYA'
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun      - Cr\ :sub:`7`
282*4882a593Smuzhiyun      - Cr\ :sub:`6`
283*4882a593Smuzhiyun      - Cr\ :sub:`5`
284*4882a593Smuzhiyun      - Cr\ :sub:`4`
285*4882a593Smuzhiyun      - Cr\ :sub:`3`
286*4882a593Smuzhiyun      - Cr\ :sub:`2`
287*4882a593Smuzhiyun      - Cr\ :sub:`1`
288*4882a593Smuzhiyun      - Cr\ :sub:`0`
289*4882a593Smuzhiyun
290*4882a593Smuzhiyun      - Cb\ :sub:`7`
291*4882a593Smuzhiyun      - Cb\ :sub:`6`
292*4882a593Smuzhiyun      - Cb\ :sub:`5`
293*4882a593Smuzhiyun      - Cb\ :sub:`4`
294*4882a593Smuzhiyun      - Cb\ :sub:`3`
295*4882a593Smuzhiyun      - Cb\ :sub:`2`
296*4882a593Smuzhiyun      - Cb\ :sub:`1`
297*4882a593Smuzhiyun      - Cb\ :sub:`0`
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun      - Y'\ :sub:`7`
300*4882a593Smuzhiyun      - Y'\ :sub:`6`
301*4882a593Smuzhiyun      - Y'\ :sub:`5`
302*4882a593Smuzhiyun      - Y'\ :sub:`4`
303*4882a593Smuzhiyun      - Y'\ :sub:`3`
304*4882a593Smuzhiyun      - Y'\ :sub:`2`
305*4882a593Smuzhiyun      - Y'\ :sub:`1`
306*4882a593Smuzhiyun      - Y'\ :sub:`0`
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun      - a\ :sub:`7`
309*4882a593Smuzhiyun      - a\ :sub:`6`
310*4882a593Smuzhiyun      - a\ :sub:`5`
311*4882a593Smuzhiyun      - a\ :sub:`4`
312*4882a593Smuzhiyun      - a\ :sub:`3`
313*4882a593Smuzhiyun      - a\ :sub:`2`
314*4882a593Smuzhiyun      - a\ :sub:`1`
315*4882a593Smuzhiyun      - a\ :sub:`0`
316*4882a593Smuzhiyun
317*4882a593Smuzhiyun    * .. _V4L2-PIX-FMT-VUYX32:
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun      - ``V4L2_PIX_FMT_VUYX32``
320*4882a593Smuzhiyun      - 'VUYX'
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun      - Cr\ :sub:`7`
323*4882a593Smuzhiyun      - Cr\ :sub:`6`
324*4882a593Smuzhiyun      - Cr\ :sub:`5`
325*4882a593Smuzhiyun      - Cr\ :sub:`4`
326*4882a593Smuzhiyun      - Cr\ :sub:`3`
327*4882a593Smuzhiyun      - Cr\ :sub:`2`
328*4882a593Smuzhiyun      - Cr\ :sub:`1`
329*4882a593Smuzhiyun      - Cr\ :sub:`0`
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun      - Cb\ :sub:`7`
332*4882a593Smuzhiyun      - Cb\ :sub:`6`
333*4882a593Smuzhiyun      - Cb\ :sub:`5`
334*4882a593Smuzhiyun      - Cb\ :sub:`4`
335*4882a593Smuzhiyun      - Cb\ :sub:`3`
336*4882a593Smuzhiyun      - Cb\ :sub:`2`
337*4882a593Smuzhiyun      - Cb\ :sub:`1`
338*4882a593Smuzhiyun      - Cb\ :sub:`0`
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun      - Y'\ :sub:`7`
341*4882a593Smuzhiyun      - Y'\ :sub:`6`
342*4882a593Smuzhiyun      - Y'\ :sub:`5`
343*4882a593Smuzhiyun      - Y'\ :sub:`4`
344*4882a593Smuzhiyun      - Y'\ :sub:`3`
345*4882a593Smuzhiyun      - Y'\ :sub:`2`
346*4882a593Smuzhiyun      - Y'\ :sub:`1`
347*4882a593Smuzhiyun      - Y'\ :sub:`0`
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun      -
350*4882a593Smuzhiyun      -
351*4882a593Smuzhiyun      -
352*4882a593Smuzhiyun      -
353*4882a593Smuzhiyun      -
354*4882a593Smuzhiyun      -
355*4882a593Smuzhiyun      -
356*4882a593Smuzhiyun      -
357*4882a593Smuzhiyun
358*4882a593Smuzhiyun.. raw:: latex
359*4882a593Smuzhiyun
360*4882a593Smuzhiyun    \endgroup
361*4882a593Smuzhiyun
362*4882a593Smuzhiyun.. note::
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun    #) Bit 7 is the most significant bit;
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun    #) The value of a = alpha bits is undefined when reading from the driver,
367*4882a593Smuzhiyun       ignored when writing to the driver, except when alpha blending has
368*4882a593Smuzhiyun       been negotiated for a :ref:`Video Overlay <overlay>` or
369*4882a593Smuzhiyun       :ref:`Video Output Overlay <osd>` for the formats Y444, YUV555 and
370*4882a593Smuzhiyun       YUV4. However, for formats AYUV32 and VUYA32, the alpha component is
371*4882a593Smuzhiyun       expected to contain a meaningful value that can be used by drivers
372*4882a593Smuzhiyun       and applications. And, the formats XYUV32 and VUYX32 contain undefined
373*4882a593Smuzhiyun       alpha values that must be ignored by all applications and drivers.
374