2 * pixel format descriptor
3 * Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
5 * This file is part of Libav.
7 * Libav 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.
12 * Libav 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.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with Libav; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30 #include "intreadwrite.h"
33 void av_read_image_line(uint16_t *dst,
34 const uint8_t *data[4], const int linesize[4],
35 const AVPixFmtDescriptor *desc,
36 int x, int y, int c, int w,
37 int read_pal_component)
39 AVComponentDescriptor comp = desc->comp[c];
40 int plane = comp.plane;
41 int depth = comp.depth;
42 int mask = (1 << depth) - 1;
43 int shift = comp.shift;
45 int flags = desc->flags;
47 if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
48 int skip = x * step + comp.offset;
49 const uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
50 int shift = 8 - depth - (skip & 7);
53 int val = (*p >> shift) & mask;
54 if (read_pal_component)
55 val = data[1][4*val + c];
62 const uint8_t *p = data[plane] + y * linesize[plane] +
63 x * step + comp.offset;
64 int is_8bit = shift + depth <= 8;
67 p += !!(flags & AV_PIX_FMT_FLAG_BE);
70 int val = is_8bit ? *p :
71 flags & AV_PIX_FMT_FLAG_BE ? AV_RB16(p) : AV_RL16(p);
72 val = (val >> shift) & mask;
73 if (read_pal_component)
74 val = data[1][4 * val + c];
81 void av_write_image_line(const uint16_t *src,
82 uint8_t *data[4], const int linesize[4],
83 const AVPixFmtDescriptor *desc,
84 int x, int y, int c, int w)
86 AVComponentDescriptor comp = desc->comp[c];
87 int plane = comp.plane;
88 int depth = comp.depth;
90 int flags = desc->flags;
92 if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
93 int skip = x * step + comp.offset;
94 uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
95 int shift = 8 - depth - (skip & 7);
98 *p |= *src++ << shift;
104 int shift = comp.shift;
105 uint8_t *p = data[plane] + y * linesize[plane] +
106 x * step + comp.offset;
108 if (shift + depth <= 8) {
109 p += !!(flags & AV_PIX_FMT_FLAG_BE);
111 *p |= (*src++ << shift);
116 if (flags & AV_PIX_FMT_FLAG_BE) {
117 uint16_t val = AV_RB16(p) | (*src++ << shift);
120 uint16_t val = AV_RL16(p) | (*src++ << shift);
129 #if FF_API_PLUS1_MINUS1
130 FF_DISABLE_DEPRECATION_WARNINGS
132 static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
133 [AV_PIX_FMT_YUV420P] = {
139 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
140 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
141 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
143 .flags = AV_PIX_FMT_FLAG_PLANAR,
145 [AV_PIX_FMT_YUYV422] = {
151 { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */
152 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* U */
153 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* V */
156 [AV_PIX_FMT_YVYU422] = {
162 { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */
163 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* U */
164 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* V */
167 [AV_PIX_FMT_RGB24] = {
173 { 0, 3, 0, 0, 8, 2, 7, 1 }, /* R */
174 { 0, 3, 1, 0, 8, 2, 7, 2 }, /* G */
175 { 0, 3, 2, 0, 8, 2, 7, 3 }, /* B */
177 .flags = AV_PIX_FMT_FLAG_RGB,
179 [AV_PIX_FMT_BGR24] = {
185 { 0, 3, 2, 0, 8, 2, 7, 3 }, /* R */
186 { 0, 3, 1, 0, 8, 2, 7, 2 }, /* G */
187 { 0, 3, 0, 0, 8, 2, 7, 1 }, /* B */
189 .flags = AV_PIX_FMT_FLAG_RGB,
191 [AV_PIX_FMT_YUV422P] = {
197 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
198 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
199 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
201 .flags = AV_PIX_FMT_FLAG_PLANAR,
203 [AV_PIX_FMT_YUV444P] = {
209 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
210 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
211 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
213 .flags = AV_PIX_FMT_FLAG_PLANAR,
215 [AV_PIX_FMT_YUV410P] = {
221 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
222 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
223 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
225 .flags = AV_PIX_FMT_FLAG_PLANAR,
227 [AV_PIX_FMT_YUV411P] = {
233 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
234 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
235 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
237 .flags = AV_PIX_FMT_FLAG_PLANAR,
239 [AV_PIX_FMT_GRAY8] = {
245 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
247 .flags = AV_PIX_FMT_FLAG_PSEUDOPAL,
250 [AV_PIX_FMT_MONOWHITE] = {
256 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* Y */
258 .flags = AV_PIX_FMT_FLAG_BITSTREAM,
260 [AV_PIX_FMT_MONOBLACK] = {
266 { 0, 1, 0, 7, 1, 0, 0, 1 }, /* Y */
268 .flags = AV_PIX_FMT_FLAG_BITSTREAM,
270 [AV_PIX_FMT_PAL8] = {
276 { 0, 1, 0, 0, 8, 0, 7, 1 },
278 .flags = AV_PIX_FMT_FLAG_PAL,
280 [AV_PIX_FMT_YUVJ420P] = {
286 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
287 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
288 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
290 .flags = AV_PIX_FMT_FLAG_PLANAR,
292 [AV_PIX_FMT_YUVJ422P] = {
298 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
299 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
300 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
302 .flags = AV_PIX_FMT_FLAG_PLANAR,
304 [AV_PIX_FMT_YUVJ444P] = {
310 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
311 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
312 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
314 .flags = AV_PIX_FMT_FLAG_PLANAR,
317 [AV_PIX_FMT_XVMC_MPEG2_MC] = {
319 .flags = AV_PIX_FMT_FLAG_HWACCEL,
321 [AV_PIX_FMT_XVMC_MPEG2_IDCT] = {
323 .flags = AV_PIX_FMT_FLAG_HWACCEL,
325 #endif /* FF_API_XVMC */
326 [AV_PIX_FMT_UYVY422] = {
332 { 0, 2, 1, 0, 8, 1, 7, 2 }, /* Y */
333 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* U */
334 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* V */
337 [AV_PIX_FMT_UYYVYY411] = {
343 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* Y */
344 { 0, 6, 0, 0, 8, 5, 7, 1 }, /* U */
345 { 0, 6, 3, 0, 8, 5, 7, 4 }, /* V */
348 [AV_PIX_FMT_BGR8] = {
354 { 0, 1, 0, 0, 3, 0, 2, 1 }, /* R */
355 { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */
356 { 0, 1, 0, 6, 2, 0, 1, 1 }, /* B */
358 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
360 [AV_PIX_FMT_BGR4] = {
366 { 0, 4, 3, 0, 1, 3, 0, 4 }, /* R */
367 { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */
368 { 0, 4, 0, 0, 1, 3, 0, 1 }, /* B */
370 .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB,
372 [AV_PIX_FMT_BGR4_BYTE] = {
378 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* R */
379 { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */
380 { 0, 1, 0, 3, 1, 0, 0, 1 }, /* B */
382 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
384 [AV_PIX_FMT_RGB8] = {
390 { 0, 1, 0, 6, 2, 0, 1, 1 }, /* R */
391 { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */
392 { 0, 1, 0, 0, 3, 0, 2, 1 }, /* B */
394 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
396 [AV_PIX_FMT_RGB4] = {
402 { 0, 4, 0, 0, 1, 3, 0, 1 }, /* R */
403 { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */
404 { 0, 4, 3, 0, 1, 3, 0, 4 }, /* B */
406 .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB,
408 [AV_PIX_FMT_RGB4_BYTE] = {
414 { 0, 1, 0, 3, 1, 0, 0, 1 }, /* R */
415 { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */
416 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* B */
418 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
420 [AV_PIX_FMT_NV12] = {
426 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
427 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */
428 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */
430 .flags = AV_PIX_FMT_FLAG_PLANAR,
432 [AV_PIX_FMT_NV21] = {
438 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
439 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* U */
440 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* V */
442 .flags = AV_PIX_FMT_FLAG_PLANAR,
444 [AV_PIX_FMT_ARGB] = {
450 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* R */
451 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */
452 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* B */
453 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */
455 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
457 [AV_PIX_FMT_RGBA] = {
463 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* R */
464 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */
465 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* B */
466 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */
468 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
470 [AV_PIX_FMT_ABGR] = {
476 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* R */
477 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */
478 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* B */
479 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */
481 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
483 [AV_PIX_FMT_BGRA] = {
489 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* R */
490 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */
491 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* B */
492 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */
494 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
496 [AV_PIX_FMT_GRAY12BE] = {
502 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
504 .flags = AV_PIX_FMT_FLAG_BE,
507 [AV_PIX_FMT_GRAY12LE] = {
513 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
517 [AV_PIX_FMT_GRAY16BE] = {
523 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
525 .flags = AV_PIX_FMT_FLAG_BE,
528 [AV_PIX_FMT_GRAY16LE] = {
534 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
538 [AV_PIX_FMT_YUV440P] = {
544 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
545 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
546 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
548 .flags = AV_PIX_FMT_FLAG_PLANAR,
550 [AV_PIX_FMT_YUVJ440P] = {
556 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
557 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
558 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
560 .flags = AV_PIX_FMT_FLAG_PLANAR,
562 [AV_PIX_FMT_YUVA420P] = {
568 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
569 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
570 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
571 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
573 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
575 [AV_PIX_FMT_YUVA422P] = {
581 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
582 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
583 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
584 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
586 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
588 [AV_PIX_FMT_YUVA444P] = {
594 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
595 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
596 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
597 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
599 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
601 [AV_PIX_FMT_YUVA420P9BE] = {
602 .name = "yuva420p9be",
607 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
608 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
609 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
610 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
612 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
614 [AV_PIX_FMT_YUVA420P9LE] = {
615 .name = "yuva420p9le",
620 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
621 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
622 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
623 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
625 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
627 [AV_PIX_FMT_YUVA422P9BE] = {
628 .name = "yuva422p9be",
633 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
634 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
635 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
636 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
638 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
640 [AV_PIX_FMT_YUVA422P9LE] = {
641 .name = "yuva422p9le",
646 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
647 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
648 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
649 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
651 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
653 [AV_PIX_FMT_YUVA444P9BE] = {
654 .name = "yuva444p9be",
659 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
660 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
661 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
662 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
664 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
666 [AV_PIX_FMT_YUVA444P9LE] = {
667 .name = "yuva444p9le",
672 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
673 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
674 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
675 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
677 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
679 [AV_PIX_FMT_YUVA420P10BE] = {
680 .name = "yuva420p10be",
685 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
686 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
687 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
688 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
690 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
692 [AV_PIX_FMT_YUVA420P10LE] = {
693 .name = "yuva420p10le",
698 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
699 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
700 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
701 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
703 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
705 [AV_PIX_FMT_YUVA422P10BE] = {
706 .name = "yuva422p10be",
711 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
712 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
713 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
714 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
716 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
718 [AV_PIX_FMT_YUVA422P10LE] = {
719 .name = "yuva422p10le",
724 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
725 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
726 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
727 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
729 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
731 [AV_PIX_FMT_YUVA444P10BE] = {
732 .name = "yuva444p10be",
737 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
738 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
739 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
740 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
742 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
744 [AV_PIX_FMT_YUVA444P10LE] = {
745 .name = "yuva444p10le",
750 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
751 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
752 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
753 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
755 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
757 [AV_PIX_FMT_YUVA420P16BE] = {
758 .name = "yuva420p16be",
763 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
764 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
765 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
766 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
768 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
770 [AV_PIX_FMT_YUVA420P16LE] = {
771 .name = "yuva420p16le",
776 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
777 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
778 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
779 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
781 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
783 [AV_PIX_FMT_YUVA422P16BE] = {
784 .name = "yuva422p16be",
789 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
790 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
791 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
792 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
794 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
796 [AV_PIX_FMT_YUVA422P16LE] = {
797 .name = "yuva422p16le",
802 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
803 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
804 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
805 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
807 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
809 [AV_PIX_FMT_YUVA444P16BE] = {
810 .name = "yuva444p16be",
815 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
816 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
817 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
818 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
820 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
822 [AV_PIX_FMT_YUVA444P16LE] = {
823 .name = "yuva444p16le",
828 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
829 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
830 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
831 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
833 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
836 [AV_PIX_FMT_VDPAU_H264] = {
837 .name = "vdpau_h264",
840 .flags = AV_PIX_FMT_FLAG_HWACCEL,
842 [AV_PIX_FMT_VDPAU_MPEG1] = {
843 .name = "vdpau_mpeg1",
846 .flags = AV_PIX_FMT_FLAG_HWACCEL,
848 [AV_PIX_FMT_VDPAU_MPEG2] = {
849 .name = "vdpau_mpeg2",
852 .flags = AV_PIX_FMT_FLAG_HWACCEL,
854 [AV_PIX_FMT_VDPAU_WMV3] = {
855 .name = "vdpau_wmv3",
858 .flags = AV_PIX_FMT_FLAG_HWACCEL,
860 [AV_PIX_FMT_VDPAU_VC1] = {
864 .flags = AV_PIX_FMT_FLAG_HWACCEL,
866 [AV_PIX_FMT_VDPAU_MPEG4] = {
867 .name = "vdpau_mpeg4",
870 .flags = AV_PIX_FMT_FLAG_HWACCEL,
873 [AV_PIX_FMT_RGB48BE] = {
879 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */
880 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
881 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */
883 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE,
885 [AV_PIX_FMT_RGB48LE] = {
891 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */
892 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
893 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */
895 .flags = AV_PIX_FMT_FLAG_RGB,
897 [AV_PIX_FMT_RGBA64BE] = {
903 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */
904 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
905 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */
906 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
908 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
910 [AV_PIX_FMT_RGBA64LE] = {
916 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */
917 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
918 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */
919 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
921 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
923 [AV_PIX_FMT_RGB565BE] = {
929 { 0, 2, -1, 3, 5, 1, 4, 0 }, /* R */
930 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
931 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
933 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
935 [AV_PIX_FMT_RGB565LE] = {
941 { 0, 2, 1, 3, 5, 1, 4, 2 }, /* R */
942 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
943 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
945 .flags = AV_PIX_FMT_FLAG_RGB,
947 [AV_PIX_FMT_RGB555BE] = {
953 { 0, 2, -1, 2, 5, 1, 4, 0 }, /* R */
954 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
955 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
957 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
959 [AV_PIX_FMT_RGB555LE] = {
965 { 0, 2, 1, 2, 5, 1, 4, 2 }, /* R */
966 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
967 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
969 .flags = AV_PIX_FMT_FLAG_RGB,
971 [AV_PIX_FMT_RGB444BE] = {
977 { 0, 2, -1, 0, 4, 1, 3, 0 }, /* R */
978 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
979 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */
981 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
983 [AV_PIX_FMT_RGB444LE] = {
989 { 0, 2, 1, 0, 4, 1, 3, 2 }, /* R */
990 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
991 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */
993 .flags = AV_PIX_FMT_FLAG_RGB,
995 [AV_PIX_FMT_BGR48BE] = {
1001 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */
1002 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
1003 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */
1005 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
1007 [AV_PIX_FMT_BGR48LE] = {
1013 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */
1014 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
1015 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */
1017 .flags = AV_PIX_FMT_FLAG_RGB,
1019 [AV_PIX_FMT_BGRA64BE] = {
1025 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */
1026 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
1027 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */
1028 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
1030 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
1032 [AV_PIX_FMT_BGRA64LE] = {
1038 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */
1039 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
1040 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */
1041 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
1043 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
1045 [AV_PIX_FMT_BGR565BE] = {
1051 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1052 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
1053 { 0, 2, -1, 3, 5, 1, 4, 0 }, /* B */
1055 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
1057 [AV_PIX_FMT_BGR565LE] = {
1063 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1064 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
1065 { 0, 2, 1, 3, 5, 1, 4, 2 }, /* B */
1067 .flags = AV_PIX_FMT_FLAG_RGB,
1069 [AV_PIX_FMT_BGR555BE] = {
1075 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1076 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
1077 { 0, 2, -1, 2, 5, 1, 4, 0 }, /* B */
1079 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
1081 [AV_PIX_FMT_BGR555LE] = {
1087 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1088 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
1089 { 0, 2, 1, 2, 5, 1, 4, 2 }, /* B */
1091 .flags = AV_PIX_FMT_FLAG_RGB,
1093 [AV_PIX_FMT_BGR444BE] = {
1099 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */
1100 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
1101 { 0, 2, -1, 0, 4, 1, 3, 0 }, /* B */
1103 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
1105 [AV_PIX_FMT_BGR444LE] = {
1111 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */
1112 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
1113 { 0, 2, 1, 0, 4, 1, 3, 2 }, /* B */
1115 .flags = AV_PIX_FMT_FLAG_RGB,
1118 [AV_PIX_FMT_VAAPI_MOCO] = {
1119 .name = "vaapi_moco",
1122 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1124 [AV_PIX_FMT_VAAPI_IDCT] = {
1125 .name = "vaapi_idct",
1128 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1130 [AV_PIX_FMT_VAAPI_VLD] = {
1131 .name = "vaapi_vld",
1134 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1137 [AV_PIX_FMT_VAAPI] = {
1141 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1144 [AV_PIX_FMT_VDA_VLD] = {
1148 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1150 [AV_PIX_FMT_YUV420P9LE] = {
1151 .name = "yuv420p9le",
1156 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1157 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1158 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1160 .flags = AV_PIX_FMT_FLAG_PLANAR,
1162 [AV_PIX_FMT_YUV420P9BE] = {
1163 .name = "yuv420p9be",
1168 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1169 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1170 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1172 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1174 [AV_PIX_FMT_YUV420P10LE] = {
1175 .name = "yuv420p10le",
1180 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1181 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1182 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1184 .flags = AV_PIX_FMT_FLAG_PLANAR,
1186 [AV_PIX_FMT_YUV420P10BE] = {
1187 .name = "yuv420p10be",
1192 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1193 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1194 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1196 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1198 [AV_PIX_FMT_YUV420P12LE] = {
1199 .name = "yuv420p12le",
1204 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1205 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1206 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1208 .flags = AV_PIX_FMT_FLAG_PLANAR,
1210 [AV_PIX_FMT_YUV420P12BE] = {
1211 .name = "yuv420p12be",
1216 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1217 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1218 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1220 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1222 [AV_PIX_FMT_YUV420P16LE] = {
1223 .name = "yuv420p16le",
1228 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1229 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1230 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1232 .flags = AV_PIX_FMT_FLAG_PLANAR,
1234 [AV_PIX_FMT_YUV420P16BE] = {
1235 .name = "yuv420p16be",
1240 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1241 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1242 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1244 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1246 [AV_PIX_FMT_YUV422P9LE] = {
1247 .name = "yuv422p9le",
1252 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1253 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1254 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1256 .flags = AV_PIX_FMT_FLAG_PLANAR,
1258 [AV_PIX_FMT_YUV422P9BE] = {
1259 .name = "yuv422p9be",
1264 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1265 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1266 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1268 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1270 [AV_PIX_FMT_YUV422P10LE] = {
1271 .name = "yuv422p10le",
1276 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1277 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1278 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1280 .flags = AV_PIX_FMT_FLAG_PLANAR,
1282 [AV_PIX_FMT_YUV422P10BE] = {
1283 .name = "yuv422p10be",
1288 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1289 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1290 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1292 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1294 [AV_PIX_FMT_YUV422P12LE] = {
1295 .name = "yuv422p12le",
1300 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1301 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1302 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1304 .flags = AV_PIX_FMT_FLAG_PLANAR,
1306 [AV_PIX_FMT_YUV422P12BE] = {
1307 .name = "yuv422p12be",
1312 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1313 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1314 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1316 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1318 [AV_PIX_FMT_YUV422P16LE] = {
1319 .name = "yuv422p16le",
1324 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1325 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1326 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1328 .flags = AV_PIX_FMT_FLAG_PLANAR,
1330 [AV_PIX_FMT_YUV422P16BE] = {
1331 .name = "yuv422p16be",
1336 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1337 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1338 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1340 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1342 [AV_PIX_FMT_YUV444P16LE] = {
1343 .name = "yuv444p16le",
1348 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1349 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1350 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1352 .flags = AV_PIX_FMT_FLAG_PLANAR,
1354 [AV_PIX_FMT_YUV444P16BE] = {
1355 .name = "yuv444p16be",
1360 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1361 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1362 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1364 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1366 [AV_PIX_FMT_YUV444P12LE] = {
1367 .name = "yuv444p12le",
1372 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1373 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1374 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1376 .flags = AV_PIX_FMT_FLAG_PLANAR,
1378 [AV_PIX_FMT_YUV444P12BE] = {
1379 .name = "yuv444p12be",
1384 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1385 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1386 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1388 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1390 [AV_PIX_FMT_YUV444P10LE] = {
1391 .name = "yuv444p10le",
1396 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1397 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1398 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1400 .flags = AV_PIX_FMT_FLAG_PLANAR,
1402 [AV_PIX_FMT_YUV444P10BE] = {
1403 .name = "yuv444p10be",
1408 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1409 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1410 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1412 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1414 [AV_PIX_FMT_YUV444P9LE] = {
1415 .name = "yuv444p9le",
1420 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1421 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1422 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1424 .flags = AV_PIX_FMT_FLAG_PLANAR,
1426 [AV_PIX_FMT_YUV444P9BE] = {
1427 .name = "yuv444p9be",
1432 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1433 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1434 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1436 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
1438 [AV_PIX_FMT_D3D11VA_VLD] = {
1439 .name = "d3d11va_vld",
1442 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1444 [AV_PIX_FMT_DXVA2_VLD] = {
1445 .name = "dxva2_vld",
1448 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1450 [AV_PIX_FMT_YA8] = {
1454 { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */
1455 { 0, 2, 1, 0, 8, 1, 7, 2 }, /* A */
1457 .flags = AV_PIX_FMT_FLAG_ALPHA,
1460 [AV_PIX_FMT_YA16LE] = {
1464 { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */
1465 { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */
1467 .flags = AV_PIX_FMT_FLAG_ALPHA,
1469 [AV_PIX_FMT_YA16BE] = {
1473 { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */
1474 { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */
1476 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA,
1478 [AV_PIX_FMT_GBRP] = {
1484 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */
1485 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */
1486 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */
1488 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1490 [AV_PIX_FMT_GBRP9LE] = {
1496 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */
1497 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */
1498 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */
1500 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1502 [AV_PIX_FMT_GBRP9BE] = {
1508 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */
1509 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */
1510 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */
1512 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1514 [AV_PIX_FMT_GBRP10LE] = {
1520 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1521 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1522 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1524 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1526 [AV_PIX_FMT_GBRP10BE] = {
1532 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1533 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1534 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1536 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1538 [AV_PIX_FMT_GBRP12LE] = {
1544 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1545 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1546 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1548 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1550 [AV_PIX_FMT_GBRP12BE] = {
1556 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1557 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1558 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1560 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1562 [AV_PIX_FMT_GBRP16LE] = {
1568 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1569 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1570 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1572 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1574 [AV_PIX_FMT_GBRP16BE] = {
1580 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1581 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1582 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1584 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
1586 [AV_PIX_FMT_GBRAP] = {
1592 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */
1593 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */
1594 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */
1595 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
1597 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
1598 AV_PIX_FMT_FLAG_ALPHA,
1600 [AV_PIX_FMT_GBRAP16LE] = {
1601 .name = "gbrap16le",
1606 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1607 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1608 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1609 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
1611 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
1612 AV_PIX_FMT_FLAG_ALPHA,
1614 [AV_PIX_FMT_GBRAP16BE] = {
1615 .name = "gbrap16be",
1620 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1621 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1622 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1623 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
1625 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
1626 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
1628 [AV_PIX_FMT_VDPAU] = {
1632 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1634 [AV_PIX_FMT_XYZ12LE] = {
1640 { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */
1641 { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */
1642 { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */
1644 /*.flags = -- not used*/
1646 [AV_PIX_FMT_XYZ12BE] = {
1652 { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */
1653 { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */
1654 { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */
1656 .flags = AV_PIX_FMT_FLAG_BE,
1658 [AV_PIX_FMT_NV16] = {
1664 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
1665 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */
1666 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */
1668 .flags = AV_PIX_FMT_FLAG_PLANAR,
1670 [AV_PIX_FMT_NV20LE] = {
1676 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1677 { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */
1678 { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */
1680 .flags = AV_PIX_FMT_FLAG_PLANAR,
1682 [AV_PIX_FMT_NV20BE] = {
1688 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1689 { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */
1690 { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */
1692 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
1694 [AV_PIX_FMT_VDA] = {
1696 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1698 [AV_PIX_FMT_QSV] = {
1700 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1702 [AV_PIX_FMT_MMAL] = {
1704 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1706 [AV_PIX_FMT_CUDA] = {
1708 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1710 [AV_PIX_FMT_P010LE] = {
1716 { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */
1717 { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */
1718 { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */
1720 .flags = AV_PIX_FMT_FLAG_PLANAR,
1722 [AV_PIX_FMT_P010BE] = {
1728 { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */
1729 { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */
1730 { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */
1732 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
1734 [AV_PIX_FMT_GBRAP12LE] = {
1735 .name = "gbrap12le",
1740 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1741 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1742 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1743 { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */
1745 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
1746 AV_PIX_FMT_FLAG_ALPHA,
1748 [AV_PIX_FMT_GBRAP12BE] = {
1749 .name = "gbrap12be",
1754 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1755 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1756 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1757 { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */
1759 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
1760 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
1763 #if FF_API_PLUS1_MINUS1
1764 FF_ENABLE_DEPRECATION_WARNINGS
1767 static const char * const color_range_names[] = {
1768 [AVCOL_RANGE_UNSPECIFIED] = "unknown",
1769 [AVCOL_RANGE_MPEG] = "tv",
1770 [AVCOL_RANGE_JPEG] = "pc",
1773 static const char * const color_primaries_names[] = {
1774 [AVCOL_PRI_RESERVED0] = "reserved",
1775 [AVCOL_PRI_BT709] = "bt709",
1776 [AVCOL_PRI_UNSPECIFIED] = "unknown",
1777 [AVCOL_PRI_RESERVED] = "reserved",
1778 [AVCOL_PRI_BT470M] = "bt470m",
1779 [AVCOL_PRI_BT470BG] = "bt470bg",
1780 [AVCOL_PRI_SMPTE170M] = "smpte170m",
1781 [AVCOL_PRI_SMPTE240M] = "smpte240m",
1782 [AVCOL_PRI_FILM] = "film",
1783 [AVCOL_PRI_BT2020] = "bt2020",
1784 [AVCOL_PRI_SMPTE428] = "smpte428",
1785 [AVCOL_PRI_SMPTE431] = "smpte431",
1786 [AVCOL_PRI_SMPTE432] = "smpte432",
1787 [AVCOL_PRI_JEDEC_P22] = "jedec-p22",
1790 static const char * const color_transfer_names[] = {
1791 [AVCOL_TRC_RESERVED0] = "reserved",
1792 [AVCOL_TRC_BT709] = "bt709",
1793 [AVCOL_TRC_UNSPECIFIED] = "unknown",
1794 [AVCOL_TRC_RESERVED] = "reserved",
1795 [AVCOL_TRC_GAMMA22] = "bt470m",
1796 [AVCOL_TRC_GAMMA28] = "bt470bg",
1797 [AVCOL_TRC_SMPTE170M] = "smpte170m",
1798 [AVCOL_TRC_SMPTE240M] = "smpte240m",
1799 [AVCOL_TRC_LINEAR] = "linear",
1800 [AVCOL_TRC_LOG] = "log100",
1801 [AVCOL_TRC_LOG_SQRT] = "log316",
1802 [AVCOL_TRC_IEC61966_2_4] = "iec61966-2-4",
1803 [AVCOL_TRC_BT1361_ECG] = "bt1361e",
1804 [AVCOL_TRC_IEC61966_2_1] = "iec61966-2-1",
1805 [AVCOL_TRC_BT2020_10] = "bt2020-10",
1806 [AVCOL_TRC_BT2020_12] = "bt2020-12",
1807 [AVCOL_TRC_SMPTE2084] = "smpte2084",
1808 [AVCOL_TRC_SMPTE428] = "smpte428",
1809 [AVCOL_TRC_ARIB_STD_B67] = "arib-std-b67",
1812 static const char * const color_space_names[] = {
1813 [AVCOL_SPC_RGB] = "gbr",
1814 [AVCOL_SPC_BT709] = "bt709",
1815 [AVCOL_SPC_UNSPECIFIED] = "unknown",
1816 [AVCOL_SPC_RESERVED] = "reserved",
1817 [AVCOL_SPC_FCC] = "fcc",
1818 [AVCOL_SPC_BT470BG] = "bt470bg",
1819 [AVCOL_SPC_SMPTE170M] = "smpte170m",
1820 [AVCOL_SPC_SMPTE240M] = "smpte240m",
1821 [AVCOL_SPC_YCGCO] = "ycgco",
1822 [AVCOL_SPC_BT2020_NCL] = "bt2020nc",
1823 [AVCOL_SPC_BT2020_CL] = "bt2020c",
1824 [AVCOL_SPC_SMPTE2085] = "smpte2085",
1827 static const char * const chroma_location_names[] = {
1828 [AVCHROMA_LOC_UNSPECIFIED] = "unspecified",
1829 [AVCHROMA_LOC_LEFT] = "left",
1830 [AVCHROMA_LOC_CENTER] = "center",
1831 [AVCHROMA_LOC_TOPLEFT] = "topleft",
1832 [AVCHROMA_LOC_TOP] = "top",
1833 [AVCHROMA_LOC_BOTTOMLEFT] = "bottomleft",
1834 [AVCHROMA_LOC_BOTTOM] = "bottom",
1837 static enum AVPixelFormat get_pix_fmt_internal(const char *name)
1839 enum AVPixelFormat pix_fmt;
1841 for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++)
1842 if (av_pix_fmt_descriptors[pix_fmt].name &&
1843 (!strcmp(av_pix_fmt_descriptors[pix_fmt].name, name) ||
1844 av_match_name(name, av_pix_fmt_descriptors[pix_fmt].alias)))
1847 return AV_PIX_FMT_NONE;
1850 const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
1852 return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
1853 av_pix_fmt_descriptors[pix_fmt].name : NULL;
1857 # define X_NE(be, le) be
1859 # define X_NE(be, le) le
1862 enum AVPixelFormat av_get_pix_fmt(const char *name)
1864 enum AVPixelFormat pix_fmt;
1866 if (!strcmp(name, "rgb32"))
1867 name = X_NE("argb", "bgra");
1868 else if (!strcmp(name, "bgr32"))
1869 name = X_NE("abgr", "rgba");
1871 pix_fmt = get_pix_fmt_internal(name);
1872 if (pix_fmt == AV_PIX_FMT_NONE) {
1875 snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
1876 pix_fmt = get_pix_fmt_internal(name2);
1880 if (pix_fmt == AV_PIX_FMT_NONE && !strcmp(name, "vaapi"))
1881 pix_fmt = AV_PIX_FMT_VAAPI;
1886 int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
1889 int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
1891 for (c = 0; c < pixdesc->nb_components; c++) {
1892 int s = c == 1 || c == 2 ? 0 : log2_pixels;
1893 bits += pixdesc->comp[c].depth << s;
1896 return bits >> log2_pixels;
1899 char *av_get_pix_fmt_string(char *buf, int buf_size,
1900 enum AVPixelFormat pix_fmt)
1904 snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
1906 const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[pix_fmt];
1907 snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name,
1908 pixdesc->nb_components, av_get_bits_per_pixel(pixdesc));
1914 const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
1916 if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB)
1918 return &av_pix_fmt_descriptors[pix_fmt];
1921 const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
1924 return &av_pix_fmt_descriptors[0];
1925 if (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1)
1930 enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
1932 if (desc < av_pix_fmt_descriptors ||
1933 desc >= av_pix_fmt_descriptors + FF_ARRAY_ELEMS(av_pix_fmt_descriptors))
1934 return AV_PIX_FMT_NONE;
1936 return desc - av_pix_fmt_descriptors;
1939 int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
1940 int *h_shift, int *v_shift)
1942 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
1944 return AVERROR(ENOSYS);
1945 *h_shift = desc->log2_chroma_w;
1946 *v_shift = desc->log2_chroma_h;
1951 int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
1953 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
1954 int i, planes[4] = { 0 }, ret = 0;
1957 return AVERROR(EINVAL);
1959 for (i = 0; i < desc->nb_components; i++)
1960 planes[desc->comp[i].plane] = 1;
1961 for (i = 0; i < FF_ARRAY_ELEMS(planes); i++)
1967 enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
1969 #define PIX_FMT_SWAP_ENDIANNESS(fmt) \
1970 case AV_PIX_FMT_ ## fmt ## BE: return AV_PIX_FMT_ ## fmt ## LE; \
1971 case AV_PIX_FMT_ ## fmt ## LE: return AV_PIX_FMT_ ## fmt ## BE
1974 PIX_FMT_SWAP_ENDIANNESS(GRAY12);
1975 PIX_FMT_SWAP_ENDIANNESS(GRAY16);
1976 PIX_FMT_SWAP_ENDIANNESS(YA16);
1977 PIX_FMT_SWAP_ENDIANNESS(RGB48);
1978 PIX_FMT_SWAP_ENDIANNESS(RGB565);
1979 PIX_FMT_SWAP_ENDIANNESS(RGB555);
1980 PIX_FMT_SWAP_ENDIANNESS(RGB444);
1981 PIX_FMT_SWAP_ENDIANNESS(BGR48);
1982 PIX_FMT_SWAP_ENDIANNESS(BGR565);
1983 PIX_FMT_SWAP_ENDIANNESS(BGR555);
1984 PIX_FMT_SWAP_ENDIANNESS(BGR444);
1986 PIX_FMT_SWAP_ENDIANNESS(YUV420P9);
1987 PIX_FMT_SWAP_ENDIANNESS(YUV422P9);
1988 PIX_FMT_SWAP_ENDIANNESS(YUV444P9);
1989 PIX_FMT_SWAP_ENDIANNESS(YUV420P10);
1990 PIX_FMT_SWAP_ENDIANNESS(YUV422P10);
1991 PIX_FMT_SWAP_ENDIANNESS(YUV444P10);
1992 PIX_FMT_SWAP_ENDIANNESS(YUV420P12);
1993 PIX_FMT_SWAP_ENDIANNESS(YUV422P12);
1994 PIX_FMT_SWAP_ENDIANNESS(YUV444P12);
1995 PIX_FMT_SWAP_ENDIANNESS(YUV420P16);
1996 PIX_FMT_SWAP_ENDIANNESS(YUV422P16);
1997 PIX_FMT_SWAP_ENDIANNESS(YUV444P16);
1999 PIX_FMT_SWAP_ENDIANNESS(GBRP9);
2000 PIX_FMT_SWAP_ENDIANNESS(GBRP10);
2001 PIX_FMT_SWAP_ENDIANNESS(GBRP12);
2002 PIX_FMT_SWAP_ENDIANNESS(GBRP16);
2003 PIX_FMT_SWAP_ENDIANNESS(YUVA420P9);
2004 PIX_FMT_SWAP_ENDIANNESS(YUVA422P9);
2005 PIX_FMT_SWAP_ENDIANNESS(YUVA444P9);
2006 PIX_FMT_SWAP_ENDIANNESS(YUVA420P10);
2007 PIX_FMT_SWAP_ENDIANNESS(YUVA422P10);
2008 PIX_FMT_SWAP_ENDIANNESS(YUVA444P10);
2009 PIX_FMT_SWAP_ENDIANNESS(YUVA420P16);
2010 PIX_FMT_SWAP_ENDIANNESS(YUVA422P16);
2011 PIX_FMT_SWAP_ENDIANNESS(YUVA444P16);
2013 PIX_FMT_SWAP_ENDIANNESS(XYZ12);
2014 PIX_FMT_SWAP_ENDIANNESS(NV20);
2015 PIX_FMT_SWAP_ENDIANNESS(RGBA64);
2016 PIX_FMT_SWAP_ENDIANNESS(BGRA64);
2018 return AV_PIX_FMT_NONE;
2020 #undef PIX_FMT_SWAP_ENDIANNESS
2023 const char *av_color_range_name(enum AVColorRange range)
2025 return (unsigned) range < AVCOL_RANGE_NB ?
2026 color_range_names[range] : NULL;
2029 const char *av_color_primaries_name(enum AVColorPrimaries primaries)
2031 return (unsigned) primaries < AVCOL_PRI_NB ?
2032 color_primaries_names[primaries] : NULL;
2035 const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
2037 return (unsigned) transfer < AVCOL_TRC_NB ?
2038 color_transfer_names[transfer] : NULL;
2041 const char *av_color_space_name(enum AVColorSpace space)
2043 return (unsigned) space < AVCOL_SPC_NB ?
2044 color_space_names[space] : NULL;
2047 const char *av_chroma_location_name(enum AVChromaLocation location)
2049 return (unsigned) location < AVCHROMA_LOC_NB ?
2050 chroma_location_names[location] : NULL;