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

Linux 6.18.37 · Userspace API / Media / V4L

예약 형식 식별자

명세가 layout을 정의하지 않는 vendor·driver 전용 FourCC와 용도를 정리합니다.

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

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

1. 요약·해설

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

요약·해설

pixfmt-reserved.rst:1-287

예약 형식은 이름 충돌 방지용 registry이며 37개 FourCC의 driver 용도, S5CI 추출 절차와 현대 opaque compression의 변환 요구를 정리합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3 .. _pixfmt-reserved:
4
5 ***************************
6 Reserved Format Identifiers
7 ***************************
8
9 These formats are not defined by this specification, they are just
10 listed for reference and to avoid naming conflicts. If you want to
11 register your own format, send an e-mail to the linux-media mailing list
12 `https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__
13 for inclusion in the ``videodev2.h`` file. If you want to share your
14 format with other developers add a link to your documentation and send a
15 copy to the linux-media mailing list for inclusion in this section. If
16 you think your format should be listed in a standard format section
17 please make a proposal on the linux-media mailing list.
18
19
20 .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
21
22 .. raw:: latex
23
24 \small
25
26 .. _reserved-formats:
27
28 .. flat-table:: Reserved Image Formats
29 :header-rows: 1
30 :stub-columns: 0
31 :widths: 3 1 4
32
33 * - Identifier
34 - Code
35 - Details
36 * .. _V4L2-PIX-FMT-DV:
37
38 - ``V4L2_PIX_FMT_DV``
39 - 'dvsd'
40 - unknown
41 * .. _V4L2-PIX-FMT-ET61X251:
42
43 - ``V4L2_PIX_FMT_ET61X251``
44 - 'E625'
45 - Compressed format of the ET61X251 driver.
46 * .. _V4L2-PIX-FMT-HI240:
47
48 - ``V4L2_PIX_FMT_HI240``
49 - 'HI24'
50 - 8 bit RGB format used by the BTTV driver.
51 * .. _V4L2-PIX-FMT-CPIA1:
52
53 - ``V4L2_PIX_FMT_CPIA1``
54 - 'CPIA'
55 - YUV format used by the gspca cpia1 driver.
56 * .. _V4L2-PIX-FMT-JPGL:
57
58 - ``V4L2_PIX_FMT_JPGL``
59 - 'JPGL'
60 - JPEG-Light format (Pegasus Lossless JPEG) used in Divio webcams NW
61 80x.
62 * .. _V4L2-PIX-FMT-SPCA501:
63
64 - ``V4L2_PIX_FMT_SPCA501``
65 - 'S501'
66 - YUYV per line used by the gspca driver.
67 * .. _V4L2-PIX-FMT-SPCA505:
68
69 - ``V4L2_PIX_FMT_SPCA505``
70 - 'S505'
71 - YYUV per line used by the gspca driver.
72 * .. _V4L2-PIX-FMT-SPCA508:
73
74 - ``V4L2_PIX_FMT_SPCA508``
75 - 'S508'
76 - YUVY per line used by the gspca driver.
77 * .. _V4L2-PIX-FMT-SPCA561:
78
79 - ``V4L2_PIX_FMT_SPCA561``
80 - 'S561'
81 - Compressed GBRG Bayer format used by the gspca driver.
82 * .. _V4L2-PIX-FMT-PAC207:
83
84 - ``V4L2_PIX_FMT_PAC207``
85 - 'P207'
86 - Compressed BGGR Bayer format used by the gspca driver.
87 * .. _V4L2-PIX-FMT-MR97310A:
88
89 - ``V4L2_PIX_FMT_MR97310A``
90 - 'M310'
91 - Compressed BGGR Bayer format used by the gspca driver.
92 * .. _V4L2-PIX-FMT-JL2005BCD:
93
94 - ``V4L2_PIX_FMT_JL2005BCD``
95 - 'JL20'
96 - JPEG compressed RGGB Bayer format used by the gspca driver.
97 * .. _V4L2-PIX-FMT-OV511:
98
99 - ``V4L2_PIX_FMT_OV511``
100 - 'O511'
101 - OV511 JPEG format used by the gspca driver.
102 * .. _V4L2-PIX-FMT-OV518:
103
104 - ``V4L2_PIX_FMT_OV518``
105 - 'O518'
106 - OV518 JPEG format used by the gspca driver.
107 * .. _V4L2-PIX-FMT-PJPG:
108
109 - ``V4L2_PIX_FMT_PJPG``
110 - 'PJPG'
111 - Pixart 73xx JPEG format used by the gspca driver.
112 * .. _V4L2-PIX-FMT-SE401:
113
114 - ``V4L2_PIX_FMT_SE401``
115 - 'S401'
116 - Compressed RGB format used by the gspca se401 driver
117 * .. _V4L2-PIX-FMT-SQ905C:
118
119 - ``V4L2_PIX_FMT_SQ905C``
120 - '905C'
121 - Compressed RGGB bayer format used by the gspca driver.
122 * .. _V4L2-PIX-FMT-MJPEG:
123
124 - ``V4L2_PIX_FMT_MJPEG``
125 - 'MJPG'
126 - Compressed format used by the Zoran driver
127 * .. _V4L2-PIX-FMT-PWC1:
128
129 - ``V4L2_PIX_FMT_PWC1``
130 - 'PWC1'
131 - Compressed format of the PWC driver.
132 * .. _V4L2-PIX-FMT-PWC2:
133
134 - ``V4L2_PIX_FMT_PWC2``
135 - 'PWC2'
136 - Compressed format of the PWC driver.
137 * .. _V4L2-PIX-FMT-SN9C10X:
138
139 - ``V4L2_PIX_FMT_SN9C10X``
140 - 'S910'
141 - Compressed format of the SN9C102 driver.
142 * .. _V4L2-PIX-FMT-SN9C20X-I420:
143
144 - ``V4L2_PIX_FMT_SN9C20X_I420``
145 - 'S920'
146 - YUV 4:2:0 format of the gspca sn9c20x driver.
147 * .. _V4L2-PIX-FMT-SN9C2028:
148
149 - ``V4L2_PIX_FMT_SN9C2028``
150 - 'SONX'
151 - Compressed GBRG bayer format of the gspca sn9c2028 driver.
152 * .. _V4L2-PIX-FMT-STV0680:
153
154 - ``V4L2_PIX_FMT_STV0680``
155 - 'S680'
156 - Bayer format of the gspca stv0680 driver.
157 * .. _V4L2-PIX-FMT-WNVA:
158
159 - ``V4L2_PIX_FMT_WNVA``
160 - 'WNVA'
161 - Used by the Winnov Videum driver,
162 `http://www.thedirks.org/winnov/ <http://www.thedirks.org/winnov/>`__
163 * .. _V4L2-PIX-FMT-TM6000:
164
165 - ``V4L2_PIX_FMT_TM6000``
166 - 'TM60'
167 - Used by Trident tm6000
168 * .. _V4L2-PIX-FMT-CIT-YYVYUY:
169
170 - ``V4L2_PIX_FMT_CIT_YYVYUY``
171 - 'CITV'
172 - Used by xirlink CIT, found at IBM webcams.
173
174 Uses one line of Y then 1 line of VYUY
175 * .. _V4L2-PIX-FMT-KONICA420:
176
177 - ``V4L2_PIX_FMT_KONICA420``
178 - 'KONI'
179 - Used by Konica webcams.
180
181 YUV420 planar in blocks of 256 pixels.
182 * .. _V4L2-PIX-FMT-YYUV:
183
184 - ``V4L2_PIX_FMT_YYUV``
185 - 'YYUV'
186 - unknown
187 * .. _V4L2-PIX-FMT-Y4:
188
189 - ``V4L2_PIX_FMT_Y4``
190 - 'Y04 '
191 - Old 4-bit greyscale format. Only the most significant 4 bits of
192 each byte are used, the other bits are set to 0.
193 * .. _V4L2-PIX-FMT-Y6:
194
195 - ``V4L2_PIX_FMT_Y6``
196 - 'Y06 '
197 - Old 6-bit greyscale format. Only the most significant 6 bits of
198 each byte are used, the other bits are set to 0.
199 * .. _V4L2-PIX-FMT-S5C-UYVY-JPG:
200
201 - ``V4L2_PIX_FMT_S5C_UYVY_JPG``
202 - 'S5CI'
203 - Two-planar format used by Samsung S5C73MX cameras. The first plane
204 contains interleaved JPEG and UYVY image data, followed by meta
205 data in form of an array of offsets to the UYVY data blocks. The
206 actual pointer array follows immediately the interleaved JPEG/UYVY
207 data, the number of entries in this array equals the height of the
208 UYVY image. Each entry is a 4-byte unsigned integer in big endian
209 order and it's an offset to a single pixel line of the UYVY image.
210 The first plane can start either with JPEG or UYVY data chunk. The
211 size of a single UYVY block equals the UYVY image's width
212 multiplied by 2. The size of a JPEG chunk depends on the image and
213 can vary with each line.
214
215 The second plane, at an offset of 4084 bytes, contains a 4-byte
216 offset to the pointer array in the first plane. This offset is
217 followed by a 4-byte value indicating size of the pointer array.
218 All numbers in the second plane are also in big endian order.
219 Remaining data in the second plane is undefined. The information
220 in the second plane allows to easily find location of the pointer
221 array, which can be different for each frame. The size of the
222 pointer array is constant for given UYVY image height.
223
224 In order to extract UYVY and JPEG frames an application can
225 initially set a data pointer to the start of first plane and then
226 add an offset from the first entry of the pointers table. Such a
227 pointer indicates start of an UYVY image pixel line. Whole UYVY
228 line can be copied to a separate buffer. These steps should be
229 repeated for each line, i.e. the number of entries in the pointer
230 array. Anything what's in between the UYVY lines is JPEG data and
231 should be concatenated to form the JPEG stream.
232 * .. _V4L2-PIX-FMT-MT21C:
233
234 - ``V4L2_PIX_FMT_MT21C``
235 - 'MT21'
236 - Compressed two-planar YVU420 format used by Mediatek MT8173, MT8192,
237 MT8195 and more. The compression is lossless. This format have
238 similitude with ``V4L2_PIX_FMT_MM21`` in term of alignment and tiling.
239 It remains an opaque intermediate format and the MDP hardware must be
240 used to convert ``V4L2_PIX_FMT_MT21C`` to ``V4L2_PIX_FMT_NV12M``,
241 ``V4L2_PIX_FMT_YUV420M`` or ``V4L2_PIX_FMT_YVU420``.
242 * .. _V4L2-PIX-FMT-QC08C:
243
244 - ``V4L2_PIX_FMT_QC08C``
245 - 'QC08C'
246 - Compressed Macro-tile 8-Bit YUV420 format used by Qualcomm platforms.
247 It is an opaque intermediate format. The used compression is lossless
248 and it is used by various multimedia hardware blocks like GPU, display
249 controllers, ISP and video accelerators.
250 It contains four planes for progressive video and eight planes for
251 interlaced video.
252 * .. _V4L2-PIX-FMT-QC10C:
253
254 - ``V4L2_PIX_FMT_QC10C``
255 - 'QC10C'
256 - Compressed Macro-tile 10-Bit YUV420 format used by Qualcomm platforms.
257 It is an opaque intermediate format. The used compression is lossless
258 and it is used by various multimedia hardware blocks like GPU, display
259 controllers, ISP and video accelerators.
260 It contains four planes for progressive video.
261 * .. _V4L2-PIX-FMT-AJPG:
262
263 - ``V4L2_PIX_FMT_AJPG``
264 - 'AJPG'
265 - ASPEED JPEG format used by the aspeed-video driver on Aspeed platforms,
266 which is generally adapted for remote KVM.
267 On each frame compression, I will compare the new frame with previous
268 one to decide which macroblock's data is changed, and only the changed
269 macroblocks will be compressed.
270
271 The implementation is based on AST2600 A3 datasheet, revision 0.9, which
272 is not publicly available. Or you can reference Video stream data format
273 – ASPEED mode compression of SDK_User_Guide which available on
274 `github <https://github.com/AspeedTech-BMC/openbmc/releases/>`__.
275
276 Decoder's implementation can be found here,
277 `aspeed_codec <https://github.com/AspeedTech-BMC/aspeed_codec/>`__
278 * .. _V4L2-PIX-FMT-HEXTILE:
279
280 - ``V4L2_PIX_FMT_HEXTILE``
281 - 'HXTL'
282 - Compressed format used by Nuvoton NPCM video driver. This format is
283 defined in Remote Framebuffer Protocol (RFC 6143, chapter 7.7.4 Hextile
284 Encoding).
285 .. raw:: latex
286
287 \normalsize
288

