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
,
316 [AV_PIX_FMT_UYVY422
] = {
322 { 0, 2, 1, 0, 8, 1, 7, 2 }, /* Y */
323 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* U */
324 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* V */
327 [AV_PIX_FMT_UYYVYY411
] = {
333 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* Y */
334 { 0, 6, 0, 0, 8, 5, 7, 1 }, /* U */
335 { 0, 6, 3, 0, 8, 5, 7, 4 }, /* V */
338 [AV_PIX_FMT_BGR8
] = {
344 { 0, 1, 0, 0, 3, 0, 2, 1 }, /* R */
345 { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */
346 { 0, 1, 0, 6, 2, 0, 1, 1 }, /* B */
348 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_PSEUDOPAL
,
350 [AV_PIX_FMT_BGR4
] = {
356 { 0, 4, 3, 0, 1, 3, 0, 4 }, /* R */
357 { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */
358 { 0, 4, 0, 0, 1, 3, 0, 1 }, /* B */
360 .flags
= AV_PIX_FMT_FLAG_BITSTREAM
| AV_PIX_FMT_FLAG_RGB
,
362 [AV_PIX_FMT_BGR4_BYTE
] = {
368 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* R */
369 { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */
370 { 0, 1, 0, 3, 1, 0, 0, 1 }, /* B */
372 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_PSEUDOPAL
,
374 [AV_PIX_FMT_RGB8
] = {
380 { 0, 1, 0, 6, 2, 0, 1, 1 }, /* R */
381 { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */
382 { 0, 1, 0, 0, 3, 0, 2, 1 }, /* B */
384 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_PSEUDOPAL
,
386 [AV_PIX_FMT_RGB4
] = {
392 { 0, 4, 0, 0, 1, 3, 0, 1 }, /* R */
393 { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */
394 { 0, 4, 3, 0, 1, 3, 0, 4 }, /* B */
396 .flags
= AV_PIX_FMT_FLAG_BITSTREAM
| AV_PIX_FMT_FLAG_RGB
,
398 [AV_PIX_FMT_RGB4_BYTE
] = {
404 { 0, 1, 0, 3, 1, 0, 0, 1 }, /* R */
405 { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */
406 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* B */
408 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_PSEUDOPAL
,
410 [AV_PIX_FMT_NV12
] = {
416 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
417 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */
418 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */
420 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
422 [AV_PIX_FMT_NV21
] = {
428 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
429 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* U */
430 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* V */
432 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
434 [AV_PIX_FMT_ARGB
] = {
440 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* R */
441 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */
442 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* B */
443 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */
445 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
447 [AV_PIX_FMT_RGBA
] = {
453 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* R */
454 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */
455 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* B */
456 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */
458 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
460 [AV_PIX_FMT_ABGR
] = {
466 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* R */
467 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */
468 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* B */
469 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */
471 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
473 [AV_PIX_FMT_BGRA
] = {
479 { 0, 4, 2, 0, 8, 3, 7, 3 }, /* R */
480 { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */
481 { 0, 4, 0, 0, 8, 3, 7, 1 }, /* B */
482 { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */
484 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
486 [AV_PIX_FMT_GRAY10BE
] = {
492 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
494 .flags
= AV_PIX_FMT_FLAG_BE
,
497 [AV_PIX_FMT_GRAY10LE
] = {
503 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
507 [AV_PIX_FMT_GRAY12BE
] = {
513 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
515 .flags
= AV_PIX_FMT_FLAG_BE
,
518 [AV_PIX_FMT_GRAY12LE
] = {
524 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
528 [AV_PIX_FMT_GRAY16BE
] = {
534 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
536 .flags
= AV_PIX_FMT_FLAG_BE
,
539 [AV_PIX_FMT_GRAY16LE
] = {
545 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
549 [AV_PIX_FMT_YUV440P
] = {
555 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
556 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
557 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
559 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
561 [AV_PIX_FMT_YUVJ440P
] = {
567 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
568 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
569 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
571 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
573 [AV_PIX_FMT_YUVA420P
] = {
579 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
580 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
581 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
582 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
584 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
586 [AV_PIX_FMT_YUVA422P
] = {
592 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
593 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
594 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
595 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
597 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
599 [AV_PIX_FMT_YUVA444P
] = {
605 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
606 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */
607 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */
608 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
610 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
612 [AV_PIX_FMT_YUVA420P9BE
] = {
613 .name
= "yuva420p9be",
618 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
619 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
620 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
621 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
623 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
625 [AV_PIX_FMT_YUVA420P9LE
] = {
626 .name
= "yuva420p9le",
631 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
632 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
633 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
634 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
636 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
638 [AV_PIX_FMT_YUVA422P9BE
] = {
639 .name
= "yuva422p9be",
644 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
645 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
646 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
647 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
649 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
651 [AV_PIX_FMT_YUVA422P9LE
] = {
652 .name
= "yuva422p9le",
657 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
658 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
659 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
660 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
662 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
664 [AV_PIX_FMT_YUVA444P9BE
] = {
665 .name
= "yuva444p9be",
670 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
671 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
672 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
673 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
675 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
677 [AV_PIX_FMT_YUVA444P9LE
] = {
678 .name
= "yuva444p9le",
683 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
684 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
685 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
686 { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */
688 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
690 [AV_PIX_FMT_YUVA420P10BE
] = {
691 .name
= "yuva420p10be",
696 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
697 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
698 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
699 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
701 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
703 [AV_PIX_FMT_YUVA420P10LE
] = {
704 .name
= "yuva420p10le",
709 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
710 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
711 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
712 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
714 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
716 [AV_PIX_FMT_YUVA422P10BE
] = {
717 .name
= "yuva422p10be",
722 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
723 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
724 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
725 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
727 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
729 [AV_PIX_FMT_YUVA422P10LE
] = {
730 .name
= "yuva422p10le",
735 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
736 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
737 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
738 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
740 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
742 [AV_PIX_FMT_YUVA444P10BE
] = {
743 .name
= "yuva444p10be",
748 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
749 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
750 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
751 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
753 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
755 [AV_PIX_FMT_YUVA444P10LE
] = {
756 .name
= "yuva444p10le",
761 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
762 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
763 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
764 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
766 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
768 [AV_PIX_FMT_YUVA420P16BE
] = {
769 .name
= "yuva420p16be",
774 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
775 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
776 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
777 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
779 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
781 [AV_PIX_FMT_YUVA420P16LE
] = {
782 .name
= "yuva420p16le",
787 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
788 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
789 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
790 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
792 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
794 [AV_PIX_FMT_YUVA422P16BE
] = {
795 .name
= "yuva422p16be",
800 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
801 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
802 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
803 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
805 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
807 [AV_PIX_FMT_YUVA422P16LE
] = {
808 .name
= "yuva422p16le",
813 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
814 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
815 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
816 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
818 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
820 [AV_PIX_FMT_YUVA444P16BE
] = {
821 .name
= "yuva444p16be",
826 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
827 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
828 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
829 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
831 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
833 [AV_PIX_FMT_YUVA444P16LE
] = {
834 .name
= "yuva444p16le",
839 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
840 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
841 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
842 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
844 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_ALPHA
,
846 [AV_PIX_FMT_RGB48BE
] = {
852 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */
853 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
854 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */
856 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_BE
,
858 [AV_PIX_FMT_RGB48LE
] = {
864 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */
865 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
866 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */
868 .flags
= AV_PIX_FMT_FLAG_RGB
,
870 [AV_PIX_FMT_RGBA64BE
] = {
876 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */
877 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
878 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */
879 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
881 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
883 [AV_PIX_FMT_RGBA64LE
] = {
889 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */
890 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
891 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */
892 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
894 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
896 [AV_PIX_FMT_RGB565BE
] = {
902 { 0, 2, -1, 3, 5, 1, 4, 0 }, /* R */
903 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
904 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
906 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
908 [AV_PIX_FMT_RGB565LE
] = {
914 { 0, 2, 1, 3, 5, 1, 4, 2 }, /* R */
915 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
916 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
918 .flags
= AV_PIX_FMT_FLAG_RGB
,
920 [AV_PIX_FMT_RGB555BE
] = {
926 { 0, 2, -1, 2, 5, 1, 4, 0 }, /* R */
927 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
928 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
930 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
932 [AV_PIX_FMT_RGB555LE
] = {
938 { 0, 2, 1, 2, 5, 1, 4, 2 }, /* R */
939 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
940 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */
942 .flags
= AV_PIX_FMT_FLAG_RGB
,
944 [AV_PIX_FMT_RGB444BE
] = {
950 { 0, 2, -1, 0, 4, 1, 3, 0 }, /* R */
951 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
952 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */
954 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
956 [AV_PIX_FMT_RGB444LE
] = {
962 { 0, 2, 1, 0, 4, 1, 3, 2 }, /* R */
963 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
964 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */
966 .flags
= AV_PIX_FMT_FLAG_RGB
,
968 [AV_PIX_FMT_BGR48BE
] = {
974 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */
975 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
976 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */
978 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
980 [AV_PIX_FMT_BGR48LE
] = {
986 { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */
987 { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */
988 { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */
990 .flags
= AV_PIX_FMT_FLAG_RGB
,
992 [AV_PIX_FMT_BGRA64BE
] = {
998 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */
999 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
1000 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */
1001 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
1003 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
1005 [AV_PIX_FMT_BGRA64LE
] = {
1011 { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */
1012 { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */
1013 { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */
1014 { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */
1016 .flags
= AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
1018 [AV_PIX_FMT_BGR565BE
] = {
1024 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1025 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
1026 { 0, 2, -1, 3, 5, 1, 4, 0 }, /* B */
1028 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
1030 [AV_PIX_FMT_BGR565LE
] = {
1036 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1037 { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */
1038 { 0, 2, 1, 3, 5, 1, 4, 2 }, /* B */
1040 .flags
= AV_PIX_FMT_FLAG_RGB
,
1042 [AV_PIX_FMT_BGR555BE
] = {
1048 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1049 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
1050 { 0, 2, -1, 2, 5, 1, 4, 0 }, /* B */
1052 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
1054 [AV_PIX_FMT_BGR555LE
] = {
1060 { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */
1061 { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */
1062 { 0, 2, 1, 2, 5, 1, 4, 2 }, /* B */
1064 .flags
= AV_PIX_FMT_FLAG_RGB
,
1066 [AV_PIX_FMT_BGR444BE
] = {
1072 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */
1073 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
1074 { 0, 2, -1, 0, 4, 1, 3, 0 }, /* B */
1076 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_RGB
,
1078 [AV_PIX_FMT_BGR444LE
] = {
1084 { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */
1085 { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */
1086 { 0, 2, 1, 0, 4, 1, 3, 2 }, /* B */
1088 .flags
= AV_PIX_FMT_FLAG_RGB
,
1091 [AV_PIX_FMT_VAAPI_MOCO
] = {
1092 .name
= "vaapi_moco",
1095 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1097 [AV_PIX_FMT_VAAPI_IDCT
] = {
1098 .name
= "vaapi_idct",
1101 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1103 [AV_PIX_FMT_VAAPI_VLD
] = {
1104 .name
= "vaapi_vld",
1107 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1110 [AV_PIX_FMT_VAAPI
] = {
1114 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1117 [AV_PIX_FMT_VDA_VLD
] = {
1121 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1123 [AV_PIX_FMT_YUV420P9LE
] = {
1124 .name
= "yuv420p9le",
1129 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1130 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1131 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1133 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1135 [AV_PIX_FMT_YUV420P9BE
] = {
1136 .name
= "yuv420p9be",
1141 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1142 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1143 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1145 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1147 [AV_PIX_FMT_YUV420P10LE
] = {
1148 .name
= "yuv420p10le",
1153 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1154 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1155 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1157 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1159 [AV_PIX_FMT_YUV420P10BE
] = {
1160 .name
= "yuv420p10be",
1165 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1166 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1167 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1169 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1171 [AV_PIX_FMT_YUV420P12LE
] = {
1172 .name
= "yuv420p12le",
1177 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1178 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1179 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1181 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1183 [AV_PIX_FMT_YUV420P12BE
] = {
1184 .name
= "yuv420p12be",
1189 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1190 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1191 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1193 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1195 [AV_PIX_FMT_YUV420P16LE
] = {
1196 .name
= "yuv420p16le",
1201 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1202 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1203 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1205 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1207 [AV_PIX_FMT_YUV420P16BE
] = {
1208 .name
= "yuv420p16be",
1213 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1214 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1215 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1217 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1219 [AV_PIX_FMT_YUV422P9LE
] = {
1220 .name
= "yuv422p9le",
1225 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1226 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1227 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1229 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1231 [AV_PIX_FMT_YUV422P9BE
] = {
1232 .name
= "yuv422p9be",
1237 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1238 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1239 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1241 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1243 [AV_PIX_FMT_YUV422P10LE
] = {
1244 .name
= "yuv422p10le",
1249 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1250 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1251 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1253 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1255 [AV_PIX_FMT_YUV422P10BE
] = {
1256 .name
= "yuv422p10be",
1261 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1262 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1263 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1265 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1267 [AV_PIX_FMT_YUV422P12LE
] = {
1268 .name
= "yuv422p12le",
1273 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1274 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1275 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1277 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1279 [AV_PIX_FMT_YUV422P12BE
] = {
1280 .name
= "yuv422p12be",
1285 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1286 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1287 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1289 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1291 [AV_PIX_FMT_YUV422P16LE
] = {
1292 .name
= "yuv422p16le",
1297 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1298 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1299 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1301 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1303 [AV_PIX_FMT_YUV422P16BE
] = {
1304 .name
= "yuv422p16be",
1309 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1310 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1311 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1313 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1315 [AV_PIX_FMT_YUV444P16LE
] = {
1316 .name
= "yuv444p16le",
1321 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1322 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1323 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1325 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1327 [AV_PIX_FMT_YUV444P16BE
] = {
1328 .name
= "yuv444p16be",
1333 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
1334 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */
1335 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */
1337 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1339 [AV_PIX_FMT_YUV444P12LE
] = {
1340 .name
= "yuv444p12le",
1345 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1346 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1347 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1349 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1351 [AV_PIX_FMT_YUV444P12BE
] = {
1352 .name
= "yuv444p12be",
1357 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
1358 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
1359 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
1361 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1363 [AV_PIX_FMT_YUV444P10LE
] = {
1364 .name
= "yuv444p10le",
1369 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1370 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1371 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1373 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1375 [AV_PIX_FMT_YUV444P10BE
] = {
1376 .name
= "yuv444p10be",
1381 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1382 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */
1383 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */
1385 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1387 [AV_PIX_FMT_YUV444P9LE
] = {
1388 .name
= "yuv444p9le",
1393 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1394 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1395 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1397 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1399 [AV_PIX_FMT_YUV444P9BE
] = {
1400 .name
= "yuv444p9be",
1405 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */
1406 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */
1407 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */
1409 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
,
1411 [AV_PIX_FMT_D3D11VA_VLD
] = {
1412 .name
= "d3d11va_vld",
1415 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1417 [AV_PIX_FMT_DXVA2_VLD
] = {
1418 .name
= "dxva2_vld",
1421 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1423 [AV_PIX_FMT_YA8
] = {
1427 { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */
1428 { 0, 2, 1, 0, 8, 1, 7, 2 }, /* A */
1430 .flags
= AV_PIX_FMT_FLAG_ALPHA
,
1433 [AV_PIX_FMT_YA16LE
] = {
1437 { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */
1438 { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */
1440 .flags
= AV_PIX_FMT_FLAG_ALPHA
,
1442 [AV_PIX_FMT_YA16BE
] = {
1446 { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */
1447 { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */
1449 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_ALPHA
,
1451 [AV_PIX_FMT_GBRP
] = {
1457 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */
1458 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */
1459 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */
1461 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1463 [AV_PIX_FMT_GBRP9LE
] = {
1469 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */
1470 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */
1471 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */
1473 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1475 [AV_PIX_FMT_GBRP9BE
] = {
1481 { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */
1482 { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */
1483 { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */
1485 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1487 [AV_PIX_FMT_GBRP10LE
] = {
1493 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1494 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1495 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1497 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1499 [AV_PIX_FMT_GBRP10BE
] = {
1505 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1506 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1507 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1509 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1511 [AV_PIX_FMT_GBRP12LE
] = {
1517 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1518 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1519 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1521 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1523 [AV_PIX_FMT_GBRP12BE
] = {
1529 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1530 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1531 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1533 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1535 [AV_PIX_FMT_GBRP16LE
] = {
1541 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1542 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1543 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1545 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1547 [AV_PIX_FMT_GBRP16BE
] = {
1553 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1554 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1555 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1557 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
,
1559 [AV_PIX_FMT_GBRAP
] = {
1565 { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */
1566 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */
1567 { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */
1568 { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */
1570 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
|
1571 AV_PIX_FMT_FLAG_ALPHA
,
1573 [AV_PIX_FMT_GBRAP16LE
] = {
1574 .name
= "gbrap16le",
1579 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1580 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1581 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1582 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
1584 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
|
1585 AV_PIX_FMT_FLAG_ALPHA
,
1587 [AV_PIX_FMT_GBRAP16BE
] = {
1588 .name
= "gbrap16be",
1593 { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */
1594 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */
1595 { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */
1596 { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */
1598 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
|
1599 AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
1601 [AV_PIX_FMT_VDPAU
] = {
1605 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1607 [AV_PIX_FMT_XYZ12LE
] = {
1613 { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */
1614 { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */
1615 { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */
1617 /*.flags = -- not used*/
1619 [AV_PIX_FMT_XYZ12BE
] = {
1625 { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */
1626 { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */
1627 { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */
1629 .flags
= AV_PIX_FMT_FLAG_BE
,
1631 [AV_PIX_FMT_NV16
] = {
1637 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
1638 { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */
1639 { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */
1641 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1643 [AV_PIX_FMT_NV20LE
] = {
1649 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1650 { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */
1651 { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */
1653 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1655 [AV_PIX_FMT_NV20BE
] = {
1661 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
1662 { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */
1663 { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */
1665 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_BE
,
1667 [AV_PIX_FMT_VDA
] = {
1669 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1671 [AV_PIX_FMT_QSV
] = {
1673 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1675 [AV_PIX_FMT_MMAL
] = {
1677 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1679 [AV_PIX_FMT_CUDA
] = {
1681 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1683 [AV_PIX_FMT_P010LE
] = {
1689 { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */
1690 { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */
1691 { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */
1693 .flags
= AV_PIX_FMT_FLAG_PLANAR
,
1695 [AV_PIX_FMT_P010BE
] = {
1701 { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */
1702 { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */
1703 { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */
1705 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_BE
,
1707 [AV_PIX_FMT_GBRAP10LE
] = {
1708 .name
= "gbrap10le",
1713 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1714 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1715 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1716 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
1718 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
|
1719 AV_PIX_FMT_FLAG_ALPHA
,
1721 [AV_PIX_FMT_GBRAP10BE
] = {
1722 .name
= "gbrap10be",
1727 { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */
1728 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */
1729 { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */
1730 { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */
1732 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
|
1733 AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
1735 [AV_PIX_FMT_GBRAP12LE
] = {
1736 .name
= "gbrap12le",
1741 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1742 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1743 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1744 { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */
1746 .flags
= AV_PIX_FMT_FLAG_PLANAR
| AV_PIX_FMT_FLAG_RGB
|
1747 AV_PIX_FMT_FLAG_ALPHA
,
1749 [AV_PIX_FMT_GBRAP12BE
] = {
1750 .name
= "gbrap12be",
1755 { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */
1756 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */
1757 { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */
1758 { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */
1760 .flags
= AV_PIX_FMT_FLAG_BE
| AV_PIX_FMT_FLAG_PLANAR
|
1761 AV_PIX_FMT_FLAG_RGB
| AV_PIX_FMT_FLAG_ALPHA
,
1763 [AV_PIX_FMT_D3D11
] = {
1765 .flags
= AV_PIX_FMT_FLAG_HWACCEL
,
1768 #if FF_API_PLUS1_MINUS1
1769 FF_ENABLE_DEPRECATION_WARNINGS
1772 static const char * const color_range_names
[] = {
1773 [AVCOL_RANGE_UNSPECIFIED
] = "unknown",
1774 [AVCOL_RANGE_MPEG
] = "tv",
1775 [AVCOL_RANGE_JPEG
] = "pc",
1778 static const char * const color_primaries_names
[] = {
1779 [AVCOL_PRI_RESERVED0
] = "reserved",
1780 [AVCOL_PRI_BT709
] = "bt709",
1781 [AVCOL_PRI_UNSPECIFIED
] = "unknown",
1782 [AVCOL_PRI_RESERVED
] = "reserved",
1783 [AVCOL_PRI_BT470M
] = "bt470m",
1784 [AVCOL_PRI_BT470BG
] = "bt470bg",
1785 [AVCOL_PRI_SMPTE170M
] = "smpte170m",
1786 [AVCOL_PRI_SMPTE240M
] = "smpte240m",
1787 [AVCOL_PRI_FILM
] = "film",
1788 [AVCOL_PRI_BT2020
] = "bt2020",
1789 [AVCOL_PRI_SMPTE428
] = "smpte428",
1790 [AVCOL_PRI_SMPTE431
] = "smpte431",
1791 [AVCOL_PRI_SMPTE432
] = "smpte432",
1792 [AVCOL_PRI_JEDEC_P22
] = "jedec-p22",
1795 static const char * const color_transfer_names
[] = {
1796 [AVCOL_TRC_RESERVED0
] = "reserved",
1797 [AVCOL_TRC_BT709
] = "bt709",
1798 [AVCOL_TRC_UNSPECIFIED
] = "unknown",
1799 [AVCOL_TRC_RESERVED
] = "reserved",
1800 [AVCOL_TRC_GAMMA22
] = "bt470m",
1801 [AVCOL_TRC_GAMMA28
] = "bt470bg",
1802 [AVCOL_TRC_SMPTE170M
] = "smpte170m",
1803 [AVCOL_TRC_SMPTE240M
] = "smpte240m",
1804 [AVCOL_TRC_LINEAR
] = "linear",
1805 [AVCOL_TRC_LOG
] = "log100",
1806 [AVCOL_TRC_LOG_SQRT
] = "log316",
1807 [AVCOL_TRC_IEC61966_2_4
] = "iec61966-2-4",
1808 [AVCOL_TRC_BT1361_ECG
] = "bt1361e",
1809 [AVCOL_TRC_IEC61966_2_1
] = "iec61966-2-1",
1810 [AVCOL_TRC_BT2020_10
] = "bt2020-10",
1811 [AVCOL_TRC_BT2020_12
] = "bt2020-12",
1812 [AVCOL_TRC_SMPTE2084
] = "smpte2084",
1813 [AVCOL_TRC_SMPTE428
] = "smpte428",
1814 [AVCOL_TRC_ARIB_STD_B67
] = "arib-std-b67",
1817 static const char * const color_space_names
[] = {
1818 [AVCOL_SPC_RGB
] = "gbr",
1819 [AVCOL_SPC_BT709
] = "bt709",
1820 [AVCOL_SPC_UNSPECIFIED
] = "unknown",
1821 [AVCOL_SPC_RESERVED
] = "reserved",
1822 [AVCOL_SPC_FCC
] = "fcc",
1823 [AVCOL_SPC_BT470BG
] = "bt470bg",
1824 [AVCOL_SPC_SMPTE170M
] = "smpte170m",
1825 [AVCOL_SPC_SMPTE240M
] = "smpte240m",
1826 [AVCOL_SPC_YCGCO
] = "ycgco",
1827 [AVCOL_SPC_BT2020_NCL
] = "bt2020nc",
1828 [AVCOL_SPC_BT2020_CL
] = "bt2020c",
1829 [AVCOL_SPC_SMPTE2085
] = "smpte2085",
1830 [AVCOL_SPC_CHROMA_DERIVED_NCL
] = "chroma-derived-nc",
1831 [AVCOL_SPC_CHROMA_DERIVED_CL
] = "chroma-derived-c",
1832 [AVCOL_SPC_ICTCP
] = "ictcp",
1835 static const char * const chroma_location_names
[] = {
1836 [AVCHROMA_LOC_UNSPECIFIED
] = "unspecified",
1837 [AVCHROMA_LOC_LEFT
] = "left",
1838 [AVCHROMA_LOC_CENTER
] = "center",
1839 [AVCHROMA_LOC_TOPLEFT
] = "topleft",
1840 [AVCHROMA_LOC_TOP
] = "top",
1841 [AVCHROMA_LOC_BOTTOMLEFT
] = "bottomleft",
1842 [AVCHROMA_LOC_BOTTOM
] = "bottom",
1845 static enum AVPixelFormat
get_pix_fmt_internal(const char *name
)
1847 enum AVPixelFormat pix_fmt
;
1849 for (pix_fmt
= 0; pix_fmt
< AV_PIX_FMT_NB
; pix_fmt
++)
1850 if (av_pix_fmt_descriptors
[pix_fmt
].name
&&
1851 (!strcmp(av_pix_fmt_descriptors
[pix_fmt
].name
, name
) ||
1852 av_match_name(name
, av_pix_fmt_descriptors
[pix_fmt
].alias
)))
1855 return AV_PIX_FMT_NONE
;
1858 const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt
)
1860 return (unsigned)pix_fmt
< AV_PIX_FMT_NB
?
1861 av_pix_fmt_descriptors
[pix_fmt
].name
: NULL
;
1865 # define X_NE(be, le) be
1867 # define X_NE(be, le) le
1870 enum AVPixelFormat
av_get_pix_fmt(const char *name
)
1872 enum AVPixelFormat pix_fmt
;
1874 if (!strcmp(name
, "rgb32"))
1875 name
= X_NE("argb", "bgra");
1876 else if (!strcmp(name
, "bgr32"))
1877 name
= X_NE("abgr", "rgba");
1879 pix_fmt
= get_pix_fmt_internal(name
);
1880 if (pix_fmt
== AV_PIX_FMT_NONE
) {
1883 snprintf(name2
, sizeof(name2
), "%s%s", name
, X_NE("be", "le"));
1884 pix_fmt
= get_pix_fmt_internal(name2
);
1888 if (pix_fmt
== AV_PIX_FMT_NONE
&& !strcmp(name
, "vaapi"))
1889 pix_fmt
= AV_PIX_FMT_VAAPI
;
1894 int av_get_bits_per_pixel(const AVPixFmtDescriptor
*pixdesc
)
1897 int log2_pixels
= pixdesc
->log2_chroma_w
+ pixdesc
->log2_chroma_h
;
1899 for (c
= 0; c
< pixdesc
->nb_components
; c
++) {
1900 int s
= c
== 1 || c
== 2 ? 0 : log2_pixels
;
1901 bits
+= pixdesc
->comp
[c
].depth
<< s
;
1904 return bits
>> log2_pixels
;
1907 char *av_get_pix_fmt_string(char *buf
, int buf_size
,
1908 enum AVPixelFormat pix_fmt
)
1912 snprintf (buf
, buf_size
, "name" " nb_components" " nb_bits");
1914 const AVPixFmtDescriptor
*pixdesc
= &av_pix_fmt_descriptors
[pix_fmt
];
1915 snprintf(buf
, buf_size
, "%-11s %7d %10d", pixdesc
->name
,
1916 pixdesc
->nb_components
, av_get_bits_per_pixel(pixdesc
));
1922 const AVPixFmtDescriptor
*av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt
)
1924 if (pix_fmt
< 0 || pix_fmt
>= AV_PIX_FMT_NB
)
1926 return &av_pix_fmt_descriptors
[pix_fmt
];
1929 const AVPixFmtDescriptor
*av_pix_fmt_desc_next(const AVPixFmtDescriptor
*prev
)
1932 return &av_pix_fmt_descriptors
[0];
1933 if (prev
- av_pix_fmt_descriptors
< FF_ARRAY_ELEMS(av_pix_fmt_descriptors
) - 1)
1938 enum AVPixelFormat
av_pix_fmt_desc_get_id(const AVPixFmtDescriptor
*desc
)
1940 if (desc
< av_pix_fmt_descriptors
||
1941 desc
>= av_pix_fmt_descriptors
+ FF_ARRAY_ELEMS(av_pix_fmt_descriptors
))
1942 return AV_PIX_FMT_NONE
;
1944 return desc
- av_pix_fmt_descriptors
;
1947 int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt
,
1948 int *h_shift
, int *v_shift
)
1950 const AVPixFmtDescriptor
*desc
= av_pix_fmt_desc_get(pix_fmt
);
1952 return AVERROR(ENOSYS
);
1953 *h_shift
= desc
->log2_chroma_w
;
1954 *v_shift
= desc
->log2_chroma_h
;
1959 int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt
)
1961 const AVPixFmtDescriptor
*desc
= av_pix_fmt_desc_get(pix_fmt
);
1962 int i
, planes
[4] = { 0 }, ret
= 0;
1965 return AVERROR(EINVAL
);
1967 for (i
= 0; i
< desc
->nb_components
; i
++)
1968 planes
[desc
->comp
[i
].plane
] = 1;
1969 for (i
= 0; i
< FF_ARRAY_ELEMS(planes
); i
++)
1975 enum AVPixelFormat
av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt
)
1977 #define PIX_FMT_SWAP_ENDIANNESS(fmt) \
1978 case AV_PIX_FMT_ ## fmt ## BE: return AV_PIX_FMT_ ## fmt ## LE; \
1979 case AV_PIX_FMT_ ## fmt ## LE: return AV_PIX_FMT_ ## fmt ## BE
1982 PIX_FMT_SWAP_ENDIANNESS(GRAY10
);
1983 PIX_FMT_SWAP_ENDIANNESS(GRAY12
);
1984 PIX_FMT_SWAP_ENDIANNESS(GRAY16
);
1985 PIX_FMT_SWAP_ENDIANNESS(YA16
);
1986 PIX_FMT_SWAP_ENDIANNESS(RGB48
);
1987 PIX_FMT_SWAP_ENDIANNESS(RGB565
);
1988 PIX_FMT_SWAP_ENDIANNESS(RGB555
);
1989 PIX_FMT_SWAP_ENDIANNESS(RGB444
);
1990 PIX_FMT_SWAP_ENDIANNESS(BGR48
);
1991 PIX_FMT_SWAP_ENDIANNESS(BGR565
);
1992 PIX_FMT_SWAP_ENDIANNESS(BGR555
);
1993 PIX_FMT_SWAP_ENDIANNESS(BGR444
);
1995 PIX_FMT_SWAP_ENDIANNESS(YUV420P9
);
1996 PIX_FMT_SWAP_ENDIANNESS(YUV422P9
);
1997 PIX_FMT_SWAP_ENDIANNESS(YUV444P9
);
1998 PIX_FMT_SWAP_ENDIANNESS(YUV420P10
);
1999 PIX_FMT_SWAP_ENDIANNESS(YUV422P10
);
2000 PIX_FMT_SWAP_ENDIANNESS(YUV444P10
);
2001 PIX_FMT_SWAP_ENDIANNESS(YUV420P12
);
2002 PIX_FMT_SWAP_ENDIANNESS(YUV422P12
);
2003 PIX_FMT_SWAP_ENDIANNESS(YUV444P12
);
2004 PIX_FMT_SWAP_ENDIANNESS(YUV420P16
);
2005 PIX_FMT_SWAP_ENDIANNESS(YUV422P16
);
2006 PIX_FMT_SWAP_ENDIANNESS(YUV444P16
);
2008 PIX_FMT_SWAP_ENDIANNESS(GBRP9
);
2009 PIX_FMT_SWAP_ENDIANNESS(GBRP10
);
2010 PIX_FMT_SWAP_ENDIANNESS(GBRP12
);
2011 PIX_FMT_SWAP_ENDIANNESS(GBRP16
);
2012 PIX_FMT_SWAP_ENDIANNESS(YUVA420P9
);
2013 PIX_FMT_SWAP_ENDIANNESS(YUVA422P9
);
2014 PIX_FMT_SWAP_ENDIANNESS(YUVA444P9
);
2015 PIX_FMT_SWAP_ENDIANNESS(YUVA420P10
);
2016 PIX_FMT_SWAP_ENDIANNESS(YUVA422P10
);
2017 PIX_FMT_SWAP_ENDIANNESS(YUVA444P10
);
2018 PIX_FMT_SWAP_ENDIANNESS(YUVA420P16
);
2019 PIX_FMT_SWAP_ENDIANNESS(YUVA422P16
);
2020 PIX_FMT_SWAP_ENDIANNESS(YUVA444P16
);
2022 PIX_FMT_SWAP_ENDIANNESS(XYZ12
);
2023 PIX_FMT_SWAP_ENDIANNESS(NV20
);
2024 PIX_FMT_SWAP_ENDIANNESS(RGBA64
);
2025 PIX_FMT_SWAP_ENDIANNESS(BGRA64
);
2027 return AV_PIX_FMT_NONE
;
2029 #undef PIX_FMT_SWAP_ENDIANNESS
2032 const char *av_color_range_name(enum AVColorRange range
)
2034 return (unsigned) range
< AVCOL_RANGE_NB
?
2035 color_range_names
[range
] : NULL
;
2038 int av_color_range_from_name(const char *name
)
2042 for (i
= 0; i
< FF_ARRAY_ELEMS(color_range_names
); i
++) {
2043 size_t len
= strlen(color_range_names
[i
]);
2044 if (!strncmp(color_range_names
[i
], name
, len
))
2048 return AVERROR(EINVAL
);
2051 const char *av_color_primaries_name(enum AVColorPrimaries primaries
)
2053 return (unsigned) primaries
< AVCOL_PRI_NB
?
2054 color_primaries_names
[primaries
] : NULL
;
2057 int av_color_primaries_from_name(const char *name
)
2061 for (i
= 0; i
< FF_ARRAY_ELEMS(color_primaries_names
); i
++) {
2062 size_t len
= strlen(color_primaries_names
[i
]);
2063 if (!strncmp(color_primaries_names
[i
], name
, len
))
2067 return AVERROR(EINVAL
);
2070 const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer
)
2072 return (unsigned) transfer
< AVCOL_TRC_NB
?
2073 color_transfer_names
[transfer
] : NULL
;
2076 int av_color_transfer_from_name(const char *name
)
2080 for (i
= 0; i
< FF_ARRAY_ELEMS(color_transfer_names
); i
++) {
2081 size_t len
= strlen(color_transfer_names
[i
]);
2082 if (!strncmp(color_transfer_names
[i
], name
, len
))
2086 return AVERROR(EINVAL
);
2089 const char *av_color_space_name(enum AVColorSpace space
)
2091 return (unsigned) space
< AVCOL_SPC_NB
?
2092 color_space_names
[space
] : NULL
;
2095 int av_color_space_from_name(const char *name
)
2099 for (i
= 0; i
< FF_ARRAY_ELEMS(color_space_names
); i
++) {
2100 size_t len
= strlen(color_space_names
[i
]);
2101 if (!strncmp(color_space_names
[i
], name
, len
))
2105 return AVERROR(EINVAL
);
2108 const char *av_chroma_location_name(enum AVChromaLocation location
)
2110 return (unsigned) location
< AVCHROMA_LOC_NB
?
2111 chroma_location_names
[location
] : NULL
;
2114 int av_chroma_location_from_name(const char *name
)
2118 for (i
= 0; i
< FF_ARRAY_ELEMS(chroma_location_names
); i
++) {
2119 size_t len
= strlen(chroma_location_names
[i
]);
2120 if (!strncmp(chroma_location_names
[i
], name
, len
))
2124 return AVERROR(EINVAL
);