ffmpeg / libavutil / pixdesc.c @ 80a07f6e
History | View | Annotate | Download (18.3 KB)
1 |
/*
|
---|---|
2 |
* pixel format descriptor
|
3 |
* Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
|
4 |
*
|
5 |
* This file is part of FFmpeg.
|
6 |
*
|
7 |
* FFmpeg is free software; you can redistribute it and/or
|
8 |
* modify it under the terms of the GNU Lesser General Public
|
9 |
* License as published by the Free Software Foundation; either
|
10 |
* version 2.1 of the License, or (at your option) any later version.
|
11 |
*
|
12 |
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
* Lesser General Public License for more details.
|
16 |
*
|
17 |
* You should have received a copy of the GNU Lesser General Public
|
18 |
* License along with FFmpeg; if not, write to the Free Software
|
19 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
*/
|
21 |
|
22 |
#include "pixfmt.h" |
23 |
#include "pixdesc.h" |
24 |
|
25 |
const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
|
26 |
[PIX_FMT_YUV420P] = { |
27 |
.name = "yuv420p",
|
28 |
.nb_components= 3,
|
29 |
.log2_chroma_w= 1,
|
30 |
.log2_chroma_h= 1,
|
31 |
.comp = { |
32 |
{0,0,1,0,7}, /* Y */ |
33 |
{1,0,1,0,7}, /* U */ |
34 |
{2,0,1,0,7}, /* V */ |
35 |
}, |
36 |
}, |
37 |
[PIX_FMT_YUYV422] = { |
38 |
.name = "yuyv422",
|
39 |
.nb_components= 3,
|
40 |
.log2_chroma_w= 1,
|
41 |
.log2_chroma_h= 0,
|
42 |
.comp = { |
43 |
{0,1,1,0,7}, /* Y */ |
44 |
{0,3,2,0,7}, /* U */ |
45 |
{0,3,4,0,7}, /* V */ |
46 |
}, |
47 |
}, |
48 |
[PIX_FMT_RGB24] = { |
49 |
.name = "rgb24",
|
50 |
.nb_components= 3,
|
51 |
.log2_chroma_w= 0,
|
52 |
.log2_chroma_h= 0,
|
53 |
.comp = { |
54 |
{0,2,1,0,7}, /* R */ |
55 |
{0,2,2,0,7}, /* G */ |
56 |
{0,2,3,0,7}, /* B */ |
57 |
}, |
58 |
}, |
59 |
[PIX_FMT_BGR24] = { |
60 |
.name = "bgr24",
|
61 |
.nb_components= 3,
|
62 |
.log2_chroma_w= 0,
|
63 |
.log2_chroma_h= 0,
|
64 |
.comp = { |
65 |
{0,2,1,0,7}, /* B */ |
66 |
{0,2,2,0,7}, /* G */ |
67 |
{0,2,3,0,7}, /* R */ |
68 |
}, |
69 |
}, |
70 |
[PIX_FMT_YUV422P] = { |
71 |
.name = "yuv422p",
|
72 |
.nb_components= 3,
|
73 |
.log2_chroma_w= 1,
|
74 |
.log2_chroma_h= 0,
|
75 |
.comp = { |
76 |
{0,0,1,0,7}, /* Y */ |
77 |
{1,0,1,0,7}, /* U */ |
78 |
{2,0,1,0,7}, /* V */ |
79 |
}, |
80 |
}, |
81 |
[PIX_FMT_YUV444P] = { |
82 |
.name = "yuv444p",
|
83 |
.nb_components= 3,
|
84 |
.log2_chroma_w= 0,
|
85 |
.log2_chroma_h= 0,
|
86 |
.comp = { |
87 |
{0,0,1,0,7}, /* Y */ |
88 |
{1,0,1,0,7}, /* U */ |
89 |
{2,0,1,0,7}, /* V */ |
90 |
}, |
91 |
}, |
92 |
[PIX_FMT_YUV410P] = { |
93 |
.name = "yuv410p",
|
94 |
.nb_components= 3,
|
95 |
.log2_chroma_w= 2,
|
96 |
.log2_chroma_h= 2,
|
97 |
.comp = { |
98 |
{0,0,1,0,7}, /* Y */ |
99 |
{1,0,1,0,7}, /* U */ |
100 |
{2,0,1,0,7}, /* V */ |
101 |
}, |
102 |
}, |
103 |
[PIX_FMT_YUV411P] = { |
104 |
.name = "yuv411p",
|
105 |
.nb_components= 3,
|
106 |
.log2_chroma_w= 2,
|
107 |
.log2_chroma_h= 0,
|
108 |
.comp = { |
109 |
{0,0,1,0,7}, /* Y */ |
110 |
{1,0,1,0,7}, /* U */ |
111 |
{2,0,1,0,7}, /* V */ |
112 |
}, |
113 |
}, |
114 |
[PIX_FMT_GRAY8] = { |
115 |
.name = "gray",
|
116 |
.nb_components= 1,
|
117 |
.log2_chroma_w= 0,
|
118 |
.log2_chroma_h= 0,
|
119 |
.comp = { |
120 |
{0,0,1,0,7}, /* Y */ |
121 |
}, |
122 |
}, |
123 |
[PIX_FMT_MONOWHITE] = { |
124 |
.name = "monow",
|
125 |
.nb_components= 1,
|
126 |
.log2_chroma_w= 0,
|
127 |
.log2_chroma_h= 0,
|
128 |
.comp = { |
129 |
{0,0,1,0,0}, /* Y */ |
130 |
}, |
131 |
.flags = PIX_FMT_BITSTREAM, |
132 |
}, |
133 |
[PIX_FMT_MONOBLACK] = { |
134 |
.name = "monob",
|
135 |
.nb_components= 1,
|
136 |
.log2_chroma_w= 0,
|
137 |
.log2_chroma_h= 0,
|
138 |
.comp = { |
139 |
{0,0,1,7,0}, /* Y */ |
140 |
}, |
141 |
.flags = PIX_FMT_BITSTREAM, |
142 |
}, |
143 |
[PIX_FMT_PAL8] = { |
144 |
.name = "pal8",
|
145 |
.nb_components= 1,
|
146 |
.log2_chroma_w= 0,
|
147 |
.log2_chroma_h= 0,
|
148 |
.comp = { |
149 |
{0,0,1,0,7}, |
150 |
}, |
151 |
.flags = PIX_FMT_PAL, |
152 |
}, |
153 |
[PIX_FMT_YUVJ420P] = { |
154 |
.name = "yuvj420p",
|
155 |
.nb_components= 3,
|
156 |
.log2_chroma_w= 1,
|
157 |
.log2_chroma_h= 1,
|
158 |
.comp = { |
159 |
{0,0,1,0,7}, /* Y */ |
160 |
{1,0,1,0,7}, /* U */ |
161 |
{2,0,1,0,7}, /* V */ |
162 |
}, |
163 |
}, |
164 |
[PIX_FMT_YUVJ422P] = { |
165 |
.name = "yuvj422p",
|
166 |
.nb_components= 3,
|
167 |
.log2_chroma_w= 1,
|
168 |
.log2_chroma_h= 0,
|
169 |
.comp = { |
170 |
{0,0,1,0,7}, /* Y */ |
171 |
{1,0,1,0,7}, /* U */ |
172 |
{2,0,1,0,7}, /* V */ |
173 |
}, |
174 |
}, |
175 |
[PIX_FMT_YUVJ444P] = { |
176 |
.name = "yuvj444p",
|
177 |
.nb_components= 3,
|
178 |
.log2_chroma_w= 0,
|
179 |
.log2_chroma_h= 0,
|
180 |
.comp = { |
181 |
{0,0,1,0,7}, /* Y */ |
182 |
{1,0,1,0,7}, /* U */ |
183 |
{2,0,1,0,7}, /* V */ |
184 |
}, |
185 |
}, |
186 |
[PIX_FMT_XVMC_MPEG2_MC] = { |
187 |
.name = "xvmcmc",
|
188 |
.flags = PIX_FMT_HWACCEL, |
189 |
}, |
190 |
[PIX_FMT_XVMC_MPEG2_IDCT] = { |
191 |
.name = "xvmcidct",
|
192 |
.flags = PIX_FMT_HWACCEL, |
193 |
}, |
194 |
[PIX_FMT_UYVY422] = { |
195 |
.name = "uyvy422",
|
196 |
.nb_components= 3,
|
197 |
.log2_chroma_w= 1,
|
198 |
.log2_chroma_h= 0,
|
199 |
.comp = { |
200 |
{0,1,2,0,7}, /* Y */ |
201 |
{0,3,1,0,7}, /* U */ |
202 |
{0,3,3,0,7}, /* V */ |
203 |
}, |
204 |
}, |
205 |
[PIX_FMT_UYYVYY411] = { |
206 |
.name = "uyyvyy411",
|
207 |
.nb_components= 3,
|
208 |
.log2_chroma_w= 2,
|
209 |
.log2_chroma_h= 0,
|
210 |
.comp = { |
211 |
{0,3,2,0,7}, /* Y */ |
212 |
{0,5,1,0,7}, /* U */ |
213 |
{0,5,4,0,7}, /* V */ |
214 |
}, |
215 |
}, |
216 |
[PIX_FMT_BGR8] = { |
217 |
.name = "bgr8",
|
218 |
.nb_components= 3,
|
219 |
.log2_chroma_w= 0,
|
220 |
.log2_chroma_h= 0,
|
221 |
.comp = { |
222 |
{0,0,1,6,1}, /* B */ |
223 |
{0,0,1,3,2}, /* G */ |
224 |
{0,0,1,0,2}, /* R */ |
225 |
}, |
226 |
.flags = PIX_FMT_PAL, |
227 |
}, |
228 |
[PIX_FMT_BGR4] = { |
229 |
.name = "bgr4",
|
230 |
.nb_components= 3,
|
231 |
.log2_chroma_w= 0,
|
232 |
.log2_chroma_h= 0,
|
233 |
.comp = { |
234 |
{0,3,1,0,0}, /* B */ |
235 |
{0,3,2,0,1}, /* G */ |
236 |
{0,3,4,0,0}, /* R */ |
237 |
}, |
238 |
.flags = PIX_FMT_BITSTREAM, |
239 |
}, |
240 |
[PIX_FMT_BGR4_BYTE] = { |
241 |
.name = "bgr4_byte",
|
242 |
.nb_components= 3,
|
243 |
.log2_chroma_w= 0,
|
244 |
.log2_chroma_h= 0,
|
245 |
.comp = { |
246 |
{0,0,1,3,0}, /* B */ |
247 |
{0,0,1,1,1}, /* G */ |
248 |
{0,0,1,0,0}, /* R */ |
249 |
}, |
250 |
.flags = PIX_FMT_PAL, |
251 |
}, |
252 |
[PIX_FMT_RGB8] = { |
253 |
.name = "rgb8",
|
254 |
.nb_components= 3,
|
255 |
.log2_chroma_w= 0,
|
256 |
.log2_chroma_h= 0,
|
257 |
.comp = { |
258 |
{0,0,1,6,1}, /* R */ |
259 |
{0,0,1,3,2}, /* G */ |
260 |
{0,0,1,0,2}, /* B */ |
261 |
}, |
262 |
.flags = PIX_FMT_PAL, |
263 |
}, |
264 |
[PIX_FMT_RGB4] = { |
265 |
.name = "rgb4",
|
266 |
.nb_components= 3,
|
267 |
.log2_chroma_w= 0,
|
268 |
.log2_chroma_h= 0,
|
269 |
.comp = { |
270 |
{0,3,1,0,0}, /* R */ |
271 |
{0,3,2,0,1}, /* G */ |
272 |
{0,3,4,0,0}, /* B */ |
273 |
}, |
274 |
.flags = PIX_FMT_BITSTREAM, |
275 |
}, |
276 |
[PIX_FMT_RGB4_BYTE] = { |
277 |
.name = "rgb4_byte",
|
278 |
.nb_components= 3,
|
279 |
.log2_chroma_w= 0,
|
280 |
.log2_chroma_h= 0,
|
281 |
.comp = { |
282 |
{0,0,1,3,0}, /* R */ |
283 |
{0,0,1,1,1}, /* G */ |
284 |
{0,0,1,0,0}, /* B */ |
285 |
}, |
286 |
.flags = PIX_FMT_PAL, |
287 |
}, |
288 |
[PIX_FMT_NV12] = { |
289 |
.name = "nv12",
|
290 |
.nb_components= 3,
|
291 |
.log2_chroma_w= 1,
|
292 |
.log2_chroma_h= 1,
|
293 |
.comp = { |
294 |
{0,0,1,0,7}, /* Y */ |
295 |
{1,1,1,0,7}, /* U */ |
296 |
{1,1,2,0,7}, /* V */ |
297 |
}, |
298 |
}, |
299 |
[PIX_FMT_NV21] = { |
300 |
.name = "nv21",
|
301 |
.nb_components= 3,
|
302 |
.log2_chroma_w= 1,
|
303 |
.log2_chroma_h= 1,
|
304 |
.comp = { |
305 |
{0,0,1,0,7}, /* Y */ |
306 |
{1,1,1,0,7}, /* V */ |
307 |
{1,1,2,0,7}, /* U */ |
308 |
}, |
309 |
}, |
310 |
[PIX_FMT_ARGB] = { |
311 |
.name = "argb",
|
312 |
.nb_components= 4,
|
313 |
.log2_chroma_w= 0,
|
314 |
.log2_chroma_h= 0,
|
315 |
.comp = { |
316 |
{0,3,1,0,7}, /* A */ |
317 |
{0,3,2,0,7}, /* R */ |
318 |
{0,3,3,0,7}, /* G */ |
319 |
{0,3,4,0,7}, /* B */ |
320 |
}, |
321 |
}, |
322 |
[PIX_FMT_RGBA] = { |
323 |
.name = "rgba",
|
324 |
.nb_components= 4,
|
325 |
.log2_chroma_w= 0,
|
326 |
.log2_chroma_h= 0,
|
327 |
.comp = { |
328 |
{0,3,1,0,7}, /* R */ |
329 |
{0,3,2,0,7}, /* G */ |
330 |
{0,3,3,0,7}, /* B */ |
331 |
{0,3,4,0,7}, /* A */ |
332 |
}, |
333 |
}, |
334 |
[PIX_FMT_ABGR] = { |
335 |
.name = "abgr",
|
336 |
.nb_components= 4,
|
337 |
.log2_chroma_w= 0,
|
338 |
.log2_chroma_h= 0,
|
339 |
.comp = { |
340 |
{0,3,1,0,7}, /* A */ |
341 |
{0,3,2,0,7}, /* B */ |
342 |
{0,3,3,0,7}, /* G */ |
343 |
{0,3,4,0,7}, /* R */ |
344 |
}, |
345 |
}, |
346 |
[PIX_FMT_BGRA] = { |
347 |
.name = "bgra",
|
348 |
.nb_components= 4,
|
349 |
.log2_chroma_w= 0,
|
350 |
.log2_chroma_h= 0,
|
351 |
.comp = { |
352 |
{0,3,1,0,7}, /* B */ |
353 |
{0,3,2,0,7}, /* G */ |
354 |
{0,3,3,0,7}, /* R */ |
355 |
{0,3,4,0,7}, /* A */ |
356 |
}, |
357 |
}, |
358 |
[PIX_FMT_GRAY16BE] = { |
359 |
.name = "gray16be",
|
360 |
.nb_components= 1,
|
361 |
.log2_chroma_w= 0,
|
362 |
.log2_chroma_h= 0,
|
363 |
.comp = { |
364 |
{0,1,1,0,15}, /* Y */ |
365 |
}, |
366 |
.flags = PIX_FMT_BE, |
367 |
}, |
368 |
[PIX_FMT_GRAY16LE] = { |
369 |
.name = "gray16le",
|
370 |
.nb_components= 1,
|
371 |
.log2_chroma_w= 0,
|
372 |
.log2_chroma_h= 0,
|
373 |
.comp = { |
374 |
{0,1,1,0,15}, /* Y */ |
375 |
}, |
376 |
}, |
377 |
[PIX_FMT_YUV440P] = { |
378 |
.name = "yuv440p",
|
379 |
.nb_components= 3,
|
380 |
.log2_chroma_w= 0,
|
381 |
.log2_chroma_h= 1,
|
382 |
.comp = { |
383 |
{0,0,1,0,7}, /* Y */ |
384 |
{1,0,1,0,7}, /* U */ |
385 |
{2,0,1,0,7}, /* V */ |
386 |
}, |
387 |
}, |
388 |
[PIX_FMT_YUVJ440P] = { |
389 |
.name = "yuvj440p",
|
390 |
.nb_components= 3,
|
391 |
.log2_chroma_w= 0,
|
392 |
.log2_chroma_h= 1,
|
393 |
.comp = { |
394 |
{0,0,1,0,7}, /* Y */ |
395 |
{1,0,1,0,7}, /* U */ |
396 |
{2,0,1,0,7}, /* V */ |
397 |
}, |
398 |
}, |
399 |
[PIX_FMT_YUVA420P] = { |
400 |
.name = "yuva420p",
|
401 |
.nb_components= 4,
|
402 |
.log2_chroma_w= 1,
|
403 |
.log2_chroma_h= 1,
|
404 |
.comp = { |
405 |
{0,0,1,0,7}, /* Y */ |
406 |
{1,0,1,0,7}, /* U */ |
407 |
{2,0,1,0,7}, /* V */ |
408 |
{3,0,1,0,7}, /* A */ |
409 |
}, |
410 |
}, |
411 |
[PIX_FMT_VDPAU_H264] = { |
412 |
.name = "vdpau_h264",
|
413 |
.log2_chroma_w = 1,
|
414 |
.log2_chroma_h = 1,
|
415 |
.flags = PIX_FMT_HWACCEL, |
416 |
}, |
417 |
[PIX_FMT_VDPAU_MPEG1] = { |
418 |
.name = "vdpau_mpeg1",
|
419 |
.log2_chroma_w = 1,
|
420 |
.log2_chroma_h = 1,
|
421 |
.flags = PIX_FMT_HWACCEL, |
422 |
}, |
423 |
[PIX_FMT_VDPAU_MPEG2] = { |
424 |
.name = "vdpau_mpeg2",
|
425 |
.log2_chroma_w = 1,
|
426 |
.log2_chroma_h = 1,
|
427 |
.flags = PIX_FMT_HWACCEL, |
428 |
}, |
429 |
[PIX_FMT_VDPAU_WMV3] = { |
430 |
.name = "vdpau_wmv3",
|
431 |
.log2_chroma_w = 1,
|
432 |
.log2_chroma_h = 1,
|
433 |
.flags = PIX_FMT_HWACCEL, |
434 |
}, |
435 |
[PIX_FMT_VDPAU_VC1] = { |
436 |
.name = "vdpau_vc1",
|
437 |
.log2_chroma_w = 1,
|
438 |
.log2_chroma_h = 1,
|
439 |
.flags = PIX_FMT_HWACCEL, |
440 |
}, |
441 |
[PIX_FMT_VDPAU_MPEG4] = { |
442 |
.name = "vdpau_mpeg4",
|
443 |
.log2_chroma_w = 1,
|
444 |
.log2_chroma_h = 1,
|
445 |
.flags = PIX_FMT_HWACCEL, |
446 |
}, |
447 |
[PIX_FMT_RGB48BE] = { |
448 |
.name = "rgb48be",
|
449 |
.nb_components= 3,
|
450 |
.log2_chroma_w= 0,
|
451 |
.log2_chroma_h= 0,
|
452 |
.comp = { |
453 |
{0,5,1,0,15}, /* R */ |
454 |
{0,5,3,0,15}, /* G */ |
455 |
{0,5,5,0,15}, /* B */ |
456 |
}, |
457 |
.flags = PIX_FMT_BE, |
458 |
}, |
459 |
[PIX_FMT_RGB48LE] = { |
460 |
.name = "rgb48le",
|
461 |
.nb_components= 3,
|
462 |
.log2_chroma_w= 0,
|
463 |
.log2_chroma_h= 0,
|
464 |
.comp = { |
465 |
{0,5,1,0,15}, /* R */ |
466 |
{0,5,3,0,15}, /* G */ |
467 |
{0,5,5,0,15}, /* B */ |
468 |
}, |
469 |
}, |
470 |
[PIX_FMT_RGB565BE] = { |
471 |
.name = "rgb565be",
|
472 |
.nb_components= 3,
|
473 |
.log2_chroma_w= 0,
|
474 |
.log2_chroma_h= 0,
|
475 |
.comp = { |
476 |
{0,1,0,3,4}, /* R */ |
477 |
{0,1,1,5,5}, /* G */ |
478 |
{0,1,1,0,4}, /* B */ |
479 |
}, |
480 |
.flags = PIX_FMT_BE, |
481 |
}, |
482 |
[PIX_FMT_RGB565LE] = { |
483 |
.name = "rgb565le",
|
484 |
.nb_components= 3,
|
485 |
.log2_chroma_w= 0,
|
486 |
.log2_chroma_h= 0,
|
487 |
.comp = { |
488 |
{0,1,2,3,4}, /* R */ |
489 |
{0,1,1,5,5}, /* G */ |
490 |
{0,1,1,0,4}, /* B */ |
491 |
}, |
492 |
}, |
493 |
[PIX_FMT_RGB555BE] = { |
494 |
.name = "rgb555be",
|
495 |
.nb_components= 3,
|
496 |
.log2_chroma_w= 0,
|
497 |
.log2_chroma_h= 0,
|
498 |
.comp = { |
499 |
{0,1,0,2,4}, /* R */ |
500 |
{0,1,1,5,4}, /* G */ |
501 |
{0,1,1,0,4}, /* B */ |
502 |
}, |
503 |
.flags = PIX_FMT_BE, |
504 |
}, |
505 |
[PIX_FMT_RGB555LE] = { |
506 |
.name = "rgb555le",
|
507 |
.nb_components= 3,
|
508 |
.log2_chroma_w= 0,
|
509 |
.log2_chroma_h= 0,
|
510 |
.comp = { |
511 |
{0,1,2,2,4}, /* R */ |
512 |
{0,1,1,5,4}, /* G */ |
513 |
{0,1,1,0,4}, /* B */ |
514 |
}, |
515 |
}, |
516 |
[PIX_FMT_BGR565BE] = { |
517 |
.name = "bgr565be",
|
518 |
.nb_components= 3,
|
519 |
.log2_chroma_w= 0,
|
520 |
.log2_chroma_h= 0,
|
521 |
.comp = { |
522 |
{0,1,0,3,4}, /* B */ |
523 |
{0,1,1,5,5}, /* G */ |
524 |
{0,1,1,0,4}, /* R */ |
525 |
}, |
526 |
.flags = PIX_FMT_BE, |
527 |
}, |
528 |
[PIX_FMT_BGR565LE] = { |
529 |
.name = "bgr565le",
|
530 |
.nb_components= 3,
|
531 |
.log2_chroma_w= 0,
|
532 |
.log2_chroma_h= 0,
|
533 |
.comp = { |
534 |
{0,1,2,3,4}, /* B */ |
535 |
{0,1,1,5,5}, /* G */ |
536 |
{0,1,1,0,4}, /* R */ |
537 |
}, |
538 |
}, |
539 |
[PIX_FMT_BGR555BE] = { |
540 |
.name = "bgr555be",
|
541 |
.nb_components= 3,
|
542 |
.log2_chroma_w= 0,
|
543 |
.log2_chroma_h= 0,
|
544 |
.comp = { |
545 |
{0,1,0,2,4}, /* B */ |
546 |
{0,1,1,5,4}, /* G */ |
547 |
{0,1,1,0,4}, /* R */ |
548 |
}, |
549 |
.flags = PIX_FMT_BE, |
550 |
}, |
551 |
[PIX_FMT_BGR555LE] = { |
552 |
.name = "bgr555le",
|
553 |
.nb_components= 3,
|
554 |
.log2_chroma_w= 0,
|
555 |
.log2_chroma_h= 0,
|
556 |
.comp = { |
557 |
{0,1,2,2,4}, /* B */ |
558 |
{0,1,1,5,4}, /* G */ |
559 |
{0,1,1,0,4}, /* R */ |
560 |
}, |
561 |
}, |
562 |
[PIX_FMT_VAAPI_MOCO] = { |
563 |
.name = "vaapi_moco",
|
564 |
.log2_chroma_w = 1,
|
565 |
.log2_chroma_h = 1,
|
566 |
.flags = PIX_FMT_HWACCEL, |
567 |
}, |
568 |
[PIX_FMT_VAAPI_IDCT] = { |
569 |
.name = "vaapi_idct",
|
570 |
.log2_chroma_w = 1,
|
571 |
.log2_chroma_h = 1,
|
572 |
.flags = PIX_FMT_HWACCEL, |
573 |
}, |
574 |
[PIX_FMT_VAAPI_VLD] = { |
575 |
.name = "vaapi_vld",
|
576 |
.log2_chroma_w = 1,
|
577 |
.log2_chroma_h = 1,
|
578 |
.flags = PIX_FMT_HWACCEL, |
579 |
}, |
580 |
[PIX_FMT_YUV420P16LE] = { |
581 |
.name = "yuv420p16le",
|
582 |
.nb_components= 3,
|
583 |
.log2_chroma_w= 1,
|
584 |
.log2_chroma_h= 1,
|
585 |
.comp = { |
586 |
{0,1,1,0,15}, /* Y */ |
587 |
{1,1,1,0,15}, /* U */ |
588 |
{2,1,1,0,15}, /* V */ |
589 |
}, |
590 |
}, |
591 |
[PIX_FMT_YUV420P16BE] = { |
592 |
.name = "yuv420p16be",
|
593 |
.nb_components= 3,
|
594 |
.log2_chroma_w= 1,
|
595 |
.log2_chroma_h= 1,
|
596 |
.comp = { |
597 |
{0,1,1,0,15}, /* Y */ |
598 |
{1,1,1,0,15}, /* U */ |
599 |
{2,1,1,0,15}, /* V */ |
600 |
}, |
601 |
.flags = PIX_FMT_BE, |
602 |
}, |
603 |
[PIX_FMT_YUV422P16LE] = { |
604 |
.name = "yuv422p16le",
|
605 |
.nb_components= 3,
|
606 |
.log2_chroma_w= 1,
|
607 |
.log2_chroma_h= 0,
|
608 |
.comp = { |
609 |
{0,1,1,0,15}, /* Y */ |
610 |
{1,1,1,0,15}, /* U */ |
611 |
{2,1,1,0,15}, /* V */ |
612 |
}, |
613 |
}, |
614 |
[PIX_FMT_YUV422P16BE] = { |
615 |
.name = "yuv422p16be",
|
616 |
.nb_components= 3,
|
617 |
.log2_chroma_w= 1,
|
618 |
.log2_chroma_h= 0,
|
619 |
.comp = { |
620 |
{0,1,1,0,15}, /* Y */ |
621 |
{1,1,1,0,15}, /* U */ |
622 |
{2,1,1,0,15}, /* V */ |
623 |
}, |
624 |
.flags = PIX_FMT_BE, |
625 |
}, |
626 |
[PIX_FMT_YUV444P16LE] = { |
627 |
.name = "yuv444p16le",
|
628 |
.nb_components= 3,
|
629 |
.log2_chroma_w= 0,
|
630 |
.log2_chroma_h= 0,
|
631 |
.comp = { |
632 |
{0,1,1,0,15}, /* Y */ |
633 |
{1,1,1,0,15}, /* U */ |
634 |
{2,1,1,0,15}, /* V */ |
635 |
}, |
636 |
}, |
637 |
[PIX_FMT_YUV444P16BE] = { |
638 |
.name = "yuv444p16be",
|
639 |
.nb_components= 3,
|
640 |
.log2_chroma_w= 0,
|
641 |
.log2_chroma_h= 0,
|
642 |
.comp = { |
643 |
{0,1,1,0,15}, /* Y */ |
644 |
{1,1,1,0,15}, /* U */ |
645 |
{2,1,1,0,15}, /* V */ |
646 |
}, |
647 |
.flags = PIX_FMT_BE, |
648 |
}, |
649 |
[PIX_FMT_DXVA2_VLD] = { |
650 |
.name = "dxva2_vld",
|
651 |
.log2_chroma_w = 1,
|
652 |
.log2_chroma_h = 1,
|
653 |
.flags = PIX_FMT_HWACCEL, |
654 |
}, |
655 |
}; |
656 |
|
657 |
static enum PixelFormat get_pix_fmt_internal(const char *name) |
658 |
{ |
659 |
enum PixelFormat pix_fmt;
|
660 |
|
661 |
for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++) |
662 |
if (av_pix_fmt_descriptors[pix_fmt].name &&
|
663 |
!strcmp(av_pix_fmt_descriptors[pix_fmt].name, name)) |
664 |
return pix_fmt;
|
665 |
|
666 |
return PIX_FMT_NONE;
|
667 |
} |
668 |
|
669 |
#if HAVE_BIGENDIAN
|
670 |
# define X_NE(be, le) be
|
671 |
#else
|
672 |
# define X_NE(be, le) le
|
673 |
#endif
|
674 |
|
675 |
enum PixelFormat av_get_pix_fmt(const char *name) |
676 |
{ |
677 |
enum PixelFormat pix_fmt;
|
678 |
|
679 |
if (!strcmp(name, "rgb32")) |
680 |
name = X_NE("argb", "bgra"); |
681 |
else if (!strcmp(name, "bgr32")) |
682 |
name = X_NE("abgr", "rgba"); |
683 |
|
684 |
pix_fmt = get_pix_fmt_internal(name); |
685 |
if (pix_fmt == PIX_FMT_NONE) {
|
686 |
char name2[32]; |
687 |
|
688 |
snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le")); |
689 |
pix_fmt = get_pix_fmt_internal(name2); |
690 |
} |
691 |
return pix_fmt;
|
692 |
} |
693 |
|
694 |
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc) |
695 |
{ |
696 |
int c, bits = 0; |
697 |
int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
|
698 |
|
699 |
for (c = 0; c < pixdesc->nb_components; c++) { |
700 |
int s = c==1 || c==2 ? 0 : log2_pixels; |
701 |
bits += (pixdesc->comp[c].depth_minus1+1) << s;
|
702 |
} |
703 |
|
704 |
return bits >> log2_pixels;
|
705 |
} |