3. 한국어 전문 번역

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

예약 목록의 목적과 등록 절차

1-35

이 절의 형식은 V4L2 명세가 data layout을 정의하는 표준 형식이 아닙니다. 이름 충돌을 피하고 기존 driver가 사용하는 식별자를 참고할 수 있도록 목록만 제공합니다.

새 형식을 등록하려면 linux-media mailing list에 메일을 보내 `videodev2.h`에 포함되도록 요청합니다. 다른 개발자와 형식을 공유하려면 설명 문서 link와 문서 사본을 함께 보내 이 절에 추가하도록 요청합니다. 표준 형식 절에 들어가야 한다고 판단하면 같은 mailing list에서 표준화 제안을 해야 합니다.

새 pixel format 등록
기존 FourCC 충돌 확인Data layout 문서 작성linux-media mailing list에 `videodev2.h` 등록 요청공유 형식이면 문서 link와 사본 제출표준화가 필요하면 별도 proposal 논의

예약 식별자만 추가할지 표준 형식으로 제안할지 구분합니다.

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

.. _pixfmt-reserved:

***************************
Reserved Format Identifiers
***************************

These formats are not defined by this specification, they are just
listed for reference and to avoid naming conflicts. If you want to
register your own format, send an e-mail to the linux-media mailing list
`https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__
for inclusion in the ``videodev2.h`` file. If you want to share your
format with other developers add a link to your documentation and send a
copy to the linux-media mailing list for inclusion in this section. If
you think your format should be listed in a standard format section
please make a proposal on the linux-media mailing list.


.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|

.. raw:: latex

    \small

.. _reserved-formats:

.. flat-table:: Reserved Image Formats
    :header-rows:  1
    :stub-columns: 0
    :widths:       3 1 4

    * - Identifier
      - Code
      - Details

Legacy camera·gspca 형식

36-136
초기 reserved 형식
Identifier / Code전문 번역
`V4L2_PIX_FMT_DV` / `dvsd`세부 형식 미상
`V4L2_PIX_FMT_ET61X251` / `E625`ET61X251 driver의 압축 형식
`V4L2_PIX_FMT_HI240` / `HI24`BTTV driver가 사용하는 8-bit RGB 형식
`V4L2_PIX_FMT_CPIA1` / `CPIA`gspca cpia1 driver가 사용하는 YUV 형식
`V4L2_PIX_FMT_JPGL` / `JPGL`Divio NW80x webcam의 JPEG-Light, 즉 Pegasus Lossless JPEG 형식
`V4L2_PIX_FMT_SPCA501` / `S501`gspca driver의 행별 YUYV
`V4L2_PIX_FMT_SPCA505` / `S505`gspca driver의 행별 YYUV
`V4L2_PIX_FMT_SPCA508` / `S508`gspca driver의 행별 YUVY
`V4L2_PIX_FMT_SPCA561` / `S561`gspca driver가 사용하는 압축 GBRG Bayer
`V4L2_PIX_FMT_PAC207` / `P207`gspca driver가 사용하는 압축 BGGR Bayer
`V4L2_PIX_FMT_MR97310A` / `M310`gspca driver가 사용하는 압축 BGGR Bayer
`V4L2_PIX_FMT_JL2005BCD` / `JL20`gspca driver의 JPEG 압축 RGGB Bayer
`V4L2_PIX_FMT_OV511` / `O511`gspca driver가 사용하는 OV511 JPEG
`V4L2_PIX_FMT_OV518` / `O518`gspca driver가 사용하는 OV518 JPEG
`V4L2_PIX_FMT_PJPG` / `PJPG`gspca driver가 사용하는 Pixart 73xx JPEG
`V4L2_PIX_FMT_SE401` / `S401`gspca se401 driver가 사용하는 압축 RGB
`V4L2_PIX_FMT_SQ905C` / `905C`gspca driver가 사용하는 압축 RGGB Bayer
`V4L2_PIX_FMT_MJPEG` / `MJPG`Zoran driver가 사용하는 압축 형식
`V4L2_PIX_FMT_PWC1` / `PWC1`PWC driver의 압축 형식
`V4L2_PIX_FMT_PWC2` / `PWC2`PWC driver의 압축 형식

원문의 Identifier, FourCC와 driver 용도를 그대로 보존했습니다.

이 목록의 'compressed' 표시는 FourCC 충돌 방지용 설명일 뿐 bitstream을 V4L2 표준으로 규정한다는 뜻이 아닙니다. 실제 parsing은 해당 driver 또는 외부 형식 문서를 따라야 합니다.

    * .. _V4L2-PIX-FMT-DV:

      - ``V4L2_PIX_FMT_DV``
      - 'dvsd'
      - unknown
    * .. _V4L2-PIX-FMT-ET61X251:

      - ``V4L2_PIX_FMT_ET61X251``
      - 'E625'
      - Compressed format of the ET61X251 driver.
    * .. _V4L2-PIX-FMT-HI240:

      - ``V4L2_PIX_FMT_HI240``
      - 'HI24'
      - 8 bit RGB format used by the BTTV driver.
    * .. _V4L2-PIX-FMT-CPIA1:

      - ``V4L2_PIX_FMT_CPIA1``
      - 'CPIA'
      - YUV format used by the gspca cpia1 driver.
    * .. _V4L2-PIX-FMT-JPGL:

      - ``V4L2_PIX_FMT_JPGL``
      - 'JPGL'
      - JPEG-Light format (Pegasus Lossless JPEG) used in Divio webcams NW
	80x.
    * .. _V4L2-PIX-FMT-SPCA501:

      - ``V4L2_PIX_FMT_SPCA501``
      - 'S501'
      - YUYV per line used by the gspca driver.
    * .. _V4L2-PIX-FMT-SPCA505:

      - ``V4L2_PIX_FMT_SPCA505``
      - 'S505'
      - YYUV per line used by the gspca driver.
    * .. _V4L2-PIX-FMT-SPCA508:

      - ``V4L2_PIX_FMT_SPCA508``
      - 'S508'
      - YUVY per line used by the gspca driver.
    * .. _V4L2-PIX-FMT-SPCA561:

      - ``V4L2_PIX_FMT_SPCA561``
      - 'S561'
      - Compressed GBRG Bayer format used by the gspca driver.
    * .. _V4L2-PIX-FMT-PAC207:

      - ``V4L2_PIX_FMT_PAC207``
      - 'P207'
      - Compressed BGGR Bayer format used by the gspca driver.
    * .. _V4L2-PIX-FMT-MR97310A:

      - ``V4L2_PIX_FMT_MR97310A``
      - 'M310'
      - Compressed BGGR Bayer format used by the gspca driver.
    * .. _V4L2-PIX-FMT-JL2005BCD:

      - ``V4L2_PIX_FMT_JL2005BCD``
      - 'JL20'
      - JPEG compressed RGGB Bayer format used by the gspca driver.
    * .. _V4L2-PIX-FMT-OV511:

      - ``V4L2_PIX_FMT_OV511``
      - 'O511'
      - OV511 JPEG format used by the gspca driver.
    * .. _V4L2-PIX-FMT-OV518:

      - ``V4L2_PIX_FMT_OV518``
      - 'O518'
      - OV518 JPEG format used by the gspca driver.
    * .. _V4L2-PIX-FMT-PJPG:

      - ``V4L2_PIX_FMT_PJPG``
      - 'PJPG'
      - Pixart 73xx JPEG format used by the gspca driver.
    * .. _V4L2-PIX-FMT-SE401:

      - ``V4L2_PIX_FMT_SE401``
      - 'S401'
      - Compressed RGB format used by the gspca se401 driver
    * .. _V4L2-PIX-FMT-SQ905C:

      - ``V4L2_PIX_FMT_SQ905C``
      - '905C'
      - Compressed RGGB bayer format used by the gspca driver.
    * .. _V4L2-PIX-FMT-MJPEG:

      - ``V4L2_PIX_FMT_MJPEG``
      - 'MJPG'
      - Compressed format used by the Zoran driver
    * .. _V4L2-PIX-FMT-PWC1:

      - ``V4L2_PIX_FMT_PWC1``
      - 'PWC1'
      - Compressed format of the PWC driver.
    * .. _V4L2-PIX-FMT-PWC2:

      - ``V4L2_PIX_FMT_PWC2``
      - 'PWC2'
      - Compressed format of the PWC driver.

Sonix·Winnov·Konica·구형 greyscale

137-198
특수 legacy 형식
Identifier / Code전문 번역
`V4L2_PIX_FMT_SN9C10X` / `S910`SN9C102 driver의 압축 형식
`V4L2_PIX_FMT_SN9C20X_I420` / `S920`gspca sn9c20x driver의 YUV 4:2:0
`V4L2_PIX_FMT_SN9C2028` / `SONX`gspca sn9c2028 driver의 압축 GBRG Bayer
`V4L2_PIX_FMT_STV0680` / `S680`gspca stv0680 driver의 Bayer 형식
`V4L2_PIX_FMT_WNVA` / `WNVA`Winnov Videum driver가 사용하는 형식. 원문은 `http://www.thedirks.org/winnov/`를 참조합니다.
`V4L2_PIX_FMT_TM6000` / `TM60`Trident tm6000이 사용하는 형식
`V4L2_PIX_FMT_CIT_YYVYUY` / `CITV`IBM webcam에서 발견되는 Xirlink CIT 형식. Y 한 행 다음 VYUY 한 행을 사용
`V4L2_PIX_FMT_KONICA420` / `KONI`Konica webcam 형식. 256-pixel block 단위 YUV420 planar
`V4L2_PIX_FMT_YYUV` / `YYUV`세부 형식 미상
`V4L2_PIX_FMT_Y4` / `Y04 `구형 4-bit greyscale. Byte의 상위 4 bit만 사용하고 하위 4 bit는 0
`V4L2_PIX_FMT_Y6` / `Y06 `구형 6-bit greyscale. Byte의 상위 6 bit만 사용하고 하위 2 bit는 0

