FFmpeg
Loading...
Searching...
No Matches
pixdesc.c
Go to the documentation of this file.
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 <stdio.h>
23#include <string.h>
24
25#include "avstring.h"
26#include "common.h"
27#include "pixfmt.h"
28#include "pixdesc.h"
29#include "intreadwrite.h"
30
32 const uint8_t *data[4], const int linesize[4],
34 int x, int y, int c, int w,
35 int read_pal_component,
36 int dst_element_size)
37{
39 int plane = comp.plane;
40 int depth = comp.depth;
41 unsigned mask = (1ULL << depth) - 1;
42 int shift = comp.shift;
43 int step = comp.step;
44 int flags = desc->flags;
45 uint16_t *dst16 = dst;
46 uint32_t *dst32 = dst;
47
48 if (!depth)
49 return;
50
52 if (step > 8) {
53 // Assume all channels are packed into a 32bit value
54 const uint8_t *byte_p = data[plane] + y * linesize[plane];
55 const uint32_t *p = (uint32_t *)byte_p;
56
57 while (w--) {
58 int val = AV_RB32(p);
59 val = (val >> comp.offset) & mask;
60 if (read_pal_component)
61 val = data[1][4*val + c];
62 if (dst_element_size == 4) *dst32++ = val;
63 else *dst16++ = val;
64 p++;
65 }
66 } else {
67 int skip = x * step + comp.offset;
68 const uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
69 int shift = 8 - depth - (skip & 7);
70
71 while (w--) {
72 int val = (*p >> shift) & mask;
73 if (read_pal_component)
74 val = data[1][4*val + c];
75 shift -= step;
76 p -= shift >> 3;
77 shift &= 7;
78 if (dst_element_size == 4) *dst32++ = val;
79 else *dst16++ = val;
80 }
81 }
82 } else {
83 const uint8_t *p = data[plane] + y * linesize[plane] +
84 x * step + comp.offset;
85 int is_8bit = shift + depth <= 8;
86 int is_16bit= shift + depth <=16;
87
88 if (is_8bit)
89 p += !!(flags & AV_PIX_FMT_FLAG_BE);
90
91 while (w--) {
92 unsigned val;
93 if (is_8bit) val = *p;
94 else if(is_16bit) val = flags & AV_PIX_FMT_FLAG_BE ? AV_RB16(p) : AV_RL16(p);
95 else val = flags & AV_PIX_FMT_FLAG_BE ? AV_RB32(p) : AV_RL32(p);
96 val = (val >> shift) & mask;
97 if (read_pal_component)
98 val = data[1][4 * val + c];
99 p += step;
100 if (dst_element_size == 4) *dst32++ = val;
101 else *dst16++ = val;
102 }
103 }
104}
105
106void av_read_image_line(uint16_t *dst,
107 const uint8_t *data[4], const int linesize[4],
109 int x, int y, int c, int w,
110 int read_pal_component)
111{
112 av_read_image_line2(dst, data, linesize, desc,x, y, c, w,
113 read_pal_component,
114 2);
115}
116
117void av_write_image_line2(const void *src,
118 uint8_t *data[4], const int linesize[4],
120 int x, int y, int c, int w, int src_element_size)
121{
123 int plane = comp.plane;
124 int depth = comp.depth;
125 int step = comp.step;
126 int flags = desc->flags;
127 const uint32_t *src32 = src;
128 const uint16_t *src16 = src;
129
130 if (!depth)
131 return;
132
134 if (step > 8) {
135 // Assume all channels are packed into a 32bit value
136 const uint8_t *byte_p = data[plane] + y * linesize[plane];
137 uint32_t *p = (uint32_t *)byte_p;
138 int offset = comp.offset;
139 uint32_t mask = ((1ULL << depth) - 1) << offset;
140
141 while (w--) {
142 unsigned val = src_element_size == 4 ? *src32++ : *src16++;
143 AV_WB32(p, (AV_RB32(p) & ~mask) | (val << offset));
144 p++;
145 }
146 } else {
147 int skip = x * step + comp.offset;
148 uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
149 int shift = 8 - depth - (skip & 7);
150
151 while (w--) {
152 *p |= (src_element_size == 4 ? *src32++ : *src16++) << shift;
153 shift -= step;
154 p -= shift >> 3;
155 shift &= 7;
156 }
157 }
158 } else {
159 int shift = comp.shift;
160 uint8_t *p = data[plane] + y * linesize[plane] +
161 x * step + comp.offset;
162
163 if (shift + depth <= 8) {
164 p += !!(flags & AV_PIX_FMT_FLAG_BE);
165 while (w--) {
166 *p |= ((src_element_size == 4 ? *src32++ : *src16++) << shift);
167 p += step;
168 }
169 } else {
170 while (w--) {
171 unsigned s = (src_element_size == 4 ? *src32++ : *src16++);
172 if (shift + depth <= 16) {
174 uint16_t val = AV_RB16(p) | (s << shift);
175 AV_WB16(p, val);
176 } else {
177 uint16_t val = AV_RL16(p) | (s << shift);
178 AV_WL16(p, val);
179 }
180 } else {
182 uint32_t val = AV_RB32(p) | (s << shift);
183 AV_WB32(p, val);
184 } else {
185 uint32_t val = AV_RL32(p) | (s << shift);
186 AV_WL32(p, val);
187 }
188 }
189 p += step;
190 }
191 }
192 }
193}
194
195void av_write_image_line(const uint16_t *src,
196 uint8_t *data[4], const int linesize[4],
198 int x, int y, int c, int w)
199{
200 av_write_image_line2(src, data, linesize, desc, x, y, c, w, 2);
201}
202
205 .name = "yuv420p",
206 .nb_components = 3,
207 .log2_chroma_w = 1,
208 .log2_chroma_h = 1,
209 .comp = {
210 { 0, 1, 0, 0, 8 }, /* Y */
211 { 1, 1, 0, 0, 8 }, /* U */
212 { 2, 1, 0, 0, 8 }, /* V */
213 },
214 .flags = AV_PIX_FMT_FLAG_PLANAR,
215 },
217 .name = "yuyv422",
218 .nb_components = 3,
219 .log2_chroma_w = 1,
220 .log2_chroma_h = 0,
221 .comp = {
222 { 0, 2, 0, 0, 8 }, /* Y */
223 { 0, 4, 1, 0, 8 }, /* U */
224 { 0, 4, 3, 0, 8 }, /* V */
225 },
226 },
228 .name = "yvyu422",
229 .nb_components = 3,
230 .log2_chroma_w = 1,
231 .log2_chroma_h = 0,
232 .comp = {
233 { 0, 2, 0, 0, 8 }, /* Y */
234 { 0, 4, 3, 0, 8 }, /* U */
235 { 0, 4, 1, 0, 8 }, /* V */
236 },
237 },
239 .name = "y210le",
240 .nb_components = 3,
241 .log2_chroma_w = 1,
242 .log2_chroma_h = 0,
243 .comp = {
244 { 0, 4, 0, 6, 10 }, /* Y */
245 { 0, 8, 2, 6, 10 }, /* U */
246 { 0, 8, 6, 6, 10 }, /* V */
247 },
248 },
250 .name = "y210be",
251 .nb_components = 3,
252 .log2_chroma_w = 1,
253 .log2_chroma_h = 0,
254 .comp = {
255 { 0, 4, 0, 6, 10 }, /* Y */
256 { 0, 8, 2, 6, 10 }, /* U */
257 { 0, 8, 6, 6, 10 }, /* V */
258 },
259 .flags = AV_PIX_FMT_FLAG_BE,
260 },
261 [AV_PIX_FMT_RGB24] = {
262 .name = "rgb24",
263 .nb_components = 3,
264 .log2_chroma_w = 0,
265 .log2_chroma_h = 0,
266 .comp = {
267 { 0, 3, 0, 0, 8 }, /* R */
268 { 0, 3, 1, 0, 8 }, /* G */
269 { 0, 3, 2, 0, 8 }, /* B */
270 },
271 .flags = AV_PIX_FMT_FLAG_RGB,
272 },
273 [AV_PIX_FMT_BGR24] = {
274 .name = "bgr24",
275 .nb_components = 3,
276 .log2_chroma_w = 0,
277 .log2_chroma_h = 0,
278 .comp = {
279 { 0, 3, 2, 0, 8 }, /* R */
280 { 0, 3, 1, 0, 8 }, /* G */
281 { 0, 3, 0, 0, 8 }, /* B */
282 },
283 .flags = AV_PIX_FMT_FLAG_RGB,
284 },
286 .name = "x2rgb10le",
287 .nb_components= 3,
288 .log2_chroma_w= 0,
289 .log2_chroma_h= 0,
290 .comp = {
291 { 0, 4, 2, 4, 10 }, /* R */
292 { 0, 4, 1, 2, 10 }, /* G */
293 { 0, 4, 0, 0, 10 }, /* B */
294 { 0, 4, 3, 6, 2 }, /* X */
295 },
296 .flags = AV_PIX_FMT_FLAG_RGB,
297 },
299 .name = "x2rgb10be",
300 .nb_components= 3,
301 .log2_chroma_w= 0,
302 .log2_chroma_h= 0,
303 .comp = {
304 { 0, 4, 0, 4, 10 }, /* R */
305 { 0, 4, 1, 2, 10 }, /* G */
306 { 0, 4, 2, 0, 10 }, /* B */
307 { 0, 4, 3, 6, 2 }, /* X */
308 },
310 },
312 .name = "x2bgr10le",
313 .nb_components= 3,
314 .log2_chroma_w= 0,
315 .log2_chroma_h= 0,
316 .comp = {
317 { 0, 4, 0, 0, 10 }, /* R */
318 { 0, 4, 1, 2, 10 }, /* G */
319 { 0, 4, 2, 4, 10 }, /* B */
320 { 0, 4, 3, 6, 2 }, /* X */
321 },
322 .flags = AV_PIX_FMT_FLAG_RGB,
323 },
325 .name = "x2bgr10be",
326 .nb_components= 3,
327 .log2_chroma_w= 0,
328 .log2_chroma_h= 0,
329 .comp = {
330 { 0, 4, 2, 0, 10 }, /* R */
331 { 0, 4, 1, 2, 10 }, /* G */
332 { 0, 4, 0, 4, 10 }, /* B */
333 { 0, 4, 3, 6, 2 }, /* X */
334 },
336 },
338 .name = "yuv422p",
339 .nb_components = 3,
340 .log2_chroma_w = 1,
341 .log2_chroma_h = 0,
342 .comp = {
343 { 0, 1, 0, 0, 8 }, /* Y */
344 { 1, 1, 0, 0, 8 }, /* U */
345 { 2, 1, 0, 0, 8 }, /* V */
346 },
347 .flags = AV_PIX_FMT_FLAG_PLANAR,
348 },
350 .name = "yuv444p",
351 .nb_components = 3,
352 .log2_chroma_w = 0,
353 .log2_chroma_h = 0,
354 .comp = {
355 { 0, 1, 0, 0, 8 }, /* Y */
356 { 1, 1, 0, 0, 8 }, /* U */
357 { 2, 1, 0, 0, 8 }, /* V */
358 },
359 .flags = AV_PIX_FMT_FLAG_PLANAR,
360 },
362 .name = "yuv410p",
363 .nb_components = 3,
364 .log2_chroma_w = 2,
365 .log2_chroma_h = 2,
366 .comp = {
367 { 0, 1, 0, 0, 8 }, /* Y */
368 { 1, 1, 0, 0, 8 }, /* U */
369 { 2, 1, 0, 0, 8 }, /* V */
370 },
371 .flags = AV_PIX_FMT_FLAG_PLANAR,
372 },
374 .name = "yuv411p",
375 .nb_components = 3,
376 .log2_chroma_w = 2,
377 .log2_chroma_h = 0,
378 .comp = {
379 { 0, 1, 0, 0, 8 }, /* Y */
380 { 1, 1, 0, 0, 8 }, /* U */
381 { 2, 1, 0, 0, 8 }, /* V */
382 },
383 .flags = AV_PIX_FMT_FLAG_PLANAR,
384 },
386 .name = "yuvj411p",
387 .nb_components = 3,
388 .log2_chroma_w = 2,
389 .log2_chroma_h = 0,
390 .comp = {
391 { 0, 1, 0, 0, 8 }, /* Y */
392 { 1, 1, 0, 0, 8 }, /* U */
393 { 2, 1, 0, 0, 8 }, /* V */
394 },
395 .flags = AV_PIX_FMT_FLAG_PLANAR,
396 },
397 [AV_PIX_FMT_GRAY8] = {
398 .name = "gray",
399 .nb_components = 1,
400 .log2_chroma_w = 0,
401 .log2_chroma_h = 0,
402 .comp = {
403 { 0, 1, 0, 0, 8 }, /* Y */
404 },
405 .alias = "gray8,y8",
406 },
408 .name = "monow",
409 .nb_components = 1,
410 .log2_chroma_w = 0,
411 .log2_chroma_h = 0,
412 .comp = {
413 { 0, 1, 0, 0, 1 }, /* Y */
414 },
416 },
418 .name = "monob",
419 .nb_components = 1,
420 .log2_chroma_w = 0,
421 .log2_chroma_h = 0,
422 .comp = {
423 { 0, 1, 0, 7, 1 }, /* Y */
424 },
426 },
427 [AV_PIX_FMT_PAL8] = {
428 .name = "pal8",
429 .nb_components = 1,
430 .log2_chroma_w = 0,
431 .log2_chroma_h = 0,
432 .comp = {
433 { 0, 1, 0, 0, 8 },
434 },
436 },
438 .name = "yuvj420p",
439 .nb_components = 3,
440 .log2_chroma_w = 1,
441 .log2_chroma_h = 1,
442 .comp = {
443 { 0, 1, 0, 0, 8 }, /* Y */
444 { 1, 1, 0, 0, 8 }, /* U */
445 { 2, 1, 0, 0, 8 }, /* V */
446 },
447 .flags = AV_PIX_FMT_FLAG_PLANAR,
448 },
450 .name = "yuvj422p",
451 .nb_components = 3,
452 .log2_chroma_w = 1,
453 .log2_chroma_h = 0,
454 .comp = {
455 { 0, 1, 0, 0, 8 }, /* Y */
456 { 1, 1, 0, 0, 8 }, /* U */
457 { 2, 1, 0, 0, 8 }, /* V */
458 },
459 .flags = AV_PIX_FMT_FLAG_PLANAR,
460 },
462 .name = "yuvj444p",
463 .nb_components = 3,
464 .log2_chroma_w = 0,
465 .log2_chroma_h = 0,
466 .comp = {
467 { 0, 1, 0, 0, 8 }, /* Y */
468 { 1, 1, 0, 0, 8 }, /* U */
469 { 2, 1, 0, 0, 8 }, /* V */
470 },
471 .flags = AV_PIX_FMT_FLAG_PLANAR,
472 },
474 .name = "uyvy422",
475 .nb_components = 3,
476 .log2_chroma_w = 1,
477 .log2_chroma_h = 0,
478 .comp = {
479 { 0, 2, 1, 0, 8 }, /* Y */
480 { 0, 4, 0, 0, 8 }, /* U */
481 { 0, 4, 2, 0, 8 }, /* V */
482 },
483 },
485 .name = "uyyvyy411",
486 .nb_components = 3,
487 .log2_chroma_w = 2,
488 .log2_chroma_h = 0,
489 .comp = {
490 { 0, 4, 1, 0, 8 }, /* Y */
491 { 0, 6, 0, 0, 8 }, /* U */
492 { 0, 6, 3, 0, 8 }, /* V */
493 },
494 },
495 [AV_PIX_FMT_BGR8] = {
496 .name = "bgr8",
497 .nb_components = 3,
498 .log2_chroma_w = 0,
499 .log2_chroma_h = 0,
500 .comp = {
501 { 0, 1, 0, 0, 3 }, /* R */
502 { 0, 1, 0, 3, 3 }, /* G */
503 { 0, 1, 0, 6, 2 }, /* B */
504 },
505 .flags = AV_PIX_FMT_FLAG_RGB,
506 },
507 [AV_PIX_FMT_BGR4] = {
508 .name = "bgr4",
509 .nb_components = 3,
510 .log2_chroma_w = 0,
511 .log2_chroma_h = 0,
512 .comp = {
513 { 0, 4, 3, 0, 1 }, /* R */
514 { 0, 4, 1, 0, 2 }, /* G */
515 { 0, 4, 0, 0, 1 }, /* B */
516 },
518 },
520 .name = "bgr4_byte",
521 .nb_components = 3,
522 .log2_chroma_w = 0,
523 .log2_chroma_h = 0,
524 .comp = {
525 { 0, 1, 0, 0, 1 }, /* R */
526 { 0, 1, 0, 1, 2 }, /* G */
527 { 0, 1, 0, 3, 1 }, /* B */
528 },
529 .flags = AV_PIX_FMT_FLAG_RGB,
530 },
531 [AV_PIX_FMT_RGB8] = {
532 .name = "rgb8",
533 .nb_components = 3,
534 .log2_chroma_w = 0,
535 .log2_chroma_h = 0,
536 .comp = {
537 { 0, 1, 0, 5, 3 }, /* R */
538 { 0, 1, 0, 2, 3 }, /* G */
539 { 0, 1, 0, 0, 2 }, /* B */
540 },
541 .flags = AV_PIX_FMT_FLAG_RGB,
542 },
543 [AV_PIX_FMT_RGB4] = {
544 .name = "rgb4",
545 .nb_components = 3,
546 .log2_chroma_w = 0,
547 .log2_chroma_h = 0,
548 .comp = {
549 { 0, 4, 0, 0, 1 }, /* R */
550 { 0, 4, 1, 0, 2 }, /* G */
551 { 0, 4, 3, 0, 1 }, /* B */
552 },
554 },
556 .name = "rgb4_byte",
557 .nb_components = 3,
558 .log2_chroma_w = 0,
559 .log2_chroma_h = 0,
560 .comp = {
561 { 0, 1, 0, 3, 1 }, /* R */
562 { 0, 1, 0, 1, 2 }, /* G */
563 { 0, 1, 0, 0, 1 }, /* B */
564 },
565 .flags = AV_PIX_FMT_FLAG_RGB,
566 },
567 [AV_PIX_FMT_NV12] = {
568 .name = "nv12",
569 .nb_components = 3,
570 .log2_chroma_w = 1,
571 .log2_chroma_h = 1,
572 .comp = {
573 { 0, 1, 0, 0, 8 }, /* Y */
574 { 1, 2, 0, 0, 8 }, /* U */
575 { 1, 2, 1, 0, 8 }, /* V */
576 },
577 .flags = AV_PIX_FMT_FLAG_PLANAR,
578 },
579 [AV_PIX_FMT_NV21] = {
580 .name = "nv21",
581 .nb_components = 3,
582 .log2_chroma_w = 1,
583 .log2_chroma_h = 1,
584 .comp = {
585 { 0, 1, 0, 0, 8 }, /* Y */
586 { 1, 2, 1, 0, 8 }, /* U */
587 { 1, 2, 0, 0, 8 }, /* V */
588 },
589 .flags = AV_PIX_FMT_FLAG_PLANAR,
590 },
591 [AV_PIX_FMT_ARGB] = {
592 .name = "argb",
593 .nb_components = 4,
594 .log2_chroma_w = 0,
595 .log2_chroma_h = 0,
596 .comp = {
597 { 0, 4, 1, 0, 8 }, /* R */
598 { 0, 4, 2, 0, 8 }, /* G */
599 { 0, 4, 3, 0, 8 }, /* B */
600 { 0, 4, 0, 0, 8 }, /* A */
601 },
603 },
604 [AV_PIX_FMT_RGBA] = {
605 .name = "rgba",
606 .nb_components = 4,
607 .log2_chroma_w = 0,
608 .log2_chroma_h = 0,
609 .comp = {
610 { 0, 4, 0, 0, 8 }, /* R */
611 { 0, 4, 1, 0, 8 }, /* G */
612 { 0, 4, 2, 0, 8 }, /* B */
613 { 0, 4, 3, 0, 8 }, /* A */
614 },
616 },
617 [AV_PIX_FMT_ABGR] = {
618 .name = "abgr",
619 .nb_components = 4,
620 .log2_chroma_w = 0,
621 .log2_chroma_h = 0,
622 .comp = {
623 { 0, 4, 3, 0, 8 }, /* R */
624 { 0, 4, 2, 0, 8 }, /* G */
625 { 0, 4, 1, 0, 8 }, /* B */
626 { 0, 4, 0, 0, 8 }, /* A */
627 },
629 },
630 [AV_PIX_FMT_BGRA] = {
631 .name = "bgra",
632 .nb_components = 4,
633 .log2_chroma_w = 0,
634 .log2_chroma_h = 0,
635 .comp = {
636 { 0, 4, 2, 0, 8 }, /* R */
637 { 0, 4, 1, 0, 8 }, /* G */
638 { 0, 4, 0, 0, 8 }, /* B */
639 { 0, 4, 3, 0, 8 }, /* A */
640 },
642 },
643 [AV_PIX_FMT_0RGB] = {
644 .name = "0rgb",
645 .nb_components= 3,
646 .log2_chroma_w= 0,
647 .log2_chroma_h= 0,
648 .comp = {
649 { 0, 4, 1, 0, 8 }, /* R */
650 { 0, 4, 2, 0, 8 }, /* G */
651 { 0, 4, 3, 0, 8 }, /* B */
652 { 0, 4, 0, 0, 8 }, /* X */
653 },
654 .flags = AV_PIX_FMT_FLAG_RGB,
655 },
656 [AV_PIX_FMT_RGB0] = {
657 .name = "rgb0",
658 .nb_components= 3,
659 .log2_chroma_w= 0,
660 .log2_chroma_h= 0,
661 .comp = {
662 { 0, 4, 0, 0, 8 }, /* R */
663 { 0, 4, 1, 0, 8 }, /* G */
664 { 0, 4, 2, 0, 8 }, /* B */
665 { 0, 4, 3, 0, 8 }, /* X */
666 },
667 .flags = AV_PIX_FMT_FLAG_RGB,
668 },
669 [AV_PIX_FMT_0BGR] = {
670 .name = "0bgr",
671 .nb_components= 3,
672 .log2_chroma_w= 0,
673 .log2_chroma_h= 0,
674 .comp = {
675 { 0, 4, 3, 0, 8 }, /* R */
676 { 0, 4, 2, 0, 8 }, /* G */
677 { 0, 4, 1, 0, 8 }, /* B */
678 { 0, 4, 0, 0, 8 }, /* X */
679 },
680 .flags = AV_PIX_FMT_FLAG_RGB,
681 },
682 [AV_PIX_FMT_BGR0] = {
683 .name = "bgr0",
684 .nb_components= 3,
685 .log2_chroma_w= 0,
686 .log2_chroma_h= 0,
687 .comp = {
688 { 0, 4, 2, 0, 8 }, /* R */
689 { 0, 4, 1, 0, 8 }, /* G */
690 { 0, 4, 0, 0, 8 }, /* B */
691 { 0, 4, 3, 0, 8 }, /* X */
692 },
693 .flags = AV_PIX_FMT_FLAG_RGB,
694 },
696 .name = "gray9be",
697 .nb_components = 1,
698 .log2_chroma_w = 0,
699 .log2_chroma_h = 0,
700 .comp = {
701 { 0, 2, 0, 0, 9 }, /* Y */
702 },
703 .flags = AV_PIX_FMT_FLAG_BE,
704 .alias = "y9be",
705 },
707 .name = "gray9le",
708 .nb_components = 1,
709 .log2_chroma_w = 0,
710 .log2_chroma_h = 0,
711 .comp = {
712 { 0, 2, 0, 0, 9 }, /* Y */
713 },
714 .alias = "y9le",
715 },
717 .name = "gray10be",
718 .nb_components = 1,
719 .log2_chroma_w = 0,
720 .log2_chroma_h = 0,
721 .comp = {
722 { 0, 2, 0, 0, 10 }, /* Y */
723 },
724 .flags = AV_PIX_FMT_FLAG_BE,
725 .alias = "y10be",
726 },
728 .name = "gray10le",
729 .nb_components = 1,
730 .log2_chroma_w = 0,
731 .log2_chroma_h = 0,
732 .comp = {
733 { 0, 2, 0, 0, 10 }, /* Y */
734 },
735 .alias = "y10le",
736 },
738 .name = "gray12be",
739 .nb_components = 1,
740 .log2_chroma_w = 0,
741 .log2_chroma_h = 0,
742 .comp = {
743 { 0, 2, 0, 0, 12 }, /* Y */
744 },
745 .flags = AV_PIX_FMT_FLAG_BE,
746 .alias = "y12be",
747 },
749 .name = "gray12le",
750 .nb_components = 1,
751 .log2_chroma_w = 0,
752 .log2_chroma_h = 0,
753 .comp = {
754 { 0, 2, 0, 0, 12 }, /* Y */
755 },
756 .alias = "y12le",
757 },
759 .name = "gray14be",
760 .nb_components = 1,
761 .log2_chroma_w = 0,
762 .log2_chroma_h = 0,
763 .comp = {
764 { 0, 2, 0, 0, 14 }, /* Y */
765 },
766 .flags = AV_PIX_FMT_FLAG_BE,
767 .alias = "y14be",
768 },
770 .name = "gray14le",
771 .nb_components = 1,
772 .log2_chroma_w = 0,
773 .log2_chroma_h = 0,
774 .comp = {
775 { 0, 2, 0, 0, 14 }, /* Y */
776 },
777 .alias = "y14le",
778 },
780 .name = "gray16be",
781 .nb_components = 1,
782 .log2_chroma_w = 0,
783 .log2_chroma_h = 0,
784 .comp = {
785 { 0, 2, 0, 0, 16 }, /* Y */
786 },
787 .flags = AV_PIX_FMT_FLAG_BE,
788 .alias = "y16be",
789 },
791 .name = "gray16le",
792 .nb_components = 1,
793 .log2_chroma_w = 0,
794 .log2_chroma_h = 0,
795 .comp = {
796 { 0, 2, 0, 0, 16 }, /* Y */
797 },
798 .alias = "y16le",
799 },
801 .name = "gray32be",
802 .nb_components = 1,
803 .log2_chroma_w = 0,
804 .log2_chroma_h = 0,
805 .comp = {
806 { 0, 4, 0, 0, 32 }, /* Y */
807 },
808 .flags = AV_PIX_FMT_FLAG_BE,
809 .alias = "y32be",
810 },
812 .name = "gray32le",
813 .nb_components = 1,
814 .log2_chroma_w = 0,
815 .log2_chroma_h = 0,
816 .comp = {
817 { 0, 4, 0, 0, 32 }, /* Y */
818 },
819 .alias = "y32le",
820 },
822 .name = "yuv440p",
823 .nb_components = 3,
824 .log2_chroma_w = 0,
825 .log2_chroma_h = 1,
826 .comp = {
827 { 0, 1, 0, 0, 8 }, /* Y */
828 { 1, 1, 0, 0, 8 }, /* U */
829 { 2, 1, 0, 0, 8 }, /* V */
830 },
831 .flags = AV_PIX_FMT_FLAG_PLANAR,
832 },
834 .name = "yuvj440p",
835 .nb_components = 3,
836 .log2_chroma_w = 0,
837 .log2_chroma_h = 1,
838 .comp = {
839 { 0, 1, 0, 0, 8 }, /* Y */
840 { 1, 1, 0, 0, 8 }, /* U */
841 { 2, 1, 0, 0, 8 }, /* V */
842 },
843 .flags = AV_PIX_FMT_FLAG_PLANAR,
844 },
846 .name = "yuv440p10le",
847 .nb_components = 3,
848 .log2_chroma_w = 0,
849 .log2_chroma_h = 1,
850 .comp = {
851 { 0, 2, 0, 0, 10 }, /* Y */
852 { 1, 2, 0, 0, 10 }, /* U */
853 { 2, 2, 0, 0, 10 }, /* V */
854 },
855 .flags = AV_PIX_FMT_FLAG_PLANAR,
856 },
858 .name = "yuv440p10be",
859 .nb_components = 3,
860 .log2_chroma_w = 0,
861 .log2_chroma_h = 1,
862 .comp = {
863 { 0, 2, 0, 0, 10 }, /* Y */
864 { 1, 2, 0, 0, 10 }, /* U */
865 { 2, 2, 0, 0, 10 }, /* V */
866 },
868 },
870 .name = "yuv440p12le",
871 .nb_components = 3,
872 .log2_chroma_w = 0,
873 .log2_chroma_h = 1,
874 .comp = {
875 { 0, 2, 0, 0, 12 }, /* Y */
876 { 1, 2, 0, 0, 12 }, /* U */
877 { 2, 2, 0, 0, 12 }, /* V */
878 },
879 .flags = AV_PIX_FMT_FLAG_PLANAR,
880 },
882 .name = "yuv440p12be",
883 .nb_components = 3,
884 .log2_chroma_w = 0,
885 .log2_chroma_h = 1,
886 .comp = {
887 { 0, 2, 0, 0, 12 }, /* Y */
888 { 1, 2, 0, 0, 12 }, /* U */
889 { 2, 2, 0, 0, 12 }, /* V */
890 },
892 },
894 .name = "yuva420p",
895 .nb_components = 4,
896 .log2_chroma_w = 1,
897 .log2_chroma_h = 1,
898 .comp = {
899 { 0, 1, 0, 0, 8 }, /* Y */
900 { 1, 1, 0, 0, 8 }, /* U */
901 { 2, 1, 0, 0, 8 }, /* V */
902 { 3, 1, 0, 0, 8 }, /* A */
903 },
905 },
907 .name = "yuva422p",
908 .nb_components = 4,
909 .log2_chroma_w = 1,
910 .log2_chroma_h = 0,
911 .comp = {
912 { 0, 1, 0, 0, 8 }, /* Y */
913 { 1, 1, 0, 0, 8 }, /* U */
914 { 2, 1, 0, 0, 8 }, /* V */
915 { 3, 1, 0, 0, 8 }, /* A */
916 },
918 },
920 .name = "yuva444p",
921 .nb_components = 4,
922 .log2_chroma_w = 0,
923 .log2_chroma_h = 0,
924 .comp = {
925 { 0, 1, 0, 0, 8 }, /* Y */
926 { 1, 1, 0, 0, 8 }, /* U */
927 { 2, 1, 0, 0, 8 }, /* V */
928 { 3, 1, 0, 0, 8 }, /* A */
929 },
931 },
933 .name = "yuva420p9be",
934 .nb_components = 4,
935 .log2_chroma_w = 1,
936 .log2_chroma_h = 1,
937 .comp = {
938 { 0, 2, 0, 0, 9 }, /* Y */
939 { 1, 2, 0, 0, 9 }, /* U */
940 { 2, 2, 0, 0, 9 }, /* V */
941 { 3, 2, 0, 0, 9 }, /* A */
942 },
944 },
946 .name = "yuva420p9le",
947 .nb_components = 4,
948 .log2_chroma_w = 1,
949 .log2_chroma_h = 1,
950 .comp = {
951 { 0, 2, 0, 0, 9 }, /* Y */
952 { 1, 2, 0, 0, 9 }, /* U */
953 { 2, 2, 0, 0, 9 }, /* V */
954 { 3, 2, 0, 0, 9 }, /* A */
955 },
957 },
959 .name = "yuva422p9be",
960 .nb_components = 4,
961 .log2_chroma_w = 1,
962 .log2_chroma_h = 0,
963 .comp = {
964 { 0, 2, 0, 0, 9 }, /* Y */
965 { 1, 2, 0, 0, 9 }, /* U */
966 { 2, 2, 0, 0, 9 }, /* V */
967 { 3, 2, 0, 0, 9 }, /* A */
968 },
970 },
972 .name = "yuva422p9le",
973 .nb_components = 4,
974 .log2_chroma_w = 1,
975 .log2_chroma_h = 0,
976 .comp = {
977 { 0, 2, 0, 0, 9 }, /* Y */
978 { 1, 2, 0, 0, 9 }, /* U */
979 { 2, 2, 0, 0, 9 }, /* V */
980 { 3, 2, 0, 0, 9 }, /* A */
981 },
983 },
985 .name = "yuva444p9be",
986 .nb_components = 4,
987 .log2_chroma_w = 0,
988 .log2_chroma_h = 0,
989 .comp = {
990 { 0, 2, 0, 0, 9 }, /* Y */
991 { 1, 2, 0, 0, 9 }, /* U */
992 { 2, 2, 0, 0, 9 }, /* V */
993 { 3, 2, 0, 0, 9 }, /* A */
994 },
996 },
998 .name = "yuva444p9le",
999 .nb_components = 4,
1000 .log2_chroma_w = 0,
1001 .log2_chroma_h = 0,
1002 .comp = {
1003 { 0, 2, 0, 0, 9 }, /* Y */
1004 { 1, 2, 0, 0, 9 }, /* U */
1005 { 2, 2, 0, 0, 9 }, /* V */
1006 { 3, 2, 0, 0, 9 }, /* A */
1007 },
1009 },
1011 .name = "yuva420p10be",
1012 .nb_components = 4,
1013 .log2_chroma_w = 1,
1014 .log2_chroma_h = 1,
1015 .comp = {
1016 { 0, 2, 0, 0, 10 }, /* Y */
1017 { 1, 2, 0, 0, 10 }, /* U */
1018 { 2, 2, 0, 0, 10 }, /* V */
1019 { 3, 2, 0, 0, 10 }, /* A */
1020 },
1022 },
1024 .name = "yuva420p10le",
1025 .nb_components = 4,
1026 .log2_chroma_w = 1,
1027 .log2_chroma_h = 1,
1028 .comp = {
1029 { 0, 2, 0, 0, 10 }, /* Y */
1030 { 1, 2, 0, 0, 10 }, /* U */
1031 { 2, 2, 0, 0, 10 }, /* V */
1032 { 3, 2, 0, 0, 10 }, /* A */
1033 },
1035 },
1037 .name = "yuva422p10be",
1038 .nb_components = 4,
1039 .log2_chroma_w = 1,
1040 .log2_chroma_h = 0,
1041 .comp = {
1042 { 0, 2, 0, 0, 10 }, /* Y */
1043 { 1, 2, 0, 0, 10 }, /* U */
1044 { 2, 2, 0, 0, 10 }, /* V */
1045 { 3, 2, 0, 0, 10 }, /* A */
1046 },
1048 },
1050 .name = "yuva422p10le",
1051 .nb_components = 4,
1052 .log2_chroma_w = 1,
1053 .log2_chroma_h = 0,
1054 .comp = {
1055 { 0, 2, 0, 0, 10 }, /* Y */
1056 { 1, 2, 0, 0, 10 }, /* U */
1057 { 2, 2, 0, 0, 10 }, /* V */
1058 { 3, 2, 0, 0, 10 }, /* A */
1059 },
1061 },
1063 .name = "yuva444p10be",
1064 .nb_components = 4,
1065 .log2_chroma_w = 0,
1066 .log2_chroma_h = 0,
1067 .comp = {
1068 { 0, 2, 0, 0, 10 }, /* Y */
1069 { 1, 2, 0, 0, 10 }, /* U */
1070 { 2, 2, 0, 0, 10 }, /* V */
1071 { 3, 2, 0, 0, 10 }, /* A */
1072 },
1074 },
1076 .name = "yuva444p10le",
1077 .nb_components = 4,
1078 .log2_chroma_w = 0,
1079 .log2_chroma_h = 0,
1080 .comp = {
1081 { 0, 2, 0, 0, 10 }, /* Y */
1082 { 1, 2, 0, 0, 10 }, /* U */
1083 { 2, 2, 0, 0, 10 }, /* V */
1084 { 3, 2, 0, 0, 10 }, /* A */
1085 },
1087 },
1089 .name = "yuva420p16be",
1090 .nb_components = 4,
1091 .log2_chroma_w = 1,
1092 .log2_chroma_h = 1,
1093 .comp = {
1094 { 0, 2, 0, 0, 16 }, /* Y */
1095 { 1, 2, 0, 0, 16 }, /* U */
1096 { 2, 2, 0, 0, 16 }, /* V */
1097 { 3, 2, 0, 0, 16 }, /* A */
1098 },
1100 },
1102 .name = "yuva420p16le",
1103 .nb_components = 4,
1104 .log2_chroma_w = 1,
1105 .log2_chroma_h = 1,
1106 .comp = {
1107 { 0, 2, 0, 0, 16 }, /* Y */
1108 { 1, 2, 0, 0, 16 }, /* U */
1109 { 2, 2, 0, 0, 16 }, /* V */
1110 { 3, 2, 0, 0, 16 }, /* A */
1111 },
1113 },
1115 .name = "yuva422p16be",
1116 .nb_components = 4,
1117 .log2_chroma_w = 1,
1118 .log2_chroma_h = 0,
1119 .comp = {
1120 { 0, 2, 0, 0, 16 }, /* Y */
1121 { 1, 2, 0, 0, 16 }, /* U */
1122 { 2, 2, 0, 0, 16 }, /* V */
1123 { 3, 2, 0, 0, 16 }, /* A */
1124 },
1126 },
1128 .name = "yuva422p16le",
1129 .nb_components = 4,
1130 .log2_chroma_w = 1,
1131 .log2_chroma_h = 0,
1132 .comp = {
1133 { 0, 2, 0, 0, 16 }, /* Y */
1134 { 1, 2, 0, 0, 16 }, /* U */
1135 { 2, 2, 0, 0, 16 }, /* V */
1136 { 3, 2, 0, 0, 16 }, /* A */
1137 },
1139 },
1141 .name = "yuva444p16be",
1142 .nb_components = 4,
1143 .log2_chroma_w = 0,
1144 .log2_chroma_h = 0,
1145 .comp = {
1146 { 0, 2, 0, 0, 16 }, /* Y */
1147 { 1, 2, 0, 0, 16 }, /* U */
1148 { 2, 2, 0, 0, 16 }, /* V */
1149 { 3, 2, 0, 0, 16 }, /* A */
1150 },
1152 },
1154 .name = "yuva444p16le",
1155 .nb_components = 4,
1156 .log2_chroma_w = 0,
1157 .log2_chroma_h = 0,
1158 .comp = {
1159 { 0, 2, 0, 0, 16 }, /* Y */
1160 { 1, 2, 0, 0, 16 }, /* U */
1161 { 2, 2, 0, 0, 16 }, /* V */
1162 { 3, 2, 0, 0, 16 }, /* A */
1163 },
1165 },
1166 [AV_PIX_FMT_RGB48BE] = {
1167 .name = "rgb48be",
1168 .nb_components = 3,
1169 .log2_chroma_w = 0,
1170 .log2_chroma_h = 0,
1171 .comp = {
1172 { 0, 6, 0, 0, 16 }, /* R */
1173 { 0, 6, 2, 0, 16 }, /* G */
1174 { 0, 6, 4, 0, 16 }, /* B */
1175 },
1177 },
1178 [AV_PIX_FMT_RGB48LE] = {
1179 .name = "rgb48le",
1180 .nb_components = 3,
1181 .log2_chroma_w = 0,
1182 .log2_chroma_h = 0,
1183 .comp = {
1184 { 0, 6, 0, 0, 16 }, /* R */
1185 { 0, 6, 2, 0, 16 }, /* G */
1186 { 0, 6, 4, 0, 16 }, /* B */
1187 },
1188 .flags = AV_PIX_FMT_FLAG_RGB,
1189 },
1191 .name = "rgba64be",
1192 .nb_components = 4,
1193 .log2_chroma_w = 0,
1194 .log2_chroma_h = 0,
1195 .comp = {
1196 { 0, 8, 0, 0, 16 }, /* R */
1197 { 0, 8, 2, 0, 16 }, /* G */
1198 { 0, 8, 4, 0, 16 }, /* B */
1199 { 0, 8, 6, 0, 16 }, /* A */
1200 },
1202 },
1204 .name = "rgba64le",
1205 .nb_components = 4,
1206 .log2_chroma_w = 0,
1207 .log2_chroma_h = 0,
1208 .comp = {
1209 { 0, 8, 0, 0, 16 }, /* R */
1210 { 0, 8, 2, 0, 16 }, /* G */
1211 { 0, 8, 4, 0, 16 }, /* B */
1212 { 0, 8, 6, 0, 16 }, /* A */
1213 },
1215 },
1217 .name = "rgb565be",
1218 .nb_components = 3,
1219 .log2_chroma_w = 0,
1220 .log2_chroma_h = 0,
1221 .comp = {
1222 { 0, 2, -1, 3, 5 }, /* R */
1223 { 0, 2, 0, 5, 6 }, /* G */
1224 { 0, 2, 0, 0, 5 }, /* B */
1225 },
1227 },
1229 .name = "rgb565le",
1230 .nb_components = 3,
1231 .log2_chroma_w = 0,
1232 .log2_chroma_h = 0,
1233 .comp = {
1234 { 0, 2, 1, 3, 5 }, /* R */
1235 { 0, 2, 0, 5, 6 }, /* G */
1236 { 0, 2, 0, 0, 5 }, /* B */
1237 },
1238 .flags = AV_PIX_FMT_FLAG_RGB,
1239 },
1241 .name = "rgb555be",
1242 .nb_components = 3,
1243 .log2_chroma_w = 0,
1244 .log2_chroma_h = 0,
1245 .comp = {
1246 { 0, 2, -1, 2, 5 }, /* R */
1247 { 0, 2, 0, 5, 5 }, /* G */
1248 { 0, 2, 0, 0, 5 }, /* B */
1249 },
1251 },
1253 .name = "rgb555le",
1254 .nb_components = 3,
1255 .log2_chroma_w = 0,
1256 .log2_chroma_h = 0,
1257 .comp = {
1258 { 0, 2, 1, 2, 5 }, /* R */
1259 { 0, 2, 0, 5, 5 }, /* G */
1260 { 0, 2, 0, 0, 5 }, /* B */
1261 },
1262 .flags = AV_PIX_FMT_FLAG_RGB,
1263 },
1265 .name = "rgb444be",
1266 .nb_components = 3,
1267 .log2_chroma_w = 0,
1268 .log2_chroma_h = 0,
1269 .comp = {
1270 { 0, 2, -1, 0, 4 }, /* R */
1271 { 0, 2, 0, 4, 4 }, /* G */
1272 { 0, 2, 0, 0, 4 }, /* B */
1273 },
1275 },
1277 .name = "rgb444le",
1278 .nb_components = 3,
1279 .log2_chroma_w = 0,
1280 .log2_chroma_h = 0,
1281 .comp = {
1282 { 0, 2, 1, 0, 4 }, /* R */
1283 { 0, 2, 0, 4, 4 }, /* G */
1284 { 0, 2, 0, 0, 4 }, /* B */
1285 },
1286 .flags = AV_PIX_FMT_FLAG_RGB,
1287 },
1288 [AV_PIX_FMT_BGR48BE] = {
1289 .name = "bgr48be",
1290 .nb_components = 3,
1291 .log2_chroma_w = 0,
1292 .log2_chroma_h = 0,
1293 .comp = {
1294 { 0, 6, 4, 0, 16 }, /* R */
1295 { 0, 6, 2, 0, 16 }, /* G */
1296 { 0, 6, 0, 0, 16 }, /* B */
1297 },
1299 },
1300 [AV_PIX_FMT_BGR48LE] = {
1301 .name = "bgr48le",
1302 .nb_components = 3,
1303 .log2_chroma_w = 0,
1304 .log2_chroma_h = 0,
1305 .comp = {
1306 { 0, 6, 4, 0, 16 }, /* R */
1307 { 0, 6, 2, 0, 16 }, /* G */
1308 { 0, 6, 0, 0, 16 }, /* B */
1309 },
1310 .flags = AV_PIX_FMT_FLAG_RGB,
1311 },
1313 .name = "bgra64be",
1314 .nb_components = 4,
1315 .log2_chroma_w = 0,
1316 .log2_chroma_h = 0,
1317 .comp = {
1318 { 0, 8, 4, 0, 16 }, /* R */
1319 { 0, 8, 2, 0, 16 }, /* G */
1320 { 0, 8, 0, 0, 16 }, /* B */
1321 { 0, 8, 6, 0, 16 }, /* A */
1322 },
1324 },
1326 .name = "bgra64le",
1327 .nb_components = 4,
1328 .log2_chroma_w = 0,
1329 .log2_chroma_h = 0,
1330 .comp = {
1331 { 0, 8, 4, 0, 16 }, /* R */
1332 { 0, 8, 2, 0, 16 }, /* G */
1333 { 0, 8, 0, 0, 16 }, /* B */
1334 { 0, 8, 6, 0, 16 }, /* A */
1335 },
1337 },
1339 .name = "bgr565be",
1340 .nb_components = 3,
1341 .log2_chroma_w = 0,
1342 .log2_chroma_h = 0,
1343 .comp = {
1344 { 0, 2, 0, 0, 5 }, /* R */
1345 { 0, 2, 0, 5, 6 }, /* G */
1346 { 0, 2, -1, 3, 5 }, /* B */
1347 },
1349 },
1351 .name = "bgr565le",
1352 .nb_components = 3,
1353 .log2_chroma_w = 0,
1354 .log2_chroma_h = 0,
1355 .comp = {
1356 { 0, 2, 0, 0, 5 }, /* R */
1357 { 0, 2, 0, 5, 6 }, /* G */
1358 { 0, 2, 1, 3, 5 }, /* B */
1359 },
1360 .flags = AV_PIX_FMT_FLAG_RGB,
1361 },
1363 .name = "bgr555be",
1364 .nb_components = 3,
1365 .log2_chroma_w = 0,
1366 .log2_chroma_h = 0,
1367 .comp = {
1368 { 0, 2, 0, 0, 5 }, /* R */
1369 { 0, 2, 0, 5, 5 }, /* G */
1370 { 0, 2, -1, 2, 5 }, /* B */
1371 },
1373 },
1375 .name = "bgr555le",
1376 .nb_components = 3,
1377 .log2_chroma_w = 0,
1378 .log2_chroma_h = 0,
1379 .comp = {
1380 { 0, 2, 0, 0, 5 }, /* R */
1381 { 0, 2, 0, 5, 5 }, /* G */
1382 { 0, 2, 1, 2, 5 }, /* B */
1383 },
1384 .flags = AV_PIX_FMT_FLAG_RGB,
1385 },
1387 .name = "bgr444be",
1388 .nb_components = 3,
1389 .log2_chroma_w = 0,
1390 .log2_chroma_h = 0,
1391 .comp = {
1392 { 0, 2, 0, 0, 4 }, /* R */
1393 { 0, 2, 0, 4, 4 }, /* G */
1394 { 0, 2, -1, 0, 4 }, /* B */
1395 },
1397 },
1399 .name = "bgr444le",
1400 .nb_components = 3,
1401 .log2_chroma_w = 0,
1402 .log2_chroma_h = 0,
1403 .comp = {
1404 { 0, 2, 0, 0, 4 }, /* R */
1405 { 0, 2, 0, 4, 4 }, /* G */
1406 { 0, 2, 1, 0, 4 }, /* B */
1407 },
1408 .flags = AV_PIX_FMT_FLAG_RGB,
1409 },
1410 [AV_PIX_FMT_VAAPI] = {
1411 .name = "vaapi",
1412 .log2_chroma_w = 1,
1413 .log2_chroma_h = 1,
1414 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1415 },
1417 .name = "yuv420p9le",
1418 .nb_components = 3,
1419 .log2_chroma_w = 1,
1420 .log2_chroma_h = 1,
1421 .comp = {
1422 { 0, 2, 0, 0, 9 }, /* Y */
1423 { 1, 2, 0, 0, 9 }, /* U */
1424 { 2, 2, 0, 0, 9 }, /* V */
1425 },
1426 .flags = AV_PIX_FMT_FLAG_PLANAR,
1427 },
1429 .name = "yuv420p9be",
1430 .nb_components = 3,
1431 .log2_chroma_w = 1,
1432 .log2_chroma_h = 1,
1433 .comp = {
1434 { 0, 2, 0, 0, 9 }, /* Y */
1435 { 1, 2, 0, 0, 9 }, /* U */
1436 { 2, 2, 0, 0, 9 }, /* V */
1437 },
1439 },
1441 .name = "yuv420p10le",
1442 .nb_components = 3,
1443 .log2_chroma_w = 1,
1444 .log2_chroma_h = 1,
1445 .comp = {
1446 { 0, 2, 0, 0, 10 }, /* Y */
1447 { 1, 2, 0, 0, 10 }, /* U */
1448 { 2, 2, 0, 0, 10 }, /* V */
1449 },
1450 .flags = AV_PIX_FMT_FLAG_PLANAR,
1451 },
1453 .name = "yuv420p10be",
1454 .nb_components = 3,
1455 .log2_chroma_w = 1,
1456 .log2_chroma_h = 1,
1457 .comp = {
1458 { 0, 2, 0, 0, 10 }, /* Y */
1459 { 1, 2, 0, 0, 10 }, /* U */
1460 { 2, 2, 0, 0, 10 }, /* V */
1461 },
1463 },
1465 .name = "yuv420p12le",
1466 .nb_components = 3,
1467 .log2_chroma_w = 1,
1468 .log2_chroma_h = 1,
1469 .comp = {
1470 { 0, 2, 0, 0, 12 }, /* Y */
1471 { 1, 2, 0, 0, 12 }, /* U */
1472 { 2, 2, 0, 0, 12 }, /* V */
1473 },
1474 .flags = AV_PIX_FMT_FLAG_PLANAR,
1475 },
1477 .name = "yuv420p12be",
1478 .nb_components = 3,
1479 .log2_chroma_w = 1,
1480 .log2_chroma_h = 1,
1481 .comp = {
1482 { 0, 2, 0, 0, 12 }, /* Y */
1483 { 1, 2, 0, 0, 12 }, /* U */
1484 { 2, 2, 0, 0, 12 }, /* V */
1485 },
1487 },
1489 .name = "yuv420p14le",
1490 .nb_components = 3,
1491 .log2_chroma_w = 1,
1492 .log2_chroma_h = 1,
1493 .comp = {
1494 { 0, 2, 0, 0, 14 }, /* Y */
1495 { 1, 2, 0, 0, 14 }, /* U */
1496 { 2, 2, 0, 0, 14 }, /* V */
1497 },
1498 .flags = AV_PIX_FMT_FLAG_PLANAR,
1499 },
1501 .name = "yuv420p14be",
1502 .nb_components = 3,
1503 .log2_chroma_w = 1,
1504 .log2_chroma_h = 1,
1505 .comp = {
1506 { 0, 2, 0, 0, 14 }, /* Y */
1507 { 1, 2, 0, 0, 14 }, /* U */
1508 { 2, 2, 0, 0, 14 }, /* V */
1509 },
1511 },
1513 .name = "yuv420p16le",
1514 .nb_components = 3,
1515 .log2_chroma_w = 1,
1516 .log2_chroma_h = 1,
1517 .comp = {
1518 { 0, 2, 0, 0, 16 }, /* Y */
1519 { 1, 2, 0, 0, 16 }, /* U */
1520 { 2, 2, 0, 0, 16 }, /* V */
1521 },
1522 .flags = AV_PIX_FMT_FLAG_PLANAR,
1523 },
1525 .name = "yuv420p16be",
1526 .nb_components = 3,
1527 .log2_chroma_w = 1,
1528 .log2_chroma_h = 1,
1529 .comp = {
1530 { 0, 2, 0, 0, 16 }, /* Y */
1531 { 1, 2, 0, 0, 16 }, /* U */
1532 { 2, 2, 0, 0, 16 }, /* V */
1533 },
1535 },
1537 .name = "yuv422p9le",
1538 .nb_components = 3,
1539 .log2_chroma_w = 1,
1540 .log2_chroma_h = 0,
1541 .comp = {
1542 { 0, 2, 0, 0, 9 }, /* Y */
1543 { 1, 2, 0, 0, 9 }, /* U */
1544 { 2, 2, 0, 0, 9 }, /* V */
1545 },
1546 .flags = AV_PIX_FMT_FLAG_PLANAR,
1547 },
1549 .name = "yuv422p9be",
1550 .nb_components = 3,
1551 .log2_chroma_w = 1,
1552 .log2_chroma_h = 0,
1553 .comp = {
1554 { 0, 2, 0, 0, 9 }, /* Y */
1555 { 1, 2, 0, 0, 9 }, /* U */
1556 { 2, 2, 0, 0, 9 }, /* V */
1557 },
1559 },
1561 .name = "yuv422p10le",
1562 .nb_components = 3,
1563 .log2_chroma_w = 1,
1564 .log2_chroma_h = 0,
1565 .comp = {
1566 { 0, 2, 0, 0, 10 }, /* Y */
1567 { 1, 2, 0, 0, 10 }, /* U */
1568 { 2, 2, 0, 0, 10 }, /* V */
1569 },
1570 .flags = AV_PIX_FMT_FLAG_PLANAR,
1571 },
1573 .name = "yuv422p10be",
1574 .nb_components = 3,
1575 .log2_chroma_w = 1,
1576 .log2_chroma_h = 0,
1577 .comp = {
1578 { 0, 2, 0, 0, 10 }, /* Y */
1579 { 1, 2, 0, 0, 10 }, /* U */
1580 { 2, 2, 0, 0, 10 }, /* V */
1581 },
1583 },
1585 .name = "yuv422p12le",
1586 .nb_components = 3,
1587 .log2_chroma_w = 1,
1588 .log2_chroma_h = 0,
1589 .comp = {
1590 { 0, 2, 0, 0, 12 }, /* Y */
1591 { 1, 2, 0, 0, 12 }, /* U */
1592 { 2, 2, 0, 0, 12 }, /* V */
1593 },
1594 .flags = AV_PIX_FMT_FLAG_PLANAR,
1595 },
1597 .name = "yuv422p12be",
1598 .nb_components = 3,
1599 .log2_chroma_w = 1,
1600 .log2_chroma_h = 0,
1601 .comp = {
1602 { 0, 2, 0, 0, 12 }, /* Y */
1603 { 1, 2, 0, 0, 12 }, /* U */
1604 { 2, 2, 0, 0, 12 }, /* V */
1605 },
1607 },
1609 .name = "yuv422p14le",
1610 .nb_components = 3,
1611 .log2_chroma_w = 1,
1612 .log2_chroma_h = 0,
1613 .comp = {
1614 { 0, 2, 0, 0, 14 }, /* Y */
1615 { 1, 2, 0, 0, 14 }, /* U */
1616 { 2, 2, 0, 0, 14 }, /* V */
1617 },
1618 .flags = AV_PIX_FMT_FLAG_PLANAR,
1619 },
1621 .name = "yuv422p14be",
1622 .nb_components = 3,
1623 .log2_chroma_w = 1,
1624 .log2_chroma_h = 0,
1625 .comp = {
1626 { 0, 2, 0, 0, 14 }, /* Y */
1627 { 1, 2, 0, 0, 14 }, /* U */
1628 { 2, 2, 0, 0, 14 }, /* V */
1629 },
1631 },
1633 .name = "yuv422p16le",
1634 .nb_components = 3,
1635 .log2_chroma_w = 1,
1636 .log2_chroma_h = 0,
1637 .comp = {
1638 { 0, 2, 0, 0, 16 }, /* Y */
1639 { 1, 2, 0, 0, 16 }, /* U */
1640 { 2, 2, 0, 0, 16 }, /* V */
1641 },
1642 .flags = AV_PIX_FMT_FLAG_PLANAR,
1643 },
1645 .name = "yuv422p16be",
1646 .nb_components = 3,
1647 .log2_chroma_w = 1,
1648 .log2_chroma_h = 0,
1649 .comp = {
1650 { 0, 2, 0, 0, 16 }, /* Y */
1651 { 1, 2, 0, 0, 16 }, /* U */
1652 { 2, 2, 0, 0, 16 }, /* V */
1653 },
1655 },
1657 .name = "yuv444p16le",
1658 .nb_components = 3,
1659 .log2_chroma_w = 0,
1660 .log2_chroma_h = 0,
1661 .comp = {
1662 { 0, 2, 0, 0, 16 }, /* Y */
1663 { 1, 2, 0, 0, 16 }, /* U */
1664 { 2, 2, 0, 0, 16 }, /* V */
1665 },
1666 .flags = AV_PIX_FMT_FLAG_PLANAR,
1667 },
1669 .name = "yuv444p16be",
1670 .nb_components = 3,
1671 .log2_chroma_w = 0,
1672 .log2_chroma_h = 0,
1673 .comp = {
1674 { 0, 2, 0, 0, 16 }, /* Y */
1675 { 1, 2, 0, 0, 16 }, /* U */
1676 { 2, 2, 0, 0, 16 }, /* V */
1677 },
1679 },
1681 .name = "yuv444p10le",
1682 .nb_components = 3,
1683 .log2_chroma_w = 0,
1684 .log2_chroma_h = 0,
1685 .comp = {
1686 { 0, 2, 0, 0, 10 }, /* Y */
1687 { 1, 2, 0, 0, 10 }, /* U */
1688 { 2, 2, 0, 0, 10 }, /* V */
1689 },
1690 .flags = AV_PIX_FMT_FLAG_PLANAR,
1691 },
1693 .name = "yuv444p10be",
1694 .nb_components = 3,
1695 .log2_chroma_w = 0,
1696 .log2_chroma_h = 0,
1697 .comp = {
1698 { 0, 2, 0, 0, 10 }, /* Y */
1699 { 1, 2, 0, 0, 10 }, /* U */
1700 { 2, 2, 0, 0, 10 }, /* V */
1701 },
1703 },
1705 .name = "yuv444p10msble",
1706 .nb_components = 3,
1707 .log2_chroma_w = 0,
1708 .log2_chroma_h = 0,
1709 .comp = {
1710 { 0, 2, 0, 6, 10 }, /* Y */
1711 { 1, 2, 0, 6, 10 }, /* U */
1712 { 2, 2, 0, 6, 10 }, /* V */
1713 },
1714 .flags = AV_PIX_FMT_FLAG_PLANAR,
1715 },
1717 .name = "yuv444p10msbbe",
1718 .nb_components = 3,
1719 .log2_chroma_w = 0,
1720 .log2_chroma_h = 0,
1721 .comp = {
1722 { 0, 2, 0, 6, 10 }, /* Y */
1723 { 1, 2, 0, 6, 10 }, /* U */
1724 { 2, 2, 0, 6, 10 }, /* V */
1725 },
1727 },
1729 .name = "yuv444p9le",
1730 .nb_components = 3,
1731 .log2_chroma_w = 0,
1732 .log2_chroma_h = 0,
1733 .comp = {
1734 { 0, 2, 0, 0, 9 }, /* Y */
1735 { 1, 2, 0, 0, 9 }, /* U */
1736 { 2, 2, 0, 0, 9 }, /* V */
1737 },
1738 .flags = AV_PIX_FMT_FLAG_PLANAR,
1739 },
1741 .name = "yuv444p9be",
1742 .nb_components = 3,
1743 .log2_chroma_w = 0,
1744 .log2_chroma_h = 0,
1745 .comp = {
1746 { 0, 2, 0, 0, 9 }, /* Y */
1747 { 1, 2, 0, 0, 9 }, /* U */
1748 { 2, 2, 0, 0, 9 }, /* V */
1749 },
1751 },
1753 .name = "yuv444p12le",
1754 .nb_components = 3,
1755 .log2_chroma_w = 0,
1756 .log2_chroma_h = 0,
1757 .comp = {
1758 { 0, 2, 0, 0, 12 }, /* Y */
1759 { 1, 2, 0, 0, 12 }, /* U */
1760 { 2, 2, 0, 0, 12 }, /* V */
1761 },
1762 .flags = AV_PIX_FMT_FLAG_PLANAR,
1763 },
1765 .name = "yuv444p12be",
1766 .nb_components = 3,
1767 .log2_chroma_w = 0,
1768 .log2_chroma_h = 0,
1769 .comp = {
1770 { 0, 2, 0, 0, 12 }, /* Y */
1771 { 1, 2, 0, 0, 12 }, /* U */
1772 { 2, 2, 0, 0, 12 }, /* V */
1773 },
1775 },
1777 .name = "yuv444p12msble",
1778 .nb_components = 3,
1779 .log2_chroma_w = 0,
1780 .log2_chroma_h = 0,
1781 .comp = {
1782 { 0, 2, 0, 4, 12 }, /* Y */
1783 { 1, 2, 0, 4, 12 }, /* U */
1784 { 2, 2, 0, 4, 12 }, /* V */
1785 },
1786 .flags = AV_PIX_FMT_FLAG_PLANAR,
1787 },
1789 .name = "yuv444p12msbbe",
1790 .nb_components = 3,
1791 .log2_chroma_w = 0,
1792 .log2_chroma_h = 0,
1793 .comp = {
1794 { 0, 2, 0, 4, 12 }, /* Y */
1795 { 1, 2, 0, 4, 12 }, /* U */
1796 { 2, 2, 0, 4, 12 }, /* V */
1797 },
1799 },
1801 .name = "yuv444p14le",
1802 .nb_components = 3,
1803 .log2_chroma_w = 0,
1804 .log2_chroma_h = 0,
1805 .comp = {
1806 { 0, 2, 0, 0, 14 }, /* Y */
1807 { 1, 2, 0, 0, 14 }, /* U */
1808 { 2, 2, 0, 0, 14 }, /* V */
1809 },
1810 .flags = AV_PIX_FMT_FLAG_PLANAR,
1811 },
1813 .name = "yuv444p14be",
1814 .nb_components = 3,
1815 .log2_chroma_w = 0,
1816 .log2_chroma_h = 0,
1817 .comp = {
1818 { 0, 2, 0, 0, 14 }, /* Y */
1819 { 1, 2, 0, 0, 14 }, /* U */
1820 { 2, 2, 0, 0, 14 }, /* V */
1821 },
1823 },
1825 .name = "d3d11va_vld",
1826 .log2_chroma_w = 1,
1827 .log2_chroma_h = 1,
1828 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1829 },
1831 .name = "dxva2_vld",
1832 .log2_chroma_w = 1,
1833 .log2_chroma_h = 1,
1834 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1835 },
1836 [AV_PIX_FMT_YA8] = {
1837 .name = "ya8",
1838 .nb_components = 2,
1839 .comp = {
1840 { 0, 2, 0, 0, 8 }, /* Y */
1841 { 0, 2, 1, 0, 8 }, /* A */
1842 },
1843 .flags = AV_PIX_FMT_FLAG_ALPHA,
1844 .alias = "gray8a",
1845 },
1846 [AV_PIX_FMT_YA16LE] = {
1847 .name = "ya16le",
1848 .nb_components = 2,
1849 .comp = {
1850 { 0, 4, 0, 0, 16 }, /* Y */
1851 { 0, 4, 2, 0, 16 }, /* A */
1852 },
1853 .flags = AV_PIX_FMT_FLAG_ALPHA,
1854 },
1855 [AV_PIX_FMT_YA16BE] = {
1856 .name = "ya16be",
1857 .nb_components = 2,
1858 .comp = {
1859 { 0, 4, 0, 0, 16 }, /* Y */
1860 { 0, 4, 2, 0, 16 }, /* A */
1861 },
1863 },
1865 .name = "videotoolbox_vld",
1866 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1867 },
1868 [AV_PIX_FMT_GBRP] = {
1869 .name = "gbrp",
1870 .nb_components = 3,
1871 .log2_chroma_w = 0,
1872 .log2_chroma_h = 0,
1873 .comp = {
1874 { 2, 1, 0, 0, 8 }, /* R */
1875 { 0, 1, 0, 0, 8 }, /* G */
1876 { 1, 1, 0, 0, 8 }, /* B */
1877 },
1879 },
1880 [AV_PIX_FMT_GBRP9LE] = {
1881 .name = "gbrp9le",
1882 .nb_components = 3,
1883 .log2_chroma_w = 0,
1884 .log2_chroma_h = 0,
1885 .comp = {
1886 { 2, 2, 0, 0, 9 }, /* R */
1887 { 0, 2, 0, 0, 9 }, /* G */
1888 { 1, 2, 0, 0, 9 }, /* B */
1889 },
1891 },
1892 [AV_PIX_FMT_GBRP9BE] = {
1893 .name = "gbrp9be",
1894 .nb_components = 3,
1895 .log2_chroma_w = 0,
1896 .log2_chroma_h = 0,
1897 .comp = {
1898 { 2, 2, 0, 0, 9 }, /* R */
1899 { 0, 2, 0, 0, 9 }, /* G */
1900 { 1, 2, 0, 0, 9 }, /* B */
1901 },
1903 },
1905 .name = "gbrp10le",
1906 .nb_components = 3,
1907 .log2_chroma_w = 0,
1908 .log2_chroma_h = 0,
1909 .comp = {
1910 { 2, 2, 0, 0, 10 }, /* R */
1911 { 0, 2, 0, 0, 10 }, /* G */
1912 { 1, 2, 0, 0, 10 }, /* B */
1913 },
1915 },
1917 .name = "gbrp10be",
1918 .nb_components = 3,
1919 .log2_chroma_w = 0,
1920 .log2_chroma_h = 0,
1921 .comp = {
1922 { 2, 2, 0, 0, 10 }, /* R */
1923 { 0, 2, 0, 0, 10 }, /* G */
1924 { 1, 2, 0, 0, 10 }, /* B */
1925 },
1927 },
1929 .name = "gbrp10msble",
1930 .nb_components = 3,
1931 .log2_chroma_w = 0,
1932 .log2_chroma_h = 0,
1933 .comp = {
1934 { 2, 2, 0, 6, 10 }, /* R */
1935 { 0, 2, 0, 6, 10 }, /* G */
1936 { 1, 2, 0, 6, 10 }, /* B */
1937 },
1939 },
1941 .name = "gbrp10msbbe",
1942 .nb_components = 3,
1943 .log2_chroma_w = 0,
1944 .log2_chroma_h = 0,
1945 .comp = {
1946 { 2, 2, 0, 6, 10 }, /* R */
1947 { 0, 2, 0, 6, 10 }, /* G */
1948 { 1, 2, 0, 6, 10 }, /* B */
1949 },
1951 },
1953 .name = "gbrp12le",
1954 .nb_components = 3,
1955 .log2_chroma_w = 0,
1956 .log2_chroma_h = 0,
1957 .comp = {
1958 { 2, 2, 0, 0, 12 }, /* R */
1959 { 0, 2, 0, 0, 12 }, /* G */
1960 { 1, 2, 0, 0, 12 }, /* B */
1961 },
1963 },
1965 .name = "gbrp12be",
1966 .nb_components = 3,
1967 .log2_chroma_w = 0,
1968 .log2_chroma_h = 0,
1969 .comp = {
1970 { 2, 2, 0, 0, 12 }, /* R */
1971 { 0, 2, 0, 0, 12 }, /* G */
1972 { 1, 2, 0, 0, 12 }, /* B */
1973 },
1975 },
1977 .name = "gbrp12msble",
1978 .nb_components = 3,
1979 .log2_chroma_w = 0,
1980 .log2_chroma_h = 0,
1981 .comp = {
1982 { 2, 2, 0, 4, 12 }, /* R */
1983 { 0, 2, 0, 4, 12 }, /* G */
1984 { 1, 2, 0, 4, 12 }, /* B */
1985 },
1987 },
1989 .name = "gbrp12msbbe",
1990 .nb_components = 3,
1991 .log2_chroma_w = 0,
1992 .log2_chroma_h = 0,
1993 .comp = {
1994 { 2, 2, 0, 4, 12 }, /* R */
1995 { 0, 2, 0, 4, 12 }, /* G */
1996 { 1, 2, 0, 4, 12 }, /* B */
1997 },
1999 },
2001 .name = "gbrp14le",
2002 .nb_components = 3,
2003 .log2_chroma_w = 0,
2004 .log2_chroma_h = 0,
2005 .comp = {
2006 { 2, 2, 0, 0, 14 }, /* R */
2007 { 0, 2, 0, 0, 14 }, /* G */
2008 { 1, 2, 0, 0, 14 }, /* B */
2009 },
2011 },
2013 .name = "gbrp14be",
2014 .nb_components = 3,
2015 .log2_chroma_w = 0,
2016 .log2_chroma_h = 0,
2017 .comp = {
2018 { 2, 2, 0, 0, 14 }, /* R */
2019 { 0, 2, 0, 0, 14 }, /* G */
2020 { 1, 2, 0, 0, 14 }, /* B */
2021 },
2023 },
2025 .name = "gbrp16le",
2026 .nb_components = 3,
2027 .log2_chroma_w = 0,
2028 .log2_chroma_h = 0,
2029 .comp = {
2030 { 2, 2, 0, 0, 16 }, /* R */
2031 { 0, 2, 0, 0, 16 }, /* G */
2032 { 1, 2, 0, 0, 16 }, /* B */
2033 },
2035 },
2037 .name = "gbrp16be",
2038 .nb_components = 3,
2039 .log2_chroma_w = 0,
2040 .log2_chroma_h = 0,
2041 .comp = {
2042 { 2, 2, 0, 0, 16 }, /* R */
2043 { 0, 2, 0, 0, 16 }, /* G */
2044 { 1, 2, 0, 0, 16 }, /* B */
2045 },
2047 },
2048 [AV_PIX_FMT_GBRAP] = {
2049 .name = "gbrap",
2050 .nb_components = 4,
2051 .log2_chroma_w = 0,
2052 .log2_chroma_h = 0,
2053 .comp = {
2054 { 2, 1, 0, 0, 8 }, /* R */
2055 { 0, 1, 0, 0, 8 }, /* G */
2056 { 1, 1, 0, 0, 8 }, /* B */
2057 { 3, 1, 0, 0, 8 }, /* A */
2058 },
2061 },
2063 .name = "gbrap16le",
2064 .nb_components = 4,
2065 .log2_chroma_w = 0,
2066 .log2_chroma_h = 0,
2067 .comp = {
2068 { 2, 2, 0, 0, 16 }, /* R */
2069 { 0, 2, 0, 0, 16 }, /* G */
2070 { 1, 2, 0, 0, 16 }, /* B */
2071 { 3, 2, 0, 0, 16 }, /* A */
2072 },
2075 },
2077 .name = "gbrap16be",
2078 .nb_components = 4,
2079 .log2_chroma_w = 0,
2080 .log2_chroma_h = 0,
2081 .comp = {
2082 { 2, 2, 0, 0, 16 }, /* R */
2083 { 0, 2, 0, 0, 16 }, /* G */
2084 { 1, 2, 0, 0, 16 }, /* B */
2085 { 3, 2, 0, 0, 16 }, /* A */
2086 },
2089 },
2091 .name = "gbrap32le",
2092 .nb_components = 4,
2093 .log2_chroma_w = 0,
2094 .log2_chroma_h = 0,
2095 .comp = {
2096 { 2, 4, 0, 0, 32 }, /* R */
2097 { 0, 4, 0, 0, 32 }, /* G */
2098 { 1, 4, 0, 0, 32 }, /* B */
2099 { 3, 4, 0, 0, 32 }, /* A */
2100 },
2103 },
2105 .name = "gbrap32be",
2106 .nb_components = 4,
2107 .log2_chroma_w = 0,
2108 .log2_chroma_h = 0,
2109 .comp = {
2110 { 2, 4, 0, 0, 32 }, /* R */
2111 { 0, 4, 0, 0, 32 }, /* G */
2112 { 1, 4, 0, 0, 32 }, /* B */
2113 { 3, 4, 0, 0, 32 }, /* A */
2114 },
2117 },
2118 [AV_PIX_FMT_VDPAU] = {
2119 .name = "vdpau",
2120 .log2_chroma_w = 1,
2121 .log2_chroma_h = 1,
2122 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2123 },
2124 [AV_PIX_FMT_XYZ12LE] = {
2125 .name = "xyz12le",
2126 .nb_components = 3,
2127 .log2_chroma_w = 0,
2128 .log2_chroma_h = 0,
2129 .comp = {
2130 { 0, 6, 0, 4, 12 }, /* X */
2131 { 0, 6, 2, 4, 12 }, /* Y */
2132 { 0, 6, 4, 4, 12 }, /* Z */
2133 },
2134 .flags = AV_PIX_FMT_FLAG_XYZ,
2135 },
2136 [AV_PIX_FMT_XYZ12BE] = {
2137 .name = "xyz12be",
2138 .nb_components = 3,
2139 .log2_chroma_w = 0,
2140 .log2_chroma_h = 0,
2141 .comp = {
2142 { 0, 6, 0, 4, 12 }, /* X */
2143 { 0, 6, 2, 4, 12 }, /* Y */
2144 { 0, 6, 4, 4, 12 }, /* Z */
2145 },
2147 },
2148
2149#define BAYER8_DESC_COMMON \
2150 .nb_components= 3, \
2151 .log2_chroma_w= 0, \
2152 .log2_chroma_h= 0, \
2153 .comp = { \
2154 { 0, 1, 0, 0, 2 }, \
2155 { 0, 1, 0, 0, 4 }, \
2156 { 0, 1, 0, 0, 2 }, \
2157 }, \
2158
2159#define BAYER16_DESC_COMMON \
2160 .nb_components= 3, \
2161 .log2_chroma_w= 0, \
2162 .log2_chroma_h= 0, \
2163 .comp = { \
2164 { 0, 2, 0, 0, 4 }, \
2165 { 0, 2, 0, 0, 8 }, \
2166 { 0, 2, 0, 0, 4 }, \
2167 }, \
2168
2170 .name = "bayer_bggr8",
2173 },
2175 .name = "bayer_bggr16le",
2178 },
2180 .name = "bayer_bggr16be",
2183 },
2185 .name = "bayer_rggb8",
2188 },
2190 .name = "bayer_rggb16le",
2193 },
2195 .name = "bayer_rggb16be",
2198 },
2200 .name = "bayer_gbrg8",
2203 },
2205 .name = "bayer_gbrg16le",
2208 },
2210 .name = "bayer_gbrg16be",
2213 },
2215 .name = "bayer_grbg8",
2218 },
2220 .name = "bayer_grbg16le",
2223 },
2225 .name = "bayer_grbg16be",
2228 },
2229 [AV_PIX_FMT_NV16] = {
2230 .name = "nv16",
2231 .nb_components = 3,
2232 .log2_chroma_w = 1,
2233 .log2_chroma_h = 0,
2234 .comp = {
2235 { 0, 1, 0, 0, 8 }, /* Y */
2236 { 1, 2, 0, 0, 8 }, /* U */
2237 { 1, 2, 1, 0, 8 }, /* V */
2238 },
2239 .flags = AV_PIX_FMT_FLAG_PLANAR,
2240 },
2241 [AV_PIX_FMT_NV20LE] = {
2242 .name = "nv20le",
2243 .nb_components = 3,
2244 .log2_chroma_w = 1,
2245 .log2_chroma_h = 0,
2246 .comp = {
2247 { 0, 2, 0, 0, 10 }, /* Y */
2248 { 1, 4, 0, 0, 10 }, /* U */
2249 { 1, 4, 2, 0, 10 }, /* V */
2250 },
2251 .flags = AV_PIX_FMT_FLAG_PLANAR,
2252 },
2253 [AV_PIX_FMT_NV20BE] = {
2254 .name = "nv20be",
2255 .nb_components = 3,
2256 .log2_chroma_w = 1,
2257 .log2_chroma_h = 0,
2258 .comp = {
2259 { 0, 2, 0, 0, 10 }, /* Y */
2260 { 1, 4, 0, 0, 10 }, /* U */
2261 { 1, 4, 2, 0, 10 }, /* V */
2262 },
2264 },
2265 [AV_PIX_FMT_QSV] = {
2266 .name = "qsv",
2267 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2268 },
2270 .name = "mediacodec",
2271 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2272 },
2273 [AV_PIX_FMT_MMAL] = {
2274 .name = "mmal",
2275 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2276 },
2277 [AV_PIX_FMT_CUDA] = {
2278 .name = "cuda",
2279 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2280 },
2281 [AV_PIX_FMT_CUARRAY] = {
2282 .name = "cuarray",
2283 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2284 },
2286 .name = "amf",
2287 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2288 },
2289 [AV_PIX_FMT_VYU444] = {
2290 .name = "vyu444",
2291 .nb_components = 3,
2292 .log2_chroma_w = 0,
2293 .log2_chroma_h = 0,
2294 .comp = {
2295 { 0, 3, 1, 0, 8 }, /* Y */
2296 { 0, 3, 2, 0, 8 }, /* U */
2297 { 0, 3, 0, 0, 8 }, /* V */
2298 },
2299 },
2300 [AV_PIX_FMT_UYVA] = {
2301 .name = "uyva",
2302 .nb_components = 4,
2303 .log2_chroma_w = 0,
2304 .log2_chroma_h = 0,
2305 .comp = {
2306 { 0, 4, 1, 0, 8 }, /* Y */
2307 { 0, 4, 0, 0, 8 }, /* U */
2308 { 0, 4, 2, 0, 8 }, /* V */
2309 { 0, 4, 3, 0, 8 }, /* A */
2310 },
2311 .flags = AV_PIX_FMT_FLAG_ALPHA,
2312 },
2313 [AV_PIX_FMT_AYUV] = {
2314 .name = "ayuv",
2315 .nb_components = 4,
2316 .log2_chroma_w = 0,
2317 .log2_chroma_h = 0,
2318 .comp = {
2319 { 0, 4, 1, 0, 8 }, /* Y */
2320 { 0, 4, 2, 0, 8 }, /* U */
2321 { 0, 4, 3, 0, 8 }, /* V */
2322 { 0, 4, 0, 0, 8 }, /* A */
2323 },
2324 .flags = AV_PIX_FMT_FLAG_ALPHA,
2325 },
2327 .name = "ayuv64le",
2328 .nb_components = 4,
2329 .log2_chroma_w = 0,
2330 .log2_chroma_h = 0,
2331 .comp = {
2332 { 0, 8, 2, 0, 16 }, /* Y */
2333 { 0, 8, 4, 0, 16 }, /* U */
2334 { 0, 8, 6, 0, 16 }, /* V */
2335 { 0, 8, 0, 0, 16 }, /* A */
2336 },
2337 .flags = AV_PIX_FMT_FLAG_ALPHA,
2338 },
2340 .name = "ayuv64be",
2341 .nb_components = 4,
2342 .log2_chroma_w = 0,
2343 .log2_chroma_h = 0,
2344 .comp = {
2345 { 0, 8, 2, 0, 16 }, /* Y */
2346 { 0, 8, 4, 0, 16 }, /* U */
2347 { 0, 8, 6, 0, 16 }, /* V */
2348 { 0, 8, 0, 0, 16 }, /* A */
2349 },
2351 },
2352 [AV_PIX_FMT_P010LE] = {
2353 .name = "p010le",
2354 .nb_components = 3,
2355 .log2_chroma_w = 1,
2356 .log2_chroma_h = 1,
2357 .comp = {
2358 { 0, 2, 0, 6, 10 }, /* Y */
2359 { 1, 4, 0, 6, 10 }, /* U */
2360 { 1, 4, 2, 6, 10 }, /* V */
2361 },
2362 .flags = AV_PIX_FMT_FLAG_PLANAR,
2363 },
2364 [AV_PIX_FMT_P010BE] = {
2365 .name = "p010be",
2366 .nb_components = 3,
2367 .log2_chroma_w = 1,
2368 .log2_chroma_h = 1,
2369 .comp = {
2370 { 0, 2, 0, 6, 10 }, /* Y */
2371 { 1, 4, 0, 6, 10 }, /* U */
2372 { 1, 4, 2, 6, 10 }, /* V */
2373 },
2375 },
2376 [AV_PIX_FMT_P012LE] = {
2377 .name = "p012le",
2378 .nb_components = 3,
2379 .log2_chroma_w = 1,
2380 .log2_chroma_h = 1,
2381 .comp = {
2382 { 0, 2, 0, 4, 12 }, /* Y */
2383 { 1, 4, 0, 4, 12 }, /* U */
2384 { 1, 4, 2, 4, 12 }, /* V */
2385 },
2386 .flags = AV_PIX_FMT_FLAG_PLANAR,
2387 },
2388 [AV_PIX_FMT_P012BE] = {
2389 .name = "p012be",
2390 .nb_components = 3,
2391 .log2_chroma_w = 1,
2392 .log2_chroma_h = 1,
2393 .comp = {
2394 { 0, 2, 0, 4, 12 }, /* Y */
2395 { 1, 4, 0, 4, 12 }, /* U */
2396 { 1, 4, 2, 4, 12 }, /* V */
2397 },
2399 },
2400 [AV_PIX_FMT_P016LE] = {
2401 .name = "p016le",
2402 .nb_components = 3,
2403 .log2_chroma_w = 1,
2404 .log2_chroma_h = 1,
2405 .comp = {
2406 { 0, 2, 0, 0, 16 }, /* Y */
2407 { 1, 4, 0, 0, 16 }, /* U */
2408 { 1, 4, 2, 0, 16 }, /* V */
2409 },
2410 .flags = AV_PIX_FMT_FLAG_PLANAR,
2411 },
2412 [AV_PIX_FMT_P016BE] = {
2413 .name = "p016be",
2414 .nb_components = 3,
2415 .log2_chroma_w = 1,
2416 .log2_chroma_h = 1,
2417 .comp = {
2418 { 0, 2, 0, 0, 16 }, /* Y */
2419 { 1, 4, 0, 0, 16 }, /* U */
2420 { 1, 4, 2, 0, 16 }, /* V */
2421 },
2423 },
2425 .name = "gbrap14le",
2426 .nb_components = 4,
2427 .log2_chroma_w = 0,
2428 .log2_chroma_h = 0,
2429 .comp = {
2430 { 2, 2, 0, 0, 14 }, /* R */
2431 { 0, 2, 0, 0, 14 }, /* G */
2432 { 1, 2, 0, 0, 14 }, /* B */
2433 { 3, 2, 0, 0, 14 }, /* A */
2434 },
2437 },
2439 .name = "gbrap14be",
2440 .nb_components = 4,
2441 .log2_chroma_w = 0,
2442 .log2_chroma_h = 0,
2443 .comp = {
2444 { 2, 2, 0, 0, 14 }, /* R */
2445 { 0, 2, 0, 0, 14 }, /* G */
2446 { 1, 2, 0, 0, 14 }, /* B */
2447 { 3, 2, 0, 0, 14 }, /* A */
2448 },
2451 },
2453 .name = "gbrap12le",
2454 .nb_components = 4,
2455 .log2_chroma_w = 0,
2456 .log2_chroma_h = 0,
2457 .comp = {
2458 { 2, 2, 0, 0, 12 }, /* R */
2459 { 0, 2, 0, 0, 12 }, /* G */
2460 { 1, 2, 0, 0, 12 }, /* B */
2461 { 3, 2, 0, 0, 12 }, /* A */
2462 },
2465 },
2467 .name = "gbrap12be",
2468 .nb_components = 4,
2469 .log2_chroma_w = 0,
2470 .log2_chroma_h = 0,
2471 .comp = {
2472 { 2, 2, 0, 0, 12 }, /* R */
2473 { 0, 2, 0, 0, 12 }, /* G */
2474 { 1, 2, 0, 0, 12 }, /* B */
2475 { 3, 2, 0, 0, 12 }, /* A */
2476 },
2479 },
2481 .name = "gbrap10le",
2482 .nb_components = 4,
2483 .log2_chroma_w = 0,
2484 .log2_chroma_h = 0,
2485 .comp = {
2486 { 2, 2, 0, 0, 10 }, /* R */
2487 { 0, 2, 0, 0, 10 }, /* G */
2488 { 1, 2, 0, 0, 10 }, /* B */
2489 { 3, 2, 0, 0, 10 }, /* A */
2490 },
2493 },
2495 .name = "gbrap10be",
2496 .nb_components = 4,
2497 .log2_chroma_w = 0,
2498 .log2_chroma_h = 0,
2499 .comp = {
2500 { 2, 2, 0, 0, 10 }, /* R */
2501 { 0, 2, 0, 0, 10 }, /* G */
2502 { 1, 2, 0, 0, 10 }, /* B */
2503 { 3, 2, 0, 0, 10 }, /* A */
2504 },
2507 },
2508 [AV_PIX_FMT_D3D11] = {
2509 .name = "d3d11",
2510 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2511 },
2512 [AV_PIX_FMT_D3D12] = {
2513 .name = "d3d12",
2514 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2515 },
2517 .name = "gbrpf32be",
2518 .nb_components = 3,
2519 .log2_chroma_w = 0,
2520 .log2_chroma_h = 0,
2521 .comp = {
2522 { 2, 4, 0, 0, 32 }, /* R */
2523 { 0, 4, 0, 0, 32 }, /* G */
2524 { 1, 4, 0, 0, 32 }, /* B */
2525 },
2528 },
2530 .name = "gbrpf32le",
2531 .nb_components = 3,
2532 .log2_chroma_w = 0,
2533 .log2_chroma_h = 0,
2534 .comp = {
2535 { 2, 4, 0, 0, 32 }, /* R */
2536 { 0, 4, 0, 0, 32 }, /* G */
2537 { 1, 4, 0, 0, 32 }, /* B */
2538 },
2540 },
2542 .name = "gbrapf32be",
2543 .nb_components = 4,
2544 .log2_chroma_w = 0,
2545 .log2_chroma_h = 0,
2546 .comp = {
2547 { 2, 4, 0, 0, 32 }, /* R */
2548 { 0, 4, 0, 0, 32 }, /* G */
2549 { 1, 4, 0, 0, 32 }, /* B */
2550 { 3, 4, 0, 0, 32 }, /* A */
2551 },
2555 },
2557 .name = "gbrapf32le",
2558 .nb_components = 4,
2559 .log2_chroma_w = 0,
2560 .log2_chroma_h = 0,
2561 .comp = {
2562 { 2, 4, 0, 0, 32 }, /* R */
2563 { 0, 4, 0, 0, 32 }, /* G */
2564 { 1, 4, 0, 0, 32 }, /* B */
2565 { 3, 4, 0, 0, 32 }, /* A */
2566 },
2569 },
2571 .name = "gbrpf16be",
2572 .nb_components = 3,
2573 .log2_chroma_w = 0,
2574 .log2_chroma_h = 0,
2575 .comp = {
2576 { 2, 2, 0, 0, 16 }, /* R */
2577 { 0, 2, 0, 0, 16 }, /* G */
2578 { 1, 2, 0, 0, 16 }, /* B */
2579 },
2582 },
2584 .name = "gbrpf16le",
2585 .nb_components = 3,
2586 .log2_chroma_w = 0,
2587 .log2_chroma_h = 0,
2588 .comp = {
2589 { 2, 2, 0, 0, 16 }, /* R */
2590 { 0, 2, 0, 0, 16 }, /* G */
2591 { 1, 2, 0, 0, 16 }, /* B */
2592 },
2594 },
2596 .name = "gbrapf16be",
2597 .nb_components = 4,
2598 .log2_chroma_w = 0,
2599 .log2_chroma_h = 0,
2600 .comp = {
2601 { 2, 2, 0, 0, 16 }, /* R */
2602 { 0, 2, 0, 0, 16 }, /* G */
2603 { 1, 2, 0, 0, 16 }, /* B */
2604 { 3, 2, 0, 0, 16 }, /* A */
2605 },
2609 },
2611 .name = "gbrapf16le",
2612 .nb_components = 4,
2613 .log2_chroma_w = 0,
2614 .log2_chroma_h = 0,
2615 .comp = {
2616 { 2, 2, 0, 0, 16 }, /* R */
2617 { 0, 2, 0, 0, 16 }, /* G */
2618 { 1, 2, 0, 0, 16 }, /* B */
2619 { 3, 2, 0, 0, 16 }, /* A */
2620 },
2623 },
2625 .name = "drm_prime",
2626 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2627 },
2628 [AV_PIX_FMT_OPENCL] = {
2629 .name = "opencl",
2630 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2631 },
2633 .name = "grayf32be",
2634 .nb_components = 1,
2635 .log2_chroma_w = 0,
2636 .log2_chroma_h = 0,
2637 .comp = {
2638 { 0, 4, 0, 0, 32 }, /* Y */
2639 },
2641 .alias = "yf32be",
2642 },
2644 .name = "grayf32le",
2645 .nb_components = 1,
2646 .log2_chroma_w = 0,
2647 .log2_chroma_h = 0,
2648 .comp = {
2649 { 0, 4, 0, 0, 32 }, /* Y */
2650 },
2651 .flags = AV_PIX_FMT_FLAG_FLOAT,
2652 .alias = "yf32le",
2653 },
2655 .name = "grayf16be",
2656 .nb_components = 1,
2657 .log2_chroma_w = 0,
2658 .log2_chroma_h = 0,
2659 .comp = {
2660 { 0, 2, 0, 0, 16 }, /* Y */
2661 },
2663 },
2665 .name = "grayf16le",
2666 .nb_components = 1,
2667 .log2_chroma_w = 0,
2668 .log2_chroma_h = 0,
2669 .comp = {
2670 { 0, 2, 0, 0, 16 }, /* Y */
2671 },
2672 .flags = AV_PIX_FMT_FLAG_FLOAT,
2673 },
2674 [AV_PIX_FMT_YAF32BE] = {
2675 .name = "yaf32be",
2676 .nb_components = 2,
2677 .log2_chroma_w = 0,
2678 .log2_chroma_h = 0,
2679 .comp = {
2680 { 0, 8, 0, 0, 32 }, /* Y */
2681 { 0, 8, 4, 0, 32 }, /* A */
2682 },
2684 },
2685 [AV_PIX_FMT_YAF32LE] = {
2686 .name = "yaf32le",
2687 .nb_components = 2,
2688 .log2_chroma_w = 0,
2689 .log2_chroma_h = 0,
2690 .comp = {
2691 { 0, 8, 0, 0, 32 }, /* Y */
2692 { 0, 8, 4, 0, 32 }, /* A */
2693 },
2695 },
2696 [AV_PIX_FMT_YAF16BE] = {
2697 .name = "yaf16be",
2698 .nb_components = 2,
2699 .log2_chroma_w = 0,
2700 .log2_chroma_h = 0,
2701 .comp = {
2702 { 0, 4, 0, 0, 16 }, /* Y */
2703 { 0, 4, 2, 0, 16 }, /* A */
2704 },
2706 },
2707 [AV_PIX_FMT_YAF16LE] = {
2708 .name = "yaf16le",
2709 .nb_components = 2,
2710 .log2_chroma_w = 0,
2711 .log2_chroma_h = 0,
2712 .comp = {
2713 { 0, 4, 0, 0, 16 }, /* Y */
2714 { 0, 4, 2, 0, 16 }, /* A */
2715 },
2717 },
2719 .name = "yuva422p12be",
2720 .nb_components = 4,
2721 .log2_chroma_w = 1,
2722 .log2_chroma_h = 0,
2723 .comp = {
2724 { 0, 2, 0, 0, 12 }, /* Y */
2725 { 1, 2, 0, 0, 12 }, /* U */
2726 { 2, 2, 0, 0, 12 }, /* V */
2727 { 3, 2, 0, 0, 12 }, /* A */
2728 },
2730 },
2732 .name = "yuva422p12le",
2733 .nb_components = 4,
2734 .log2_chroma_w = 1,
2735 .log2_chroma_h = 0,
2736 .comp = {
2737 { 0, 2, 0, 0, 12 }, /* Y */
2738 { 1, 2, 0, 0, 12 }, /* U */
2739 { 2, 2, 0, 0, 12 }, /* V */
2740 { 3, 2, 0, 0, 12 }, /* A */
2741 },
2743 },
2745 .name = "yuva444p12be",
2746 .nb_components = 4,
2747 .log2_chroma_w = 0,
2748 .log2_chroma_h = 0,
2749 .comp = {
2750 { 0, 2, 0, 0, 12 }, /* Y */
2751 { 1, 2, 0, 0, 12 }, /* U */
2752 { 2, 2, 0, 0, 12 }, /* V */
2753 { 3, 2, 0, 0, 12 }, /* A */
2754 },
2756 },
2758 .name = "yuva444p12le",
2759 .nb_components = 4,
2760 .log2_chroma_w = 0,
2761 .log2_chroma_h = 0,
2762 .comp = {
2763 { 0, 2, 0, 0, 12 }, /* Y */
2764 { 1, 2, 0, 0, 12 }, /* U */
2765 { 2, 2, 0, 0, 12 }, /* V */
2766 { 3, 2, 0, 0, 12 }, /* A */
2767 },
2769 },
2770 [AV_PIX_FMT_NV24] = {
2771 .name = "nv24",
2772 .nb_components = 3,
2773 .log2_chroma_w = 0,
2774 .log2_chroma_h = 0,
2775 .comp = {
2776 { 0, 1, 0, 0, 8 }, /* Y */
2777 { 1, 2, 0, 0, 8 }, /* U */
2778 { 1, 2, 1, 0, 8 }, /* V */
2779 },
2780 .flags = AV_PIX_FMT_FLAG_PLANAR,
2781 },
2782 [AV_PIX_FMT_NV42] = {
2783 .name = "nv42",
2784 .nb_components = 3,
2785 .log2_chroma_w = 0,
2786 .log2_chroma_h = 0,
2787 .comp = {
2788 { 0, 1, 0, 0, 8 }, /* Y */
2789 { 1, 2, 1, 0, 8 }, /* U */
2790 { 1, 2, 0, 0, 8 }, /* V */
2791 },
2792 .flags = AV_PIX_FMT_FLAG_PLANAR,
2793 },
2794 [AV_PIX_FMT_VULKAN] = {
2795 .name = "vulkan",
2796 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2797 },
2798 [AV_PIX_FMT_P210BE] = {
2799 .name = "p210be",
2800 .nb_components = 3,
2801 .log2_chroma_w = 1,
2802 .log2_chroma_h = 0,
2803 .comp = {
2804 { 0, 2, 0, 6, 10 }, /* Y */
2805 { 1, 4, 0, 6, 10 }, /* U */
2806 { 1, 4, 2, 6, 10 }, /* V */
2807 },
2809 },
2810 [AV_PIX_FMT_P210LE] = {
2811 .name = "p210le",
2812 .nb_components = 3,
2813 .log2_chroma_w = 1,
2814 .log2_chroma_h = 0,
2815 .comp = {
2816 { 0, 2, 0, 6, 10 }, /* Y */
2817 { 1, 4, 0, 6, 10 }, /* U */
2818 { 1, 4, 2, 6, 10 }, /* V */
2819 },
2820 .flags = AV_PIX_FMT_FLAG_PLANAR,
2821 },
2822 [AV_PIX_FMT_P410BE] = {
2823 .name = "p410be",
2824 .nb_components = 3,
2825 .log2_chroma_w = 0,
2826 .log2_chroma_h = 0,
2827 .comp = {
2828 { 0, 2, 0, 6, 10 }, /* Y */
2829 { 1, 4, 0, 6, 10 }, /* U */
2830 { 1, 4, 2, 6, 10 }, /* V */
2831 },
2833 },
2834 [AV_PIX_FMT_P410LE] = {
2835 .name = "p410le",
2836 .nb_components = 3,
2837 .log2_chroma_w = 0,
2838 .log2_chroma_h = 0,
2839 .comp = {
2840 { 0, 2, 0, 6, 10 }, /* Y */
2841 { 1, 4, 0, 6, 10 }, /* U */
2842 { 1, 4, 2, 6, 10 }, /* V */
2843 },
2844 .flags = AV_PIX_FMT_FLAG_PLANAR,
2845 },
2846 [AV_PIX_FMT_P216BE] = {
2847 .name = "p216be",
2848 .nb_components = 3,
2849 .log2_chroma_w = 1,
2850 .log2_chroma_h = 0,
2851 .comp = {
2852 { 0, 2, 0, 0, 16 }, /* Y */
2853 { 1, 4, 0, 0, 16 }, /* U */
2854 { 1, 4, 2, 0, 16 }, /* V */
2855 },
2857 },
2858 [AV_PIX_FMT_P216LE] = {
2859 .name = "p216le",
2860 .nb_components = 3,
2861 .log2_chroma_w = 1,
2862 .log2_chroma_h = 0,
2863 .comp = {
2864 { 0, 2, 0, 0, 16 }, /* Y */
2865 { 1, 4, 0, 0, 16 }, /* U */
2866 { 1, 4, 2, 0, 16 }, /* V */
2867 },
2868 .flags = AV_PIX_FMT_FLAG_PLANAR,
2869 },
2870 [AV_PIX_FMT_P416BE] = {
2871 .name = "p416be",
2872 .nb_components = 3,
2873 .log2_chroma_w = 0,
2874 .log2_chroma_h = 0,
2875 .comp = {
2876 { 0, 2, 0, 0, 16 }, /* Y */
2877 { 1, 4, 0, 0, 16 }, /* U */
2878 { 1, 4, 2, 0, 16 }, /* V */
2879 },
2881 },
2882 [AV_PIX_FMT_P416LE] = {
2883 .name = "p416le",
2884 .nb_components = 3,
2885 .log2_chroma_w = 0,
2886 .log2_chroma_h = 0,
2887 .comp = {
2888 { 0, 2, 0, 0, 16 }, /* Y */
2889 { 1, 4, 0, 0, 16 }, /* U */
2890 { 1, 4, 2, 0, 16 }, /* V */
2891 },
2892 .flags = AV_PIX_FMT_FLAG_PLANAR,
2893 },
2894 [AV_PIX_FMT_VUYA] = {
2895 .name = "vuya",
2896 .nb_components = 4,
2897 .log2_chroma_w = 0,
2898 .log2_chroma_h = 0,
2899 .comp = {
2900 { 0, 4, 2, 0, 8 }, /* Y */
2901 { 0, 4, 1, 0, 8 }, /* U */
2902 { 0, 4, 0, 0, 8 }, /* V */
2903 { 0, 4, 3, 0, 8 }, /* A */
2904 },
2905 .flags = AV_PIX_FMT_FLAG_ALPHA,
2906 },
2907 [AV_PIX_FMT_VUYX] = {
2908 .name = "vuyx",
2909 .nb_components = 3,
2910 .log2_chroma_w = 0,
2911 .log2_chroma_h = 0,
2912 .comp = {
2913 { 0, 4, 2, 0, 8 }, /* Y */
2914 { 0, 4, 1, 0, 8 }, /* U */
2915 { 0, 4, 0, 0, 8 }, /* V */
2916 { 0, 4, 3, 0, 8 }, /* X */
2917 },
2918 },
2920 .name = "rgbf16be",
2921 .nb_components = 3,
2922 .log2_chroma_w = 0,
2923 .log2_chroma_h = 0,
2924 .comp = {
2925 { 0, 6, 0, 0, 16 }, /* R */
2926 { 0, 6, 2, 0, 16 }, /* G */
2927 { 0, 6, 4, 0, 16 }, /* B */
2928 },
2931 },
2933 .name = "rgbf16le",
2934 .nb_components = 3,
2935 .log2_chroma_w = 0,
2936 .log2_chroma_h = 0,
2937 .comp = {
2938 { 0, 6, 0, 0, 16 }, /* R */
2939 { 0, 6, 2, 0, 16 }, /* G */
2940 { 0, 6, 4, 0, 16 }, /* B */
2941 },
2943 },
2945 .name = "rgbaf16be",
2946 .nb_components = 4,
2947 .log2_chroma_w = 0,
2948 .log2_chroma_h = 0,
2949 .comp = {
2950 { 0, 8, 0, 0, 16 }, /* R */
2951 { 0, 8, 2, 0, 16 }, /* G */
2952 { 0, 8, 4, 0, 16 }, /* B */
2953 { 0, 8, 6, 0, 16 }, /* A */
2954 },
2957 },
2959 .name = "rgbaf16le",
2960 .nb_components = 4,
2961 .log2_chroma_w = 0,
2962 .log2_chroma_h = 0,
2963 .comp = {
2964 { 0, 8, 0, 0, 16 }, /* R */
2965 { 0, 8, 2, 0, 16 }, /* G */
2966 { 0, 8, 4, 0, 16 }, /* B */
2967 { 0, 8, 6, 0, 16 }, /* A */
2968 },
2971 },
2972 [AV_PIX_FMT_Y212LE] = {
2973 .name = "y212le",
2974 .nb_components = 3,
2975 .log2_chroma_w = 1,
2976 .log2_chroma_h = 0,
2977 .comp = {
2978 { 0, 4, 0, 4, 12 }, /* Y */
2979 { 0, 8, 2, 4, 12 }, /* U */
2980 { 0, 8, 6, 4, 12 }, /* V */
2981 },
2982 },
2983 [AV_PIX_FMT_Y212BE] = {
2984 .name = "y212be",
2985 .nb_components = 3,
2986 .log2_chroma_w = 1,
2987 .log2_chroma_h = 0,
2988 .comp = {
2989 { 0, 4, 0, 4, 12 }, /* Y */
2990 { 0, 8, 2, 4, 12 }, /* U */
2991 { 0, 8, 6, 4, 12 }, /* V */
2992 },
2993 .flags = AV_PIX_FMT_FLAG_BE,
2994 },
2995 [AV_PIX_FMT_XV30LE] = {
2996 .name = "xv30le",
2997 .nb_components= 3,
2998 .log2_chroma_w= 0,
2999 .log2_chroma_h= 0,
3000 .comp = {
3001 { 0, 4, 1, 2, 10 }, /* Y */
3002 { 0, 4, 0, 0, 10 }, /* U */
3003 { 0, 4, 2, 4, 10 }, /* V */
3004 { 0, 4, 3, 6, 2 }, /* X */
3005 },
3006 },
3007 [AV_PIX_FMT_XV30BE] = {
3008 .name = "xv30be",
3009 .nb_components= 3,
3010 .log2_chroma_w= 0,
3011 .log2_chroma_h= 0,
3012 .comp = {
3013 { 0, 32, 10, 0, 10 }, /* Y */
3014 { 0, 32, 0, 0, 10 }, /* U */
3015 { 0, 32, 20, 0, 10 }, /* V */
3016 { 0, 32, 30, 0, 2 }, /* X */
3017 },
3019 },
3020 [AV_PIX_FMT_XV36LE] = {
3021 .name = "xv36le",
3022 .nb_components= 3,
3023 .log2_chroma_w= 0,
3024 .log2_chroma_h= 0,
3025 .comp = {
3026 { 0, 8, 2, 4, 12 }, /* Y */
3027 { 0, 8, 0, 4, 12 }, /* U */
3028 { 0, 8, 4, 4, 12 }, /* V */
3029 { 0, 8, 6, 4, 12 }, /* X */
3030 },
3031 },
3032 [AV_PIX_FMT_XV36BE] = {
3033 .name = "xv36be",
3034 .nb_components= 3,
3035 .log2_chroma_w= 0,
3036 .log2_chroma_h= 0,
3037 .comp = {
3038 { 0, 8, 2, 4, 12 }, /* Y */
3039 { 0, 8, 0, 4, 12 }, /* U */
3040 { 0, 8, 4, 4, 12 }, /* V */
3041 { 0, 8, 6, 4, 12 }, /* X */
3042 },
3043 .flags = AV_PIX_FMT_FLAG_BE,
3044 },
3045 [AV_PIX_FMT_XV48LE] = {
3046 .name = "xv48le",
3047 .nb_components = 3,
3048 .log2_chroma_w = 0,
3049 .log2_chroma_h = 0,
3050 .comp = {
3051 { 0, 8, 2, 0, 16 }, /* Y */
3052 { 0, 8, 0, 0, 16 }, /* U */
3053 { 0, 8, 4, 0, 16 }, /* V */
3054 { 0, 8, 6, 0, 16 }, /* X */
3055 },
3056 },
3057 [AV_PIX_FMT_XV48BE] = {
3058 .name = "xv48be",
3059 .nb_components = 3,
3060 .log2_chroma_w = 0,
3061 .log2_chroma_h = 0,
3062 .comp = {
3063 { 0, 8, 2, 0, 16 }, /* Y */
3064 { 0, 8, 0, 0, 16 }, /* U */
3065 { 0, 8, 4, 0, 16 }, /* V */
3066 { 0, 8, 6, 0, 16 }, /* X */
3067 },
3068 .flags = AV_PIX_FMT_FLAG_BE,
3069 },
3070 [AV_PIX_FMT_V30XLE] = {
3071 .name = "v30xle",
3072 .nb_components = 3,
3073 .log2_chroma_w = 0,
3074 .log2_chroma_h = 0,
3075 .comp = {
3076 { 0, 4, 1, 4, 10 }, /* Y */
3077 { 0, 4, 0, 2, 10 }, /* U */
3078 { 0, 4, 2, 6, 10 }, /* V */
3079 { 0, 4, 0, 0, 2 }, /* X */
3080 },
3081 },
3082 [AV_PIX_FMT_V30XBE] = {
3083 .name = "v30xbe",
3084 .nb_components= 3,
3085 .log2_chroma_w= 0,
3086 .log2_chroma_h= 0,
3087 .comp = {
3088 { 0, 32, 12, 0, 10 }, /* Y */
3089 { 0, 32, 2, 0, 10 }, /* U */
3090 { 0, 32, 22, 0, 10 }, /* V */
3091 { 0, 32, 0, 0, 2 }, /* X */
3092 },
3094 },
3096 .name = "rgbf32be",
3097 .nb_components = 3,
3098 .log2_chroma_w = 0,
3099 .log2_chroma_h = 0,
3100 .comp = {
3101 { 0, 12, 0, 0, 32 }, /* R */
3102 { 0, 12, 4, 0, 32 }, /* G */
3103 { 0, 12, 8, 0, 32 }, /* B */
3104 },
3107 },
3109 .name = "rgbf32le",
3110 .nb_components = 3,
3111 .log2_chroma_w = 0,
3112 .log2_chroma_h = 0,
3113 .comp = {
3114 { 0, 12, 0, 0, 32 }, /* R */
3115 { 0, 12, 4, 0, 32 }, /* G */
3116 { 0, 12, 8, 0, 32 }, /* B */
3117 },
3119 },
3120 [AV_PIX_FMT_RGB96BE] = {
3121 .name = "rgb96be",
3122 .nb_components = 3,
3123 .log2_chroma_w = 0,
3124 .log2_chroma_h = 0,
3125 .comp = {
3126 { 0, 12, 0, 0, 32 }, /* R */
3127 { 0, 12, 4, 0, 32 }, /* G */
3128 { 0, 12, 8, 0, 32 }, /* B */
3129 },
3131 },
3132 [AV_PIX_FMT_RGB96LE] = {
3133 .name = "rgb96le",
3134 .nb_components = 3,
3135 .log2_chroma_w = 0,
3136 .log2_chroma_h = 0,
3137 .comp = {
3138 { 0, 12, 0, 0, 32 }, /* R */
3139 { 0, 12, 4, 0, 32 }, /* G */
3140 { 0, 12, 8, 0, 32 }, /* B */
3141 },
3142 .flags = AV_PIX_FMT_FLAG_RGB,
3143 },
3145 .name = "rgbaf32be",
3146 .nb_components = 4,
3147 .log2_chroma_w = 0,
3148 .log2_chroma_h = 0,
3149 .comp = {
3150 { 0, 16, 0, 0, 32 }, /* R */
3151 { 0, 16, 4, 0, 32 }, /* G */
3152 { 0, 16, 8, 0, 32 }, /* B */
3153 { 0, 16, 12, 0, 32 }, /* A */
3154 },
3157 },
3159 .name = "rgbaf32le",
3160 .nb_components = 4,
3161 .log2_chroma_w = 0,
3162 .log2_chroma_h = 0,
3163 .comp = {
3164 { 0, 16, 0, 0, 32 }, /* R */
3165 { 0, 16, 4, 0, 32 }, /* G */
3166 { 0, 16, 8, 0, 32 }, /* B */
3167 { 0, 16, 12, 0, 32 }, /* A */
3168 },
3171 },
3173 .name = "rgba128be",
3174 .nb_components = 4,
3175 .log2_chroma_w = 0,
3176 .log2_chroma_h = 0,
3177 .comp = {
3178 { 0, 16, 0, 0, 32 }, /* R */
3179 { 0, 16, 4, 0, 32 }, /* G */
3180 { 0, 16, 8, 0, 32 }, /* B */
3181 { 0, 16, 12, 0, 32 }, /* A */
3182 },
3185 },
3187 .name = "rgba128le",
3188 .nb_components = 4,
3189 .log2_chroma_w = 0,
3190 .log2_chroma_h = 0,
3191 .comp = {
3192 { 0, 16, 0, 0, 32 }, /* R */
3193 { 0, 16, 4, 0, 32 }, /* G */
3194 { 0, 16, 8, 0, 32 }, /* B */
3195 { 0, 16, 12, 0, 32 }, /* A */
3196 },
3198 },
3199 [AV_PIX_FMT_P212BE] = {
3200 .name = "p212be",
3201 .nb_components = 3,
3202 .log2_chroma_w = 1,
3203 .log2_chroma_h = 0,
3204 .comp = {
3205 { 0, 2, 0, 4, 12 }, /* Y */
3206 { 1, 4, 0, 4, 12 }, /* U */
3207 { 1, 4, 2, 4, 12 }, /* V */
3208 },
3210 },
3211 [AV_PIX_FMT_P212LE] = {
3212 .name = "p212le",
3213 .nb_components = 3,
3214 .log2_chroma_w = 1,
3215 .log2_chroma_h = 0,
3216 .comp = {
3217 { 0, 2, 0, 4, 12 }, /* Y */
3218 { 1, 4, 0, 4, 12 }, /* U */
3219 { 1, 4, 2, 4, 12 }, /* V */
3220 },
3221 .flags = AV_PIX_FMT_FLAG_PLANAR,
3222 },
3223 [AV_PIX_FMT_P412BE] = {
3224 .name = "p412be",
3225 .nb_components = 3,
3226 .log2_chroma_w = 0,
3227 .log2_chroma_h = 0,
3228 .comp = {
3229 { 0, 2, 0, 4, 12 }, /* Y */
3230 { 1, 4, 0, 4, 12 }, /* U */
3231 { 1, 4, 2, 4, 12 }, /* V */
3232 },
3234 },
3235 [AV_PIX_FMT_P412LE] = {
3236 .name = "p412le",
3237 .nb_components = 3,
3238 .log2_chroma_w = 0,
3239 .log2_chroma_h = 0,
3240 .comp = {
3241 { 0, 2, 0, 4, 12 }, /* Y */
3242 { 1, 4, 0, 4, 12 }, /* U */
3243 { 1, 4, 2, 4, 12 }, /* V */
3244 },
3245 .flags = AV_PIX_FMT_FLAG_PLANAR,
3246 },
3247 [AV_PIX_FMT_Y216LE] = {
3248 .name = "y216le",
3249 .nb_components = 3,
3250 .log2_chroma_w = 1,
3251 .log2_chroma_h = 0,
3252 .comp = {
3253 { 0, 4, 0, 0, 16 }, /* Y */
3254 { 0, 8, 2, 0, 16 }, /* U */
3255 { 0, 8, 6, 0, 16 }, /* V */
3256 },
3257 },
3258 [AV_PIX_FMT_Y216BE] = {
3259 .name = "y216be",
3260 .nb_components = 3,
3261 .log2_chroma_w = 1,
3262 .log2_chroma_h = 0,
3263 .comp = {
3264 { 0, 4, 0, 0, 16 }, /* Y */
3265 { 0, 8, 2, 0, 16 }, /* U */
3266 { 0, 8, 6, 0, 16 }, /* V */
3267 },
3268 .flags = AV_PIX_FMT_FLAG_BE,
3269 },
3270 [AV_PIX_FMT_OHCODEC] = {
3271 .name = "ohcodec",
3272 .flags = AV_PIX_FMT_FLAG_HWACCEL,
3273 },
3274};
3275
3276static const char * const color_range_names[] = {
3277 [AVCOL_RANGE_UNSPECIFIED] = "unknown",
3278 [AVCOL_RANGE_MPEG] = "tv",
3279 [AVCOL_RANGE_JPEG] = "pc",
3280};
3281
3282static const char * const color_primaries_names[AVCOL_PRI_NB] = {
3283 [AVCOL_PRI_RESERVED0] = "reserved",
3284 [AVCOL_PRI_BT709] = "bt709",
3285 [AVCOL_PRI_UNSPECIFIED] = "unknown",
3286 [AVCOL_PRI_RESERVED] = "reserved",
3287 [AVCOL_PRI_BT470M] = "bt470m",
3288 [AVCOL_PRI_BT470BG] = "bt470bg",
3289 [AVCOL_PRI_SMPTE170M] = "smpte170m",
3290 [AVCOL_PRI_SMPTE240M] = "smpte240m",
3291 [AVCOL_PRI_FILM] = "film",
3292 [AVCOL_PRI_BT2020] = "bt2020",
3293 [AVCOL_PRI_SMPTE428] = "smpte428",
3294 [AVCOL_PRI_SMPTE431] = "smpte431",
3295 [AVCOL_PRI_SMPTE432] = "smpte432",
3296 [AVCOL_PRI_EBU3213] = "ebu3213",
3297};
3298
3302};
3303
3304static const char * const color_transfer_names[] = {
3305 [AVCOL_TRC_RESERVED0] = "reserved",
3306 [AVCOL_TRC_BT709] = "bt709",
3307 [AVCOL_TRC_UNSPECIFIED] = "unknown",
3308 [AVCOL_TRC_RESERVED] = "reserved",
3309 [AVCOL_TRC_GAMMA22] = "bt470m",
3310 [AVCOL_TRC_GAMMA28] = "bt470bg",
3311 [AVCOL_TRC_SMPTE170M] = "smpte170m",
3312 [AVCOL_TRC_SMPTE240M] = "smpte240m",
3313 [AVCOL_TRC_LINEAR] = "linear",
3314 [AVCOL_TRC_LOG] = "log100",
3315 [AVCOL_TRC_LOG_SQRT] = "log316",
3316 [AVCOL_TRC_IEC61966_2_4] = "iec61966-2-4",
3317 [AVCOL_TRC_BT1361_ECG] = "bt1361e",
3318 [AVCOL_TRC_IEC61966_2_1] = "iec61966-2-1",
3319 [AVCOL_TRC_BT2020_10] = "bt2020-10",
3320 [AVCOL_TRC_BT2020_12] = "bt2020-12",
3321 [AVCOL_TRC_SMPTE2084] = "smpte2084",
3322 [AVCOL_TRC_SMPTE428] = "smpte428",
3323 [AVCOL_TRC_ARIB_STD_B67] = "arib-std-b67",
3324};
3325
3326static const char * const color_transfer_names_ext[] = {
3328};
3329
3330static const char * const color_space_names[] = {
3331 [AVCOL_SPC_RGB] = "gbr",
3332 [AVCOL_SPC_BT709] = "bt709",
3333 [AVCOL_SPC_UNSPECIFIED] = "unknown",
3334 [AVCOL_SPC_RESERVED] = "reserved",
3335 [AVCOL_SPC_FCC] = "fcc",
3336 [AVCOL_SPC_BT470BG] = "bt470bg",
3337 [AVCOL_SPC_SMPTE170M] = "smpte170m",
3338 [AVCOL_SPC_SMPTE240M] = "smpte240m",
3339 [AVCOL_SPC_YCGCO] = "ycgco",
3340 [AVCOL_SPC_BT2020_NCL] = "bt2020nc",
3341 [AVCOL_SPC_BT2020_CL] = "bt2020c",
3342 [AVCOL_SPC_SMPTE2085] = "smpte2085",
3343 [AVCOL_SPC_CHROMA_DERIVED_NCL] = "chroma-derived-nc",
3344 [AVCOL_SPC_CHROMA_DERIVED_CL] = "chroma-derived-c",
3345 [AVCOL_SPC_ICTCP] = "ictcp",
3346 [AVCOL_SPC_IPT_C2] = "ipt-c2",
3347 [AVCOL_SPC_YCGCO_RE] = "ycgco-re",
3348 [AVCOL_SPC_YCGCO_RO] = "ycgco-ro",
3349};
3350
3351static const char * const chroma_location_names[] = {
3352 [AVCHROMA_LOC_UNSPECIFIED] = "unspecified",
3353 [AVCHROMA_LOC_LEFT] = "left",
3354 [AVCHROMA_LOC_CENTER] = "center",
3355 [AVCHROMA_LOC_TOPLEFT] = "topleft",
3356 [AVCHROMA_LOC_TOP] = "top",
3357 [AVCHROMA_LOC_BOTTOMLEFT] = "bottomleft",
3358 [AVCHROMA_LOC_BOTTOM] = "bottom",
3359};
3360
3361static const char * const alpha_mode_names[] = {
3362 [AVALPHA_MODE_UNSPECIFIED] = "unspecified",
3363 [AVALPHA_MODE_PREMULTIPLIED] = "premultiplied",
3364 [AVALPHA_MODE_STRAIGHT] = "straight",
3365};
3366
3368{
3370
3371 for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++)
3375 return pix_fmt;
3376
3377 return AV_PIX_FMT_NONE;
3378}
3379
3381{
3382 return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
3384}
3385
3386#if HAVE_BIGENDIAN
3387# define X_NE(be, le) be
3388#else
3389# define X_NE(be, le) le
3390#endif
3391
3393{
3395
3396 if (!strcmp(name, "rgb32"))
3397 name = X_NE("argb", "bgra");
3398 else if (!strcmp(name, "bgr32"))
3399 name = X_NE("abgr", "rgba");
3400
3402 if (pix_fmt == AV_PIX_FMT_NONE) {
3403 char name2[32];
3404
3405 snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
3407 }
3408
3409 return pix_fmt;
3410}
3411
3413{
3414 int c, bits = 0;
3415 int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
3416
3417 for (c = 0; c < pixdesc->nb_components; c++) {
3418 int s = c == 1 || c == 2 ? 0 : log2_pixels;
3419 bits += pixdesc->comp[c].depth << s;
3420 }
3421
3422 return bits >> log2_pixels;
3423}
3424
3426{
3427 int c, bits = 0;
3428 int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
3429 int steps[4] = {0};
3430
3431 for (c = 0; c < pixdesc->nb_components; c++) {
3432 const AVComponentDescriptor *comp = &pixdesc->comp[c];
3433 int s = c == 1 || c == 2 ? 0 : log2_pixels;
3434 steps[comp->plane] = comp->step << s;
3435 }
3436 for (c = 0; c < 4; c++)
3437 bits += steps[c];
3438
3439 if(!(pixdesc->flags & AV_PIX_FMT_FLAG_BITSTREAM))
3440 bits *= 8;
3441
3442 return bits >> log2_pixels;
3443}
3444
3445char *av_get_pix_fmt_string(char *buf, int buf_size,
3447{
3448 /* print header */
3449 if (pix_fmt < 0) {
3450 snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
3451 } else {
3453 snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name,
3454 pixdesc->nb_components, av_get_bits_per_pixel(pixdesc));
3455 }
3456
3457 return buf;
3458}
3459
3466
3468{
3469 if (!prev)
3470 return &av_pix_fmt_descriptors[0];
3472 prev++;
3473 if (prev->name)
3474 return prev;
3475 }
3476 return NULL;
3477}
3478
3487
3489 int *h_shift, int *v_shift)
3490{
3492 if (!desc)
3493 return AVERROR(ENOSYS);
3494 *h_shift = desc->log2_chroma_w;
3495 *v_shift = desc->log2_chroma_h;
3496
3497 return 0;
3498}
3499
3501{
3503 int i, planes[4] = { 0 }, ret = 0;
3504
3505 if (!desc)
3506 return AVERROR(EINVAL);
3507
3508 for (i = 0; i < desc->nb_components; i++)
3509 planes[desc->comp[i].plane] = 1;
3510 for (i = 0; i < FF_ARRAY_ELEMS(planes); i++)
3511 ret += planes[i];
3512 return ret;
3513}
3514
3516{
3518 char name[16];
3519 int i;
3520
3521 if (!desc || strlen(desc->name) < 2)
3522 return AV_PIX_FMT_NONE;
3523 av_strlcpy(name, desc->name, sizeof(name));
3524 i = strlen(name) - 2;
3525 if (strcmp(name + i, "be") && strcmp(name + i, "le"))
3526 return AV_PIX_FMT_NONE;
3527
3528 name[i] ^= 'b' ^ 'l';
3529
3530 return get_pix_fmt_internal(name);
3531}
3532
3533#define FF_COLOR_NA -1
3534#define FF_COLOR_RGB 0 /**< RGB color space */
3535#define FF_COLOR_GRAY 1 /**< gray color space */
3536#define FF_COLOR_YUV 2 /**< YUV color space. 16 <= Y <= 235, 16 <= U, V <= 240 */
3537#define FF_COLOR_YUV_JPEG 3 /**< YUV color space. 0 <= Y <= 255, 0 <= U, V <= 255 */
3538#define FF_COLOR_XYZ 4
3539
3540#define pixdesc_has_alpha(pixdesc) \
3541 ((pixdesc)->flags & AV_PIX_FMT_FLAG_ALPHA)
3542
3543
3545 if (desc->flags & AV_PIX_FMT_FLAG_PAL)
3546 return FF_COLOR_RGB;
3547
3548 if(desc->nb_components == 1 || desc->nb_components == 2)
3549 return FF_COLOR_GRAY;
3550
3551 if (desc->name) {
3552 if (av_strstart(desc->name, "yuvj", NULL))
3553 return FF_COLOR_YUV_JPEG;
3554 }
3555
3556 if(desc->flags & AV_PIX_FMT_FLAG_RGB)
3557 return FF_COLOR_RGB;
3558
3559 if(desc->flags & AV_PIX_FMT_FLAG_XYZ)
3560 return FF_COLOR_XYZ;
3561
3562 if(desc->nb_components == 0)
3563 return FF_COLOR_NA;
3564
3565 return FF_COLOR_YUV;
3566}
3567
3568static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
3569{
3571 int i;
3572
3573 if (!desc || !desc->nb_components) {
3574 *min = *max = 0;
3575 return AVERROR(EINVAL);
3576 }
3577
3578 *min = INT_MAX, *max = -INT_MAX;
3579 for (i = 0; i < desc->nb_components; i++) {
3580 *min = FFMIN(desc->comp[i].depth, *min);
3581 *max = FFMAX(desc->comp[i].depth, *max);
3582 }
3583 return 0;
3584}
3585
3586static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt,
3587 enum AVPixelFormat src_pix_fmt,
3588 unsigned *lossp, unsigned consider)
3589{
3590 const AVPixFmtDescriptor *src_desc = av_pix_fmt_desc_get(src_pix_fmt);
3591 const AVPixFmtDescriptor *dst_desc = av_pix_fmt_desc_get(dst_pix_fmt);
3592 int src_color, dst_color;
3593 int src_min_depth, src_max_depth, dst_min_depth, dst_max_depth;
3594 int ret, loss, i, nb_components;
3595 int score = INT_MAX - 1;
3596
3597 if (!src_desc || !dst_desc)
3598 return -4;
3599
3600 if ((src_desc->flags & AV_PIX_FMT_FLAG_HWACCEL) ||
3601 (dst_desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
3602 if (dst_pix_fmt == src_pix_fmt)
3603 return -1;
3604 else
3605 return -2;
3606 }
3607
3608 /* compute loss */
3609 *lossp = loss = 0;
3610
3611 if (dst_pix_fmt == src_pix_fmt)
3612 return INT_MAX;
3613
3614 if ((ret = get_pix_fmt_depth(&src_min_depth, &src_max_depth, src_pix_fmt)) < 0)
3615 return -3;
3616 if ((ret = get_pix_fmt_depth(&dst_min_depth, &dst_max_depth, dst_pix_fmt)) < 0)
3617 return -3;
3618
3619 src_color = get_color_type(src_desc);
3620 dst_color = get_color_type(dst_desc);
3621 if (dst_pix_fmt == AV_PIX_FMT_PAL8)
3622 nb_components = FFMIN(src_desc->nb_components, 4);
3623 else
3624 nb_components = FFMIN(src_desc->nb_components, dst_desc->nb_components);
3625
3626 for (i = 0; i < nb_components; i++) {
3627 int depth_minus1 = (dst_pix_fmt == AV_PIX_FMT_PAL8) ? 7/nb_components : (dst_desc->comp[i].depth - 1);
3628 int depth_delta = src_desc->comp[i].depth - 1 - depth_minus1;
3629 if (depth_delta > 0 && (consider & FF_LOSS_DEPTH)) {
3630 loss |= FF_LOSS_DEPTH;
3631 score -= 65536 >> depth_minus1;
3632 } else if (depth_delta < 0 && (consider & FF_LOSS_EXCESS_DEPTH)) {
3633 // Favour formats where bit depth exactly matches. If all other
3634 // scoring is equal, we'd rather use the bit depth that most closely
3635 // matches the source.
3636 loss |= FF_LOSS_EXCESS_DEPTH;
3637 score += depth_delta;
3638 }
3639 }
3640
3641 if (consider & FF_LOSS_RESOLUTION) {
3642 if (dst_desc->log2_chroma_w > src_desc->log2_chroma_w) {
3643 loss |= FF_LOSS_RESOLUTION;
3644 score -= 256 << dst_desc->log2_chroma_w;
3645 }
3646 if (dst_desc->log2_chroma_h > src_desc->log2_chroma_h) {
3647 loss |= FF_LOSS_RESOLUTION;
3648 score -= 256 << dst_desc->log2_chroma_h;
3649 }
3650 // don't favor 422 over 420 if downsampling is needed, because 420 has much better support on the decoder side
3651 if (dst_desc->log2_chroma_w == 1 && src_desc->log2_chroma_w == 0 &&
3652 dst_desc->log2_chroma_h == 1 && src_desc->log2_chroma_h == 0 ) {
3653 score += 512;
3654 }
3655 }
3656
3657 if (consider & FF_LOSS_EXCESS_RESOLUTION) {
3658 // Favour formats where chroma subsampling exactly matches. If all other
3659 // scoring is equal, we'd rather use the subsampling that most closely
3660 // matches the source.
3661 if (dst_desc->log2_chroma_w < src_desc->log2_chroma_w) {
3663 score -= 1 << (src_desc->log2_chroma_w - dst_desc->log2_chroma_w);
3664 }
3665
3666 if (dst_desc->log2_chroma_h < src_desc->log2_chroma_h) {
3668 score -= 1 << (src_desc->log2_chroma_h - dst_desc->log2_chroma_h);
3669 }
3670
3671 // don't favour 411 over 420, because 420 has much better support on the
3672 // decoder side.
3673 if (dst_desc->log2_chroma_w == 1 && src_desc->log2_chroma_w == 2 &&
3674 dst_desc->log2_chroma_h == 1 && src_desc->log2_chroma_h == 2) {
3675 score += 4;
3676 }
3677 }
3678
3679 if(consider & FF_LOSS_COLORSPACE)
3680 switch(dst_color) {
3681 case FF_COLOR_RGB:
3682 if (src_color != FF_COLOR_RGB &&
3683 src_color != FF_COLOR_GRAY)
3684 loss |= FF_LOSS_COLORSPACE;
3685 break;
3686 case FF_COLOR_GRAY:
3687 if (src_color != FF_COLOR_GRAY)
3688 loss |= FF_LOSS_COLORSPACE;
3689 break;
3690 case FF_COLOR_YUV:
3691 if (src_color != FF_COLOR_YUV)
3692 loss |= FF_LOSS_COLORSPACE;
3693 break;
3694 case FF_COLOR_YUV_JPEG:
3695 if (src_color != FF_COLOR_YUV_JPEG &&
3696 src_color != FF_COLOR_YUV &&
3697 src_color != FF_COLOR_GRAY)
3698 loss |= FF_LOSS_COLORSPACE;
3699 break;
3700 default:
3701 /* fail safe test */
3702 if (src_color != dst_color)
3703 loss |= FF_LOSS_COLORSPACE;
3704 break;
3705 }
3706 if(loss & FF_LOSS_COLORSPACE)
3707 score -= (nb_components * 65536) >> FFMIN(dst_desc->comp[0].depth - 1, src_desc->comp[0].depth - 1);
3708
3709 if (dst_color == FF_COLOR_GRAY &&
3710 src_color != FF_COLOR_GRAY && (consider & FF_LOSS_CHROMA)) {
3711 loss |= FF_LOSS_CHROMA;
3712 score -= 2 * 65536;
3713 }
3714 if (!pixdesc_has_alpha(dst_desc) && (pixdesc_has_alpha(src_desc) && (consider & FF_LOSS_ALPHA))) {
3715 loss |= FF_LOSS_ALPHA;
3716 score -= 65536;
3717 }
3718 if (dst_pix_fmt == AV_PIX_FMT_PAL8 && (consider & FF_LOSS_COLORQUANT) &&
3719 (src_pix_fmt != AV_PIX_FMT_PAL8 && (src_color != FF_COLOR_GRAY || (pixdesc_has_alpha(src_desc) && (consider & FF_LOSS_ALPHA))))) {
3720 loss |= FF_LOSS_COLORQUANT;
3721 score -= 65536;
3722 }
3723
3724 *lossp = loss;
3725 return score;
3726}
3727
3729 enum AVPixelFormat src_pix_fmt,
3730 int has_alpha)
3731{
3732 int loss;
3733 int ret = get_pix_fmt_score(dst_pix_fmt, src_pix_fmt, &loss, has_alpha ? ~0 : ~FF_LOSS_ALPHA);
3734 if (ret < 0)
3735 return ret;
3736 return loss;
3737}
3738
3739enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
3740 enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
3741{
3742 enum AVPixelFormat dst_pix_fmt;
3743 int loss1, loss2, loss_mask;
3744 const AVPixFmtDescriptor *desc1 = av_pix_fmt_desc_get(dst_pix_fmt1);
3745 const AVPixFmtDescriptor *desc2 = av_pix_fmt_desc_get(dst_pix_fmt2);
3746 int score1, score2;
3747
3748 if (!desc1) {
3749 dst_pix_fmt = dst_pix_fmt2;
3750 } else if (!desc2) {
3751 dst_pix_fmt = dst_pix_fmt1;
3752 } else {
3753 loss_mask= loss_ptr?~*loss_ptr:~0; /* use loss mask if provided */
3754 if(!has_alpha)
3755 loss_mask &= ~FF_LOSS_ALPHA;
3756
3757 score1 = get_pix_fmt_score(dst_pix_fmt1, src_pix_fmt, &loss1, loss_mask);
3758 score2 = get_pix_fmt_score(dst_pix_fmt2, src_pix_fmt, &loss2, loss_mask);
3759
3760 if (score1 == score2) {
3762 dst_pix_fmt = av_get_padded_bits_per_pixel(desc2) < av_get_padded_bits_per_pixel(desc1) ? dst_pix_fmt2 : dst_pix_fmt1;
3763 } else {
3764 dst_pix_fmt = desc2->nb_components < desc1->nb_components ? dst_pix_fmt2 : dst_pix_fmt1;
3765 }
3766 } else {
3767 dst_pix_fmt = score1 < score2 ? dst_pix_fmt2 : dst_pix_fmt1;
3768 }
3769 }
3770
3771 if (loss_ptr)
3772 *loss_ptr = av_get_pix_fmt_loss(dst_pix_fmt, src_pix_fmt, has_alpha);
3773 return dst_pix_fmt;
3774}
3775
3777{
3778 return (unsigned) range < AVCOL_RANGE_NB ?
3780}
3781
3783{
3784 int i;
3785
3786 for (i = 0; i < FF_ARRAY_ELEMS(color_range_names); i++) {
3787 if (!strcmp(name, color_range_names[i]))
3788 return i;
3789 }
3790
3791 return AVERROR(EINVAL);
3792}
3793
3795{
3796 if ((unsigned)primaries < AVCOL_PRI_NB)
3798 else if (((unsigned)primaries >= AVCOL_PRI_EXT_BASE) &&
3799 ((unsigned)primaries < AVCOL_PRI_EXT_NB))
3801 return NULL;
3802}
3803
3805{
3806 int i;
3807
3808 for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names); i++) {
3810 continue;
3811
3812 if (!strcmp(name, color_primaries_names[i]))
3813 return i;
3814 }
3815
3816 for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names_ext); i++) {
3818 continue;
3819
3820 if (!strcmp(name, color_primaries_names_ext[i]))
3821 return AVCOL_PRI_EXT_BASE + i;
3822 }
3823
3824 return AVERROR(EINVAL);
3825}
3826
3828{
3829 if ((unsigned)transfer < AVCOL_TRC_NB)
3831 else if (((unsigned)transfer >= AVCOL_TRC_EXT_BASE) &&
3832 ((unsigned)transfer < AVCOL_TRC_EXT_NB))
3834 return NULL;
3835}
3836
3838{
3839 int i;
3840
3841 for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names); i++) {
3842 if (!color_transfer_names[i])
3843 continue;
3844
3845 if (!strcmp(name, color_transfer_names[i]))
3846 return i;
3847 }
3848
3849 for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names_ext); i++) {
3851 continue;
3852
3853 if (!strcmp(name, color_transfer_names_ext[i]))
3854 return AVCOL_TRC_EXT_BASE + i;
3855 }
3856
3857 return AVERROR(EINVAL);
3858}
3859
3861{
3862 return (unsigned) space < AVCOL_SPC_NB ?
3864}
3865
3867{
3868 int i;
3869
3870 for (i = 0; i < FF_ARRAY_ELEMS(color_space_names); i++) {
3871 if (!color_space_names[i])
3872 continue;
3873
3874 if (!strcmp(name, color_space_names[i]))
3875 return i;
3876 }
3877
3878 return AVERROR(EINVAL);
3879}
3880
3882{
3883 return (unsigned) location < AVCHROMA_LOC_NB ?
3884 chroma_location_names[location] : NULL;
3885}
3886
3888{
3889 int i;
3890
3891 for (i = 0; i < FF_ARRAY_ELEMS(chroma_location_names); i++) {
3893 continue;
3894
3895 if (!strcmp(name, chroma_location_names[i]))
3896 return i;
3897 }
3898
3899 return AVERROR(EINVAL);
3900}
3901
3903{
3905 return AVERROR(EINVAL);
3906 pos--;
3907
3908 *xpos = (pos&1) * 128;
3909 *ypos = ((pos>>1)^(pos<4)) * 128;
3910
3911 return 0;
3912}
3913
3915{
3916 int pos, xout, yout;
3917
3919 if (av_chroma_location_enum_to_pos(&xout, &yout, pos) == 0 && xout == xpos && yout == ypos)
3920 return pos;
3921 }
3923}
3924
3926{
3927 return (unsigned) mode < AVALPHA_MODE_NB ?
3929}
3930
3932{
3933 for (int i = 0; i < FF_ARRAY_ELEMS(alpha_mode_names); i++) {
3934 if (!alpha_mode_names[i])
3935 continue;
3936
3937 if (!strcmp(name, alpha_mode_names[i]))
3938 return i;
3939 }
3940
3941 return AVERROR(EINVAL);
3942}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static double val(void *priv, double ch)
Definition aeval.c:77
static void BS_FUNC skip(BSCTX *bc, unsigned int n)
Skip n bits in the buffer.
#define flags(name, subs,...)
Definition cbs_h264.c:74
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define s(width, name)
Definition cbs_vp9.c:198
common internal and external API header
#define NULL
Definition coverity.c:32
#define min(a, b)
#define max(a, b)
static enum AVPixelFormat pix_fmt
static void comp(unsigned char *dst, ptrdiff_t dst_stride, unsigned char *src, ptrdiff_t src_stride, int add)
Definition eamad.c:79
static const uint8_t bits[8]
Definition fastaudio.c:100
#define AVERROR(e)
Definition error.h:45
int av_match_name(const char *name, const char *names)
Match instances of a name in a comma-separated list of names.
Definition avstring.c:341
int av_strstart(const char *str, const char *pfx, const char **ptr)
Return non-zero if pfx is a prefix of str.
Definition avstring.c:36
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst.
Definition avstring.c:85
#define AV_WB32(p, v)
#define AV_WL32(p, v)
#define AV_RL32(p)
#define AV_RB32(p)
#define AV_RL16(p)
#define AV_WB16(p, v)
#define AV_WL16(p, v)
#define AV_RB16(p)
unsigned offset
Definition libaomenc.c:763
static int shift(int a, int b)
Definition bonk.c:261
const char * desc
Definition libsvtav1.c:83
static const struct @257111027162314367033347246032313251342043035002 planes[]
uint8_t w
Definition llvidencdsp.c:39
static const uint16_t mask[17]
Definition lzw.c:38
#define FFMIN(a, b)
Definition macros.h:49
#define FFMAX(a, b)
Definition macros.h:47
enum AVColorTransferCharacteristic transfer
enum AVColorPrimaries primaries
enum AVColorSpace space
enum AVColorRange range
static const int16_t steps[16]
Definition misc4.c:30
const char data[16]
Definition mxf.c:149
enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
Definition pixdesc.c:3479
static const char *const color_transfer_names_ext[]
Definition pixdesc.c:3326
static const char *const color_range_names[]
Definition pixdesc.c:3276
int av_color_space_from_name(const char *name)
Definition pixdesc.c:3866
void av_write_image_line2(const void *src, uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int src_element_size)
Write the values from src to the pixel format component c of an image line.
Definition pixdesc.c:117
static const char *const color_transfer_names[]
Definition pixdesc.c:3304
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
Definition pixdesc.c:3500
int av_chroma_location_from_name(const char *name)
Definition pixdesc.c:3887
int av_color_transfer_from_name(const char *name)
Definition pixdesc.c:3837
const AVPixFmtDescriptor * av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
Iterate over all pixel format descriptors known to libavutil.
Definition pixdesc.c:3467
static int get_color_type(const AVPixFmtDescriptor *desc)
Definition pixdesc.c:3544
#define FF_COLOR_NA
Definition pixdesc.c:3533
const char * av_color_space_name(enum AVColorSpace space)
Definition pixdesc.c:3860
static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB]
Definition pixdesc.c:203
#define BAYER8_DESC_COMMON
const char * av_color_range_name(enum AVColorRange range)
Definition pixdesc.c:3776
#define pixdesc_has_alpha(pixdesc)
Definition pixdesc.c:3540
static const char *const chroma_location_names[]
Definition pixdesc.c:3351
#define FF_COLOR_YUV_JPEG
YUV color space.
Definition pixdesc.c:3537
static const char *const color_space_names[]
Definition pixdesc.c:3330
static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, unsigned *lossp, unsigned consider)
Definition pixdesc.c:3586
#define FF_COLOR_GRAY
gray color space
Definition pixdesc.c:3535
int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
Compute what kind of losses will occur when converting from one specific pixel format to another.
Definition pixdesc.c:3728
static const char *const color_primaries_names_ext[AVCOL_PRI_EXT_NB - AVCOL_PRI_EXT_BASE]
Definition pixdesc.c:3300
const char * av_alpha_mode_name(enum AVAlphaMode mode)
Definition pixdesc.c:3925
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor.
Definition pixdesc.c:3488
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
Definition pixdesc.c:3412
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
Definition pixdesc.c:3380
void av_read_image_line2(void *dst, const uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component, int dst_element_size)
Read a line from an image, and write the values of the pixel format component c to dst.
Definition pixdesc.c:31
enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Compute what kind of losses will occur when converting from one specific pixel format to another.
Definition pixdesc.c:3739
static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
Definition pixdesc.c:3568
void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w)
Definition pixdesc.c:195
int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel for the pixel format described by pixdesc, including any padding ...
Definition pixdesc.c:3425
#define X_NE(be, le)
Definition pixdesc.c:3389
void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)
Definition pixdesc.c:106
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
Definition pixdesc.c:3392
const char * av_chroma_location_name(enum AVChromaLocation location)
Definition pixdesc.c:3881
#define BAYER16_DESC_COMMON
int av_color_range_from_name(const char *name)
Definition pixdesc.c:3782
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
Definition pixdesc.c:3827
enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos)
Converts swscale x/y chroma position to AVChromaLocation.
Definition pixdesc.c:3914
#define FF_COLOR_YUV
YUV color space.
Definition pixdesc.c:3536
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
Definition pixdesc.c:3794
int av_color_primaries_from_name(const char *name)
Definition pixdesc.c:3804
enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
Utility function to swap the endianness of a pixel format.
Definition pixdesc.c:3515
char * av_get_pix_fmt_string(char *buf, int buf_size, enum AVPixelFormat pix_fmt)
Print in buf the string corresponding to the pixel format with number pix_fmt, or a header if pix_fmt...
Definition pixdesc.c:3445
static enum AVPixelFormat get_pix_fmt_internal(const char *name)
Definition pixdesc.c:3367
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
Definition pixdesc.c:3460
#define FF_COLOR_XYZ
Definition pixdesc.c:3538
int av_chroma_location_enum_to_pos(int *xpos, int *ypos, enum AVChromaLocation pos)
Converts AVChromaLocation to swscale x/y chroma position.
Definition pixdesc.c:3902
static const char *const color_primaries_names[AVCOL_PRI_NB]
Definition pixdesc.c:3282
static const char *const alpha_mode_names[]
Definition pixdesc.c:3361
enum AVAlphaMode av_alpha_mode_from_name(const char *name)
Definition pixdesc.c:3931
#define FF_COLOR_RGB
RGB color space.
Definition pixdesc.c:3534
#define AV_PIX_FMT_FLAG_ALPHA
The pixel format has an alpha channel.
Definition pixdesc.h:147
#define AV_PIX_FMT_FLAG_BITSTREAM
All values of a component are bit-wise packed end to end.
Definition pixdesc.h:124
#define FF_LOSS_RESOLUTION
loss due to resolution change
Definition pixdesc.h:397
#define FF_LOSS_COLORSPACE
loss due to color space conversion
Definition pixdesc.h:399
#define AV_PIX_FMT_FLAG_RGB
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
Definition pixdesc.h:136
#define FF_LOSS_ALPHA
loss of alpha bits
Definition pixdesc.h:400
#define AV_PIX_FMT_FLAG_FLOAT
The pixel format contains IEEE-754 floating point values.
Definition pixdesc.h:158
#define FF_LOSS_EXCESS_DEPTH
loss due to unneeded extra color depth
Definition pixdesc.h:404
#define FF_LOSS_CHROMA
loss of chroma (e.g.
Definition pixdesc.h:402
#define AV_PIX_FMT_FLAG_HWACCEL
Pixel format is an HW accelerated format.
Definition pixdesc.h:128
#define FF_LOSS_DEPTH
loss due to color depth change
Definition pixdesc.h:398
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
Definition pixdesc.h:132
#define AV_PIX_FMT_FLAG_BE
Pixel format is big-endian.
Definition pixdesc.h:116
#define FF_LOSS_EXCESS_RESOLUTION
loss due to unneeded extra resolution
Definition pixdesc.h:403
#define AV_PIX_FMT_FLAG_XYZ
The pixel format contains XYZ-like data (as opposed to YUV/RGB/grayscale).
Definition pixdesc.h:163
#define FF_LOSS_COLORQUANT
loss due to color quantization
Definition pixdesc.h:401
#define AV_PIX_FMT_FLAG_BAYER
The pixel format is following a Bayer pattern.
Definition pixdesc.h:152
#define AV_PIX_FMT_FLAG_PAL
Pixel format has a palette in data[1], values are indexes in this palette.
Definition pixdesc.h:120
pixel format definitions
AVChromaLocation
Location of chroma samples.
Definition pixfmt.h:802
@ AVCHROMA_LOC_TOP
Definition pixfmt.h:807
@ AVCHROMA_LOC_BOTTOM
Definition pixfmt.h:809
@ AVCHROMA_LOC_TOPLEFT
ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2.
Definition pixfmt.h:806
@ AVCHROMA_LOC_NB
Not part of ABI.
Definition pixfmt.h:810
@ AVCHROMA_LOC_LEFT
MPEG-2/4 4:2:0, H.264 default for 4:2:0.
Definition pixfmt.h:804
@ AVCHROMA_LOC_BOTTOMLEFT
Definition pixfmt.h:808
@ AVCHROMA_LOC_CENTER
MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0.
Definition pixfmt.h:805
@ AVCHROMA_LOC_UNSPECIFIED
Definition pixfmt.h:803
AVColorRange
Visual content value range.
Definition pixfmt.h:748
@ AVCOL_RANGE_MPEG
Narrow or limited range content.
Definition pixfmt.h:766
@ AVCOL_RANGE_UNSPECIFIED
Definition pixfmt.h:749
@ AVCOL_RANGE_NB
Not part of ABI.
Definition pixfmt.h:784
@ AVCOL_RANGE_JPEG
Full range content.
Definition pixfmt.h:783
AVAlphaMode
Correlation between the alpha channel and color values.
Definition pixfmt.h:816
@ AVALPHA_MODE_NB
Not part of ABI.
Definition pixfmt.h:820
@ AVALPHA_MODE_STRAIGHT
Alpha channel is independent of color values.
Definition pixfmt.h:819
@ AVALPHA_MODE_UNSPECIFIED
Unknown alpha handling, or no alpha channel.
Definition pixfmt.h:817
@ AVALPHA_MODE_PREMULTIPLIED
Alpha channel is multiplied into color values.
Definition pixfmt.h:818
AVPixelFormat
Pixel format.
Definition pixfmt.h:71
@ AV_PIX_FMT_BAYER_GBRG8
bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples
Definition pixfmt.h:287
@ AV_PIX_FMT_YAF16BE
IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, big-endian.
Definition pixfmt.h:485
@ AV_PIX_FMT_YUV444P16BE
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
Definition pixfmt.h:133
@ AV_PIX_FMT_UYVA
packed UYVA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), UYVAUYVA...
Definition pixfmt.h:444
@ AV_PIX_FMT_GRAY16BE
Y , 16bpp, big-endian.
Definition pixfmt.h:104
@ AV_PIX_FMT_P210BE
interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, big-endian
Definition pixfmt.h:389
@ AV_PIX_FMT_XYZ12LE
packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as lit...
Definition pixfmt.h:196
@ AV_PIX_FMT_NV12
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
Definition pixfmt.h:96
@ AV_PIX_FMT_YUV420P16BE
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
Definition pixfmt.h:129
@ AV_PIX_FMT_Y216BE
packed YUV 4:2:2 like YUYV422, 32bpp, big-endian
Definition pixfmt.h:460
@ AV_PIX_FMT_V30XLE
packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 10Y 10U 2X(lsb), little-endian
Definition pixfmt.h:449
@ AV_PIX_FMT_NONE
Definition pixfmt.h:72
@ AV_PIX_FMT_AYUV64BE
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
Definition pixfmt.h:303
@ AV_PIX_FMT_P010LE
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:307
@ AV_PIX_FMT_VULKAN
Vulkan hardware images.
Definition pixfmt.h:379
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
Definition pixfmt.h:75
@ AV_PIX_FMT_GRAY10LE
Y , 10bpp, little-endian.
Definition pixfmt.h:321
@ AV_PIX_FMT_GRAYF32LE
IEEE-754 single precision Y, 32bpp, little-endian.
Definition pixfmt.h:364
@ AV_PIX_FMT_VIDEOTOOLBOX
hardware decoding through Videotoolbox
Definition pixfmt.h:305
@ AV_PIX_FMT_P210LE
interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, little-endian
Definition pixfmt.h:390
@ AV_PIX_FMT_GBRP10BE
planar GBR 4:4:4 30bpp, big-endian
Definition pixfmt.h:169
@ AV_PIX_FMT_YA16BE
16 bits gray, 16 bits alpha (big-endian)
Definition pixfmt.h:209
@ AV_PIX_FMT_YUV444P12MSBBE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian
Definition pixfmt.h:493
@ AV_PIX_FMT_YUVA420P9BE
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
Definition pixfmt.h:175
@ AV_PIX_FMT_XV36LE
packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, little-endian,...
Definition pixfmt.h:418
@ AV_PIX_FMT_YUVA444P12BE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian
Definition pixfmt.h:368
@ AV_PIX_FMT_NV42
as above, but U and V bytes are swapped
Definition pixfmt.h:372
@ AV_PIX_FMT_YUV420P14LE
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition pixfmt.h:270
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition pixfmt.h:73
@ AV_PIX_FMT_YUV440P
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
Definition pixfmt.h:106
@ AV_PIX_FMT_YUV440P10BE
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
Definition pixfmt.h:299
@ AV_PIX_FMT_GRAY32LE
Y , 32bpp, little-endian.
Definition pixfmt.h:480
@ AV_PIX_FMT_GBRPF16BE
IEEE-754 half precision planer GBR 4:4:4, 48bpp, big-endian.
Definition pixfmt.h:466
@ AV_PIX_FMT_NV21
as above, but U and V bytes are swapped
Definition pixfmt.h:97
@ AV_PIX_FMT_XV30LE
packed XVYU 4:4:4, 32bpp, (msb)2X 10V 10Y 10U(lsb), little-endian, variant of Y410 where alpha channe...
Definition pixfmt.h:415
@ AV_PIX_FMT_GBRPF32BE
IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian.
Definition pixfmt.h:341
@ AV_PIX_FMT_MONOBLACK
Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb.
Definition pixfmt.h:83
@ AV_PIX_FMT_BGR565BE
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
Definition pixfmt.h:117
@ AV_PIX_FMT_RGBF32LE
IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., little-endian.
Definition pixfmt.h:421
@ AV_PIX_FMT_YUVA422P12BE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, big-endian
Definition pixfmt.h:366
@ AV_PIX_FMT_YUVA444P9LE
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
Definition pixfmt.h:180
@ AV_PIX_FMT_BGR0
packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
Definition pixfmt.h:265
@ AV_PIX_FMT_YUVA444P10LE
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
Definition pixfmt.h:186
@ AV_PIX_FMT_VUYX
packed VUYX 4:4:4:4, 32bpp, Variant of VUYA where alpha channel is left undefined
Definition pixfmt.h:406
@ AV_PIX_FMT_GBRP9LE
planar GBR 4:4:4 27bpp, little-endian
Definition pixfmt.h:168
@ AV_PIX_FMT_NB
number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of...
Definition pixfmt.h:508
@ AV_PIX_FMT_NV20LE
interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:199
@ AV_PIX_FMT_GBRP10MSBBE
planar GBR 4:4:4 30bpp, lowest bits zero, big-endian
Definition pixfmt.h:495
@ AV_PIX_FMT_YUV444P14BE
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
Definition pixfmt.h:277
@ AV_PIX_FMT_YUVA420P10BE
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
Definition pixfmt.h:181
@ AV_PIX_FMT_D3D12
Hardware surfaces for Direct3D 12.
Definition pixfmt.h:440
@ AV_PIX_FMT_YUVA422P12LE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, little-endian
Definition pixfmt.h:367
@ AV_PIX_FMT_P416LE
interleaved chroma YUV 4:4:4, 48bpp, little-endian
Definition pixfmt.h:399
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition pixfmt.h:77
@ AV_PIX_FMT_BAYER_GRBG16LE
bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian
Definition pixfmt.h:295
@ AV_PIX_FMT_GBRAP32LE
planar GBRA 4:4:4:4 128bpp, little-endian
Definition pixfmt.h:489
@ AV_PIX_FMT_P016LE
like NV12, with 16bpp per component, little-endian
Definition pixfmt.h:323
@ AV_PIX_FMT_DXVA2_VLD
HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer.
Definition pixfmt.h:134
@ AV_PIX_FMT_P010BE
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:308
@ AV_PIX_FMT_AYUV64LE
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
Definition pixfmt.h:302
@ AV_PIX_FMT_ARGB
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
Definition pixfmt.h:99
@ AV_PIX_FMT_RGB555BE
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
Definition pixfmt.h:114
@ AV_PIX_FMT_YVYU422
packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
Definition pixfmt.h:207
@ AV_PIX_FMT_GBRP12BE
planar GBR 4:4:4 36bpp, big-endian
Definition pixfmt.h:279
@ AV_PIX_FMT_YUVA422P9LE
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
Definition pixfmt.h:178
@ AV_PIX_FMT_GRAY12LE
Y , 12bpp, little-endian.
Definition pixfmt.h:319
@ AV_PIX_FMT_P012BE
like NV12, with 12bpp per component, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:409
@ AV_PIX_FMT_GBRAP12BE
planar GBR 4:4:4:4 48bpp, big-endian
Definition pixfmt.h:310
@ AV_PIX_FMT_YUV420P9LE
planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition pixfmt.h:154
@ AV_PIX_FMT_NV20BE
interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:200
@ AV_PIX_FMT_BGRA
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
Definition pixfmt.h:102
@ AV_PIX_FMT_V30XBE
packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 10Y 10U 2X(lsb), big-endian
Definition pixfmt.h:448
@ AV_PIX_FMT_GRAY12BE
Y , 12bpp, big-endian.
Definition pixfmt.h:318
@ AV_PIX_FMT_X2BGR10LE
packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:386
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
Definition pixfmt.h:81
@ AV_PIX_FMT_GRAYF16BE
IEEE-754 half precision Y, 16bpp, big-endian.
Definition pixfmt.h:471
@ AV_PIX_FMT_BGR48BE
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big...
Definition pixfmt.h:145
@ AV_PIX_FMT_RGB96BE
packed RGBA 32:32:32, 96bpp, RGBRGB..., big-endian
Definition pixfmt.h:457
@ AV_PIX_FMT_YA16LE
16 bits gray, 16 bits alpha (little-endian)
Definition pixfmt.h:210
@ AV_PIX_FMT_YUVA420P10LE
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
Definition pixfmt.h:182
@ AV_PIX_FMT_GRAY14LE
Y , 14bpp, little-endian.
Definition pixfmt.h:361
@ AV_PIX_FMT_UYVY422
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
Definition pixfmt.h:88
@ AV_PIX_FMT_Y210LE
packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian
Definition pixfmt.h:382
@ AV_PIX_FMT_P012LE
like NV12, with 12bpp per component, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:408
@ AV_PIX_FMT_RGB48BE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big...
Definition pixfmt.h:109
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
Definition pixfmt.h:101
@ AV_PIX_FMT_YAF16LE
IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, little-endian.
Definition pixfmt.h:486
@ AV_PIX_FMT_YUVA420P
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
Definition pixfmt.h:108
@ AV_PIX_FMT_YUV422P10BE
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:157
@ AV_PIX_FMT_P016BE
like NV12, with 16bpp per component, big-endian
Definition pixfmt.h:324
@ AV_PIX_FMT_YUVA422P10LE
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
Definition pixfmt.h:184
@ AV_PIX_FMT_RGB96LE
packed RGBA 32:32:32, 96bpp, RGBRGB..., little-endian
Definition pixfmt.h:458
@ AV_PIX_FMT_CUDA
HW acceleration through CUDA.
Definition pixfmt.h:260
@ AV_PIX_FMT_YUV444P10MSBBE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian
Definition pixfmt.h:491
@ AV_PIX_FMT_YUV420P10LE
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition pixfmt.h:156
@ AV_PIX_FMT_GBRPF16LE
IEEE-754 half precision planer GBR 4:4:4, 48bpp, little-endian.
Definition pixfmt.h:467
@ AV_PIX_FMT_YUVJ440P
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
Definition pixfmt.h:107
@ AV_PIX_FMT_OHCODEC
Definition pixfmt.h:500
@ AV_PIX_FMT_YUV410P
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
Definition pixfmt.h:79
@ AV_PIX_FMT_RGBA64BE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
Definition pixfmt.h:202
@ AV_PIX_FMT_RGB8
packed RGB 3:3:2, 8bpp, (msb)3R 3G 2B(lsb)
Definition pixfmt.h:93
@ AV_PIX_FMT_NV24
planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
Definition pixfmt.h:371
@ AV_PIX_FMT_YAF32BE
IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, big-endian.
Definition pixfmt.h:482
@ AV_PIX_FMT_XV30BE
packed XVYU 4:4:4, 32bpp, (msb)2X 10V 10Y 10U(lsb), big-endian, variant of Y410 where alpha channel i...
Definition pixfmt.h:414
@ AV_PIX_FMT_GBRAP14BE
planar GBR 4:4:4:4 56bpp, big-endian
Definition pixfmt.h:432
@ AV_PIX_FMT_RGBA64LE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
Definition pixfmt.h:203
@ AV_PIX_FMT_0BGR
packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
Definition pixfmt.h:264
@ AV_PIX_FMT_YUV411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
Definition pixfmt.h:80
@ AV_PIX_FMT_YUV422P16LE
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:130
@ AV_PIX_FMT_MMAL
HW acceleration though MMAL, data[3] contains a pointer to the MMAL_BUFFER_HEADER_T structure.
Definition pixfmt.h:252
@ AV_PIX_FMT_YUV420P14BE
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
Definition pixfmt.h:269
@ AV_PIX_FMT_GBRAP16BE
planar GBRA 4:4:4:4 64bpp, big-endian
Definition pixfmt.h:213
@ AV_PIX_FMT_YUV444P14LE
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition pixfmt.h:278
@ AV_PIX_FMT_BAYER_RGGB16LE
bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian
Definition pixfmt.h:291
@ AV_PIX_FMT_GBRPF32LE
IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian.
Definition pixfmt.h:342
@ AV_PIX_FMT_YUVA444P9BE
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
Definition pixfmt.h:179
@ AV_PIX_FMT_YUV422P12LE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:272
@ AV_PIX_FMT_BGR8
packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
Definition pixfmt.h:90
@ AV_PIX_FMT_RGB444LE
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:136
@ AV_PIX_FMT_YUV444P10BE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
Definition pixfmt.h:161
@ AV_PIX_FMT_P410LE
interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, little-endian
Definition pixfmt.h:393
@ AV_PIX_FMT_DRM_PRIME
DRM-managed buffers exposed through PRIME buffer sharing.
Definition pixfmt.h:351
@ AV_PIX_FMT_YUV440P12LE
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
Definition pixfmt.h:300
@ AV_PIX_FMT_GBRP10MSBLE
planar GBR 4:4:4 30bpp, lowest bits zero, little-endian
Definition pixfmt.h:496
@ AV_PIX_FMT_RGB4_BYTE
packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
Definition pixfmt.h:95
@ AV_PIX_FMT_BGR4_BYTE
packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
Definition pixfmt.h:92
@ AV_PIX_FMT_NV16
interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition pixfmt.h:198
@ AV_PIX_FMT_YUVA420P9LE
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian
Definition pixfmt.h:176
@ AV_PIX_FMT_RGBA128BE
packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., big-endian
Definition pixfmt.h:454
@ AV_PIX_FMT_YAF32LE
IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, little-endian.
Definition pixfmt.h:483
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
Definition pixfmt.h:100
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition pixfmt.h:78
@ AV_PIX_FMT_XYZ12BE
packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big...
Definition pixfmt.h:197
@ AV_PIX_FMT_YUV444P9LE
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition pixfmt.h:160
@ AV_PIX_FMT_YUVA444P
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
Definition pixfmt.h:174
@ AV_PIX_FMT_RGBF16LE
IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., little-endian.
Definition pixfmt.h:452
@ AV_PIX_FMT_BAYER_GRBG8
bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples
Definition pixfmt.h:288
@ AV_PIX_FMT_YUVJ411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor ...
Definition pixfmt.h:283
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
Definition pixfmt.h:212
@ AV_PIX_FMT_GBRP12LE
planar GBR 4:4:4 36bpp, little-endian
Definition pixfmt.h:280
@ AV_PIX_FMT_GRAY9BE
Y , 9bpp, big-endian.
Definition pixfmt.h:338
@ AV_PIX_FMT_YUVA444P16LE
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
Definition pixfmt.h:192
@ AV_PIX_FMT_YUVA422P10BE
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
Definition pixfmt.h:183
@ AV_PIX_FMT_UYYVYY411
packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
Definition pixfmt.h:89
@ AV_PIX_FMT_D3D11
Hardware surfaces for Direct3D11.
Definition pixfmt.h:336
@ AV_PIX_FMT_P216LE
interleaved chroma YUV 4:2:2, 32bpp, little-endian
Definition pixfmt.h:396
@ AV_PIX_FMT_YUVA422P16BE
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
Definition pixfmt.h:189
@ AV_PIX_FMT_OPENCL
Hardware surfaces for OpenCL.
Definition pixfmt.h:358
@ AV_PIX_FMT_BGRA64BE
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
Definition pixfmt.h:204
@ AV_PIX_FMT_P416BE
interleaved chroma YUV 4:4:4, 48bpp, big-endian
Definition pixfmt.h:398
@ AV_PIX_FMT_CUARRAY
hardware decoding through openharmony
Definition pixfmt.h:506
@ AV_PIX_FMT_P212BE
interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, big-endian
Definition pixfmt.h:426
@ AV_PIX_FMT_YUV444P10MSBLE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian
Definition pixfmt.h:492
@ AV_PIX_FMT_RGB565LE
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
Definition pixfmt.h:113
@ AV_PIX_FMT_BAYER_BGGR16BE
bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian
Definition pixfmt.h:290
@ AV_PIX_FMT_Y210BE
packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian
Definition pixfmt.h:381
@ AV_PIX_FMT_D3D11VA_VLD
HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView p...
Definition pixfmt.h:254
@ AV_PIX_FMT_GBRP16BE
planar GBR 4:4:4 48bpp, big-endian
Definition pixfmt.h:171
@ AV_PIX_FMT_AYUV
packed AYUV 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), AYUVAYUV...
Definition pixfmt.h:442
@ AV_PIX_FMT_GBRAP12LE
planar GBR 4:4:4:4 48bpp, little-endian
Definition pixfmt.h:311
@ AV_PIX_FMT_GBRP9BE
planar GBR 4:4:4 27bpp, big-endian
Definition pixfmt.h:167
@ AV_PIX_FMT_YUVA420P16LE
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
Definition pixfmt.h:188
@ AV_PIX_FMT_RGB555LE
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:115
@ AV_PIX_FMT_BGR444BE
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined
Definition pixfmt.h:139
@ AV_PIX_FMT_RGB48LE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as lit...
Definition pixfmt.h:110
@ AV_PIX_FMT_BGR555BE
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
Definition pixfmt.h:119
@ AV_PIX_FMT_GBRAPF32BE
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian.
Definition pixfmt.h:343
@ AV_PIX_FMT_XV36BE
packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, big-endian,...
Definition pixfmt.h:417
@ AV_PIX_FMT_GBRP12MSBLE
planar GBR 4:4:4 36bpp, lowest bits zero, little-endian
Definition pixfmt.h:498
@ AV_PIX_FMT_Y212LE
packed YUV 4:2:2 like YUYV422, 24bpp, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:412
@ AV_PIX_FMT_Y216LE
packed YUV 4:2:2 like YUYV422, 32bpp, little-endian
Definition pixfmt.h:461
@ AV_PIX_FMT_BGR444LE
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:138
@ AV_PIX_FMT_YUVA420P16BE
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
Definition pixfmt.h:187
@ AV_PIX_FMT_YUV420P12LE
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition pixfmt.h:268
@ AV_PIX_FMT_BAYER_RGGB16BE
bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian
Definition pixfmt.h:292
@ AV_PIX_FMT_X2RGB10LE
packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:384
@ AV_PIX_FMT_YUVJ422P
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
Definition pixfmt.h:86
@ AV_PIX_FMT_YUV444P9BE
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
Definition pixfmt.h:159
@ AV_PIX_FMT_GBRAPF32LE
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian.
Definition pixfmt.h:344
@ AV_PIX_FMT_GRAY32BE
Y , 32bpp, big-endian.
Definition pixfmt.h:479
@ AV_PIX_FMT_P410BE
interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, big-endian
Definition pixfmt.h:392
@ AV_PIX_FMT_GBRAP14LE
planar GBR 4:4:4:4 56bpp, little-endian
Definition pixfmt.h:433
@ AV_PIX_FMT_RGBAF16LE
IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., little-endian.
Definition pixfmt.h:404
@ AV_PIX_FMT_YUV422P9LE
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:164
@ AV_PIX_FMT_GRAYF32BE
IEEE-754 single precision Y, 32bpp, big-endian.
Definition pixfmt.h:363
@ AV_PIX_FMT_RGB444BE
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined
Definition pixfmt.h:137
@ AV_PIX_FMT_YUV422P9BE
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:163
@ AV_PIX_FMT_BGR48LE
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as lit...
Definition pixfmt.h:146
@ AV_PIX_FMT_GBRP14LE
planar GBR 4:4:4 42bpp, little-endian
Definition pixfmt.h:282
@ AV_PIX_FMT_XV48LE
packed XVYU 4:4:4, 64bpp, little-endian, variant of Y416 where alpha channel is left undefined
Definition pixfmt.h:464
@ AV_PIX_FMT_RGB0
packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
Definition pixfmt.h:263
@ AV_PIX_FMT_YUV422P10LE
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:158
@ AV_PIX_FMT_GRAY16LE
Y , 16bpp, little-endian.
Definition pixfmt.h:105
@ AV_PIX_FMT_YUVA422P
planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
Definition pixfmt.h:173
@ AV_PIX_FMT_GBRP10LE
planar GBR 4:4:4 30bpp, little-endian
Definition pixfmt.h:170
@ AV_PIX_FMT_VAAPI
Hardware acceleration through VA-API, data[3] contains a VASurfaceID.
Definition pixfmt.h:126
@ AV_PIX_FMT_GBRAP10BE
planar GBR 4:4:4:4 40bpp, big-endian
Definition pixfmt.h:313
@ AV_PIX_FMT_GBRAPF16BE
IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, big-endian.
Definition pixfmt.h:468
@ AV_PIX_FMT_YUV444P12MSBLE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian
Definition pixfmt.h:494
@ AV_PIX_FMT_GRAYF16LE
IEEE-754 half precision Y, 16bpp, little-endian.
Definition pixfmt.h:472
@ AV_PIX_FMT_BAYER_GRBG16BE
bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian
Definition pixfmt.h:296
@ AV_PIX_FMT_RGB565BE
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
Definition pixfmt.h:112
@ AV_PIX_FMT_BGR555LE
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined
Definition pixfmt.h:120
@ AV_PIX_FMT_Y212BE
packed YUV 4:2:2 like YUYV422, 24bpp, data in the high bits, zeros in the low bits,...
Definition pixfmt.h:411
@ AV_PIX_FMT_YUV420P12BE
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
Definition pixfmt.h:267
@ AV_PIX_FMT_RGBA128LE
packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., little-endian
Definition pixfmt.h:455
@ AV_PIX_FMT_BGRA64LE
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
Definition pixfmt.h:205
@ AV_PIX_FMT_YUV440P12BE
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
Definition pixfmt.h:301
@ AV_PIX_FMT_GBRAP10LE
planar GBR 4:4:4:4 40bpp, little-endian
Definition pixfmt.h:314
@ AV_PIX_FMT_YUYV422
packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
Definition pixfmt.h:74
@ AV_PIX_FMT_YUV422P16BE
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:131
@ AV_PIX_FMT_BAYER_GBRG16LE
bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian
Definition pixfmt.h:293
@ AV_PIX_FMT_QSV
HW acceleration through QSV, data[3] contains a pointer to the mfxFrameSurface1 structure.
Definition pixfmt.h:247
@ AV_PIX_FMT_RGBAF16BE
IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., big-endian.
Definition pixfmt.h:403
@ AV_PIX_FMT_PAL8
8 bits with AV_PIX_FMT_RGB32 palette
Definition pixfmt.h:84
@ AV_PIX_FMT_BGR24
packed RGB 8:8:8, 24bpp, BGRBGR...
Definition pixfmt.h:76
@ AV_PIX_FMT_GRAY9LE
Y , 9bpp, little-endian.
Definition pixfmt.h:339
@ AV_PIX_FMT_VUYA
packed VUYA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), VUYAVUYA...
Definition pixfmt.h:401
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
Definition pixfmt.h:165
@ AV_PIX_FMT_XV48BE
packed XVYU 4:4:4, 64bpp, big-endian, variant of Y416 where alpha channel is left undefined
Definition pixfmt.h:463
@ AV_PIX_FMT_YUV422P14LE
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition pixfmt.h:274
@ AV_PIX_FMT_GBRAP16LE
planar GBRA 4:4:4:4 64bpp, little-endian
Definition pixfmt.h:214
@ AV_PIX_FMT_BAYER_BGGR16LE
bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian
Definition pixfmt.h:289
@ AV_PIX_FMT_YUV420P10BE
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
Definition pixfmt.h:155
@ AV_PIX_FMT_GBRAPF16LE
IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, little-endian.
Definition pixfmt.h:469
@ AV_PIX_FMT_YUV420P9BE
The following 12 formats have the disadvantage of needing 1 format for each bit depth.
Definition pixfmt.h:153
@ AV_PIX_FMT_GRAY10BE
Y , 10bpp, big-endian.
Definition pixfmt.h:320
@ AV_PIX_FMT_YUVA444P10BE
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
Definition pixfmt.h:185
@ AV_PIX_FMT_YUV440P10LE
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
Definition pixfmt.h:298
@ AV_PIX_FMT_RGBAF32BE
IEEE-754 single precision packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., big-endian.
Definition pixfmt.h:423
@ AV_PIX_FMT_YA8
8 bits gray, 8 bits alpha
Definition pixfmt.h:140
@ AV_PIX_FMT_YUV444P16LE
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition pixfmt.h:132
@ AV_PIX_FMT_0RGB
packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
Definition pixfmt.h:262
@ AV_PIX_FMT_GRAY14BE
Y , 14bpp, big-endian.
Definition pixfmt.h:360
@ AV_PIX_FMT_P212LE
interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, little-endian
Definition pixfmt.h:427
@ AV_PIX_FMT_GBRP14BE
planar GBR 4:4:4 42bpp, big-endian
Definition pixfmt.h:281
@ AV_PIX_FMT_BGR565LE
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
Definition pixfmt.h:118
@ AV_PIX_FMT_YUV422P14BE
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:273
@ AV_PIX_FMT_BAYER_GBRG16BE
bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian
Definition pixfmt.h:294
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
Definition pixfmt.h:87
@ AV_PIX_FMT_X2BGR10BE
packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), big-endian, X=unused/undefined
Definition pixfmt.h:387
@ AV_PIX_FMT_P216BE
interleaved chroma YUV 4:2:2, 32bpp, big-endian
Definition pixfmt.h:395
@ AV_PIX_FMT_YUV444P12BE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
Definition pixfmt.h:275
@ AV_PIX_FMT_YUVA444P16BE
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
Definition pixfmt.h:191
@ AV_PIX_FMT_YUVA422P16LE
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
Definition pixfmt.h:190
@ AV_PIX_FMT_RGBF32BE
IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., big-endian.
Definition pixfmt.h:420
@ AV_PIX_FMT_RGBAF32LE
IEEE-754 single precision packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., little-endian.
Definition pixfmt.h:424
@ AV_PIX_FMT_BAYER_RGGB8
bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples
Definition pixfmt.h:286
@ AV_PIX_FMT_GBRP16LE
planar GBR 4:4:4 48bpp, little-endian
Definition pixfmt.h:172
@ AV_PIX_FMT_YUVA422P9BE
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
Definition pixfmt.h:177
@ AV_PIX_FMT_VYU444
packed VYU 4:4:4, 24bpp (1 Cr & Cb sample per 1x1 Y), VYUVYU...
Definition pixfmt.h:446
@ AV_PIX_FMT_RGB4
packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in ...
Definition pixfmt.h:94
@ AV_PIX_FMT_YUVA444P12LE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian
Definition pixfmt.h:369
@ AV_PIX_FMT_MONOWHITE
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb.
Definition pixfmt.h:82
@ AV_PIX_FMT_BGR4
packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in ...
Definition pixfmt.h:91
@ AV_PIX_FMT_GBRAP32BE
planar GBRA 4:4:4:4 128bpp, big-endian
Definition pixfmt.h:488
@ AV_PIX_FMT_YUV444P10LE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition pixfmt.h:162
@ AV_PIX_FMT_YUVJ420P
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
Definition pixfmt.h:85
@ AV_PIX_FMT_AMF_SURFACE
HW acceleration through AMF.
Definition pixfmt.h:477
@ AV_PIX_FMT_YUV422P12BE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
Definition pixfmt.h:271
@ AV_PIX_FMT_X2RGB10BE
packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined
Definition pixfmt.h:385
@ AV_PIX_FMT_P412BE
interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, big-endian
Definition pixfmt.h:429
@ AV_PIX_FMT_GBRP12MSBBE
planar GBR 4:4:4 36bpp, lowest bits zero, big-endian
Definition pixfmt.h:497
@ AV_PIX_FMT_MEDIACODEC
hardware decoding through MediaCodec
Definition pixfmt.h:316
@ AV_PIX_FMT_P412LE
interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, little-endian
Definition pixfmt.h:430
@ AV_PIX_FMT_BAYER_BGGR8
bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples
Definition pixfmt.h:285
@ AV_PIX_FMT_YUV420P16LE
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition pixfmt.h:128
@ AV_PIX_FMT_RGBF16BE
IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., big-endian.
Definition pixfmt.h:451
@ AV_PIX_FMT_YUV444P12LE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition pixfmt.h:276
@ AV_PIX_FMT_VDPAU
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface.
Definition pixfmt.h:194
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition pixfmt.h:642
@ AVCOL_PRI_BT470BG
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
Definition pixfmt.h:649
@ AVCOL_PRI_NB
Not part of ABI.
Definition pixfmt.h:660
@ AVCOL_PRI_FILM
colour filters using Illuminant C
Definition pixfmt.h:652
@ AVCOL_PRI_SMPTE432
SMPTE ST 432-1 (2010) / P3 D65 / Display P3.
Definition pixfmt.h:657
@ AVCOL_PRI_V_GAMUT
Definition pixfmt.h:664
@ AVCOL_PRI_BT709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B
Definition pixfmt.h:644
@ AVCOL_PRI_RESERVED
Definition pixfmt.h:646
@ AVCOL_PRI_EXT_NB
Not part of ABI.
Definition pixfmt.h:665
@ AVCOL_PRI_SMPTE240M
identical to above, also called "SMPTE C" even though it uses D65
Definition pixfmt.h:651
@ AVCOL_PRI_EXT_BASE
Definition pixfmt.h:663
@ AVCOL_PRI_UNSPECIFIED
Definition pixfmt.h:645
@ AVCOL_PRI_EBU3213
EBU Tech. 3213-E (nothing there) / one of JEDEC P22 group phosphors.
Definition pixfmt.h:658
@ AVCOL_PRI_RESERVED0
Definition pixfmt.h:643
@ AVCOL_PRI_SMPTE431
SMPTE ST 431-2 (2011) / DCI P3.
Definition pixfmt.h:656
@ AVCOL_PRI_SMPTE428
SMPTE ST 428-1 (CIE 1931 XYZ)
Definition pixfmt.h:654
@ AVCOL_PRI_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition pixfmt.h:650
@ AVCOL_PRI_BT2020
ITU-R BT2020.
Definition pixfmt.h:653
@ AVCOL_PRI_BT470M
also FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
Definition pixfmt.h:647
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition pixfmt.h:672
@ AVCOL_TRC_SMPTE170M
also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
Definition pixfmt.h:679
@ AVCOL_TRC_EXT_BASE
Definition pixfmt.h:697
@ AVCOL_TRC_SMPTE2084
SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems.
Definition pixfmt.h:689
@ AVCOL_TRC_GAMMA22
also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
Definition pixfmt.h:677
@ AVCOL_TRC_RESERVED
Definition pixfmt.h:676
@ AVCOL_TRC_V_LOG
Definition pixfmt.h:698
@ AVCOL_TRC_BT1361_ECG
ITU-R BT1361 Extended Colour Gamut.
Definition pixfmt.h:685
@ AVCOL_TRC_SMPTE240M
Definition pixfmt.h:680
@ AVCOL_TRC_LOG
"Logarithmic transfer characteristic (100:1 range)"
Definition pixfmt.h:682
@ AVCOL_TRC_IEC61966_2_4
IEC 61966-2-4.
Definition pixfmt.h:684
@ AVCOL_TRC_LINEAR
"Linear transfer characteristics"
Definition pixfmt.h:681
@ AVCOL_TRC_GAMMA28
also ITU-R BT470BG
Definition pixfmt.h:678
@ AVCOL_TRC_ARIB_STD_B67
ARIB STD-B67, known as "Hybrid log-gamma".
Definition pixfmt.h:693
@ AVCOL_TRC_SMPTE428
SMPTE ST 428-1.
Definition pixfmt.h:691
@ AVCOL_TRC_LOG_SQRT
"Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
Definition pixfmt.h:683
@ AVCOL_TRC_BT2020_12
ITU-R BT2020 for 12-bit system.
Definition pixfmt.h:688
@ AVCOL_TRC_IEC61966_2_1
IEC 61966-2-1 (sRGB or sYCC)
Definition pixfmt.h:686
@ AVCOL_TRC_EXT_NB
Not part of ABI.
Definition pixfmt.h:699
@ AVCOL_TRC_BT2020_10
ITU-R BT2020 for 10-bit system.
Definition pixfmt.h:687
@ AVCOL_TRC_UNSPECIFIED
Definition pixfmt.h:675
@ AVCOL_TRC_BT709
also ITU-R BT1361
Definition pixfmt.h:674
@ AVCOL_TRC_NB
Not part of ABI.
Definition pixfmt.h:694
@ AVCOL_TRC_RESERVED0
Definition pixfmt.h:673
AVColorSpace
YUV colorspace type.
Definition pixfmt.h:706
@ AVCOL_SPC_YCGCO_RE
YCgCo-R, even addition of bits.
Definition pixfmt.h:724
@ AVCOL_SPC_BT709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B
Definition pixfmt.h:708
@ AVCOL_SPC_BT470BG
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
Definition pixfmt.h:712
@ AVCOL_SPC_CHROMA_DERIVED_CL
Chromaticity-derived constant luminance system.
Definition pixfmt.h:721
@ AVCOL_SPC_BT2020_CL
ITU-R BT2020 constant luminance system.
Definition pixfmt.h:718
@ AVCOL_SPC_NB
Not part of ABI.
Definition pixfmt.h:726
@ AVCOL_SPC_RGB
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1
Definition pixfmt.h:707
@ AVCOL_SPC_BT2020_NCL
ITU-R BT2020 non-constant luminance system.
Definition pixfmt.h:717
@ AVCOL_SPC_SMPTE2085
SMPTE 2085, Y'D'zD'x.
Definition pixfmt.h:719
@ AVCOL_SPC_UNSPECIFIED
Definition pixfmt.h:709
@ AVCOL_SPC_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
Definition pixfmt.h:713
@ AVCOL_SPC_FCC
FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
Definition pixfmt.h:711
@ AVCOL_SPC_CHROMA_DERIVED_NCL
Chromaticity-derived non-constant luminance system.
Definition pixfmt.h:720
@ AVCOL_SPC_SMPTE240M
derived from 170M primaries and D65 white point, 170M is derived from BT470 System M's primaries
Definition pixfmt.h:714
@ AVCOL_SPC_YCGCO_RO
YCgCo-R, odd addition of bits.
Definition pixfmt.h:725
@ AVCOL_SPC_YCGCO
used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
Definition pixfmt.h:715
@ AVCOL_SPC_ICTCP
ITU-R BT.2100-0, ICtCp.
Definition pixfmt.h:722
@ AVCOL_SPC_RESERVED
reserved for future use by ITU-T and ISO/IEC just like 15-255 are
Definition pixfmt.h:710
@ AVCOL_SPC_IPT_C2
SMPTE ST 2128, IPT-C2.
Definition pixfmt.h:723
const char * name
Definition qsvenc.c:142
#define FF_ARRAY_ELEMS(a)
#define snprintf
Definition snprintf.h:34
unsigned int pos
Definition spdifenc.c:431
int depth
Number of bits in the component.
Definition pixdesc.h:57
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Definition pixdesc.h:69
const char * name
Definition pixdesc.h:70
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
Definition pixdesc.h:105
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
Definition pixdesc.h:80
uint64_t flags
Combination of AV_PIX_FMT_FLAG_... flags.
Definition pixdesc.h:94
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
Definition pixdesc.h:89
uint8_t nb_components
The number of components each pixel has, (1-4)
Definition pixdesc.h:71
Definition mccdec.c:79
Definition swscale.c:71
#define src
Definition vp8dsp.c:248
static double c[64]