aarch64: Add assembly support for -fsanitize=hwaddress tagged globals.
[libav.git] / libavutil / pixdesc.c
bloba09fe52c9ea7a898084b6a7eec77e3024564a924
1 /*
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
22 #include <stdio.h>
23 #include <string.h>
25 #include "avstring.h"
26 #include "common.h"
27 #include "pixfmt.h"
28 #include "pixdesc.h"
29 #include "internal.h"
30 #include "intreadwrite.h"
31 #include "version.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;
44 int step = comp.step;
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);
52 while (w--) {
53 int val = (*p >> shift) & mask;
54 if (read_pal_component)
55 val = data[1][4*val + c];
56 shift -= step;
57 p -= shift >> 3;
58 shift &= 7;
59 *dst++ = val;
61 } else {
62 const uint8_t *p = data[plane] + y * linesize[plane] +
63 x * step + comp.offset;
64 int is_8bit = shift + depth <= 8;
66 if (is_8bit)
67 p += !!(flags & AV_PIX_FMT_FLAG_BE);
69 while (w--) {
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];
75 p += step;
76 *dst++ = val;
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;
89 int step = comp.step;
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);
97 while (w--) {
98 *p |= *src++ << shift;
99 shift -= step;
100 p -= shift >> 3;
101 shift &= 7;
103 } else {
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);
110 while (w--) {
111 *p |= (*src++ << shift);
112 p += step;
114 } else {
115 while (w--) {
116 if (flags & AV_PIX_FMT_FLAG_BE) {
117 uint16_t val = AV_RB16(p) | (*src++ << shift);
118 AV_WB16(p, val);
119 } else {
120 uint16_t val = AV_RL16(p) | (*src++ << shift);
121 AV_WL16(p, val);
123 p += step;
129 #if FF_API_PLUS1_MINUS1
130 FF_DISABLE_DEPRECATION_WARNINGS
131 #endif
132 static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
133 [AV_PIX_FMT_YUV420P] = {
134 .name = "yuv420p",
135 .nb_components = 3,
136 .log2_chroma_w = 1,
137 .log2_chroma_h = 1,
138 .comp = {
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] = {
146 .name = "yuyv422",
147 .nb_components = 3,
148 .log2_chroma_w = 1,
149 .log2_chroma_h = 0,
150 .comp = {
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] = {
157 .name = "yvyu422",
158 .nb_components = 3,
159 .log2_chroma_w = 1,
160 .log2_chroma_h = 0,
161 .comp = {
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] = {
168 .name = "rgb24",
169 .nb_components = 3,
170 .log2_chroma_w = 0,
171 .log2_chroma_h = 0,
172 .comp = {
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] = {
180 .name = "bgr24",
181 .nb_components = 3,
182 .log2_chroma_w = 0,
183 .log2_chroma_h = 0,
184 .comp = {
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] = {
192 .name = "yuv422p",
193 .nb_components = 3,
194 .log2_chroma_w = 1,
195 .log2_chroma_h = 0,
196 .comp = {
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] = {
204 .name = "yuv444p",
205 .nb_components = 3,
206 .log2_chroma_w = 0,
207 .log2_chroma_h = 0,
208 .comp = {
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] = {
216 .name = "yuv410p",
217 .nb_components = 3,
218 .log2_chroma_w = 2,
219 .log2_chroma_h = 2,
220 .comp = {
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] = {
228 .name = "yuv411p",
229 .nb_components = 3,
230 .log2_chroma_w = 2,
231 .log2_chroma_h = 0,
232 .comp = {
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] = {
240 .name = "gray",
241 .nb_components = 1,
242 .log2_chroma_w = 0,
243 .log2_chroma_h = 0,
244 .comp = {
245 { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */
247 .flags = AV_PIX_FMT_FLAG_PSEUDOPAL,
248 .alias = "gray8,y8",
250 [AV_PIX_FMT_MONOWHITE] = {
251 .name = "monow",
252 .nb_components = 1,
253 .log2_chroma_w = 0,
254 .log2_chroma_h = 0,
255 .comp = {
256 { 0, 1, 0, 0, 1, 0, 0, 1 }, /* Y */
258 .flags = AV_PIX_FMT_FLAG_BITSTREAM,
260 [AV_PIX_FMT_MONOBLACK] = {
261 .name = "monob",
262 .nb_components = 1,
263 .log2_chroma_w = 0,
264 .log2_chroma_h = 0,
265 .comp = {
266 { 0, 1, 0, 7, 1, 0, 0, 1 }, /* Y */
268 .flags = AV_PIX_FMT_FLAG_BITSTREAM,
270 [AV_PIX_FMT_PAL8] = {
271 .name = "pal8",
272 .nb_components = 1,
273 .log2_chroma_w = 0,
274 .log2_chroma_h = 0,
275 .comp = {
276 { 0, 1, 0, 0, 8, 0, 7, 1 },
278 .flags = AV_PIX_FMT_FLAG_PAL,
280 [AV_PIX_FMT_YUVJ420P] = {
281 .name = "yuvj420p",
282 .nb_components = 3,
283 .log2_chroma_w = 1,
284 .log2_chroma_h = 1,
285 .comp = {
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] = {
293 .name = "yuvj422p",
294 .nb_components = 3,
295 .log2_chroma_w = 1,
296 .log2_chroma_h = 0,
297 .comp = {
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] = {
305 .name = "yuvj444p",
306 .nb_components = 3,
307 .log2_chroma_w = 0,
308 .log2_chroma_h = 0,
309 .comp = {
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] = {
317 .name = "uyvy422",
318 .nb_components = 3,
319 .log2_chroma_w = 1,
320 .log2_chroma_h = 0,
321 .comp = {
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] = {
328 .name = "uyyvyy411",
329 .nb_components = 3,
330 .log2_chroma_w = 2,
331 .log2_chroma_h = 0,
332 .comp = {
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] = {
339 .name = "bgr8",
340 .nb_components = 3,
341 .log2_chroma_w = 0,
342 .log2_chroma_h = 0,
343 .comp = {
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] = {
351 .name = "bgr4",
352 .nb_components = 3,
353 .log2_chroma_w = 0,
354 .log2_chroma_h = 0,
355 .comp = {
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] = {
363 .name = "bgr4_byte",
364 .nb_components = 3,
365 .log2_chroma_w = 0,
366 .log2_chroma_h = 0,
367 .comp = {
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] = {
375 .name = "rgb8",
376 .nb_components = 3,
377 .log2_chroma_w = 0,
378 .log2_chroma_h = 0,
379 .comp = {
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] = {
387 .name = "rgb4",
388 .nb_components = 3,
389 .log2_chroma_w = 0,
390 .log2_chroma_h = 0,
391 .comp = {
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] = {
399 .name = "rgb4_byte",
400 .nb_components = 3,
401 .log2_chroma_w = 0,
402 .log2_chroma_h = 0,
403 .comp = {
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] = {
411 .name = "nv12",
412 .nb_components = 3,
413 .log2_chroma_w = 1,
414 .log2_chroma_h = 1,
415 .comp = {
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] = {
423 .name = "nv21",
424 .nb_components = 3,
425 .log2_chroma_w = 1,
426 .log2_chroma_h = 1,
427 .comp = {
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] = {
435 .name = "argb",
436 .nb_components = 4,
437 .log2_chroma_w = 0,
438 .log2_chroma_h = 0,
439 .comp = {
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] = {
448 .name = "rgba",
449 .nb_components = 4,
450 .log2_chroma_w = 0,
451 .log2_chroma_h = 0,
452 .comp = {
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] = {
461 .name = "abgr",
462 .nb_components = 4,
463 .log2_chroma_w = 0,
464 .log2_chroma_h = 0,
465 .comp = {
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] = {
474 .name = "bgra",
475 .nb_components = 4,
476 .log2_chroma_w = 0,
477 .log2_chroma_h = 0,
478 .comp = {
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] = {
487 .name = "gray10be",
488 .nb_components = 1,
489 .log2_chroma_w = 0,
490 .log2_chroma_h = 0,
491 .comp = {
492 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
494 .flags = AV_PIX_FMT_FLAG_BE,
495 .alias = "y10be",
497 [AV_PIX_FMT_GRAY10LE] = {
498 .name = "gray10le",
499 .nb_components = 1,
500 .log2_chroma_w = 0,
501 .log2_chroma_h = 0,
502 .comp = {
503 { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */
505 .alias = "y10le",
507 [AV_PIX_FMT_GRAY12BE] = {
508 .name = "gray12be",
509 .nb_components = 1,
510 .log2_chroma_w = 0,
511 .log2_chroma_h = 0,
512 .comp = {
513 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
515 .flags = AV_PIX_FMT_FLAG_BE,
516 .alias = "y12be",
518 [AV_PIX_FMT_GRAY12LE] = {
519 .name = "gray12le",
520 .nb_components = 1,
521 .log2_chroma_w = 0,
522 .log2_chroma_h = 0,
523 .comp = {
524 { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
526 .alias = "y12le",
528 [AV_PIX_FMT_GRAY16BE] = {
529 .name = "gray16be",
530 .nb_components = 1,
531 .log2_chroma_w = 0,
532 .log2_chroma_h = 0,
533 .comp = {
534 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
536 .flags = AV_PIX_FMT_FLAG_BE,
537 .alias = "y16be",
539 [AV_PIX_FMT_GRAY16LE] = {
540 .name = "gray16le",
541 .nb_components = 1,
542 .log2_chroma_w = 0,
543 .log2_chroma_h = 0,
544 .comp = {
545 { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */
547 .alias = "y16le",
549 [AV_PIX_FMT_YUV440P] = {
550 .name = "yuv440p",
551 .nb_components = 3,
552 .log2_chroma_w = 0,
553 .log2_chroma_h = 1,
554 .comp = {
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] = {
562 .name = "yuvj440p",
563 .nb_components = 3,
564 .log2_chroma_w = 0,
565 .log2_chroma_h = 1,
566 .comp = {
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] = {
574 .name = "yuva420p",
575 .nb_components = 4,
576 .log2_chroma_w = 1,
577 .log2_chroma_h = 1,
578 .comp = {
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] = {
587 .name = "yuva422p",
588 .nb_components = 4,
589 .log2_chroma_w = 1,
590 .log2_chroma_h = 0,
591 .comp = {
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] = {
600 .name = "yuva444p",
601 .nb_components = 4,
602 .log2_chroma_w = 0,
603 .log2_chroma_h = 0,
604 .comp = {
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",
614 .nb_components = 4,
615 .log2_chroma_w = 1,
616 .log2_chroma_h = 1,
617 .comp = {
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",
627 .nb_components = 4,
628 .log2_chroma_w = 1,
629 .log2_chroma_h = 1,
630 .comp = {
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",
640 .nb_components = 4,
641 .log2_chroma_w = 1,
642 .log2_chroma_h = 0,
643 .comp = {
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",
653 .nb_components = 4,
654 .log2_chroma_w = 1,
655 .log2_chroma_h = 0,
656 .comp = {
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",
666 .nb_components = 4,
667 .log2_chroma_w = 0,
668 .log2_chroma_h = 0,
669 .comp = {
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",
679 .nb_components = 4,
680 .log2_chroma_w = 0,
681 .log2_chroma_h = 0,
682 .comp = {
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",
692 .nb_components = 4,
693 .log2_chroma_w = 1,
694 .log2_chroma_h = 1,
695 .comp = {
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",
705 .nb_components = 4,
706 .log2_chroma_w = 1,
707 .log2_chroma_h = 1,
708 .comp = {
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",
718 .nb_components = 4,
719 .log2_chroma_w = 1,
720 .log2_chroma_h = 0,
721 .comp = {
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",
731 .nb_components = 4,
732 .log2_chroma_w = 1,
733 .log2_chroma_h = 0,
734 .comp = {
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",
744 .nb_components = 4,
745 .log2_chroma_w = 0,
746 .log2_chroma_h = 0,
747 .comp = {
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",
757 .nb_components = 4,
758 .log2_chroma_w = 0,
759 .log2_chroma_h = 0,
760 .comp = {
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",
770 .nb_components = 4,
771 .log2_chroma_w = 1,
772 .log2_chroma_h = 1,
773 .comp = {
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",
783 .nb_components = 4,
784 .log2_chroma_w = 1,
785 .log2_chroma_h = 1,
786 .comp = {
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",
796 .nb_components = 4,
797 .log2_chroma_w = 1,
798 .log2_chroma_h = 0,
799 .comp = {
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",
809 .nb_components = 4,
810 .log2_chroma_w = 1,
811 .log2_chroma_h = 0,
812 .comp = {
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",
822 .nb_components = 4,
823 .log2_chroma_w = 0,
824 .log2_chroma_h = 0,
825 .comp = {
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",
835 .nb_components = 4,
836 .log2_chroma_w = 0,
837 .log2_chroma_h = 0,
838 .comp = {
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] = {
847 .name = "rgb48be",
848 .nb_components = 3,
849 .log2_chroma_w = 0,
850 .log2_chroma_h = 0,
851 .comp = {
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] = {
859 .name = "rgb48le",
860 .nb_components = 3,
861 .log2_chroma_w = 0,
862 .log2_chroma_h = 0,
863 .comp = {
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] = {
871 .name = "rgba64be",
872 .nb_components = 4,
873 .log2_chroma_w = 0,
874 .log2_chroma_h = 0,
875 .comp = {
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] = {
884 .name = "rgba64le",
885 .nb_components = 4,
886 .log2_chroma_w = 0,
887 .log2_chroma_h = 0,
888 .comp = {
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] = {
897 .name = "rgb565be",
898 .nb_components = 3,
899 .log2_chroma_w = 0,
900 .log2_chroma_h = 0,
901 .comp = {
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] = {
909 .name = "rgb565le",
910 .nb_components = 3,
911 .log2_chroma_w = 0,
912 .log2_chroma_h = 0,
913 .comp = {
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] = {
921 .name = "rgb555be",
922 .nb_components = 3,
923 .log2_chroma_w = 0,
924 .log2_chroma_h = 0,
925 .comp = {
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] = {
933 .name = "rgb555le",
934 .nb_components = 3,
935 .log2_chroma_w = 0,
936 .log2_chroma_h = 0,
937 .comp = {
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] = {
945 .name = "rgb444be",
946 .nb_components = 3,
947 .log2_chroma_w = 0,
948 .log2_chroma_h = 0,
949 .comp = {
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] = {
957 .name = "rgb444le",
958 .nb_components = 3,
959 .log2_chroma_w = 0,
960 .log2_chroma_h = 0,
961 .comp = {
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] = {
969 .name = "bgr48be",
970 .nb_components = 3,
971 .log2_chroma_w = 0,
972 .log2_chroma_h = 0,
973 .comp = {
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] = {
981 .name = "bgr48le",
982 .nb_components = 3,
983 .log2_chroma_w = 0,
984 .log2_chroma_h = 0,
985 .comp = {
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] = {
993 .name = "bgra64be",
994 .nb_components = 4,
995 .log2_chroma_w = 0,
996 .log2_chroma_h = 0,
997 .comp = {
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] = {
1006 .name = "bgra64le",
1007 .nb_components = 4,
1008 .log2_chroma_w = 0,
1009 .log2_chroma_h = 0,
1010 .comp = {
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] = {
1019 .name = "bgr565be",
1020 .nb_components = 3,
1021 .log2_chroma_w = 0,
1022 .log2_chroma_h = 0,
1023 .comp = {
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] = {
1031 .name = "bgr565le",
1032 .nb_components = 3,
1033 .log2_chroma_w = 0,
1034 .log2_chroma_h = 0,
1035 .comp = {
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] = {
1043 .name = "bgr555be",
1044 .nb_components = 3,
1045 .log2_chroma_w = 0,
1046 .log2_chroma_h = 0,
1047 .comp = {
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] = {
1055 .name = "bgr555le",
1056 .nb_components = 3,
1057 .log2_chroma_w = 0,
1058 .log2_chroma_h = 0,
1059 .comp = {
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] = {
1067 .name = "bgr444be",
1068 .nb_components = 3,
1069 .log2_chroma_w = 0,
1070 .log2_chroma_h = 0,
1071 .comp = {
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] = {
1079 .name = "bgr444le",
1080 .nb_components = 3,
1081 .log2_chroma_w = 0,
1082 .log2_chroma_h = 0,
1083 .comp = {
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,
1090 #if FF_API_VAAPI
1091 [AV_PIX_FMT_VAAPI_MOCO] = {
1092 .name = "vaapi_moco",
1093 .log2_chroma_w = 1,
1094 .log2_chroma_h = 1,
1095 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1097 [AV_PIX_FMT_VAAPI_IDCT] = {
1098 .name = "vaapi_idct",
1099 .log2_chroma_w = 1,
1100 .log2_chroma_h = 1,
1101 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1103 [AV_PIX_FMT_VAAPI_VLD] = {
1104 .name = "vaapi_vld",
1105 .log2_chroma_w = 1,
1106 .log2_chroma_h = 1,
1107 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1109 #else
1110 [AV_PIX_FMT_VAAPI] = {
1111 .name = "vaapi",
1112 .log2_chroma_w = 1,
1113 .log2_chroma_h = 1,
1114 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1116 #endif
1117 [AV_PIX_FMT_VDA_VLD] = {
1118 .name = "vda_vld",
1119 .log2_chroma_w = 1,
1120 .log2_chroma_h = 1,
1121 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1123 [AV_PIX_FMT_YUV420P9LE] = {
1124 .name = "yuv420p9le",
1125 .nb_components = 3,
1126 .log2_chroma_w = 1,
1127 .log2_chroma_h = 1,
1128 .comp = {
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",
1137 .nb_components = 3,
1138 .log2_chroma_w = 1,
1139 .log2_chroma_h = 1,
1140 .comp = {
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",
1149 .nb_components = 3,
1150 .log2_chroma_w = 1,
1151 .log2_chroma_h = 1,
1152 .comp = {
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",
1161 .nb_components = 3,
1162 .log2_chroma_w = 1,
1163 .log2_chroma_h = 1,
1164 .comp = {
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",
1173 .nb_components = 3,
1174 .log2_chroma_w = 1,
1175 .log2_chroma_h = 1,
1176 .comp = {
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",
1185 .nb_components = 3,
1186 .log2_chroma_w = 1,
1187 .log2_chroma_h = 1,
1188 .comp = {
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",
1197 .nb_components = 3,
1198 .log2_chroma_w = 1,
1199 .log2_chroma_h = 1,
1200 .comp = {
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",
1209 .nb_components = 3,
1210 .log2_chroma_w = 1,
1211 .log2_chroma_h = 1,
1212 .comp = {
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",
1221 .nb_components = 3,
1222 .log2_chroma_w = 1,
1223 .log2_chroma_h = 0,
1224 .comp = {
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",
1233 .nb_components = 3,
1234 .log2_chroma_w = 1,
1235 .log2_chroma_h = 0,
1236 .comp = {
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",
1245 .nb_components = 3,
1246 .log2_chroma_w = 1,
1247 .log2_chroma_h = 0,
1248 .comp = {
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",
1257 .nb_components = 3,
1258 .log2_chroma_w = 1,
1259 .log2_chroma_h = 0,
1260 .comp = {
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",
1269 .nb_components = 3,
1270 .log2_chroma_w = 1,
1271 .log2_chroma_h = 0,
1272 .comp = {
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",
1281 .nb_components = 3,
1282 .log2_chroma_w = 1,
1283 .log2_chroma_h = 0,
1284 .comp = {
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",
1293 .nb_components = 3,
1294 .log2_chroma_w = 1,
1295 .log2_chroma_h = 0,
1296 .comp = {
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",
1305 .nb_components = 3,
1306 .log2_chroma_w = 1,
1307 .log2_chroma_h = 0,
1308 .comp = {
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",
1317 .nb_components = 3,
1318 .log2_chroma_w = 0,
1319 .log2_chroma_h = 0,
1320 .comp = {
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",
1329 .nb_components = 3,
1330 .log2_chroma_w = 0,
1331 .log2_chroma_h = 0,
1332 .comp = {
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",
1341 .nb_components = 3,
1342 .log2_chroma_w = 0,
1343 .log2_chroma_h = 0,
1344 .comp = {
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",
1353 .nb_components = 3,
1354 .log2_chroma_w = 0,
1355 .log2_chroma_h = 0,
1356 .comp = {
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",
1365 .nb_components = 3,
1366 .log2_chroma_w = 0,
1367 .log2_chroma_h = 0,
1368 .comp = {
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",
1377 .nb_components = 3,
1378 .log2_chroma_w = 0,
1379 .log2_chroma_h = 0,
1380 .comp = {
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",
1389 .nb_components = 3,
1390 .log2_chroma_w = 0,
1391 .log2_chroma_h = 0,
1392 .comp = {
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",
1401 .nb_components = 3,
1402 .log2_chroma_w = 0,
1403 .log2_chroma_h = 0,
1404 .comp = {
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",
1413 .log2_chroma_w = 1,
1414 .log2_chroma_h = 1,
1415 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1417 [AV_PIX_FMT_DXVA2_VLD] = {
1418 .name = "dxva2_vld",
1419 .log2_chroma_w = 1,
1420 .log2_chroma_h = 1,
1421 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1423 [AV_PIX_FMT_YA8] = {
1424 .name = "ya8",
1425 .nb_components = 2,
1426 .comp = {
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,
1431 .alias = "gray8a",
1433 [AV_PIX_FMT_YA16LE] = {
1434 .name = "ya16le",
1435 .nb_components = 2,
1436 .comp = {
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] = {
1443 .name = "ya16be",
1444 .nb_components = 2,
1445 .comp = {
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] = {
1452 .name = "gbrp",
1453 .nb_components = 3,
1454 .log2_chroma_w = 0,
1455 .log2_chroma_h = 0,
1456 .comp = {
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] = {
1464 .name = "gbrp9le",
1465 .nb_components = 3,
1466 .log2_chroma_w = 0,
1467 .log2_chroma_h = 0,
1468 .comp = {
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] = {
1476 .name = "gbrp9be",
1477 .nb_components = 3,
1478 .log2_chroma_w = 0,
1479 .log2_chroma_h = 0,
1480 .comp = {
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] = {
1488 .name = "gbrp10le",
1489 .nb_components = 3,
1490 .log2_chroma_w = 0,
1491 .log2_chroma_h = 0,
1492 .comp = {
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] = {
1500 .name = "gbrp10be",
1501 .nb_components = 3,
1502 .log2_chroma_w = 0,
1503 .log2_chroma_h = 0,
1504 .comp = {
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] = {
1512 .name = "gbrp12le",
1513 .nb_components = 3,
1514 .log2_chroma_w = 0,
1515 .log2_chroma_h = 0,
1516 .comp = {
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] = {
1524 .name = "gbrp12be",
1525 .nb_components = 3,
1526 .log2_chroma_w = 0,
1527 .log2_chroma_h = 0,
1528 .comp = {
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] = {
1536 .name = "gbrp16le",
1537 .nb_components = 3,
1538 .log2_chroma_w = 0,
1539 .log2_chroma_h = 0,
1540 .comp = {
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] = {
1548 .name = "gbrp16be",
1549 .nb_components = 3,
1550 .log2_chroma_w = 0,
1551 .log2_chroma_h = 0,
1552 .comp = {
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] = {
1560 .name = "gbrap",
1561 .nb_components = 4,
1562 .log2_chroma_w = 0,
1563 .log2_chroma_h = 0,
1564 .comp = {
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",
1575 .nb_components = 4,
1576 .log2_chroma_w = 0,
1577 .log2_chroma_h = 0,
1578 .comp = {
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",
1589 .nb_components = 4,
1590 .log2_chroma_w = 0,
1591 .log2_chroma_h = 0,
1592 .comp = {
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] = {
1602 .name = "vdpau",
1603 .log2_chroma_w = 1,
1604 .log2_chroma_h = 1,
1605 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1607 [AV_PIX_FMT_XYZ12LE] = {
1608 .name = "xyz12le",
1609 .nb_components = 3,
1610 .log2_chroma_w = 0,
1611 .log2_chroma_h = 0,
1612 .comp = {
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] = {
1620 .name = "xyz12be",
1621 .nb_components = 3,
1622 .log2_chroma_w = 0,
1623 .log2_chroma_h = 0,
1624 .comp = {
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] = {
1632 .name = "nv16",
1633 .nb_components = 3,
1634 .log2_chroma_w = 1,
1635 .log2_chroma_h = 0,
1636 .comp = {
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] = {
1644 .name = "nv20le",
1645 .nb_components = 3,
1646 .log2_chroma_w = 1,
1647 .log2_chroma_h = 0,
1648 .comp = {
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] = {
1656 .name = "nv20be",
1657 .nb_components = 3,
1658 .log2_chroma_w = 1,
1659 .log2_chroma_h = 0,
1660 .comp = {
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] = {
1668 .name = "vda",
1669 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1671 [AV_PIX_FMT_QSV] = {
1672 .name = "qsv",
1673 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1675 [AV_PIX_FMT_MMAL] = {
1676 .name = "mmal",
1677 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1679 [AV_PIX_FMT_CUDA] = {
1680 .name = "cuda",
1681 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1683 [AV_PIX_FMT_P010LE] = {
1684 .name = "p010le",
1685 .nb_components = 3,
1686 .log2_chroma_w = 1,
1687 .log2_chroma_h = 1,
1688 .comp = {
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] = {
1696 .name = "p010be",
1697 .nb_components = 3,
1698 .log2_chroma_w = 1,
1699 .log2_chroma_h = 1,
1700 .comp = {
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",
1709 .nb_components = 4,
1710 .log2_chroma_w = 0,
1711 .log2_chroma_h = 0,
1712 .comp = {
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",
1723 .nb_components = 4,
1724 .log2_chroma_w = 0,
1725 .log2_chroma_h = 0,
1726 .comp = {
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",
1737 .nb_components = 4,
1738 .log2_chroma_w = 0,
1739 .log2_chroma_h = 0,
1740 .comp = {
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",
1751 .nb_components = 4,
1752 .log2_chroma_w = 0,
1753 .log2_chroma_h = 0,
1754 .comp = {
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] = {
1764 .name = "d3d11",
1765 .flags = AV_PIX_FMT_FLAG_HWACCEL,
1768 #if FF_API_PLUS1_MINUS1
1769 FF_ENABLE_DEPRECATION_WARNINGS
1770 #endif
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)))
1853 return pix_fmt;
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;
1864 #if HAVE_BIGENDIAN
1865 # define X_NE(be, le) be
1866 #else
1867 # define X_NE(be, le) le
1868 #endif
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) {
1881 char name2[32];
1883 snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
1884 pix_fmt = get_pix_fmt_internal(name2);
1887 #if FF_API_VAAPI
1888 if (pix_fmt == AV_PIX_FMT_NONE && !strcmp(name, "vaapi"))
1889 pix_fmt = AV_PIX_FMT_VAAPI;
1890 #endif
1891 return pix_fmt;
1894 int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
1896 int c, bits = 0;
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)
1910 /* print header */
1911 if (pix_fmt < 0) {
1912 snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
1913 } else {
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));
1919 return buf;
1922 const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
1924 if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB)
1925 return NULL;
1926 return &av_pix_fmt_descriptors[pix_fmt];
1929 const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
1931 if (!prev)
1932 return &av_pix_fmt_descriptors[0];
1933 if (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1)
1934 return prev + 1;
1935 return NULL;
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);
1951 if (!desc)
1952 return AVERROR(ENOSYS);
1953 *h_shift = desc->log2_chroma_w;
1954 *v_shift = desc->log2_chroma_h;
1956 return 0;
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;
1964 if (!desc)
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++)
1970 ret += planes[i];
1971 return ret;
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
1981 switch (pix_fmt) {
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);
2026 default:
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)
2040 int i;
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))
2045 return i;
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)
2059 int i;
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))
2064 return i;
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)
2078 int i;
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))
2083 return i;
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)
2097 int i;
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))
2102 return i;
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)
2116 int i;
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))
2121 return i;
2124 return AVERROR(EINVAL);