← Documents Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst GitHub 원문 ↗

Linux 6.18.37 · Userspace API / Media / V4L

Intel IPU3 10-bit Bayer packed 형식

Intel IPU3의 네 Bayer FourCC와 25개 10-bit pixel을 32 byte에 저장하는 bit 배치를 설명합니다.

Source pathDocumentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

pixfmt-srggb10-ipu3.rst:1-345

각 25-pixel 묶음은 250 data bit를 little-endian으로 연결한 32-byte block이며 마지막 byte 상위 6 bit가 padding입니다. SBGGR 예제의 네 행 128 byte를 bit 범위별 표로 재구성했습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

FourCC와 25-pixel packing 규칙

1-36

Intel IPU3 driver는 `V4L2_PIX_FMT_IPU3_SBGGR10` (`ip3b`), `V4L2_PIX_FMT_IPU3_SGBRG10` (`ip3g`), `V4L2_PIX_FMT_IPU3_SGRBG10` (`ip3G`), `V4L2_PIX_FMT_IPU3_SRGGB10` (`ip3r`) 네 가지 raw sRGB/Bayer 형식을 사용합니다. 각 표본은 10 bit입니다.

25개 pixel의 250 data bit를 little-endian bitstream으로 이어 32 byte에 저장합니다. 32 byte는 256 bit이므로 마지막 byte의 최상위 6 bit는 padding입니다. 그 밖의 Bayer 의미는 `V4L2-PIX-FMT-SRGGB10`과 같습니다. 원문 표는 `V4L2_PIX_FMT_IPU3_SBGGR10`의 4행 예를 보여 주며 각 cell은 1 byte입니다.

IPU3 Bayer 25-to-32 packing
Bayer 순서에 따라 25개 표본 선택각 표본의 bit 9:0을 little-endian bitstream에 연속 배치250 data bit를 앞 31 byte와 마지막 byte 하위 2 bit에 기록마지막 byte 상위 6 bit를 padding 0으로 채움다음 25-pixel 묶음을 새 32-byte block에서 시작

한 행의 25개 10-bit 표본을 byte stream으로 바꾸는 절차입니다.

.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later

.. _v4l2-pix-fmt-ipu3-sbggr10:
.. _v4l2-pix-fmt-ipu3-sgbrg10:
.. _v4l2-pix-fmt-ipu3-sgrbg10:
.. _v4l2-pix-fmt-ipu3-srggb10:

**********************************************************************************************************************************************
V4L2_PIX_FMT_IPU3_SBGGR10 ('ip3b'), V4L2_PIX_FMT_IPU3_SGBRG10 ('ip3g'), V4L2_PIX_FMT_IPU3_SGRBG10 ('ip3G'), V4L2_PIX_FMT_IPU3_SRGGB10 ('ip3r')
**********************************************************************************************************************************************

====================
10-bit Bayer formats
====================

Description
===========

These four pixel formats are used by Intel IPU3 driver, they are raw
sRGB / Bayer formats with 10 bits per sample with every 25 pixels packed
to 32 bytes leaving 6 most significant bits padding in the last byte.
The format is little endian.

In other respects this format is similar to :ref:`V4L2-PIX-FMT-SRGGB10`.
Below is an example of a small image in V4L2_PIX_FMT_IPU3_SBGGR10 format.

**Byte Order.**
Each cell is one byte.

.. raw:: latex

    \small

.. tabularcolumns:: |p{0.8cm}|p{3.3cm}|p{3.3cm}|p{3.3cm}|p{3.3cm}|

.. flat-table::

행 00: B/G 25개 pixel, offset 0-31

37-113

첫 Bayer 행은 `B0000, G0001, B0002, ... , B0024` 순서입니다. 아래 표는 원문의 offset 0부터 28까지 4-byte 행을 각 byte의 bit 범위로 다시 적은 것입니다.