행 구성, block 구성과 유효 bit를 포함합니다.

형식 구분 주의
Identifier / Code전문 번역
CITVY row와 VYUY row를 교대로 해석
KONI일반 선형 YUV420이 아니라 256-pixel block 기준
Y04 / Y06Sample은 byte 상위 bit에 정렬되고 나머지는 반드시 0

이 절의 이름은 memory layout을 직접 추론하기에 충분하지 않습니다.

    * .. _V4L2-PIX-FMT-SN9C10X:

      - ``V4L2_PIX_FMT_SN9C10X``
      - 'S910'
      - Compressed format of the SN9C102 driver.
    * .. _V4L2-PIX-FMT-SN9C20X-I420:

      - ``V4L2_PIX_FMT_SN9C20X_I420``
      - 'S920'
      - YUV 4:2:0 format of the gspca sn9c20x driver.
    * .. _V4L2-PIX-FMT-SN9C2028:

      - ``V4L2_PIX_FMT_SN9C2028``
      - 'SONX'
      - Compressed GBRG bayer format of the gspca sn9c2028 driver.
    * .. _V4L2-PIX-FMT-STV0680:

      - ``V4L2_PIX_FMT_STV0680``
      - 'S680'
      - Bayer format of the gspca stv0680 driver.
    * .. _V4L2-PIX-FMT-WNVA:

      - ``V4L2_PIX_FMT_WNVA``
      - 'WNVA'
      - Used by the Winnov Videum driver,
	`http://www.thedirks.org/winnov/ <http://www.thedirks.org/winnov/>`__
    * .. _V4L2-PIX-FMT-TM6000:

      - ``V4L2_PIX_FMT_TM6000``
      - 'TM60'
      - Used by Trident tm6000
    * .. _V4L2-PIX-FMT-CIT-YYVYUY:

      - ``V4L2_PIX_FMT_CIT_YYVYUY``
      - 'CITV'
      - Used by xirlink CIT, found at IBM webcams.

	Uses one line of Y then 1 line of VYUY
    * .. _V4L2-PIX-FMT-KONICA420:

      - ``V4L2_PIX_FMT_KONICA420``
      - 'KONI'
      - Used by Konica webcams.

	YUV420 planar in blocks of 256 pixels.
    * .. _V4L2-PIX-FMT-YYUV:

      - ``V4L2_PIX_FMT_YYUV``
      - 'YYUV'
      - unknown
    * .. _V4L2-PIX-FMT-Y4:

      - ``V4L2_PIX_FMT_Y4``
      - 'Y04 '
      - Old 4-bit greyscale format. Only the most significant 4 bits of
	each byte are used, the other bits are set to 0.
    * .. _V4L2-PIX-FMT-Y6:

      - ``V4L2_PIX_FMT_Y6``
      - 'Y06 '
      - Old 6-bit greyscale format. Only the most significant 6 bits of
	each byte are used, the other bits are set to 0.

