xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun.. _v4l2-pix-fmt-ipu3-sbggr10:
4*4882a593Smuzhiyun.. _v4l2-pix-fmt-ipu3-sgbrg10:
5*4882a593Smuzhiyun.. _v4l2-pix-fmt-ipu3-sgrbg10:
6*4882a593Smuzhiyun.. _v4l2-pix-fmt-ipu3-srggb10:
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun**********************************************************************************************************************************************
9*4882a593SmuzhiyunV4L2_PIX_FMT_IPU3_SBGGR10 ('ip3b'), V4L2_PIX_FMT_IPU3_SGBRG10 ('ip3g'), V4L2_PIX_FMT_IPU3_SGRBG10 ('ip3G'), V4L2_PIX_FMT_IPU3_SRGGB10 ('ip3r')
10*4882a593Smuzhiyun**********************************************************************************************************************************************
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun10-bit Bayer formats
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunDescription
15*4882a593Smuzhiyun===========
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunThese four pixel formats are used by Intel IPU3 driver, they are raw
18*4882a593SmuzhiyunsRGB / Bayer formats with 10 bits per sample with every 25 pixels packed
19*4882a593Smuzhiyunto 32 bytes leaving 6 most significant bits padding in the last byte.
20*4882a593SmuzhiyunThe format is little endian.
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunIn other respects this format is similar to :ref:`V4L2-PIX-FMT-SRGGB10`.
23*4882a593SmuzhiyunBelow is an example of a small image in V4L2_PIX_FMT_IPU3_SBGGR10 format.
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun**Byte Order.**
26*4882a593SmuzhiyunEach cell is one byte.
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|p{4.0cm}|p{4.0cm}|
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun.. flat-table::
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun    * - start + 0:
33*4882a593Smuzhiyun      - B\ :sub:`0000low`
34*4882a593Smuzhiyun      - G\ :sub:`0001low`\ (bits 7--2)
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun        B\ :sub:`0000high`\ (bits 1--0)
37*4882a593Smuzhiyun      - B\ :sub:`0002low`\ (bits 7--4)
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun        G\ :sub:`0001high`\ (bits 3--0)
40*4882a593Smuzhiyun      - G\ :sub:`0003low`\ (bits 7--6)
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun        B\ :sub:`0002high`\ (bits 5--0)
43*4882a593Smuzhiyun    * - start + 4:
44*4882a593Smuzhiyun      - G\ :sub:`0003high`
45*4882a593Smuzhiyun      - B\ :sub:`0004low`
46*4882a593Smuzhiyun      - G\ :sub:`0005low`\ (bits 7--2)
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun        B\ :sub:`0004high`\ (bits 1--0)
49*4882a593Smuzhiyun      - B\ :sub:`0006low`\ (bits 7--4)
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun        G\ :sub:`0005high`\ (bits 3--0)
52*4882a593Smuzhiyun    * - start + 8:
53*4882a593Smuzhiyun      - G\ :sub:`0007low`\ (bits 7--6)
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun        B\ :sub:`0006high`\ (bits 5--0)
56*4882a593Smuzhiyun      - G\ :sub:`0007high`
57*4882a593Smuzhiyun      - B\ :sub:`0008low`
58*4882a593Smuzhiyun      - G\ :sub:`0009low`\ (bits 7--2)
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun        B\ :sub:`0008high`\ (bits 1--0)
61*4882a593Smuzhiyun    * - start + 12:
62*4882a593Smuzhiyun      - B\ :sub:`0010low`\ (bits 7--4)
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun        G\ :sub:`0009high`\ (bits 3--0)
65*4882a593Smuzhiyun      - G\ :sub:`0011low`\ (bits 7--6)
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun        B\ :sub:`0010high`\ (bits 5--0)
68*4882a593Smuzhiyun      - G\ :sub:`0011high`
69*4882a593Smuzhiyun      - B\ :sub:`0012low`
70*4882a593Smuzhiyun    * - start + 16:
71*4882a593Smuzhiyun      - G\ :sub:`0013low`\ (bits 7--2)
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun        B\ :sub:`0012high`\ (bits 1--0)
74*4882a593Smuzhiyun      - B\ :sub:`0014low`\ (bits 7--4)
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun        G\ :sub:`0013high`\ (bits 3--0)
77*4882a593Smuzhiyun      - G\ :sub:`0015low`\ (bits 7--6)
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun        B\ :sub:`0014high`\ (bits 5--0)
80*4882a593Smuzhiyun      - G\ :sub:`0015high`
81*4882a593Smuzhiyun    * - start + 20
82*4882a593Smuzhiyun      - B\ :sub:`0016low`
83*4882a593Smuzhiyun      - G\ :sub:`0017low`\ (bits 7--2)
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun        B\ :sub:`0016high`\ (bits 1--0)
86*4882a593Smuzhiyun      - B\ :sub:`0018low`\ (bits 7--4)
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun        G\ :sub:`0017high`\ (bits 3--0)
89*4882a593Smuzhiyun      - G\ :sub:`0019low`\ (bits 7--6)
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun        B\ :sub:`0018high`\ (bits 5--0)
92*4882a593Smuzhiyun    * - start + 24:
93*4882a593Smuzhiyun      - G\ :sub:`0019high`
94*4882a593Smuzhiyun      - B\ :sub:`0020low`
95*4882a593Smuzhiyun      - G\ :sub:`0021low`\ (bits 7--2)
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun        B\ :sub:`0020high`\ (bits 1--0)
98*4882a593Smuzhiyun      - B\ :sub:`0022low`\ (bits 7--4)
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun        G\ :sub:`0021high`\ (bits 3--0)
101*4882a593Smuzhiyun    * - start + 28:
102*4882a593Smuzhiyun      - G\ :sub:`0023low`\ (bits 7--6)
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun        B\ :sub:`0022high`\ (bits 5--0)
105*4882a593Smuzhiyun      - G\ :sub:`0023high`
106*4882a593Smuzhiyun      - B\ :sub:`0024low`
107*4882a593Smuzhiyun      - B\ :sub:`0024high`\ (bits 1--0)
108*4882a593Smuzhiyun    * - start + 32:
109*4882a593Smuzhiyun      - G\ :sub:`0100low`
110*4882a593Smuzhiyun      - R\ :sub:`0101low`\ (bits 7--2)
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun        G\ :sub:`0100high`\ (bits 1--0)
113*4882a593Smuzhiyun      - G\ :sub:`0102low`\ (bits 7--4)
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun        R\ :sub:`0101high`\ (bits 3--0)
116*4882a593Smuzhiyun      - R\ :sub:`0103low`\ (bits 7--6)
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun        G\ :sub:`0102high`\ (bits 5--0)
119*4882a593Smuzhiyun    * - start + 36:
120*4882a593Smuzhiyun      - R\ :sub:`0103high`
121*4882a593Smuzhiyun      - G\ :sub:`0104low`
122*4882a593Smuzhiyun      - R\ :sub:`0105low`\ (bits 7--2)
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun        G\ :sub:`0104high`\ (bits 1--0)
125*4882a593Smuzhiyun      - G\ :sub:`0106low`\ (bits 7--4)
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun        R\ :sub:`0105high`\ (bits 3--0)
128*4882a593Smuzhiyun    * - start + 40:
129*4882a593Smuzhiyun      - R\ :sub:`0107low`\ (bits 7--6)
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun        G\ :sub:`0106high`\ (bits 5--0)
132*4882a593Smuzhiyun      - R\ :sub:`0107high`
133*4882a593Smuzhiyun      - G\ :sub:`0108low`
134*4882a593Smuzhiyun      - R\ :sub:`0109low`\ (bits 7--2)
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun        G\ :sub:`0108high`\ (bits 1--0)
137*4882a593Smuzhiyun    * - start + 44:
138*4882a593Smuzhiyun      - G\ :sub:`0110low`\ (bits 7--4)
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun        R\ :sub:`0109high`\ (bits 3--0)
141*4882a593Smuzhiyun      - R\ :sub:`0111low`\ (bits 7--6)
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun        G\ :sub:`0110high`\ (bits 5--0)
144*4882a593Smuzhiyun      - R\ :sub:`0111high`
145*4882a593Smuzhiyun      - G\ :sub:`0112low`
146*4882a593Smuzhiyun    * - start + 48:
147*4882a593Smuzhiyun      - R\ :sub:`0113low`\ (bits 7--2)
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun        G\ :sub:`0112high`\ (bits 1--0)
150*4882a593Smuzhiyun      - G\ :sub:`0114low`\ (bits 7--4)
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun        R\ :sub:`0113high`\ (bits 3--0)
153*4882a593Smuzhiyun      - R\ :sub:`0115low`\ (bits 7--6)
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun        G\ :sub:`0114high`\ (bits 5--0)
156*4882a593Smuzhiyun      - R\ :sub:`0115high`
157*4882a593Smuzhiyun    * - start + 52:
158*4882a593Smuzhiyun      - G\ :sub:`0116low`
159*4882a593Smuzhiyun      - R\ :sub:`0117low`\ (bits 7--2)
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun        G\ :sub:`0116high`\ (bits 1--0)
162*4882a593Smuzhiyun      - G\ :sub:`0118low`\ (bits 7--4)
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun        R\ :sub:`0117high`\ (bits 3--0)
165*4882a593Smuzhiyun      - R\ :sub:`0119low`\ (bits 7--6)
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun        G\ :sub:`0118high`\ (bits 5--0)
168*4882a593Smuzhiyun    * - start + 56:
169*4882a593Smuzhiyun      - R\ :sub:`0119high`
170*4882a593Smuzhiyun      - G\ :sub:`0120low`
171*4882a593Smuzhiyun      - R\ :sub:`0121low`\ (bits 7--2)
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun        G\ :sub:`0120high`\ (bits 1--0)
174*4882a593Smuzhiyun      - G\ :sub:`0122low`\ (bits 7--4)
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun        R\ :sub:`0121high`\ (bits 3--0)
177*4882a593Smuzhiyun    * - start + 60:
178*4882a593Smuzhiyun      - R\ :sub:`0123low`\ (bits 7--6)
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun        G\ :sub:`0122high`\ (bits 5--0)
181*4882a593Smuzhiyun      - R\ :sub:`0123high`
182*4882a593Smuzhiyun      - G\ :sub:`0124low`
183*4882a593Smuzhiyun      - G\ :sub:`0124high`\ (bits 1--0)
184*4882a593Smuzhiyun    * - start + 64:
185*4882a593Smuzhiyun      - B\ :sub:`0200low`
186*4882a593Smuzhiyun      - G\ :sub:`0201low`\ (bits 7--2)
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun        B\ :sub:`0200high`\ (bits 1--0)
189*4882a593Smuzhiyun      - B\ :sub:`0202low`\ (bits 7--4)
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun        G\ :sub:`0201high`\ (bits 3--0)
192*4882a593Smuzhiyun      - G\ :sub:`0203low`\ (bits 7--6)
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun        B\ :sub:`0202high`\ (bits 5--0)
195*4882a593Smuzhiyun    * - start + 68:
196*4882a593Smuzhiyun      - G\ :sub:`0203high`
197*4882a593Smuzhiyun      - B\ :sub:`0204low`
198*4882a593Smuzhiyun      - G\ :sub:`0205low`\ (bits 7--2)
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun        B\ :sub:`0204high`\ (bits 1--0)
201*4882a593Smuzhiyun      - B\ :sub:`0206low`\ (bits 7--4)
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun        G\ :sub:`0205high`\ (bits 3--0)
204*4882a593Smuzhiyun    * - start + 72:
205*4882a593Smuzhiyun      - G\ :sub:`0207low`\ (bits 7--6)
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun        B\ :sub:`0206high`\ (bits 5--0)
208*4882a593Smuzhiyun      - G\ :sub:`0207high`
209*4882a593Smuzhiyun      - B\ :sub:`0208low`
210*4882a593Smuzhiyun      - G\ :sub:`0209low`\ (bits 7--2)
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun        B\ :sub:`0208high`\ (bits 1--0)
213*4882a593Smuzhiyun    * - start + 76:
214*4882a593Smuzhiyun      - B\ :sub:`0210low`\ (bits 7--4)
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun        G\ :sub:`0209high`\ (bits 3--0)
217*4882a593Smuzhiyun      - G\ :sub:`0211low`\ (bits 7--6)
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun        B\ :sub:`0210high`\ (bits 5--0)
220*4882a593Smuzhiyun      - G\ :sub:`0211high`
221*4882a593Smuzhiyun      - B\ :sub:`0212low`
222*4882a593Smuzhiyun    * - start + 80:
223*4882a593Smuzhiyun      - G\ :sub:`0213low`\ (bits 7--2)
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun        B\ :sub:`0212high`\ (bits 1--0)
226*4882a593Smuzhiyun      - B\ :sub:`0214low`\ (bits 7--4)
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun        G\ :sub:`0213high`\ (bits 3--0)
229*4882a593Smuzhiyun      - G\ :sub:`0215low`\ (bits 7--6)
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun        B\ :sub:`0214high`\ (bits 5--0)
232*4882a593Smuzhiyun      - G\ :sub:`0215high`
233*4882a593Smuzhiyun    * - start + 84:
234*4882a593Smuzhiyun      - B\ :sub:`0216low`
235*4882a593Smuzhiyun      - G\ :sub:`0217low`\ (bits 7--2)
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun        B\ :sub:`0216high`\ (bits 1--0)
238*4882a593Smuzhiyun      - B\ :sub:`0218low`\ (bits 7--4)
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun        G\ :sub:`0217high`\ (bits 3--0)
241*4882a593Smuzhiyun      - G\ :sub:`0219low`\ (bits 7--6)
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun        B\ :sub:`0218high`\ (bits 5--0)
244*4882a593Smuzhiyun    * - start + 88:
245*4882a593Smuzhiyun      - G\ :sub:`0219high`
246*4882a593Smuzhiyun      - B\ :sub:`0220low`
247*4882a593Smuzhiyun      - G\ :sub:`0221low`\ (bits 7--2)
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun        B\ :sub:`0220high`\ (bits 1--0)
250*4882a593Smuzhiyun      - B\ :sub:`0222low`\ (bits 7--4)
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun        G\ :sub:`0221high`\ (bits 3--0)
253*4882a593Smuzhiyun    * - start + 92:
254*4882a593Smuzhiyun      - G\ :sub:`0223low`\ (bits 7--6)
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun        B\ :sub:`0222high`\ (bits 5--0)
257*4882a593Smuzhiyun      - G\ :sub:`0223high`
258*4882a593Smuzhiyun      - B\ :sub:`0224low`
259*4882a593Smuzhiyun      - B\ :sub:`0224high`\ (bits 1--0)
260*4882a593Smuzhiyun    * - start + 96:
261*4882a593Smuzhiyun      - G\ :sub:`0300low`
262*4882a593Smuzhiyun      - R\ :sub:`0301low`\ (bits 7--2)
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun        G\ :sub:`0300high`\ (bits 1--0)
265*4882a593Smuzhiyun      - G\ :sub:`0302low`\ (bits 7--4)
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun        R\ :sub:`0301high`\ (bits 3--0)
268*4882a593Smuzhiyun      - R\ :sub:`0303low`\ (bits 7--6)
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun        G\ :sub:`0302high`\ (bits 5--0)
271*4882a593Smuzhiyun    * - start + 100:
272*4882a593Smuzhiyun      - R\ :sub:`0303high`
273*4882a593Smuzhiyun      - G\ :sub:`0304low`
274*4882a593Smuzhiyun      - R\ :sub:`0305low`\ (bits 7--2)
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun        G\ :sub:`0304high`\ (bits 1--0)
277*4882a593Smuzhiyun      - G\ :sub:`0306low`\ (bits 7--4)
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun        R\ :sub:`0305high`\ (bits 3--0)
280*4882a593Smuzhiyun    * - start + 104:
281*4882a593Smuzhiyun      - R\ :sub:`0307low`\ (bits 7--6)
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun        G\ :sub:`0306high`\ (bits 5--0)
284*4882a593Smuzhiyun      - R\ :sub:`0307high`
285*4882a593Smuzhiyun      - G\ :sub:`0308low`
286*4882a593Smuzhiyun      - R\ :sub:`0309low`\ (bits 7--2)
287*4882a593Smuzhiyun
288*4882a593Smuzhiyun        G\ :sub:`0308high`\ (bits 1--0)
289*4882a593Smuzhiyun    * - start + 108:
290*4882a593Smuzhiyun      - G\ :sub:`0310low`\ (bits 7--4)
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun        R\ :sub:`0309high`\ (bits 3--0)
293*4882a593Smuzhiyun      - R\ :sub:`0311low`\ (bits 7--6)
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun        G\ :sub:`0310high`\ (bits 5--0)
296*4882a593Smuzhiyun      - R\ :sub:`0311high`
297*4882a593Smuzhiyun      - G\ :sub:`0312low`
298*4882a593Smuzhiyun    * - start + 112:
299*4882a593Smuzhiyun      - R\ :sub:`0313low`\ (bits 7--2)
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun        G\ :sub:`0312high`\ (bits 1--0)
302*4882a593Smuzhiyun      - G\ :sub:`0314low`\ (bits 7--4)
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun        R\ :sub:`0313high`\ (bits 3--0)
305*4882a593Smuzhiyun      - R\ :sub:`0315low`\ (bits 7--6)
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun        G\ :sub:`0314high`\ (bits 5--0)
308*4882a593Smuzhiyun      - R\ :sub:`0315high`
309*4882a593Smuzhiyun    * - start + 116:
310*4882a593Smuzhiyun      - G\ :sub:`0316low`
311*4882a593Smuzhiyun      - R\ :sub:`0317low`\ (bits 7--2)
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun        G\ :sub:`0316high`\ (bits 1--0)
314*4882a593Smuzhiyun      - G\ :sub:`0318low`\ (bits 7--4)
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun        R\ :sub:`0317high`\ (bits 3--0)
317*4882a593Smuzhiyun      - R\ :sub:`0319low`\ (bits 7--6)
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun        G\ :sub:`0318high`\ (bits 5--0)
320*4882a593Smuzhiyun    * - start + 120:
321*4882a593Smuzhiyun      - R\ :sub:`0319high`
322*4882a593Smuzhiyun      - G\ :sub:`0320low`
323*4882a593Smuzhiyun      - R\ :sub:`0321low`\ (bits 7--2)
324*4882a593Smuzhiyun
325*4882a593Smuzhiyun        G\ :sub:`0320high`\ (bits 1--0)
326*4882a593Smuzhiyun      - G\ :sub:`0322low`\ (bits 7--4)
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun        R\ :sub:`0321high`\ (bits 3--0)
329*4882a593Smuzhiyun    * - start + 124:
330*4882a593Smuzhiyun      - R\ :sub:`0323low`\ (bits 7--6)
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun        G\ :sub:`0322high`\ (bits 5--0)
333*4882a593Smuzhiyun      - R\ :sub:`0323high`
334*4882a593Smuzhiyun      - G\ :sub:`0324low`
335*4882a593Smuzhiyun      - G\ :sub:`0324high`\ (bits 1--0)
336