IPU3 SBGGR10 행 00 byte 배치
OffsetByte B0Byte B1Byte B2Byte B3
start + 0bits 7:0=B0000[7:0]bits 7:2=G0001[5:0]; bits 1:0=B0000[9:8]bits 7:4=B0002[3:0]; bits 3:0=G0001[9:6]bits 7:6=G0003[1:0]; bits 5:0=B0002[9:4]
start + 4bits 7:0=G0003[9:2]bits 7:0=B0004[7:0]bits 7:2=G0005[5:0]; bits 1:0=B0004[9:8]bits 7:4=B0006[3:0]; bits 3:0=G0005[9:6]
start + 8bits 7:6=G0007[1:0]; bits 5:0=B0006[9:4]bits 7:0=G0007[9:2]bits 7:0=B0008[7:0]bits 7:2=G0009[5:0]; bits 1:0=B0008[9:8]
start + 12bits 7:4=B0010[3:0]; bits 3:0=G0009[9:6]bits 7:6=G0011[1:0]; bits 5:0=B0010[9:4]bits 7:0=G0011[9:2]bits 7:0=B0012[7:0]
start + 16bits 7:2=G0013[5:0]; bits 1:0=B0012[9:8]bits 7:4=B0014[3:0]; bits 3:0=G0013[9:6]bits 7:6=G0015[1:0]; bits 5:0=B0014[9:4]bits 7:0=G0015[9:2]
start + 20bits 7:0=B0016[7:0]bits 7:2=G0017[5:0]; bits 1:0=B0016[9:8]bits 7:4=B0018[3:0]; bits 3:0=G0017[9:6]bits 7:6=G0019[1:0]; bits 5:0=B0018[9:4]
start + 24bits 7:0=G0019[9:2]bits 7:0=B0020[7:0]bits 7:2=G0021[5:0]; bits 1:0=B0020[9:8]bits 7:4=B0022[3:0]; bits 3:0=G0021[9:6]
start + 28bits 7:6=G0023[1:0]; bits 5:0=B0022[9:4]bits 7:0=G0023[9:2]bits 7:0=B0024[7:0]bits 7:2=padding 0; bits 1:0=B0024[9:8]

B와 G 표본 25개가 start+0부터 start+31까지 이어집니다.


    * - start + 0:
      - B\ :sub:`0000low`
      - G\ :sub:`0001low`\ (bits 7--2)

        B\ :sub:`0000high`\ (bits 1--0)
      - B\ :sub:`0002low`\ (bits 7--4)

        G\ :sub:`0001high`\ (bits 3--0)
      - G\ :sub:`0003low`\ (bits 7--6)

        B\ :sub:`0002high`\ (bits 5--0)
    * - start + 4:
      - G\ :sub:`0003high`
      - B\ :sub:`0004low`
      - G\ :sub:`0005low`\ (bits 7--2)

        B\ :sub:`0004high`\ (bits 1--0)
      - B\ :sub:`0006low`\ (bits 7--4)

        G\ :sub:`0005high`\ (bits 3--0)
    * - start + 8:
      - G\ :sub:`0007low`\ (bits 7--6)

        B\ :sub:`0006high`\ (bits 5--0)
      - G\ :sub:`0007high`
      - B\ :sub:`0008low`
      - G\ :sub:`0009low`\ (bits 7--2)

        B\ :sub:`0008high`\ (bits 1--0)
    * - start + 12:
      - B\ :sub:`0010low`\ (bits 7--4)

        G\ :sub:`0009high`\ (bits 3--0)
      - G\ :sub:`0011low`\ (bits 7--6)

        B\ :sub:`0010high`\ (bits 5--0)
      - G\ :sub:`0011high`
      - B\ :sub:`0012low`
    * - start + 16:
      - G\ :sub:`0013low`\ (bits 7--2)

        B\ :sub:`0012high`\ (bits 1--0)
      - B\ :sub:`0014low`\ (bits 7--4)

        G\ :sub:`0013high`\ (bits 3--0)
      - G\ :sub:`0015low`\ (bits 7--6)

        B\ :sub:`0014high`\ (bits 5--0)
      - G\ :sub:`0015high`
    * - start + 20
      - B\ :sub:`0016low`
      - G\ :sub:`0017low`\ (bits 7--2)

        B\ :sub:`0016high`\ (bits 1--0)
      - B\ :sub:`0018low`\ (bits 7--4)

        G\ :sub:`0017high`\ (bits 3--0)
      - G\ :sub:`0019low`\ (bits 7--6)

        B\ :sub:`0018high`\ (bits 5--0)
    * - start + 24:
      - G\ :sub:`0019high`
      - B\ :sub:`0020low`
      - G\ :sub:`0021low`\ (bits 7--2)

        B\ :sub:`0020high`\ (bits 1--0)
      - B\ :sub:`0022low`\ (bits 7--4)

        G\ :sub:`0021high`\ (bits 3--0)
    * - start + 28:
      - G\ :sub:`0023low`\ (bits 7--6)

        B\ :sub:`0022high`\ (bits 5--0)
      - G\ :sub:`0023high`
      - B\ :sub:`0024low`
      - B\ :sub:`0024high`\ (bits 1--0)