S5C·Mediatek·Qualcomm·ASPEED·Hextile

199-287

`V4L2_PIX_FMT_S5C_UYVY_JPG` (`S5CI`)는 Samsung S5C73MX camera의 two-planar 형식입니다. 첫 plane에는 JPEG와 UYVY image data가 교차 배치되고, 그 뒤에 UYVY block offset 배열 형태의 metadata가 옵니다. 배열 entry 수는 UYVY image height와 같고 각 entry는 big-endian 4-byte unsigned integer이며 UYVY pixel 행 하나의 offset입니다.

첫 plane은 JPEG 또는 UYVY chunk 어느 쪽으로도 시작할 수 있습니다. UYVY block 하나의 크기는 image width 곱하기 2이고 JPEG chunk 크기는 image 내용에 따라 행마다 달라질 수 있습니다.

둘째 plane의 offset 4084에는 첫 plane의 pointer 배열 위치를 가리키는 4-byte offset이 있고, 이어지는 4 byte는 pointer 배열 크기입니다. 둘째 plane의 수치도 모두 big-endian이며 나머지 data는 undefined입니다. 이 정보로 frame마다 달라질 수 있는 pointer 배열 위치를 찾고, UYVY height가 같을 때 일정한 배열 크기를 확인할 수 있습니다.

