xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/v4l/pixfmt-yuv444m.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun.. _V4L2-PIX-FMT-YUV444M:
4*4882a593Smuzhiyun.. _v4l2-pix-fmt-yvu444m:
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun************************************************************
7*4882a593SmuzhiyunV4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M ('YM42')
8*4882a593Smuzhiyun************************************************************
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunV4L2_PIX_FMT_YVU444M
12*4882a593SmuzhiyunPlanar formats with full horizontal resolution, also known as YUV and
13*4882a593SmuzhiyunYVU 4:4:4
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunDescription
17*4882a593Smuzhiyun===========
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunThis is a multi-planar format, as opposed to a packed format. The three
20*4882a593Smuzhiyuncomponents are separated into three sub-images or planes.
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunThe Y plane is first. The Y plane has one byte per pixel. For
23*4882a593Smuzhiyun``V4L2_PIX_FMT_YUV444M`` the Cb data constitutes the second plane which
24*4882a593Smuzhiyunis the same width and height as the Y plane (and as the image). The Cr
25*4882a593Smuzhiyundata, just like the Cb plane, is in the third plane.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun``V4L2_PIX_FMT_YVU444M`` is the same except the Cr data is stored in the
28*4882a593Smuzhiyunsecond plane and the Cb data in the third plane.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunIf the Y plane has pad bytes after each row, then the Cb and Cr planes
31*4882a593Smuzhiyunhave the same number of pad bytes after their rows.
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun``V4L2_PIX_FMT_YUV444M`` and ``V4L2_PIX_FMT_YUV444M`` are intended to be
34*4882a593Smuzhiyunused only in drivers and applications that support the multi-planar API,
35*4882a593Smuzhiyundescribed in :ref:`planar-apis`.
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun**Byte Order.**
38*4882a593SmuzhiyunEach cell is one byte.
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun.. flat-table::
42*4882a593Smuzhiyun    :header-rows:  0
43*4882a593Smuzhiyun    :stub-columns: 0
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun    * - start0 + 0:
46*4882a593Smuzhiyun      - Y'\ :sub:`00`
47*4882a593Smuzhiyun      - Y'\ :sub:`01`
48*4882a593Smuzhiyun      - Y'\ :sub:`02`
49*4882a593Smuzhiyun      - Y'\ :sub:`03`
50*4882a593Smuzhiyun    * - start0 + 4:
51*4882a593Smuzhiyun      - Y'\ :sub:`10`
52*4882a593Smuzhiyun      - Y'\ :sub:`11`
53*4882a593Smuzhiyun      - Y'\ :sub:`12`
54*4882a593Smuzhiyun      - Y'\ :sub:`13`
55*4882a593Smuzhiyun    * - start0 + 8:
56*4882a593Smuzhiyun      - Y'\ :sub:`20`
57*4882a593Smuzhiyun      - Y'\ :sub:`21`
58*4882a593Smuzhiyun      - Y'\ :sub:`22`
59*4882a593Smuzhiyun      - Y'\ :sub:`23`
60*4882a593Smuzhiyun    * - start0 + 12:
61*4882a593Smuzhiyun      - Y'\ :sub:`30`
62*4882a593Smuzhiyun      - Y'\ :sub:`31`
63*4882a593Smuzhiyun      - Y'\ :sub:`32`
64*4882a593Smuzhiyun      - Y'\ :sub:`33`
65*4882a593Smuzhiyun    * -
66*4882a593Smuzhiyun    * - start1 + 0:
67*4882a593Smuzhiyun      - Cb\ :sub:`00`
68*4882a593Smuzhiyun      - Cb\ :sub:`01`
69*4882a593Smuzhiyun      - Cb\ :sub:`02`
70*4882a593Smuzhiyun      - Cb\ :sub:`03`
71*4882a593Smuzhiyun    * - start1 + 4:
72*4882a593Smuzhiyun      - Cb\ :sub:`10`
73*4882a593Smuzhiyun      - Cb\ :sub:`11`
74*4882a593Smuzhiyun      - Cb\ :sub:`12`
75*4882a593Smuzhiyun      - Cb\ :sub:`13`
76*4882a593Smuzhiyun    * - start1 + 8:
77*4882a593Smuzhiyun      - Cb\ :sub:`20`
78*4882a593Smuzhiyun      - Cb\ :sub:`21`
79*4882a593Smuzhiyun      - Cb\ :sub:`22`
80*4882a593Smuzhiyun      - Cb\ :sub:`23`
81*4882a593Smuzhiyun    * - start1 + 12:
82*4882a593Smuzhiyun      - Cb\ :sub:`20`
83*4882a593Smuzhiyun      - Cb\ :sub:`21`
84*4882a593Smuzhiyun      - Cb\ :sub:`32`
85*4882a593Smuzhiyun      - Cb\ :sub:`33`
86*4882a593Smuzhiyun    * -
87*4882a593Smuzhiyun    * - start2 + 0:
88*4882a593Smuzhiyun      - Cr\ :sub:`00`
89*4882a593Smuzhiyun      - Cr\ :sub:`01`
90*4882a593Smuzhiyun      - Cr\ :sub:`02`
91*4882a593Smuzhiyun      - Cr\ :sub:`03`
92*4882a593Smuzhiyun    * - start2 + 4:
93*4882a593Smuzhiyun      - Cr\ :sub:`10`
94*4882a593Smuzhiyun      - Cr\ :sub:`11`
95*4882a593Smuzhiyun      - Cr\ :sub:`12`
96*4882a593Smuzhiyun      - Cr\ :sub:`13`
97*4882a593Smuzhiyun    * - start2 + 8:
98*4882a593Smuzhiyun      - Cr\ :sub:`20`
99*4882a593Smuzhiyun      - Cr\ :sub:`21`
100*4882a593Smuzhiyun      - Cr\ :sub:`22`
101*4882a593Smuzhiyun      - Cr\ :sub:`23`
102*4882a593Smuzhiyun    * - start2 + 12:
103*4882a593Smuzhiyun      - Cr\ :sub:`30`
104*4882a593Smuzhiyun      - Cr\ :sub:`31`
105*4882a593Smuzhiyun      - Cr\ :sub:`32`
106*4882a593Smuzhiyun      - Cr\ :sub:`33`
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun**Color Sample Location:**
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun.. flat-table::
114*4882a593Smuzhiyun    :header-rows:  0
115*4882a593Smuzhiyun    :stub-columns: 0
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun    * -
118*4882a593Smuzhiyun      - 0
119*4882a593Smuzhiyun      - 1
120*4882a593Smuzhiyun      - 2
121*4882a593Smuzhiyun      - 3
122*4882a593Smuzhiyun    * - 0
123*4882a593Smuzhiyun      - YC
124*4882a593Smuzhiyun      - YC
125*4882a593Smuzhiyun      - YC
126*4882a593Smuzhiyun      - YC
127*4882a593Smuzhiyun    * - 1
128*4882a593Smuzhiyun      - YC
129*4882a593Smuzhiyun      - YC
130*4882a593Smuzhiyun      - YC
131*4882a593Smuzhiyun      - YC
132*4882a593Smuzhiyun    * - 2
133*4882a593Smuzhiyun      - YC
134*4882a593Smuzhiyun      - YC
135*4882a593Smuzhiyun      - YC
136*4882a593Smuzhiyun      - YC
137*4882a593Smuzhiyun    * - 3
138*4882a593Smuzhiyun      - YC
139*4882a593Smuzhiyun      - YC
140*4882a593Smuzhiyun      - YC
141*4882a593Smuzhiyun      - YC
142