행 01: G/R 25개 pixel, offset 32-63

114-189

둘째 Bayer 행은 `G0100, R0101, G0102, ... , G0124` 순서입니다. 같은 10-bit packing 주기를 start+32부터 반복합니다.

IPU3 SBGGR10 행 01 byte 배치
OffsetByte B0Byte B1Byte B2Byte B3
start + 32bits 7:0=G0100[7:0]bits 7:2=R0101[5:0]; bits 1:0=G0100[9:8]bits 7:4=G0102[3:0]; bits 3:0=R0101[9:6]bits 7:6=R0103[1:0]; bits 5:0=G0102[9:4]
start + 36bits 7:0=R0103[9:2]bits 7:0=G0104[7:0]bits 7:2=R0105[5:0]; bits 1:0=G0104[9:8]bits 7:4=G0106[3:0]; bits 3:0=R0105[9:6]
start + 40bits 7:6=R0107[1:0]; bits 5:0=G0106[9:4]bits 7:0=R0107[9:2]bits 7:0=G0108[7:0]bits 7:2=R0109[5:0]; bits 1:0=G0108[9:8]
start + 44bits 7:4=G0110[3:0]; bits 3:0=R0109[9:6]bits 7:6=R0111[1:0]; bits 5:0=G0110[9:4]bits 7:0=R0111[9:2]bits 7:0=G0112[7:0]
start + 48bits 7:2=R0113[5:0]; bits 1:0=G0112[9:8]bits 7:4=G0114[3:0]; bits 3:0=R0113[9:6]bits 7:6=R0115[1:0]; bits 5:0=G0114[9:4]bits 7:0=R0115[9:2]
start + 52bits 7:0=G0116[7:0]bits 7:2=R0117[5:0]; bits 1:0=G0116[9:8]bits 7:4=G0118[3:0]; bits 3:0=R0117[9:6]bits 7:6=R0119[1:0]; bits 5:0=G0118[9:4]
start + 56bits 7:0=R0119[9:2]bits 7:0=G0120[7:0]bits 7:2=R0121[5:0]; bits 1:0=G0120[9:8]bits 7:4=G0122[3:0]; bits 3:0=R0121[9:6]
start + 60bits 7:6=R0123[1:0]; bits 5:0=G0122[9:4]bits 7:0=R0123[9:2]bits 7:0=G0124[7:0]bits 7:2=padding 0; bits 1:0=G0124[9:8]