S5CI에서 UYVY와 JPEG 분리
둘째 plane offset 4084에서 pointer table offset과 size 읽기첫 plane 시작 주소에 첫 table entry offset 더하기가리키는 UYVY pixel 행을 별도 buffer로 복사모든 table entry, 즉 모든 image 행에 대해 반복UYVY 행 사이의 byte를 순서대로 이어 JPEG stream 구성

Pointer table을 이용한 원문의 추출 절차입니다.

현대 reserved·opaque 형식
Identifier / Code전문 번역
`V4L2_PIX_FMT_S5C_UYVY_JPG` / `S5CI`Samsung S5C73MX의 interleaved JPEG/UYVY two-planar 형식. Offset table과 둘째 plane metadata는 big-endian
`V4L2_PIX_FMT_MT21C` / `MT21`Mediatek MT8173/MT8192/MT8195 등의 lossless compressed two-planar YVU420. MM21과 alignment·tiling이 비슷한 opaque intermediate이며 MDP로 NV12M, YUV420M 또는 YVU420으로 변환
`V4L2_PIX_FMT_QC08C` / `QC08C`Qualcomm의 lossless compressed macro-tile 8-bit YUV420 opaque intermediate. GPU, display controller, ISP, video accelerator가 사용하며 progressive는 4 plane, interlaced는 8 plane
`V4L2_PIX_FMT_QC10C` / `QC10C`Qualcomm의 lossless compressed macro-tile 10-bit YUV420 opaque intermediate. 여러 multimedia hardware block이 사용하며 progressive video는 4 plane
`V4L2_PIX_FMT_AJPG` / `AJPG`Remote KVM용 ASPEED JPEG. 새 frame을 이전 frame과 비교해 변경된 macroblock만 압축. AST2600 A3 datasheet rev 0.9 기반이며 공개 SDK guide와 `aspeed_codec` decoder 구현을 참조
`V4L2_PIX_FMT_HEXTILE` / `HXTL`Nuvoton NPCM video driver의 압축 형식. Remote Framebuffer Protocol RFC 6143 7.7.4 Hextile Encoding에 정의

