FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavutil/pixdesc.c
Date: 2026-10-07 07:45:28
Exec Total Coverage
Lines: 369 421 87.6%
Functions: 33 35 94.3%
Branches: 280 361 77.6%

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