G와 R 표본 25개가 start+32부터 start+63까지 이어집니다.

    * - start + 32:
      - G\ :sub:`0100low`
      - R\ :sub:`0101low`\ (bits 7--2)

        G\ :sub:`0100high`\ (bits 1--0)
      - G\ :sub:`0102low`\ (bits 7--4)

        R\ :sub:`0101high`\ (bits 3--0)
      - R\ :sub:`0103low`\ (bits 7--6)

        G\ :sub:`0102high`\ (bits 5--0)
    * - start + 36:
      - R\ :sub:`0103high`
      - G\ :sub:`0104low`
      - R\ :sub:`0105low`\ (bits 7--2)

        G\ :sub:`0104high`\ (bits 1--0)
      - G\ :sub:`0106low`\ (bits 7--4)

        R\ :sub:`0105high`\ (bits 3--0)
    * - start + 40:
      - R\ :sub:`0107low`\ (bits 7--6)

        G\ :sub:`0106high`\ (bits 5--0)
      - R\ :sub:`0107high`
      - G\ :sub:`0108low`
      - R\ :sub:`0109low`\ (bits 7--2)

        G\ :sub:`0108high`\ (bits 1--0)
    * - start + 44:
      - G\ :sub:`0110low`\ (bits 7--4)

        R\ :sub:`0109high`\ (bits 3--0)
      - R\ :sub:`0111low`\ (bits 7--6)

        G\ :sub:`0110high`\ (bits 5--0)
      - R\ :sub:`0111high`
      - G\ :sub:`0112low`
    * - start + 48:
      - R\ :sub:`0113low`\ (bits 7--2)

        G\ :sub:`0112high`\ (bits 1--0)
      - G\ :sub:`0114low`\ (bits 7--4)

        R\ :sub:`0113high`\ (bits 3--0)
      - R\ :sub:`0115low`\ (bits 7--6)

        G\ :sub:`0114high`\ (bits 5--0)
      - R\ :sub:`0115high`
    * - start + 52:
      - G\ :sub:`0116low`
      - R\ :sub:`0117low`\ (bits 7--2)

        G\ :sub:`0116high`\ (bits 1--0)
      - G\ :sub:`0118low`\ (bits 7--4)

        R\ :sub:`0117high`\ (bits 3--0)
      - R\ :sub:`0119low`\ (bits 7--6)

        G\ :sub:`0118high`\ (bits 5--0)
    * - start + 56:
      - R\ :sub:`0119high`
      - G\ :sub:`0120low`
      - R\ :sub:`0121low`\ (bits 7--2)

        G\ :sub:`0120high`\ (bits 1--0)
      - G\ :sub:`0122low`\ (bits 7--4)

        R\ :sub:`0121high`\ (bits 3--0)
    * - start + 60:
      - R\ :sub:`0123low`\ (bits 7--6)

        G\ :sub:`0122high`\ (bits 5--0)
      - R\ :sub:`0123high`
      - G\ :sub:`0124low`
      - G\ :sub:`0124high`\ (bits 1--0)

행 02: B/G 25개 pixel, offset 64-95

190-265

셋째 Bayer 행은 `B0200, G0201, B0202, ... , B0224` 순서입니다. 첫 행과 같은 B/G 위상을 start+64에서 다시 시작합니다.

IPU3 SBGGR10 행 02 byte 배치
OffsetByte B0Byte B1Byte B2Byte B3
start + 64bits 7:0=B0200[7:0]bits 7:2=G0201[5:0]; bits 1:0=B0200[9:8]bits 7:4=B0202[3:0]; bits 3:0=G0201[9:6]bits 7:6=G0203[1:0]; bits 5:0=B0202[9:4]
start + 68bits 7:0=G0203[9:2]bits 7:0=B0204[7:0]bits 7:2=G0205[5:0]; bits 1:0=B0204[9:8]bits 7:4=B0206[3:0]; bits 3:0=G0205[9:6]
start + 72bits 7:6=G0207[1:0]; bits 5:0=B0206[9:4]bits 7:0=G0207[9:2]bits 7:0=B0208[7:0]bits 7:2=G0209[5:0]; bits 1:0=B0208[9:8]
start + 76bits 7:4=B0210[3:0]; bits 3:0=G0209[9:6]bits 7:6=G0211[1:0]; bits 5:0=B0210[9:4]bits 7:0=G0211[9:2]bits 7:0=B0212[7:0]
start + 80bits 7:2=G0213[5:0]; bits 1:0=B0212[9:8]bits 7:4=B0214[3:0]; bits 3:0=G0213[9:6]bits 7:6=G0215[1:0]; bits 5:0=B0214[9:4]bits 7:0=G0215[9:2]
start + 84bits 7:0=B0216[7:0]bits 7:2=G0217[5:0]; bits 1:0=B0216[9:8]bits 7:4=B0218[3:0]; bits 3:0=G0217[9:6]bits 7:6=G0219[1:0]; bits 5:0=B0218[9:4]
start + 88bits 7:0=G0219[9:2]bits 7:0=B0220[7:0]bits 7:2=G0221[5:0]; bits 1:0=B0220[9:8]bits 7:4=B0222[3:0]; bits 3:0=G0221[9:6]
start + 92bits 7:6=G0223[1:0]; bits 5:0=B0222[9:4]bits 7:0=G0223[9:2]bits 7:0=B0224[7:0]bits 7:2=padding 0; bits 1:0=B0224[9:8]