Hardware block 사이 중간 형식은 직접 해석보다 지정 converter 사용이 우선입니다.

AJPG의 공개 참고 자료는 AspeedTech-BMC OpenBMC release의 SDK_User_Guide에 있는 ASPEED mode compression과 GitHub `aspeed_codec` decoder입니다. 원문이 언급한 AST2600 A3 datasheet revision 0.9는 공개되어 있지 않습니다.

    * .. _V4L2-PIX-FMT-S5C-UYVY-JPG:

      - ``V4L2_PIX_FMT_S5C_UYVY_JPG``
      - 'S5CI'
      - Two-planar format used by Samsung S5C73MX cameras. The first plane
	contains interleaved JPEG and UYVY image data, followed by meta
	data in form of an array of offsets to the UYVY data blocks. The
	actual pointer array follows immediately the interleaved JPEG/UYVY
	data, the number of entries in this array equals the height of the
	UYVY image. Each entry is a 4-byte unsigned integer in big endian
	order and it's an offset to a single pixel line of the UYVY image.
	The first plane can start either with JPEG or UYVY data chunk. The
	size of a single UYVY block equals the UYVY image's width
	multiplied by 2. The size of a JPEG chunk depends on the image and
	can vary with each line.

	The second plane, at an offset of 4084 bytes, contains a 4-byte
	offset to the pointer array in the first plane. This offset is
	followed by a 4-byte value indicating size of the pointer array.
	All numbers in the second plane are also in big endian order.
	Remaining data in the second plane is undefined. The information
	in the second plane allows to easily find location of the pointer
	array, which can be different for each frame. The size of the
	pointer array is constant for given UYVY image height.

	In order to extract UYVY and JPEG frames an application can
	initially set a data pointer to the start of first plane and then
	add an offset from the first entry of the pointers table. Such a
	pointer indicates start of an UYVY image pixel line. Whole UYVY
	line can be copied to a separate buffer. These steps should be
	repeated for each line, i.e. the number of entries in the pointer
	array. Anything what's in between the UYVY lines is JPEG data and
	should be concatenated to form the JPEG stream.
    * .. _V4L2-PIX-FMT-MT21C:

      - ``V4L2_PIX_FMT_MT21C``
      - 'MT21'
      - Compressed two-planar YVU420 format used by Mediatek MT8173, MT8192,
        MT8195 and more. The compression is lossless. This format have
	similitude with ``V4L2_PIX_FMT_MM21`` in term of alignment and tiling.
	It remains an opaque intermediate format and the MDP hardware must be
	used to convert ``V4L2_PIX_FMT_MT21C`` to ``V4L2_PIX_FMT_NV12M``,
	``V4L2_PIX_FMT_YUV420M`` or ``V4L2_PIX_FMT_YVU420``.
    * .. _V4L2-PIX-FMT-QC08C:

      - ``V4L2_PIX_FMT_QC08C``
      - 'QC08C'
      - Compressed Macro-tile 8-Bit YUV420 format used by Qualcomm platforms.
        It is an opaque intermediate format. The used compression is lossless
        and it is used by various multimedia hardware blocks like GPU, display
        controllers, ISP and video accelerators.
        It contains four planes for progressive video and eight planes for
        interlaced video.
    * .. _V4L2-PIX-FMT-QC10C:

      - ``V4L2_PIX_FMT_QC10C``
      - 'QC10C'
      - Compressed Macro-tile 10-Bit YUV420 format used by Qualcomm platforms.
        It is an opaque intermediate format. The used compression is lossless
        and it is used by various multimedia hardware blocks like GPU, display
        controllers, ISP and video accelerators.
        It contains four planes for progressive video.
    * .. _V4L2-PIX-FMT-AJPG:

      - ``V4L2_PIX_FMT_AJPG``
      - 'AJPG'
      - ASPEED JPEG format used by the aspeed-video driver on Aspeed platforms,
        which is generally adapted for remote KVM.
        On each frame compression, I will compare the new frame with previous
        one to decide which macroblock's data is changed, and only the changed
        macroblocks will be compressed.

        The implementation is based on AST2600 A3 datasheet, revision 0.9, which
        is not publicly available. Or you can reference Video stream data format
        – ASPEED mode compression of SDK_User_Guide which available on
        `github <https://github.com/AspeedTech-BMC/openbmc/releases/>`__.

        Decoder's implementation can be found here,
        `aspeed_codec <https://github.com/AspeedTech-BMC/aspeed_codec/>`__
    * .. _V4L2-PIX-FMT-HEXTILE:

      - ``V4L2_PIX_FMT_HEXTILE``
      - 'HXTL'
      - Compressed format used by Nuvoton NPCM video driver. This format is
        defined in Remote Framebuffer Protocol (RFC 6143, chapter 7.7.4 Hextile
        Encoding).
.. raw:: latex

    \normalsize