FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavutil/pixdesc.c
Date: 2026-09-28 11:37:26
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 1337354 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 1337354 AVComponentDescriptor comp = desc->comp[c];
39 1337354 int plane = comp.plane;
40 1337354 int depth = comp.depth;
41 1337354 unsigned mask = (1ULL << depth) - 1;
42 1337354 int shift = comp.shift;
43 1337354 int step = comp.step;
44 1337354 int flags = desc->flags;
45 1337354 uint16_t *dst16 = dst;
46 1337354 uint32_t *dst32 = dst;
47
48
2/2
✓ Branch 0 taken 298944 times.
✓ Branch 1 taken 1038410 times.
1337354 if (!depth)
49 298944 return;
50
51
2/2
✓ Branch 0 taken 3472 times.
✓ Branch 1 taken 1034938 times.
1038410 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 1034938 const uint8_t *p = data[plane] + y * linesize[plane] +
84 1034938 x * step + comp.offset;
85 1034938 int is_8bit = shift + depth <= 8;
86 1034938 int is_16bit= shift + depth <=16;
87
88
2/2
✓ Branch 0 taken 296538 times.
✓ Branch 1 taken 738400 times.
1034938 if (is_8bit)
89 296538 p += !!(flags & AV_PIX_FMT_FLAG_BE);
90
91
2/2
✓ Branch 0 taken 331881140 times.
✓ Branch 1 taken 1034938 times.
332916078 while (w--) {
92 unsigned val;
93
2/2
✓ Branch 0 taken 96484980 times.
✓ Branch 1 taken 235396160 times.
331881140 if (is_8bit) val = *p;
94
4/4
✓ Branch 0 taken 225663948 times.
✓ Branch 1 taken 9732212 times.
✓ Branch 2 taken 107357664 times.
✓ Branch 3 taken 118306284 times.
235396160 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 331881140 val = (val >> shift) & mask;
97
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 331881140 times.
331881140 if (read_pal_component)
98 ✗ val = data[1][4 * val + c];
99 331881140 p += step;
100
2/2
✓ Branch 0 taken 331879680 times.
✓ Branch 1 taken 1460 times.
331881140 if (dst_element_size == 4) *dst32++ = val;
101 1460 else *dst16++ = val;
102 }
103 }
104 }
105
106 746 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 746 av_read_image_line2(dst, data, linesize, desc,x, y, c, w,
113 read_pal_component,
114 2);
115 746 }
116
117 1339649 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 1339649 AVComponentDescriptor comp = desc->comp[c];
123 1339649 int plane = comp.plane;
124 1339649 int depth = comp.depth;
125 1339649 int step = comp.step;
126 1339649 int flags = desc->flags;
127 1339649 const uint32_t *src32 = src;
128 1339649 const uint16_t *src16 = src;
129
130
2/2
✓ Branch 0 taken 298944 times.
✓ Branch 1 taken 1040705 times.
1339649 if (!depth)
131 298944 return;
132
133
2/2
✓ Branch 0 taken 3514 times.
✓ Branch 1 taken 1037191 times.
1040705 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 1037191 int shift = comp.shift;
160 1037191 uint8_t *p = data[plane] + y * linesize[plane] +
161 1037191 x * step + comp.offset;
162
163
2/2
✓ Branch 0 taken 297171 times.
✓ Branch 1 taken 740020 times.
1037191 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 235397798 times.
✓ Branch 1 taken 740020 times.
236137818 while (w--) {
171
2/2
✓ Branch 0 taken 235396710 times.
✓ Branch 1 taken 1088 times.
235397798 unsigned s = (src_element_size == 4 ? *src32++ : *src16++);
172
2/2
✓ Branch 0 taken 225665412 times.
✓ Branch 1 taken 9732386 times.
235397798 if (shift + depth <= 16) {
173
2/2
✓ Branch 0 taken 107358387 times.
✓ Branch 1 taken 118307025 times.
225665412 if (flags & AV_PIX_FMT_FLAG_BE) {
174 107358387 uint16_t val = AV_RB16(p) | (s << shift);
175 107358387 AV_WB16(p, val);
176 } else {
177 118307025 uint16_t val = AV_RL16(p) | (s << shift);
178 118307025 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 235397798 p += step;
190 }
191 }
192 }
193 }
194
195 746 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 746 av_write_image_line2(src, data, linesize, desc, x, y, c, w, 2);
201 746 }
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
2149 #define BAYER8_DESC_COMMON \
2150 .nb_components= 3, \
2151 .log2_chroma_w= 0, \
2152 .log2_chroma_h= 0, \
2153 .comp = { \
2154 { 0, 1, 0, 0, 2 }, \
2155 { 0, 1, 0, 0, 4 }, \
2156 { 0, 1, 0, 0, 2 }, \
2157 }, \
2158
2159 #define BAYER16_DESC_COMMON \
2160 .nb_components= 3, \
2161 .log2_chroma_w= 0, \
2162 .log2_chroma_h= 0, \
2163 .comp = { \
2164 { 0, 2, 0, 0, 4 }, \
2165 { 0, 2, 0, 0, 8 }, \
2166 { 0, 2, 0, 0, 4 }, \
2167 }, \
2168
2169 [AV_PIX_FMT_BAYER_BGGR8] = {
2170 .name = "bayer_bggr8",
2171 BAYER8_DESC_COMMON
2172 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2173 },
2174 [AV_PIX_FMT_BAYER_BGGR16LE] = {
2175 .name = "bayer_bggr16le",
2176 BAYER16_DESC_COMMON
2177 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2178 },
2179 [AV_PIX_FMT_BAYER_BGGR16BE] = {
2180 .name = "bayer_bggr16be",
2181 BAYER16_DESC_COMMON
2182 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2183 },
2184 [AV_PIX_FMT_BAYER_RGGB8] = {
2185 .name = "bayer_rggb8",
2186 BAYER8_DESC_COMMON
2187 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2188 },
2189 [AV_PIX_FMT_BAYER_RGGB16LE] = {
2190 .name = "bayer_rggb16le",
2191 BAYER16_DESC_COMMON
2192 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2193 },
2194 [AV_PIX_FMT_BAYER_RGGB16BE] = {
2195 .name = "bayer_rggb16be",
2196 BAYER16_DESC_COMMON
2197 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2198 },
2199 [AV_PIX_FMT_BAYER_GBRG8] = {
2200 .name = "bayer_gbrg8",
2201 BAYER8_DESC_COMMON
2202 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2203 },
2204 [AV_PIX_FMT_BAYER_GBRG16LE] = {
2205 .name = "bayer_gbrg16le",
2206 BAYER16_DESC_COMMON
2207 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2208 },
2209 [AV_PIX_FMT_BAYER_GBRG16BE] = {
2210 .name = "bayer_gbrg16be",
2211 BAYER16_DESC_COMMON
2212 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2213 },
2214 [AV_PIX_FMT_BAYER_GRBG8] = {
2215 .name = "bayer_grbg8",
2216 BAYER8_DESC_COMMON
2217 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2218 },
2219 [AV_PIX_FMT_BAYER_GRBG16LE] = {
2220 .name = "bayer_grbg16le",
2221 BAYER16_DESC_COMMON
2222 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2223 },
2224 [AV_PIX_FMT_BAYER_GRBG16BE] = {
2225 .name = "bayer_grbg16be",
2226 BAYER16_DESC_COMMON
2227 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER,
2228 },
2229 [AV_PIX_FMT_NV16] = {
2230 .name = "nv16",
2231 .nb_components = 3,
2232 .log2_chroma_w = 1,
2233 .log2_chroma_h = 0,
2234 .comp = {
2235 { 0, 1, 0, 0, 8 }, /* Y */
2236 { 1, 2, 0, 0, 8 }, /* U */
2237 { 1, 2, 1, 0, 8 }, /* V */
2238 },
2239 .flags = AV_PIX_FMT_FLAG_PLANAR,
2240 },
2241 [AV_PIX_FMT_NV20LE] = {
2242 .name = "nv20le",
2243 .nb_components = 3,
2244 .log2_chroma_w = 1,
2245 .log2_chroma_h = 0,
2246 .comp = {
2247 { 0, 2, 0, 0, 10 }, /* Y */
2248 { 1, 4, 0, 0, 10 }, /* U */
2249 { 1, 4, 2, 0, 10 }, /* V */
2250 },
2251 .flags = AV_PIX_FMT_FLAG_PLANAR,
2252 },
2253 [AV_PIX_FMT_NV20BE] = {
2254 .name = "nv20be",
2255 .nb_components = 3,
2256 .log2_chroma_w = 1,
2257 .log2_chroma_h = 0,
2258 .comp = {
2259 { 0, 2, 0, 0, 10 }, /* Y */
2260 { 1, 4, 0, 0, 10 }, /* U */
2261 { 1, 4, 2, 0, 10 }, /* V */
2262 },
2263 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2264 },
2265 [AV_PIX_FMT_QSV] = {
2266 .name = "qsv",
2267 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2268 },
2269 [AV_PIX_FMT_MEDIACODEC] = {
2270 .name = "mediacodec",
2271 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2272 },
2273 [AV_PIX_FMT_MMAL] = {
2274 .name = "mmal",
2275 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2276 },
2277 [AV_PIX_FMT_CUDA] = {
2278 .name = "cuda",
2279 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2280 },
2281 [AV_PIX_FMT_CUARRAY] = {
2282 .name = "cuarray",
2283 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2284 },
2285 [AV_PIX_FMT_AMF_SURFACE] = {
2286 .name = "amf",
2287 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2288 },
2289 [AV_PIX_FMT_VYU444] = {
2290 .name = "vyu444",
2291 .nb_components = 3,
2292 .log2_chroma_w = 0,
2293 .log2_chroma_h = 0,
2294 .comp = {
2295 { 0, 3, 1, 0, 8 }, /* Y */
2296 { 0, 3, 2, 0, 8 }, /* U */
2297 { 0, 3, 0, 0, 8 }, /* V */
2298 },
2299 },
2300 [AV_PIX_FMT_UYVA] = {
2301 .name = "uyva",
2302 .nb_components = 4,
2303 .log2_chroma_w = 0,
2304 .log2_chroma_h = 0,
2305 .comp = {
2306 { 0, 4, 1, 0, 8 }, /* Y */
2307 { 0, 4, 0, 0, 8 }, /* U */
2308 { 0, 4, 2, 0, 8 }, /* V */
2309 { 0, 4, 3, 0, 8 }, /* A */
2310 },
2311 .flags = AV_PIX_FMT_FLAG_ALPHA,
2312 },
2313 [AV_PIX_FMT_AYUV] = {
2314 .name = "ayuv",
2315 .nb_components = 4,
2316 .log2_chroma_w = 0,
2317 .log2_chroma_h = 0,
2318 .comp = {
2319 { 0, 4, 1, 0, 8 }, /* Y */
2320 { 0, 4, 2, 0, 8 }, /* U */
2321 { 0, 4, 3, 0, 8 }, /* V */
2322 { 0, 4, 0, 0, 8 }, /* A */
2323 },
2324 .flags = AV_PIX_FMT_FLAG_ALPHA,
2325 },
2326 [AV_PIX_FMT_AYUV64LE] = {
2327 .name = "ayuv64le",
2328 .nb_components = 4,
2329 .log2_chroma_w = 0,
2330 .log2_chroma_h = 0,
2331 .comp = {
2332 { 0, 8, 2, 0, 16 }, /* Y */
2333 { 0, 8, 4, 0, 16 }, /* U */
2334 { 0, 8, 6, 0, 16 }, /* V */
2335 { 0, 8, 0, 0, 16 }, /* A */
2336 },
2337 .flags = AV_PIX_FMT_FLAG_ALPHA,
2338 },
2339 [AV_PIX_FMT_AYUV64BE] = {
2340 .name = "ayuv64be",
2341 .nb_components = 4,
2342 .log2_chroma_w = 0,
2343 .log2_chroma_h = 0,
2344 .comp = {
2345 { 0, 8, 2, 0, 16 }, /* Y */
2346 { 0, 8, 4, 0, 16 }, /* U */
2347 { 0, 8, 6, 0, 16 }, /* V */
2348 { 0, 8, 0, 0, 16 }, /* A */
2349 },
2350 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA,
2351 },
2352 [AV_PIX_FMT_P010LE] = {
2353 .name = "p010le",
2354 .nb_components = 3,
2355 .log2_chroma_w = 1,
2356 .log2_chroma_h = 1,
2357 .comp = {
2358 { 0, 2, 0, 6, 10 }, /* Y */
2359 { 1, 4, 0, 6, 10 }, /* U */
2360 { 1, 4, 2, 6, 10 }, /* V */
2361 },
2362 .flags = AV_PIX_FMT_FLAG_PLANAR,
2363 },
2364 [AV_PIX_FMT_P010BE] = {
2365 .name = "p010be",
2366 .nb_components = 3,
2367 .log2_chroma_w = 1,
2368 .log2_chroma_h = 1,
2369 .comp = {
2370 { 0, 2, 0, 6, 10 }, /* Y */
2371 { 1, 4, 0, 6, 10 }, /* U */
2372 { 1, 4, 2, 6, 10 }, /* V */
2373 },
2374 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2375 },
2376 [AV_PIX_FMT_P012LE] = {
2377 .name = "p012le",
2378 .nb_components = 3,
2379 .log2_chroma_w = 1,
2380 .log2_chroma_h = 1,
2381 .comp = {
2382 { 0, 2, 0, 4, 12 }, /* Y */
2383 { 1, 4, 0, 4, 12 }, /* U */
2384 { 1, 4, 2, 4, 12 }, /* V */
2385 },
2386 .flags = AV_PIX_FMT_FLAG_PLANAR,
2387 },
2388 [AV_PIX_FMT_P012BE] = {
2389 .name = "p012be",
2390 .nb_components = 3,
2391 .log2_chroma_w = 1,
2392 .log2_chroma_h = 1,
2393 .comp = {
2394 { 0, 2, 0, 4, 12 }, /* Y */
2395 { 1, 4, 0, 4, 12 }, /* U */
2396 { 1, 4, 2, 4, 12 }, /* V */
2397 },
2398 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2399 },
2400 [AV_PIX_FMT_P016LE] = {
2401 .name = "p016le",
2402 .nb_components = 3,
2403 .log2_chroma_w = 1,
2404 .log2_chroma_h = 1,
2405 .comp = {
2406 { 0, 2, 0, 0, 16 }, /* Y */
2407 { 1, 4, 0, 0, 16 }, /* U */
2408 { 1, 4, 2, 0, 16 }, /* V */
2409 },
2410 .flags = AV_PIX_FMT_FLAG_PLANAR,
2411 },
2412 [AV_PIX_FMT_P016BE] = {
2413 .name = "p016be",
2414 .nb_components = 3,
2415 .log2_chroma_w = 1,
2416 .log2_chroma_h = 1,
2417 .comp = {
2418 { 0, 2, 0, 0, 16 }, /* Y */
2419 { 1, 4, 0, 0, 16 }, /* U */
2420 { 1, 4, 2, 0, 16 }, /* V */
2421 },
2422 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2423 },
2424 [AV_PIX_FMT_GBRAP14LE] = {
2425 .name = "gbrap14le",
2426 .nb_components = 4,
2427 .log2_chroma_w = 0,
2428 .log2_chroma_h = 0,
2429 .comp = {
2430 { 2, 2, 0, 0, 14 }, /* R */
2431 { 0, 2, 0, 0, 14 }, /* G */
2432 { 1, 2, 0, 0, 14 }, /* B */
2433 { 3, 2, 0, 0, 14 }, /* A */
2434 },
2435 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
2436 AV_PIX_FMT_FLAG_ALPHA,
2437 },
2438 [AV_PIX_FMT_GBRAP14BE] = {
2439 .name = "gbrap14be",
2440 .nb_components = 4,
2441 .log2_chroma_w = 0,
2442 .log2_chroma_h = 0,
2443 .comp = {
2444 { 2, 2, 0, 0, 14 }, /* R */
2445 { 0, 2, 0, 0, 14 }, /* G */
2446 { 1, 2, 0, 0, 14 }, /* B */
2447 { 3, 2, 0, 0, 14 }, /* A */
2448 },
2449 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2450 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
2451 },
2452 [AV_PIX_FMT_GBRAP12LE] = {
2453 .name = "gbrap12le",
2454 .nb_components = 4,
2455 .log2_chroma_w = 0,
2456 .log2_chroma_h = 0,
2457 .comp = {
2458 { 2, 2, 0, 0, 12 }, /* R */
2459 { 0, 2, 0, 0, 12 }, /* G */
2460 { 1, 2, 0, 0, 12 }, /* B */
2461 { 3, 2, 0, 0, 12 }, /* A */
2462 },
2463 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
2464 AV_PIX_FMT_FLAG_ALPHA,
2465 },
2466 [AV_PIX_FMT_GBRAP12BE] = {
2467 .name = "gbrap12be",
2468 .nb_components = 4,
2469 .log2_chroma_w = 0,
2470 .log2_chroma_h = 0,
2471 .comp = {
2472 { 2, 2, 0, 0, 12 }, /* R */
2473 { 0, 2, 0, 0, 12 }, /* G */
2474 { 1, 2, 0, 0, 12 }, /* B */
2475 { 3, 2, 0, 0, 12 }, /* A */
2476 },
2477 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2478 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
2479 },
2480 [AV_PIX_FMT_GBRAP10LE] = {
2481 .name = "gbrap10le",
2482 .nb_components = 4,
2483 .log2_chroma_w = 0,
2484 .log2_chroma_h = 0,
2485 .comp = {
2486 { 2, 2, 0, 0, 10 }, /* R */
2487 { 0, 2, 0, 0, 10 }, /* G */
2488 { 1, 2, 0, 0, 10 }, /* B */
2489 { 3, 2, 0, 0, 10 }, /* A */
2490 },
2491 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB |
2492 AV_PIX_FMT_FLAG_ALPHA,
2493 },
2494 [AV_PIX_FMT_GBRAP10BE] = {
2495 .name = "gbrap10be",
2496 .nb_components = 4,
2497 .log2_chroma_w = 0,
2498 .log2_chroma_h = 0,
2499 .comp = {
2500 { 2, 2, 0, 0, 10 }, /* R */
2501 { 0, 2, 0, 0, 10 }, /* G */
2502 { 1, 2, 0, 0, 10 }, /* B */
2503 { 3, 2, 0, 0, 10 }, /* A */
2504 },
2505 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2506 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
2507 },
2508 [AV_PIX_FMT_D3D11] = {
2509 .name = "d3d11",
2510 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2511 },
2512 [AV_PIX_FMT_D3D12] = {
2513 .name = "d3d12",
2514 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2515 },
2516 [AV_PIX_FMT_GBRPF32BE] = {
2517 .name = "gbrpf32be",
2518 .nb_components = 3,
2519 .log2_chroma_w = 0,
2520 .log2_chroma_h = 0,
2521 .comp = {
2522 { 2, 4, 0, 0, 32 }, /* R */
2523 { 0, 4, 0, 0, 32 }, /* G */
2524 { 1, 4, 0, 0, 32 }, /* B */
2525 },
2526 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2527 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT,
2528 },
2529 [AV_PIX_FMT_GBRPF32LE] = {
2530 .name = "gbrpf32le",
2531 .nb_components = 3,
2532 .log2_chroma_w = 0,
2533 .log2_chroma_h = 0,
2534 .comp = {
2535 { 2, 4, 0, 0, 32 }, /* R */
2536 { 0, 4, 0, 0, 32 }, /* G */
2537 { 1, 4, 0, 0, 32 }, /* B */
2538 },
2539 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_RGB,
2540 },
2541 [AV_PIX_FMT_GBRAPF32BE] = {
2542 .name = "gbrapf32be",
2543 .nb_components = 4,
2544 .log2_chroma_w = 0,
2545 .log2_chroma_h = 0,
2546 .comp = {
2547 { 2, 4, 0, 0, 32 }, /* R */
2548 { 0, 4, 0, 0, 32 }, /* G */
2549 { 1, 4, 0, 0, 32 }, /* B */
2550 { 3, 4, 0, 0, 32 }, /* A */
2551 },
2552 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2553 AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB |
2554 AV_PIX_FMT_FLAG_FLOAT,
2555 },
2556 [AV_PIX_FMT_GBRAPF32LE] = {
2557 .name = "gbrapf32le",
2558 .nb_components = 4,
2559 .log2_chroma_w = 0,
2560 .log2_chroma_h = 0,
2561 .comp = {
2562 { 2, 4, 0, 0, 32 }, /* R */
2563 { 0, 4, 0, 0, 32 }, /* G */
2564 { 1, 4, 0, 0, 32 }, /* B */
2565 { 3, 4, 0, 0, 32 }, /* A */
2566 },
2567 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA |
2568 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT,
2569 },
2570 [AV_PIX_FMT_GBRPF16BE] = {
2571 .name = "gbrpf16be",
2572 .nb_components = 3,
2573 .log2_chroma_w = 0,
2574 .log2_chroma_h = 0,
2575 .comp = {
2576 { 2, 2, 0, 0, 16 }, /* R */
2577 { 0, 2, 0, 0, 16 }, /* G */
2578 { 1, 2, 0, 0, 16 }, /* B */
2579 },
2580 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2581 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT,
2582 },
2583 [AV_PIX_FMT_GBRPF16LE] = {
2584 .name = "gbrpf16le",
2585 .nb_components = 3,
2586 .log2_chroma_w = 0,
2587 .log2_chroma_h = 0,
2588 .comp = {
2589 { 2, 2, 0, 0, 16 }, /* R */
2590 { 0, 2, 0, 0, 16 }, /* G */
2591 { 1, 2, 0, 0, 16 }, /* B */
2592 },
2593 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_RGB,
2594 },
2595 [AV_PIX_FMT_GBRAPF16BE] = {
2596 .name = "gbrapf16be",
2597 .nb_components = 4,
2598 .log2_chroma_w = 0,
2599 .log2_chroma_h = 0,
2600 .comp = {
2601 { 2, 2, 0, 0, 16 }, /* R */
2602 { 0, 2, 0, 0, 16 }, /* G */
2603 { 1, 2, 0, 0, 16 }, /* B */
2604 { 3, 2, 0, 0, 16 }, /* A */
2605 },
2606 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
2607 AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB |
2608 AV_PIX_FMT_FLAG_FLOAT,
2609 },
2610 [AV_PIX_FMT_GBRAPF16LE] = {
2611 .name = "gbrapf16le",
2612 .nb_components = 4,
2613 .log2_chroma_w = 0,
2614 .log2_chroma_h = 0,
2615 .comp = {
2616 { 2, 2, 0, 0, 16 }, /* R */
2617 { 0, 2, 0, 0, 16 }, /* G */
2618 { 1, 2, 0, 0, 16 }, /* B */
2619 { 3, 2, 0, 0, 16 }, /* A */
2620 },
2621 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA |
2622 AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT,
2623 },
2624 [AV_PIX_FMT_DRM_PRIME] = {
2625 .name = "drm_prime",
2626 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2627 },
2628 [AV_PIX_FMT_OPENCL] = {
2629 .name = "opencl",
2630 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2631 },
2632 [AV_PIX_FMT_GRAYF32BE] = {
2633 .name = "grayf32be",
2634 .nb_components = 1,
2635 .log2_chroma_w = 0,
2636 .log2_chroma_h = 0,
2637 .comp = {
2638 { 0, 4, 0, 0, 32 }, /* Y */
2639 },
2640 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT,
2641 .alias = "yf32be",
2642 },
2643 [AV_PIX_FMT_GRAYF32LE] = {
2644 .name = "grayf32le",
2645 .nb_components = 1,
2646 .log2_chroma_w = 0,
2647 .log2_chroma_h = 0,
2648 .comp = {
2649 { 0, 4, 0, 0, 32 }, /* Y */
2650 },
2651 .flags = AV_PIX_FMT_FLAG_FLOAT,
2652 .alias = "yf32le",
2653 },
2654 [AV_PIX_FMT_GRAYF16BE] = {
2655 .name = "grayf16be",
2656 .nb_components = 1,
2657 .log2_chroma_w = 0,
2658 .log2_chroma_h = 0,
2659 .comp = {
2660 { 0, 2, 0, 0, 16 }, /* Y */
2661 },
2662 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT,
2663 },
2664 [AV_PIX_FMT_GRAYF16LE] = {
2665 .name = "grayf16le",
2666 .nb_components = 1,
2667 .log2_chroma_w = 0,
2668 .log2_chroma_h = 0,
2669 .comp = {
2670 { 0, 2, 0, 0, 16 }, /* Y */
2671 },
2672 .flags = AV_PIX_FMT_FLAG_FLOAT,
2673 },
2674 [AV_PIX_FMT_YAF32BE] = {
2675 .name = "yaf32be",
2676 .nb_components = 2,
2677 .log2_chroma_w = 0,
2678 .log2_chroma_h = 0,
2679 .comp = {
2680 { 0, 8, 0, 0, 32 }, /* Y */
2681 { 0, 8, 4, 0, 32 }, /* A */
2682 },
2683 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
2684 },
2685 [AV_PIX_FMT_YAF32LE] = {
2686 .name = "yaf32le",
2687 .nb_components = 2,
2688 .log2_chroma_w = 0,
2689 .log2_chroma_h = 0,
2690 .comp = {
2691 { 0, 8, 0, 0, 32 }, /* Y */
2692 { 0, 8, 4, 0, 32 }, /* A */
2693 },
2694 .flags = AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
2695 },
2696 [AV_PIX_FMT_YAF16BE] = {
2697 .name = "yaf16be",
2698 .nb_components = 2,
2699 .log2_chroma_w = 0,
2700 .log2_chroma_h = 0,
2701 .comp = {
2702 { 0, 4, 0, 0, 16 }, /* Y */
2703 { 0, 4, 2, 0, 16 }, /* A */
2704 },
2705 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
2706 },
2707 [AV_PIX_FMT_YAF16LE] = {
2708 .name = "yaf16le",
2709 .nb_components = 2,
2710 .log2_chroma_w = 0,
2711 .log2_chroma_h = 0,
2712 .comp = {
2713 { 0, 4, 0, 0, 16 }, /* Y */
2714 { 0, 4, 2, 0, 16 }, /* A */
2715 },
2716 .flags = AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
2717 },
2718 [AV_PIX_FMT_YUVA422P12BE] = {
2719 .name = "yuva422p12be",
2720 .nb_components = 4,
2721 .log2_chroma_w = 1,
2722 .log2_chroma_h = 0,
2723 .comp = {
2724 { 0, 2, 0, 0, 12 }, /* Y */
2725 { 1, 2, 0, 0, 12 }, /* U */
2726 { 2, 2, 0, 0, 12 }, /* V */
2727 { 3, 2, 0, 0, 12 }, /* A */
2728 },
2729 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
2730 },
2731 [AV_PIX_FMT_YUVA422P12LE] = {
2732 .name = "yuva422p12le",
2733 .nb_components = 4,
2734 .log2_chroma_w = 1,
2735 .log2_chroma_h = 0,
2736 .comp = {
2737 { 0, 2, 0, 0, 12 }, /* Y */
2738 { 1, 2, 0, 0, 12 }, /* U */
2739 { 2, 2, 0, 0, 12 }, /* V */
2740 { 3, 2, 0, 0, 12 }, /* A */
2741 },
2742 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
2743 },
2744 [AV_PIX_FMT_YUVA444P12BE] = {
2745 .name = "yuva444p12be",
2746 .nb_components = 4,
2747 .log2_chroma_w = 0,
2748 .log2_chroma_h = 0,
2749 .comp = {
2750 { 0, 2, 0, 0, 12 }, /* Y */
2751 { 1, 2, 0, 0, 12 }, /* U */
2752 { 2, 2, 0, 0, 12 }, /* V */
2753 { 3, 2, 0, 0, 12 }, /* A */
2754 },
2755 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
2756 },
2757 [AV_PIX_FMT_YUVA444P12LE] = {
2758 .name = "yuva444p12le",
2759 .nb_components = 4,
2760 .log2_chroma_w = 0,
2761 .log2_chroma_h = 0,
2762 .comp = {
2763 { 0, 2, 0, 0, 12 }, /* Y */
2764 { 1, 2, 0, 0, 12 }, /* U */
2765 { 2, 2, 0, 0, 12 }, /* V */
2766 { 3, 2, 0, 0, 12 }, /* A */
2767 },
2768 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
2769 },
2770 [AV_PIX_FMT_NV24] = {
2771 .name = "nv24",
2772 .nb_components = 3,
2773 .log2_chroma_w = 0,
2774 .log2_chroma_h = 0,
2775 .comp = {
2776 { 0, 1, 0, 0, 8 }, /* Y */
2777 { 1, 2, 0, 0, 8 }, /* U */
2778 { 1, 2, 1, 0, 8 }, /* V */
2779 },
2780 .flags = AV_PIX_FMT_FLAG_PLANAR,
2781 },
2782 [AV_PIX_FMT_NV42] = {
2783 .name = "nv42",
2784 .nb_components = 3,
2785 .log2_chroma_w = 0,
2786 .log2_chroma_h = 0,
2787 .comp = {
2788 { 0, 1, 0, 0, 8 }, /* Y */
2789 { 1, 2, 1, 0, 8 }, /* U */
2790 { 1, 2, 0, 0, 8 }, /* V */
2791 },
2792 .flags = AV_PIX_FMT_FLAG_PLANAR,
2793 },
2794 [AV_PIX_FMT_VULKAN] = {
2795 .name = "vulkan",
2796 .flags = AV_PIX_FMT_FLAG_HWACCEL,
2797 },
2798 [AV_PIX_FMT_P210BE] = {
2799 .name = "p210be",
2800 .nb_components = 3,
2801 .log2_chroma_w = 1,
2802 .log2_chroma_h = 0,
2803 .comp = {
2804 { 0, 2, 0, 6, 10 }, /* Y */
2805 { 1, 4, 0, 6, 10 }, /* U */
2806 { 1, 4, 2, 6, 10 }, /* V */
2807 },
2808 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2809 },
2810 [AV_PIX_FMT_P210LE] = {
2811 .name = "p210le",
2812 .nb_components = 3,
2813 .log2_chroma_w = 1,
2814 .log2_chroma_h = 0,
2815 .comp = {
2816 { 0, 2, 0, 6, 10 }, /* Y */
2817 { 1, 4, 0, 6, 10 }, /* U */
2818 { 1, 4, 2, 6, 10 }, /* V */
2819 },
2820 .flags = AV_PIX_FMT_FLAG_PLANAR,
2821 },
2822 [AV_PIX_FMT_P410BE] = {
2823 .name = "p410be",
2824 .nb_components = 3,
2825 .log2_chroma_w = 0,
2826 .log2_chroma_h = 0,
2827 .comp = {
2828 { 0, 2, 0, 6, 10 }, /* Y */
2829 { 1, 4, 0, 6, 10 }, /* U */
2830 { 1, 4, 2, 6, 10 }, /* V */
2831 },
2832 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2833 },
2834 [AV_PIX_FMT_P410LE] = {
2835 .name = "p410le",
2836 .nb_components = 3,
2837 .log2_chroma_w = 0,
2838 .log2_chroma_h = 0,
2839 .comp = {
2840 { 0, 2, 0, 6, 10 }, /* Y */
2841 { 1, 4, 0, 6, 10 }, /* U */
2842 { 1, 4, 2, 6, 10 }, /* V */
2843 },
2844 .flags = AV_PIX_FMT_FLAG_PLANAR,
2845 },
2846 [AV_PIX_FMT_P216BE] = {
2847 .name = "p216be",
2848 .nb_components = 3,
2849 .log2_chroma_w = 1,
2850 .log2_chroma_h = 0,
2851 .comp = {
2852 { 0, 2, 0, 0, 16 }, /* Y */
2853 { 1, 4, 0, 0, 16 }, /* U */
2854 { 1, 4, 2, 0, 16 }, /* V */
2855 },
2856 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2857 },
2858 [AV_PIX_FMT_P216LE] = {
2859 .name = "p216le",
2860 .nb_components = 3,
2861 .log2_chroma_w = 1,
2862 .log2_chroma_h = 0,
2863 .comp = {
2864 { 0, 2, 0, 0, 16 }, /* Y */
2865 { 1, 4, 0, 0, 16 }, /* U */
2866 { 1, 4, 2, 0, 16 }, /* V */
2867 },
2868 .flags = AV_PIX_FMT_FLAG_PLANAR,
2869 },
2870 [AV_PIX_FMT_P416BE] = {
2871 .name = "p416be",
2872 .nb_components = 3,
2873 .log2_chroma_w = 0,
2874 .log2_chroma_h = 0,
2875 .comp = {
2876 { 0, 2, 0, 0, 16 }, /* Y */
2877 { 1, 4, 0, 0, 16 }, /* U */
2878 { 1, 4, 2, 0, 16 }, /* V */
2879 },
2880 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
2881 },
2882 [AV_PIX_FMT_P416LE] = {
2883 .name = "p416le",
2884 .nb_components = 3,
2885 .log2_chroma_w = 0,
2886 .log2_chroma_h = 0,
2887 .comp = {
2888 { 0, 2, 0, 0, 16 }, /* Y */
2889 { 1, 4, 0, 0, 16 }, /* U */
2890 { 1, 4, 2, 0, 16 }, /* V */
2891 },
2892 .flags = AV_PIX_FMT_FLAG_PLANAR,
2893 },
2894 [AV_PIX_FMT_VUYA] = {
2895 .name = "vuya",
2896 .nb_components = 4,
2897 .log2_chroma_w = 0,
2898 .log2_chroma_h = 0,
2899 .comp = {
2900 { 0, 4, 2, 0, 8 }, /* Y */
2901 { 0, 4, 1, 0, 8 }, /* U */
2902 { 0, 4, 0, 0, 8 }, /* V */
2903 { 0, 4, 3, 0, 8 }, /* A */
2904 },
2905 .flags = AV_PIX_FMT_FLAG_ALPHA,
2906 },
2907 [AV_PIX_FMT_VUYX] = {
2908 .name = "vuyx",
2909 .nb_components = 3,
2910 .log2_chroma_w = 0,
2911 .log2_chroma_h = 0,
2912 .comp = {
2913 { 0, 4, 2, 0, 8 }, /* Y */
2914 { 0, 4, 1, 0, 8 }, /* U */
2915 { 0, 4, 0, 0, 8 }, /* V */
2916 { 0, 4, 3, 0, 8 }, /* X */
2917 },
2918 },
2919 [AV_PIX_FMT_RGBF16BE] = {
2920 .name = "rgbf16be",
2921 .nb_components = 3,
2922 .log2_chroma_w = 0,
2923 .log2_chroma_h = 0,
2924 .comp = {
2925 { 0, 6, 0, 0, 16 }, /* R */
2926 { 0, 6, 2, 0, 16 }, /* G */
2927 { 0, 6, 4, 0, 16 }, /* B */
2928 },
2929 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
2930 AV_PIX_FMT_FLAG_FLOAT,
2931 },
2932 [AV_PIX_FMT_RGBF16LE] = {
2933 .name = "rgbf16le",
2934 .nb_components = 3,
2935 .log2_chroma_w = 0,
2936 .log2_chroma_h = 0,
2937 .comp = {
2938 { 0, 6, 0, 0, 16 }, /* R */
2939 { 0, 6, 2, 0, 16 }, /* G */
2940 { 0, 6, 4, 0, 16 }, /* B */
2941 },
2942 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT
2943 },
2944 [AV_PIX_FMT_RGBAF16BE] = {
2945 .name = "rgbaf16be",
2946 .nb_components = 4,
2947 .log2_chroma_w = 0,
2948 .log2_chroma_h = 0,
2949 .comp = {
2950 { 0, 8, 0, 0, 16 }, /* R */
2951 { 0, 8, 2, 0, 16 }, /* G */
2952 { 0, 8, 4, 0, 16 }, /* B */
2953 { 0, 8, 6, 0, 16 }, /* A */
2954 },
2955 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
2956 AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_FLOAT,
2957 },
2958 [AV_PIX_FMT_RGBAF16LE] = {
2959 .name = "rgbaf16le",
2960 .nb_components = 4,
2961 .log2_chroma_w = 0,
2962 .log2_chroma_h = 0,
2963 .comp = {
2964 { 0, 8, 0, 0, 16 }, /* R */
2965 { 0, 8, 2, 0, 16 }, /* G */
2966 { 0, 8, 4, 0, 16 }, /* B */
2967 { 0, 8, 6, 0, 16 }, /* A */
2968 },
2969 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA |
2970 AV_PIX_FMT_FLAG_FLOAT,
2971 },
2972 [AV_PIX_FMT_Y212LE] = {
2973 .name = "y212le",
2974 .nb_components = 3,
2975 .log2_chroma_w = 1,
2976 .log2_chroma_h = 0,
2977 .comp = {
2978 { 0, 4, 0, 4, 12 }, /* Y */
2979 { 0, 8, 2, 4, 12 }, /* U */
2980 { 0, 8, 6, 4, 12 }, /* V */
2981 },
2982 },
2983 [AV_PIX_FMT_Y212BE] = {
2984 .name = "y212be",
2985 .nb_components = 3,
2986 .log2_chroma_w = 1,
2987 .log2_chroma_h = 0,
2988 .comp = {
2989 { 0, 4, 0, 4, 12 }, /* Y */
2990 { 0, 8, 2, 4, 12 }, /* U */
2991 { 0, 8, 6, 4, 12 }, /* V */
2992 },
2993 .flags = AV_PIX_FMT_FLAG_BE,
2994 },
2995 [AV_PIX_FMT_XV30LE] = {
2996 .name = "xv30le",
2997 .nb_components= 3,
2998 .log2_chroma_w= 0,
2999 .log2_chroma_h= 0,
3000 .comp = {
3001 { 0, 4, 1, 2, 10 }, /* Y */
3002 { 0, 4, 0, 0, 10 }, /* U */
3003 { 0, 4, 2, 4, 10 }, /* V */
3004 { 0, 4, 3, 6, 2 }, /* X */
3005 },
3006 },
3007 [AV_PIX_FMT_XV30BE] = {
3008 .name = "xv30be",
3009 .nb_components= 3,
3010 .log2_chroma_w= 0,
3011 .log2_chroma_h= 0,
3012 .comp = {
3013 { 0, 32, 10, 0, 10 }, /* Y */
3014 { 0, 32, 0, 0, 10 }, /* U */
3015 { 0, 32, 20, 0, 10 }, /* V */
3016 { 0, 32, 30, 0, 2 }, /* X */
3017 },
3018 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_BITSTREAM,
3019 },
3020 [AV_PIX_FMT_XV36LE] = {
3021 .name = "xv36le",
3022 .nb_components= 3,
3023 .log2_chroma_w= 0,
3024 .log2_chroma_h= 0,
3025 .comp = {
3026 { 0, 8, 2, 4, 12 }, /* Y */
3027 { 0, 8, 0, 4, 12 }, /* U */
3028 { 0, 8, 4, 4, 12 }, /* V */
3029 { 0, 8, 6, 4, 12 }, /* X */
3030 },
3031 },
3032 [AV_PIX_FMT_XV36BE] = {
3033 .name = "xv36be",
3034 .nb_components= 3,
3035 .log2_chroma_w= 0,
3036 .log2_chroma_h= 0,
3037 .comp = {
3038 { 0, 8, 2, 4, 12 }, /* Y */
3039 { 0, 8, 0, 4, 12 }, /* U */
3040 { 0, 8, 4, 4, 12 }, /* V */
3041 { 0, 8, 6, 4, 12 }, /* X */
3042 },
3043 .flags = AV_PIX_FMT_FLAG_BE,
3044 },
3045 [AV_PIX_FMT_XV48LE] = {
3046 .name = "xv48le",
3047 .nb_components = 3,
3048 .log2_chroma_w = 0,
3049 .log2_chroma_h = 0,
3050 .comp = {
3051 { 0, 8, 2, 0, 16 }, /* Y */
3052 { 0, 8, 0, 0, 16 }, /* U */
3053 { 0, 8, 4, 0, 16 }, /* V */
3054 { 0, 8, 6, 0, 16 }, /* X */
3055 },
3056 },
3057 [AV_PIX_FMT_XV48BE] = {
3058 .name = "xv48be",
3059 .nb_components = 3,
3060 .log2_chroma_w = 0,
3061 .log2_chroma_h = 0,
3062 .comp = {
3063 { 0, 8, 2, 0, 16 }, /* Y */
3064 { 0, 8, 0, 0, 16 }, /* U */
3065 { 0, 8, 4, 0, 16 }, /* V */
3066 { 0, 8, 6, 0, 16 }, /* X */
3067 },
3068 .flags = AV_PIX_FMT_FLAG_BE,
3069 },
3070 [AV_PIX_FMT_V30XLE] = {
3071 .name = "v30xle",
3072 .nb_components = 3,
3073 .log2_chroma_w = 0,
3074 .log2_chroma_h = 0,
3075 .comp = {
3076 { 0, 4, 1, 4, 10 }, /* Y */
3077 { 0, 4, 0, 2, 10 }, /* U */
3078 { 0, 4, 2, 6, 10 }, /* V */
3079 { 0, 4, 0, 0, 2 }, /* X */
3080 },
3081 },
3082 [AV_PIX_FMT_V30XBE] = {
3083 .name = "v30xbe",
3084 .nb_components= 3,
3085 .log2_chroma_w= 0,
3086 .log2_chroma_h= 0,
3087 .comp = {
3088 { 0, 32, 12, 0, 10 }, /* Y */
3089 { 0, 32, 2, 0, 10 }, /* U */
3090 { 0, 32, 22, 0, 10 }, /* V */
3091 { 0, 32, 0, 0, 2 }, /* X */
3092 },
3093 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_BITSTREAM,
3094 },
3095 [AV_PIX_FMT_RGBF32BE] = {
3096 .name = "rgbf32be",
3097 .nb_components = 3,
3098 .log2_chroma_w = 0,
3099 .log2_chroma_h = 0,
3100 .comp = {
3101 { 0, 12, 0, 0, 32 }, /* R */
3102 { 0, 12, 4, 0, 32 }, /* G */
3103 { 0, 12, 8, 0, 32 }, /* B */
3104 },
3105 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
3106 AV_PIX_FMT_FLAG_FLOAT,
3107 },
3108 [AV_PIX_FMT_RGBF32LE] = {
3109 .name = "rgbf32le",
3110 .nb_components = 3,
3111 .log2_chroma_w = 0,
3112 .log2_chroma_h = 0,
3113 .comp = {
3114 { 0, 12, 0, 0, 32 }, /* R */
3115 { 0, 12, 4, 0, 32 }, /* G */
3116 { 0, 12, 8, 0, 32 }, /* B */
3117 },
3118 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT,
3119 },
3120 [AV_PIX_FMT_RGB96BE] = {
3121 .name = "rgb96be",
3122 .nb_components = 3,
3123 .log2_chroma_w = 0,
3124 .log2_chroma_h = 0,
3125 .comp = {
3126 { 0, 12, 0, 0, 32 }, /* R */
3127 { 0, 12, 4, 0, 32 }, /* G */
3128 { 0, 12, 8, 0, 32 }, /* B */
3129 },
3130 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
3131 },
3132 [AV_PIX_FMT_RGB96LE] = {
3133 .name = "rgb96le",
3134 .nb_components = 3,
3135 .log2_chroma_w = 0,
3136 .log2_chroma_h = 0,
3137 .comp = {
3138 { 0, 12, 0, 0, 32 }, /* R */
3139 { 0, 12, 4, 0, 32 }, /* G */
3140 { 0, 12, 8, 0, 32 }, /* B */
3141 },
3142 .flags = AV_PIX_FMT_FLAG_RGB,
3143 },
3144 [AV_PIX_FMT_RGBAF32BE] = {
3145 .name = "rgbaf32be",
3146 .nb_components = 4,
3147 .log2_chroma_w = 0,
3148 .log2_chroma_h = 0,
3149 .comp = {
3150 { 0, 16, 0, 0, 32 }, /* R */
3151 { 0, 16, 4, 0, 32 }, /* G */
3152 { 0, 16, 8, 0, 32 }, /* B */
3153 { 0, 16, 12, 0, 32 }, /* A */
3154 },
3155 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
3156 AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
3157 },
3158 [AV_PIX_FMT_RGBAF32LE] = {
3159 .name = "rgbaf32le",
3160 .nb_components = 4,
3161 .log2_chroma_w = 0,
3162 .log2_chroma_h = 0,
3163 .comp = {
3164 { 0, 16, 0, 0, 32 }, /* R */
3165 { 0, 16, 4, 0, 32 }, /* G */
3166 { 0, 16, 8, 0, 32 }, /* B */
3167 { 0, 16, 12, 0, 32 }, /* A */
3168 },
3169 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT |
3170 AV_PIX_FMT_FLAG_ALPHA,
3171 },
3172 [AV_PIX_FMT_RGBA128BE] = {
3173 .name = "rgba128be",
3174 .nb_components = 4,
3175 .log2_chroma_w = 0,
3176 .log2_chroma_h = 0,
3177 .comp = {
3178 { 0, 16, 0, 0, 32 }, /* R */
3179 { 0, 16, 4, 0, 32 }, /* G */
3180 { 0, 16, 8, 0, 32 }, /* B */
3181 { 0, 16, 12, 0, 32 }, /* A */
3182 },
3183 .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB |
3184 AV_PIX_FMT_FLAG_ALPHA,
3185 },
3186 [AV_PIX_FMT_RGBA128LE] = {
3187 .name = "rgba128le",
3188 .nb_components = 4,
3189 .log2_chroma_w = 0,
3190 .log2_chroma_h = 0,
3191 .comp = {
3192 { 0, 16, 0, 0, 32 }, /* R */
3193 { 0, 16, 4, 0, 32 }, /* G */
3194 { 0, 16, 8, 0, 32 }, /* B */
3195 { 0, 16, 12, 0, 32 }, /* A */
3196 },
3197 .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
3198 },
3199 [AV_PIX_FMT_P212BE] = {
3200 .name = "p212be",
3201 .nb_components = 3,
3202 .log2_chroma_w = 1,
3203 .log2_chroma_h = 0,
3204 .comp = {
3205 { 0, 2, 0, 4, 12 }, /* Y */
3206 { 1, 4, 0, 4, 12 }, /* U */
3207 { 1, 4, 2, 4, 12 }, /* V */
3208 },
3209 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
3210 },
3211 [AV_PIX_FMT_P212LE] = {
3212 .name = "p212le",
3213 .nb_components = 3,
3214 .log2_chroma_w = 1,
3215 .log2_chroma_h = 0,
3216 .comp = {
3217 { 0, 2, 0, 4, 12 }, /* Y */
3218 { 1, 4, 0, 4, 12 }, /* U */
3219 { 1, 4, 2, 4, 12 }, /* V */
3220 },
3221 .flags = AV_PIX_FMT_FLAG_PLANAR,
3222 },
3223 [AV_PIX_FMT_P412BE] = {
3224 .name = "p412be",
3225 .nb_components = 3,
3226 .log2_chroma_w = 0,
3227 .log2_chroma_h = 0,
3228 .comp = {
3229 { 0, 2, 0, 4, 12 }, /* Y */
3230 { 1, 4, 0, 4, 12 }, /* U */
3231 { 1, 4, 2, 4, 12 }, /* V */
3232 },
3233 .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
3234 },
3235 [AV_PIX_FMT_P412LE] = {
3236 .name = "p412le",
3237 .nb_components = 3,
3238 .log2_chroma_w = 0,
3239 .log2_chroma_h = 0,
3240 .comp = {
3241 { 0, 2, 0, 4, 12 }, /* Y */
3242 { 1, 4, 0, 4, 12 }, /* U */
3243 { 1, 4, 2, 4, 12 }, /* V */
3244 },
3245 .flags = AV_PIX_FMT_FLAG_PLANAR,
3246 },
3247 [AV_PIX_FMT_Y216LE] = {
3248 .name = "y216le",
3249 .nb_components = 3,
3250 .log2_chroma_w = 1,
3251 .log2_chroma_h = 0,
3252 .comp = {
3253 { 0, 4, 0, 0, 16 }, /* Y */
3254 { 0, 8, 2, 0, 16 }, /* U */
3255 { 0, 8, 6, 0, 16 }, /* V */
3256 },
3257 },
3258 [AV_PIX_FMT_Y216BE] = {
3259 .name = "y216be",
3260 .nb_components = 3,
3261 .log2_chroma_w = 1,
3262 .log2_chroma_h = 0,
3263 .comp = {
3264 { 0, 4, 0, 0, 16 }, /* Y */
3265 { 0, 8, 2, 0, 16 }, /* U */
3266 { 0, 8, 6, 0, 16 }, /* V */
3267 },
3268 .flags = AV_PIX_FMT_FLAG_BE,
3269 },
3270 [AV_PIX_FMT_OHCODEC] = {
3271 .name = "ohcodec",
3272 .flags = AV_PIX_FMT_FLAG_HWACCEL,
3273 },
3274 };
3275
3276 static const char * const color_range_names[] = {
3277 [AVCOL_RANGE_UNSPECIFIED] = "unknown",
3278 [AVCOL_RANGE_MPEG] = "tv",
3279 [AVCOL_RANGE_JPEG] = "pc",
3280 };
3281
3282 static const char * const color_primaries_names[AVCOL_PRI_NB] = {
3283 [AVCOL_PRI_RESERVED0] = "reserved",
3284 [AVCOL_PRI_BT709] = "bt709",
3285 [AVCOL_PRI_UNSPECIFIED] = "unknown",
3286 [AVCOL_PRI_RESERVED] = "reserved",
3287 [AVCOL_PRI_BT470M] = "bt470m",
3288 [AVCOL_PRI_BT470BG] = "bt470bg",
3289 [AVCOL_PRI_SMPTE170M] = "smpte170m",
3290 [AVCOL_PRI_SMPTE240M] = "smpte240m",
3291 [AVCOL_PRI_FILM] = "film",
3292 [AVCOL_PRI_BT2020] = "bt2020",
3293 [AVCOL_PRI_SMPTE428] = "smpte428",
3294 [AVCOL_PRI_SMPTE431] = "smpte431",
3295 [AVCOL_PRI_SMPTE432] = "smpte432",
3296 [AVCOL_PRI_EBU3213] = "ebu3213",
3297 };
3298
3299 static const char * const color_primaries_names_ext[AVCOL_PRI_EXT_NB -
3300 AVCOL_PRI_EXT_BASE] = {
3301 [AVCOL_PRI_V_GAMUT - AVCOL_PRI_EXT_BASE] = "vgamut",
3302 };
3303
3304 static const char * const color_transfer_names[] = {
3305 [AVCOL_TRC_RESERVED0] = "reserved",
3306 [AVCOL_TRC_BT709] = "bt709",
3307 [AVCOL_TRC_UNSPECIFIED] = "unknown",
3308 [AVCOL_TRC_RESERVED] = "reserved",
3309 [AVCOL_TRC_GAMMA22] = "bt470m",
3310 [AVCOL_TRC_GAMMA28] = "bt470bg",
3311 [AVCOL_TRC_SMPTE170M] = "smpte170m",
3312 [AVCOL_TRC_SMPTE240M] = "smpte240m",
3313 [AVCOL_TRC_LINEAR] = "linear",
3314 [AVCOL_TRC_LOG] = "log100",
3315 [AVCOL_TRC_LOG_SQRT] = "log316",
3316 [AVCOL_TRC_IEC61966_2_4] = "iec61966-2-4",
3317 [AVCOL_TRC_BT1361_ECG] = "bt1361e",
3318 [AVCOL_TRC_IEC61966_2_1] = "iec61966-2-1",
3319 [AVCOL_TRC_BT2020_10] = "bt2020-10",
3320 [AVCOL_TRC_BT2020_12] = "bt2020-12",
3321 [AVCOL_TRC_SMPTE2084] = "smpte2084",
3322 [AVCOL_TRC_SMPTE428] = "smpte428",
3323 [AVCOL_TRC_ARIB_STD_B67] = "arib-std-b67",
3324 };
3325
3326 static const char * const color_transfer_names_ext[] = {
3327 [AVCOL_TRC_V_LOG - AVCOL_TRC_EXT_BASE] = "vlog",
3328 };
3329
3330 static const char * const color_space_names[] = {
3331 [AVCOL_SPC_RGB] = "gbr",
3332 [AVCOL_SPC_BT709] = "bt709",
3333 [AVCOL_SPC_UNSPECIFIED] = "unknown",
3334 [AVCOL_SPC_RESERVED] = "reserved",
3335 [AVCOL_SPC_FCC] = "fcc",
3336 [AVCOL_SPC_BT470BG] = "bt470bg",
3337 [AVCOL_SPC_SMPTE170M] = "smpte170m",
3338 [AVCOL_SPC_SMPTE240M] = "smpte240m",
3339 [AVCOL_SPC_YCGCO] = "ycgco",
3340 [AVCOL_SPC_BT2020_NCL] = "bt2020nc",
3341 [AVCOL_SPC_BT2020_CL] = "bt2020c",
3342 [AVCOL_SPC_SMPTE2085] = "smpte2085",
3343 [AVCOL_SPC_CHROMA_DERIVED_NCL] = "chroma-derived-nc",
3344 [AVCOL_SPC_CHROMA_DERIVED_CL] = "chroma-derived-c",
3345 [AVCOL_SPC_ICTCP] = "ictcp",
3346 [AVCOL_SPC_IPT_C2] = "ipt-c2",
3347 [AVCOL_SPC_YCGCO_RE] = "ycgco-re",
3348 [AVCOL_SPC_YCGCO_RO] = "ycgco-ro",
3349 };
3350
3351 static const char * const chroma_location_names[] = {
3352 [AVCHROMA_LOC_UNSPECIFIED] = "unspecified",
3353 [AVCHROMA_LOC_LEFT] = "left",
3354 [AVCHROMA_LOC_CENTER] = "center",
3355 [AVCHROMA_LOC_TOPLEFT] = "topleft",
3356 [AVCHROMA_LOC_TOP] = "top",
3357 [AVCHROMA_LOC_BOTTOMLEFT] = "bottomleft",
3358 [AVCHROMA_LOC_BOTTOM] = "bottom",
3359 };
3360
3361 static const char * const alpha_mode_names[] = {
3362 [AVALPHA_MODE_UNSPECIFIED] = "unspecified",
3363 [AVALPHA_MODE_PREMULTIPLIED] = "premultiplied",
3364 [AVALPHA_MODE_STRAIGHT] = "straight",
3365 };
3366
3367 26663 static enum AVPixelFormat get_pix_fmt_internal(const char *name)
3368 {
3369 enum AVPixelFormat pix_fmt;
3370
3371
2/2
✓ Branch 0 taken 2812878 times.
✓ Branch 1 taken 1646 times.
2814524 for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++)
3372
1/2
✓ Branch 0 taken 2812878 times.
✗ Branch 1 not taken.
2812878 if (av_pix_fmt_descriptors[pix_fmt].name &&
3373
4/4
✓ Branch 0 taken 2787864 times.
✓ Branch 1 taken 25014 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 2787861 times.
5600742 (!strcmp(av_pix_fmt_descriptors[pix_fmt].name, name) ||
3374 2787864 av_match_name(name, av_pix_fmt_descriptors[pix_fmt].alias)))
3375 25017 return pix_fmt;
3376
3377 1646 return AV_PIX_FMT_NONE;
3378 }
3379
3380 303582 const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
3381 {
3382 303582 return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
3383
2/2
✓ Branch 0 taken 303580 times.
✓ Branch 1 taken 2 times.
303582 av_pix_fmt_descriptors[pix_fmt].name : NULL;
3384 }
3385
3386 #if HAVE_BIGENDIAN
3387 # define X_NE(be, le) be
3388 #else
3389 # define X_NE(be, le) le
3390 #endif
3391
3392 24445 enum AVPixelFormat av_get_pix_fmt(const char *name)
3393 {
3394 enum AVPixelFormat pix_fmt;
3395
3396
2/2
✓ Branch 0 taken 43 times.
✓ Branch 1 taken 24402 times.
24445 if (!strcmp(name, "rgb32"))
3397 43 name = X_NE("argb", "bgra");
3398
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 24402 times.
24402 else if (!strcmp(name, "bgr32"))
3399 ✗ name = X_NE("abgr", "rgba");
3400
3401 24445 pix_fmt = get_pix_fmt_internal(name);
3402
2/2
✓ Branch 0 taken 1644 times.
✓ Branch 1 taken 22801 times.
24445 if (pix_fmt == AV_PIX_FMT_NONE) {
3403 char name2[32];
3404
3405 1644 snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
3406 1644 pix_fmt = get_pix_fmt_internal(name2);
3407 }
3408
3409 24445 return pix_fmt;
3410 }
3411
3412 446042 int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
3413 {
3414 446042 int c, bits = 0;
3415 446042 int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
3416
3417
2/2
✓ Branch 0 taken 1435608 times.
✓ Branch 1 taken 446042 times.
1881650 for (c = 0; c < pixdesc->nb_components; c++) {
3418
4/4
✓ Branch 0 taken 1012083 times.
✓ Branch 1 taken 423525 times.
✓ Branch 2 taken 591498 times.
✓ Branch 3 taken 420585 times.
1435608 int s = c == 1 || c == 2 ? 0 : log2_pixels;
3419 1435608 bits += pixdesc->comp[c].depth << s;
3420 }
3421
3422 446042 return bits >> log2_pixels;
3423 }
3424
3425 2100 int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
3426 {
3427 2100 int c, bits = 0;
3428 2100 int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
3429 2100 int steps[4] = {0};
3430
3431
2/2
✓ Branch 0 taken 6430 times.
✓ Branch 1 taken 2100 times.
8530 for (c = 0; c < pixdesc->nb_components; c++) {
3432 6430 const AVComponentDescriptor *comp = &pixdesc->comp[c];
3433
4/4
✓ Branch 0 taken 4493 times.
✓ Branch 1 taken 1937 times.
✓ Branch 2 taken 2563 times.
✓ Branch 3 taken 1930 times.
6430 int s = c == 1 || c == 2 ? 0 : log2_pixels;
3434 6430 steps[comp->plane] = comp->step << s;
3435 }
3436
2/2
✓ Branch 0 taken 8400 times.
✓ Branch 1 taken 2100 times.
10500 for (c = 0; c < 4; c++)
3437 8400 bits += steps[c];
3438
3439
2/2
✓ Branch 0 taken 2000 times.
✓ Branch 1 taken 100 times.
2100 if(!(pixdesc->flags & AV_PIX_FMT_FLAG_BITSTREAM))
3440 2000 bits *= 8;
3441
3442 2100 return bits >> log2_pixels;
3443 }
3444
3445 ✗ char *av_get_pix_fmt_string(char *buf, int buf_size,
3446 enum AVPixelFormat pix_fmt)
3447 {
3448 /* print header */
3449 ✗ if (pix_fmt < 0) {
3450 ✗ snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
3451 } else {
3452 ✗ const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[pix_fmt];
3453 ✗ snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name,
3454 ✗ pixdesc->nb_components, av_get_bits_per_pixel(pixdesc));
3455 }
3456
3457 ✗ return buf;
3458 }
3459
3460 473297292 const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
3461 {
3462
4/4
✓ Branch 0 taken 472528756 times.
✓ Branch 1 taken 768536 times.
✓ Branch 2 taken 75650 times.
✓ Branch 3 taken 472453106 times.
473297292 if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB)
3463 844186 return NULL;
3464 472453106 return &av_pix_fmt_descriptors[pix_fmt];
3465 }
3466
3467 3654373 const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
3468 {
3469
2/2
✓ Branch 0 taken 13593 times.
✓ Branch 1 taken 3640780 times.
3654373 if (!prev)
3470 13593 return &av_pix_fmt_descriptors[0];
3471
2/2
✓ Branch 0 taken 3627195 times.
✓ Branch 1 taken 13585 times.
3640780 while (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1) {
3472 3627195 prev++;
3473
1/2
✓ Branch 0 taken 3627195 times.
✗ Branch 1 not taken.
3627195 if (prev->name)
3474 3627195 return prev;
3475 }
3476 13585 return NULL;
3477 }
3478
3479 5460644 enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
3480 {
3481
1/2
✓ Branch 0 taken 5460644 times.
✗ Branch 1 not taken.
5460644 if (desc < av_pix_fmt_descriptors ||
3482
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5460644 times.
5460644 desc >= av_pix_fmt_descriptors + FF_ARRAY_ELEMS(av_pix_fmt_descriptors))
3483 ✗ return AV_PIX_FMT_NONE;
3484
3485 5460644 return desc - av_pix_fmt_descriptors;
3486 }
3487
3488 143986 int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
3489 int *h_shift, int *v_shift)
3490 {
3491 143986 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
3492
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 143986 times.
143986 if (!desc)
3493 ✗ return AVERROR(ENOSYS);
3494 143986 *h_shift = desc->log2_chroma_w;
3495 143986 *v_shift = desc->log2_chroma_h;
3496
3497 143986 return 0;
3498 }
3499
3500 914978 int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
3501 {
3502 914978 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
3503 914978 int i, planes[4] = { 0 }, ret = 0;
3504
3505
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 914978 times.
914978 if (!desc)
3506 ✗ return AVERROR(EINVAL);
3507
3508
2/2
✓ Branch 0 taken 3037245 times.
✓ Branch 1 taken 914978 times.
3952223 for (i = 0; i < desc->nb_components; i++)
3509 3037245 planes[desc->comp[i].plane] = 1;
3510
2/2
✓ Branch 0 taken 3659912 times.
✓ Branch 1 taken 914978 times.
4574890 for (i = 0; i < FF_ARRAY_ELEMS(planes); i++)
3511 3659912 ret += planes[i];
3512 914978 return ret;
3513 }
3514
3515 1490 enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
3516 {
3517 1490 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
3518 char name[16];
3519 int i;
3520
3521
2/4
✓ Branch 0 taken 1490 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1490 times.
1490 if (!desc || strlen(desc->name) < 2)
3522 ✗ return AV_PIX_FMT_NONE;
3523 1490 av_strlcpy(name, desc->name, sizeof(name));
3524 1490 i = strlen(name) - 2;
3525
4/4
✓ Branch 0 taken 1215 times.
✓ Branch 1 taken 275 times.
✓ Branch 2 taken 916 times.
✓ Branch 3 taken 299 times.
1490 if (strcmp(name + i, "be") && strcmp(name + i, "le"))
3526 916 return AV_PIX_FMT_NONE;
3527
3528 574 name[i] ^= 'b' ^ 'l';
3529
3530 574 return get_pix_fmt_internal(name);
3531 }
3532
3533 #define FF_COLOR_NA -1
3534 #define FF_COLOR_RGB 0 /**< RGB color space */
3535 #define FF_COLOR_GRAY 1 /**< gray color space */
3536 #define FF_COLOR_YUV 2 /**< YUV color space. 16 <= Y <= 235, 16 <= U, V <= 240 */
3537 #define FF_COLOR_YUV_JPEG 3 /**< YUV color space. 0 <= Y <= 255, 0 <= U, V <= 255 */
3538 #define FF_COLOR_XYZ 4
3539
3540 #define pixdesc_has_alpha(pixdesc) \
3541 ((pixdesc)->flags & AV_PIX_FMT_FLAG_ALPHA)
3542
3543
3544 9992 static int get_color_type(const AVPixFmtDescriptor *desc) {
3545
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 9970 times.
9992 if (desc->flags & AV_PIX_FMT_FLAG_PAL)
3546 22 return FF_COLOR_RGB;
3547
3548
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)
3549 1115 return FF_COLOR_GRAY;
3550
3551
1/2
✓ Branch 0 taken 8855 times.
✗ Branch 1 not taken.
8855 if (desc->name) {
3552
2/2
✓ Branch 1 taken 342 times.
✓ Branch 2 taken 8513 times.
8855 if (av_strstart(desc->name, "yuvj", NULL))
3553 342 return FF_COLOR_YUV_JPEG;
3554 }
3555
3556
2/2
✓ Branch 0 taken 2589 times.
✓ Branch 1 taken 5924 times.
8513 if(desc->flags & AV_PIX_FMT_FLAG_RGB)
3557 2589 return FF_COLOR_RGB;
3558
3559
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 5922 times.
5924 if(desc->flags & AV_PIX_FMT_FLAG_XYZ)
3560 2 return FF_COLOR_XYZ;
3561
3562
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5922 times.
5922 if(desc->nb_components == 0)
3563 ✗ return FF_COLOR_NA;
3564
3565 5922 return FF_COLOR_YUV;
3566 }
3567
3568 9992 static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
3569 {
3570 9992 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
3571 int i;
3572
3573
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) {
3574 ✗ *min = *max = 0;
3575 ✗ return AVERROR(EINVAL);
3576 }
3577
3578 9992 *min = INT_MAX, *max = -INT_MAX;
3579
2/2
✓ Branch 0 taken 29032 times.
✓ Branch 1 taken 9992 times.
39024 for (i = 0; i < desc->nb_components; i++) {
3580 29032 *min = FFMIN(desc->comp[i].depth, *min);
3581 29032 *max = FFMAX(desc->comp[i].depth, *max);
3582 }
3583 9992 return 0;
3584 }
3585
3586 5620 static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt,
3587 enum AVPixelFormat src_pix_fmt,
3588 unsigned *lossp, unsigned consider)
3589 {
3590 5620 const AVPixFmtDescriptor *src_desc = av_pix_fmt_desc_get(src_pix_fmt);
3591 5620 const AVPixFmtDescriptor *dst_desc = av_pix_fmt_desc_get(dst_pix_fmt);
3592 int src_color, dst_color;
3593 int src_min_depth, src_max_depth, dst_min_depth, dst_max_depth;
3594 int ret, loss, i, nb_components;
3595 5620 int score = INT_MAX - 1;
3596
3597
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)
3598 ✗ return -4;
3599
3600
2/2
✓ Branch 0 taken 5518 times.
✓ Branch 1 taken 102 times.
5620 if ((src_desc->flags & AV_PIX_FMT_FLAG_HWACCEL) ||
3601
2/2
✓ Branch 0 taken 166 times.
✓ Branch 1 taken 5352 times.
5518 (dst_desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
3602
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 265 times.
268 if (dst_pix_fmt == src_pix_fmt)
3603 3 return -1;
3604 else
3605 265 return -2;
3606 }
3607
3608 /* compute loss */
3609 5352 *lossp = loss = 0;
3610
3611
2/2
✓ Branch 0 taken 356 times.
✓ Branch 1 taken 4996 times.
5352 if (dst_pix_fmt == src_pix_fmt)
3612 356 return INT_MAX;
3613
3614
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)
3615 ✗ return -3;
3616
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)
3617 ✗ return -3;
3618
3619 4996 src_color = get_color_type(src_desc);
3620 4996 dst_color = get_color_type(dst_desc);
3621
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 4974 times.
4996 if (dst_pix_fmt == AV_PIX_FMT_PAL8)
3622 22 nb_components = FFMIN(src_desc->nb_components, 4);
3623 else
3624 4974 nb_components = FFMIN(src_desc->nb_components, dst_desc->nb_components);
3625
3626
2/2
✓ Branch 0 taken 13293 times.
✓ Branch 1 taken 4996 times.
18289 for (i = 0; i < nb_components; i++) {
3627
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);
3628 13293 int depth_delta = src_desc->comp[i].depth - 1 - depth_minus1;
3629
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)) {
3630 2243 loss |= FF_LOSS_DEPTH;
3631 2243 score -= 65536 >> depth_minus1;
3632
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)) {
3633 // Favour formats where bit depth exactly matches. If all other
3634 // scoring is equal, we'd rather use the bit depth that most closely
3635 // matches the source.
3636 3931 loss |= FF_LOSS_EXCESS_DEPTH;
3637 3931 score += depth_delta;
3638 }
3639 }
3640
3641
1/2
✓ Branch 0 taken 4996 times.
✗ Branch 1 not taken.
4996 if (consider & FF_LOSS_RESOLUTION) {
3642
2/2
✓ Branch 0 taken 1001 times.
✓ Branch 1 taken 3995 times.
4996 if (dst_desc->log2_chroma_w > src_desc->log2_chroma_w) {
3643 1001 loss |= FF_LOSS_RESOLUTION;
3644 1001 score -= 256 << dst_desc->log2_chroma_w;
3645 }
3646
2/2
✓ Branch 0 taken 803 times.
✓ Branch 1 taken 4193 times.
4996 if (dst_desc->log2_chroma_h > src_desc->log2_chroma_h) {
3647 803 loss |= FF_LOSS_RESOLUTION;
3648 803 score -= 256 << dst_desc->log2_chroma_h;
3649 }
3650 // don't favor 422 over 420 if downsampling is needed, because 420 has much better support on the decoder side
3651
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 &&
3652
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 ) {
3653 632 score += 512;
3654 }
3655 }
3656
3657
1/2
✓ Branch 0 taken 4996 times.
✗ Branch 1 not taken.
4996 if (consider & FF_LOSS_EXCESS_RESOLUTION) {
3658 // Favour formats where chroma subsampling exactly matches. If all other
3659 // scoring is equal, we'd rather use the subsampling that most closely
3660 // matches the source.
3661
2/2
✓ Branch 0 taken 1363 times.
✓ Branch 1 taken 3633 times.
4996 if (dst_desc->log2_chroma_w < src_desc->log2_chroma_w) {
3662 1363 loss |= FF_LOSS_EXCESS_RESOLUTION;
3663 1363 score -= 1 << (src_desc->log2_chroma_w - dst_desc->log2_chroma_w);
3664 }
3665
3666
2/2
✓ Branch 0 taken 1434 times.
✓ Branch 1 taken 3562 times.
4996 if (dst_desc->log2_chroma_h < src_desc->log2_chroma_h) {
3667 1434 loss |= FF_LOSS_EXCESS_RESOLUTION;
3668 1434 score -= 1 << (src_desc->log2_chroma_h - dst_desc->log2_chroma_h);
3669 }
3670
3671 // don't favour 411 over 420, because 420 has much better support on the
3672 // decoder side.
3673
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 &&
3674
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) {
3675 19 score += 4;
3676 }
3677 }
3678
3679
1/2
✓ Branch 0 taken 4996 times.
✗ Branch 1 not taken.
4996 if(consider & FF_LOSS_COLORSPACE)
3680
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) {
3681 1101 case FF_COLOR_RGB:
3682
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 &&
3683 src_color != FF_COLOR_GRAY)
3684 694 loss |= FF_LOSS_COLORSPACE;
3685 1101 break;
3686 827 case FF_COLOR_GRAY:
3687
2/2
✓ Branch 0 taken 683 times.
✓ Branch 1 taken 144 times.
827 if (src_color != FF_COLOR_GRAY)
3688 683 loss |= FF_LOSS_COLORSPACE;
3689 827 break;
3690 3012 case FF_COLOR_YUV:
3691
2/2
✓ Branch 0 taken 1079 times.
✓ Branch 1 taken 1933 times.
3012 if (src_color != FF_COLOR_YUV)
3692 1079 loss |= FF_LOSS_COLORSPACE;
3693 3012 break;
3694 54 case FF_COLOR_YUV_JPEG:
3695
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 &&
3696
1/2
✓ Branch 0 taken 38 times.
✗ Branch 1 not taken.
38 src_color != FF_COLOR_YUV &&
3697 src_color != FF_COLOR_GRAY)
3698 38 loss |= FF_LOSS_COLORSPACE;
3699 54 break;
3700 2 default:
3701 /* fail safe test */
3702
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 if (src_color != dst_color)
3703 2 loss |= FF_LOSS_COLORSPACE;
3704 2 break;
3705 }
3706
2/2
✓ Branch 0 taken 2496 times.
✓ Branch 1 taken 2500 times.
4996 if(loss & FF_LOSS_COLORSPACE)
3707
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);
3708
3709
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 &&
3710
1/2
✓ Branch 0 taken 683 times.
✗ Branch 1 not taken.
683 src_color != FF_COLOR_GRAY && (consider & FF_LOSS_CHROMA)) {
3711 683 loss |= FF_LOSS_CHROMA;
3712 683 score -= 2 * 65536;
3713 }
3714
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))) {
3715 154 loss |= FF_LOSS_ALPHA;
3716 154 score -= 65536;
3717 }
3718
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) &&
3719
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))))) {
3720 22 loss |= FF_LOSS_COLORQUANT;
3721 22 score -= 65536;
3722 }
3723
3724 4996 *lossp = loss;
3725 4996 return score;
3726 }
3727
3728 ✗ int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt,
3729 enum AVPixelFormat src_pix_fmt,
3730 int has_alpha)
3731 {
3732 int loss;
3733 ✗ int ret = get_pix_fmt_score(dst_pix_fmt, src_pix_fmt, &loss, has_alpha ? ~0 : ~FF_LOSS_ALPHA);
3734 ✗ if (ret < 0)
3735 ✗ return ret;
3736 ✗ return loss;
3737 }
3738
3739 3060 enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
3740 enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
3741 {
3742 enum AVPixelFormat dst_pix_fmt;
3743 int loss1, loss2, loss_mask;
3744 3060 const AVPixFmtDescriptor *desc1 = av_pix_fmt_desc_get(dst_pix_fmt1);
3745 3060 const AVPixFmtDescriptor *desc2 = av_pix_fmt_desc_get(dst_pix_fmt2);
3746 int score1, score2;
3747
3748
2/2
✓ Branch 0 taken 250 times.
✓ Branch 1 taken 2810 times.
3060 if (!desc1) {
3749 250 dst_pix_fmt = dst_pix_fmt2;
3750
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2810 times.
2810 } else if (!desc2) {
3751 ✗ dst_pix_fmt = dst_pix_fmt1;
3752 } else {
3753
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2810 times.
2810 loss_mask= loss_ptr?~*loss_ptr:~0; /* use loss mask if provided */
3754
2/2
✓ Branch 0 taken 2637 times.
✓ Branch 1 taken 173 times.
2810 if(!has_alpha)
3755 2637 loss_mask &= ~FF_LOSS_ALPHA;
3756
3757 2810 score1 = get_pix_fmt_score(dst_pix_fmt1, src_pix_fmt, &loss1, loss_mask);
3758 2810 score2 = get_pix_fmt_score(dst_pix_fmt2, src_pix_fmt, &loss2, loss_mask);
3759
3760
2/2
✓ Branch 0 taken 217 times.
✓ Branch 1 taken 2593 times.
2810 if (score1 == score2) {
3761
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)) {
3762
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;
3763 } else {
3764
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;
3765 }
3766 } else {
3767
2/2
✓ Branch 0 taken 512 times.
✓ Branch 1 taken 2081 times.
2593 dst_pix_fmt = score1 < score2 ? dst_pix_fmt2 : dst_pix_fmt1;
3768 }
3769 }
3770
3771
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3060 times.
3060 if (loss_ptr)
3772 ✗ *loss_ptr = av_get_pix_fmt_loss(dst_pix_fmt, src_pix_fmt, has_alpha);
3773 3060 return dst_pix_fmt;
3774 }
3775
3776 34883 const char *av_color_range_name(enum AVColorRange range)
3777 {
3778 return (unsigned) range < AVCOL_RANGE_NB ?
3779
1/2
✓ Branch 0 taken 34883 times.
✗ Branch 1 not taken.
34883 color_range_names[range] : NULL;
3780 }
3781
3782 2254 int av_color_range_from_name(const char *name)
3783 {
3784 int i;
3785
3786
1/2
✓ Branch 0 taken 4591 times.
✗ Branch 1 not taken.
4591 for (i = 0; i < FF_ARRAY_ELEMS(color_range_names); i++) {
3787
2/2
✓ Branch 0 taken 2254 times.
✓ Branch 1 taken 2337 times.
4591 if (!strcmp(name, color_range_names[i]))
3788 2254 return i;
3789 }
3790
3791 ✗ return AVERROR(EINVAL);
3792 }
3793
3794 4607 const char *av_color_primaries_name(enum AVColorPrimaries primaries)
3795 {
3796
2/2
✓ Branch 0 taken 4606 times.
✓ Branch 1 taken 1 times.
4607 if ((unsigned)primaries < AVCOL_PRI_NB)
3797 4606 return color_primaries_names[primaries];
3798
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) &&
3799 ((unsigned)primaries < AVCOL_PRI_EXT_NB))
3800 1 return color_primaries_names_ext[primaries - AVCOL_TRC_EXT_BASE];
3801 ✗ return NULL;
3802 }
3803
3804 14 int av_color_primaries_from_name(const char *name)
3805 {
3806 int i;
3807
3808
1/2
✓ Branch 0 taken 111 times.
✗ Branch 1 not taken.
111 for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names); i++) {
3809
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 102 times.
111 if (!color_primaries_names[i])
3810 9 continue;
3811
3812
2/2
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 88 times.
102 if (!strcmp(name, color_primaries_names[i]))
3813 14 return i;
3814 }
3815
3816 ✗ for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names_ext); i++) {
3817 ✗ if (!color_primaries_names_ext[i])
3818 ✗ continue;
3819
3820 ✗ if (!strcmp(name, color_primaries_names_ext[i]))
3821 ✗ return AVCOL_PRI_EXT_BASE + i;
3822 }
3823
3824 ✗ return AVERROR(EINVAL);
3825 }
3826
3827 4630 const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
3828 {
3829
2/2
✓ Branch 0 taken 4627 times.
✓ Branch 1 taken 3 times.
4630 if ((unsigned)transfer < AVCOL_TRC_NB)
3830 4627 return color_transfer_names[transfer];
3831
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) &&
3832 ((unsigned)transfer < AVCOL_TRC_EXT_NB))
3833 3 return color_transfer_names_ext[transfer - AVCOL_TRC_EXT_BASE];
3834 ✗ return NULL;
3835 }
3836
3837 19 int av_color_transfer_from_name(const char *name)
3838 {
3839 int i;
3840
3841
1/2
✓ Branch 0 taken 187 times.
✗ Branch 1 not taken.
187 for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names); i++) {
3842
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 187 times.
187 if (!color_transfer_names[i])
3843 ✗ continue;
3844
3845
2/2
✓ Branch 0 taken 19 times.
✓ Branch 1 taken 168 times.
187 if (!strcmp(name, color_transfer_names[i]))
3846 19 return i;
3847 }
3848
3849 ✗ for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names_ext); i++) {
3850 ✗ if (!color_transfer_names_ext[i])
3851 ✗ continue;
3852
3853 ✗ if (!strcmp(name, color_transfer_names_ext[i]))
3854 ✗ return AVCOL_TRC_EXT_BASE + i;
3855 }
3856
3857 ✗ return AVERROR(EINVAL);
3858 }
3859
3860 24061 const char *av_color_space_name(enum AVColorSpace space)
3861 {
3862 return (unsigned) space < AVCOL_SPC_NB ?
3863
1/2
✓ Branch 0 taken 24061 times.
✗ Branch 1 not taken.
24061 color_space_names[space] : NULL;
3864 }
3865
3866 38 int av_color_space_from_name(const char *name)
3867 {
3868 int i;
3869
3870
1/2
✓ Branch 0 taken 236 times.
✗ Branch 1 not taken.
236 for (i = 0; i < FF_ARRAY_ELEMS(color_space_names); i++) {
3871
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 236 times.
236 if (!color_space_names[i])
3872 ✗ continue;
3873
3874
2/2
✓ Branch 0 taken 38 times.
✓ Branch 1 taken 198 times.
236 if (!strcmp(name, color_space_names[i]))
3875 38 return i;
3876 }
3877
3878 ✗ return AVERROR(EINVAL);
3879 }
3880
3881 1032 const char *av_chroma_location_name(enum AVChromaLocation location)
3882 {
3883 return (unsigned) location < AVCHROMA_LOC_NB ?
3884
1/2
✓ Branch 0 taken 1032 times.
✗ Branch 1 not taken.
1032 chroma_location_names[location] : NULL;
3885 }
3886
3887 7 int av_chroma_location_from_name(const char *name)
3888 {
3889 int i;
3890
3891
1/2
✓ Branch 0 taken 28 times.
✗ Branch 1 not taken.
28 for (i = 0; i < FF_ARRAY_ELEMS(chroma_location_names); i++) {
3892
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 28 times.
28 if (!chroma_location_names[i])
3893 ✗ continue;
3894
3895
2/2
✓ Branch 0 taken 7 times.
✓ Branch 1 taken 21 times.
28 if (!strcmp(name, chroma_location_names[i]))
3896 7 return i;
3897 }
3898
3899 ✗ return AVERROR(EINVAL);
3900 }
3901
3902 79166 int av_chroma_location_enum_to_pos(int *xpos, int *ypos, enum AVChromaLocation pos)
3903 {
3904
2/4
✓ Branch 0 taken 79166 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 79166 times.
79166 if (pos <= AVCHROMA_LOC_UNSPECIFIED || pos >= AVCHROMA_LOC_NB)
3905 ✗ return AVERROR(EINVAL);
3906 79166 pos--;
3907
3908 79166 *xpos = (pos&1) * 128;
3909 79166 *ypos = ((pos>>1)^(pos<4)) * 128;
3910
3911 79166 return 0;
3912 }
3913
3914 56 enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos)
3915 {
3916 int pos, xout, yout;
3917
3918
1/2
✓ Branch 0 taken 109 times.
✗ Branch 1 not taken.
109 for (pos = AVCHROMA_LOC_UNSPECIFIED + 1; pos < AVCHROMA_LOC_NB; pos++) {
3919
5/6
✓ Branch 1 taken 109 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 74 times.
✓ Branch 4 taken 35 times.
✓ Branch 5 taken 56 times.
✓ Branch 6 taken 18 times.
109 if (av_chroma_location_enum_to_pos(&xout, &yout, pos) == 0 && xout == xpos && yout == ypos)
3920 56 return pos;
3921 }
3922 ✗ return AVCHROMA_LOC_UNSPECIFIED;
3923 }
3924
3925 6937 const char *av_alpha_mode_name(enum AVAlphaMode mode)
3926 {
3927 return (unsigned) mode < AVALPHA_MODE_NB ?
3928
1/2
✓ Branch 0 taken 6937 times.
✗ Branch 1 not taken.
6937 alpha_mode_names[mode] : NULL;
3929 }
3930
3931 43 enum AVAlphaMode av_alpha_mode_from_name(const char *name)
3932 {
3933
1/2
✓ Branch 0 taken 114 times.
✗ Branch 1 not taken.
114 for (int i = 0; i < FF_ARRAY_ELEMS(alpha_mode_names); i++) {
3934
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 114 times.
114 if (!alpha_mode_names[i])
3935 ✗ continue;
3936
3937
2/2
✓ Branch 0 taken 43 times.
✓ Branch 1 taken 71 times.
114 if (!strcmp(name, alpha_mode_names[i]))
3938 43 return i;
3939 }
3940
3941 ✗ return AVERROR(EINVAL);
3942 }
3943