B와 G 표본 25개가 start+64부터 start+95까지 이어집니다.

    * - start + 64:
      - B\ :sub:`0200low`
      - G\ :sub:`0201low`\ (bits 7--2)

        B\ :sub:`0200high`\ (bits 1--0)
      - B\ :sub:`0202low`\ (bits 7--4)

        G\ :sub:`0201high`\ (bits 3--0)
      - G\ :sub:`0203low`\ (bits 7--6)

        B\ :sub:`0202high`\ (bits 5--0)
    * - start + 68:
      - G\ :sub:`0203high`
      - B\ :sub:`0204low`
      - G\ :sub:`0205low`\ (bits 7--2)

        B\ :sub:`0204high`\ (bits 1--0)
      - B\ :sub:`0206low`\ (bits 7--4)

        G\ :sub:`0205high`\ (bits 3--0)
    * - start + 72:
      - G\ :sub:`0207low`\ (bits 7--6)

        B\ :sub:`0206high`\ (bits 5--0)
      - G\ :sub:`0207high`
      - B\ :sub:`0208low`
      - G\ :sub:`0209low`\ (bits 7--2)

        B\ :sub:`0208high`\ (bits 1--0)
    * - start + 76:
      - B\ :sub:`0210low`\ (bits 7--4)

        G\ :sub:`0209high`\ (bits 3--0)
      - G\ :sub:`0211low`\ (bits 7--6)

        B\ :sub:`0210high`\ (bits 5--0)
      - G\ :sub:`0211high`
      - B\ :sub:`0212low`
    * - start + 80:
      - G\ :sub:`0213low`\ (bits 7--2)

        B\ :sub:`0212high`\ (bits 1--0)
      - B\ :sub:`0214low`\ (bits 7--4)

        G\ :sub:`0213high`\ (bits 3--0)
      - G\ :sub:`0215low`\ (bits 7--6)

        B\ :sub:`0214high`\ (bits 5--0)
      - G\ :sub:`0215high`
    * - start + 84:
      - B\ :sub:`0216low`
      - G\ :sub:`0217low`\ (bits 7--2)

        B\ :sub:`0216high`\ (bits 1--0)
      - B\ :sub:`0218low`\ (bits 7--4)

        G\ :sub:`0217high`\ (bits 3--0)
      - G\ :sub:`0219low`\ (bits 7--6)

        B\ :sub:`0218high`\ (bits 5--0)
    * - start + 88:
      - G\ :sub:`0219high`
      - B\ :sub:`0220low`
      - G\ :sub:`0221low`\ (bits 7--2)

        B\ :sub:`0220high`\ (bits 1--0)
      - B\ :sub:`0222low`\ (bits 7--4)

        G\ :sub:`0221high`\ (bits 3--0)
    * - start + 92:
      - G\ :sub:`0223low`\ (bits 7--6)

        B\ :sub:`0222high`\ (bits 5--0)
      - G\ :sub:`0223high`
      - B\ :sub:`0224low`
      - B\ :sub:`0224high`\ (bits 1--0)

행 03: G/R 25개 pixel, offset 96-127

266-345

넷째 Bayer 행은 `G0300, R0301, G0302, ... , G0324` 순서입니다. 둘째 행과 같은 G/R 위상을 start+96에서 반복하며 마지막 byte의 bits 7:2는 0 padding이고 bits 1:0에 `G0324[9:8]`이 놓입니다.

IPU3 SBGGR10 행 03 byte 배치
OffsetByte B0Byte B1Byte B2Byte B3
start + 96bits 7:0=G0300[7:0]bits 7:2=R0301[5:0]; bits 1:0=G0300[9:8]bits 7:4=G0302[3:0]; bits 3:0=R0301[9:6]bits 7:6=R0303[1:0]; bits 5:0=G0302[9:4]
start + 100bits 7:0=R0303[9:2]bits 7:0=G0304[7:0]bits 7:2=R0305[5:0]; bits 1:0=G0304[9:8]bits 7:4=G0306[3:0]; bits 3:0=R0305[9:6]
start + 104bits 7:6=R0307[1:0]; bits 5:0=G0306[9:4]bits 7:0=R0307[9:2]bits 7:0=G0308[7:0]bits 7:2=R0309[5:0]; bits 1:0=G0308[9:8]
start + 108bits 7:4=G0310[3:0]; bits 3:0=R0309[9:6]bits 7:6=R0311[1:0]; bits 5:0=G0310[9:4]bits 7:0=R0311[9:2]bits 7:0=G0312[7:0]
start + 112bits 7:2=R0313[5:0]; bits 1:0=G0312[9:8]bits 7:4=G0314[3:0]; bits 3:0=R0313[9:6]bits 7:6=R0315[1:0]; bits 5:0=G0314[9:4]bits 7:0=R0315[9:2]
start + 116bits 7:0=G0316[7:0]bits 7:2=R0317[5:0]; bits 1:0=G0316[9:8]bits 7:4=G0318[3:0]; bits 3:0=R0317[9:6]bits 7:6=R0319[1:0]; bits 5:0=G0318[9:4]
start + 120bits 7:0=R0319[9:2]bits 7:0=G0320[7:0]bits 7:2=R0321[5:0]; bits 1:0=G0320[9:8]bits 7:4=G0322[3:0]; bits 3:0=R0321[9:6]
start + 124bits 7:6=R0323[1:0]; bits 5:0=G0322[9:4]bits 7:0=R0323[9:2]bits 7:0=G0324[7:0]bits 7:2=padding 0; bits 1:0=G0324[9:8]

G와 R 표본 25개가 start+96부터 start+127까지 이어집니다.

    * - start + 96:
      - G\ :sub:`0300low`
      - R\ :sub:`0301low`\ (bits 7--2)

        G\ :sub:`0300high`\ (bits 1--0)
      - G\ :sub:`0302low`\ (bits 7--4)

        R\ :sub:`0301high`\ (bits 3--0)
      - R\ :sub:`0303low`\ (bits 7--6)

        G\ :sub:`0302high`\ (bits 5--0)
    * - start + 100:
      - R\ :sub:`0303high`
      - G\ :sub:`0304low`
      - R\ :sub:`0305low`\ (bits 7--2)

        G\ :sub:`0304high`\ (bits 1--0)
      - G\ :sub:`0306low`\ (bits 7--4)

        R\ :sub:`0305high`\ (bits 3--0)
    * - start + 104:
      - R\ :sub:`0307low`\ (bits 7--6)

        G\ :sub:`0306high`\ (bits 5--0)
      - R\ :sub:`0307high`
      - G\ :sub:`0308low`
      - R\ :sub:`0309low`\ (bits 7--2)

        G\ :sub:`0308high`\ (bits 1--0)
    * - start + 108:
      - G\ :sub:`0310low`\ (bits 7--4)

        R\ :sub:`0309high`\ (bits 3--0)
      - R\ :sub:`0311low`\ (bits 7--6)

        G\ :sub:`0310high`\ (bits 5--0)
      - R\ :sub:`0311high`
      - G\ :sub:`0312low`
    * - start + 112:
      - R\ :sub:`0313low`\ (bits 7--2)

        G\ :sub:`0312high`\ (bits 1--0)
      - G\ :sub:`0314low`\ (bits 7--4)

        R\ :sub:`0313high`\ (bits 3--0)
      - R\ :sub:`0315low`\ (bits 7--6)

        G\ :sub:`0314high`\ (bits 5--0)
      - R\ :sub:`0315high`
    * - start + 116:
      - G\ :sub:`0316low`
      - R\ :sub:`0317low`\ (bits 7--2)

        G\ :sub:`0316high`\ (bits 1--0)
      - G\ :sub:`0318low`\ (bits 7--4)

        R\ :sub:`0317high`\ (bits 3--0)
      - R\ :sub:`0319low`\ (bits 7--6)

        G\ :sub:`0318high`\ (bits 5--0)
    * - start + 120:
      - R\ :sub:`0319high`
      - G\ :sub:`0320low`
      - R\ :sub:`0321low`\ (bits 7--2)

        G\ :sub:`0320high`\ (bits 1--0)
      - G\ :sub:`0322low`\ (bits 7--4)

        R\ :sub:`0321high`\ (bits 3--0)
    * - start + 124:
      - R\ :sub:`0323low`\ (bits 7--6)

        G\ :sub:`0322high`\ (bits 5--0)
      - R\ :sub:`0323high`
      - G\ :sub:`0324low`
      - G\ :sub:`0324high`\ (bits 1--0)

.. raw:: latex

    \normalsize