blob: d4a7a8ba3b1f998db0c6e0af5f69acb7ae4ae241
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 "avassert.h" |
26 | #include "avstring.h" |
27 | #include "common.h" |
28 | #include "pixfmt.h" |
29 | #include "pixdesc.h" |
30 | #include "internal.h" |
31 | #include "intreadwrite.h" |
32 | #include "version.h" |
33 | |
34 | void av_read_image_line(uint16_t *dst, |
35 | const uint8_t *data[4], const int linesize[4], |
36 | const AVPixFmtDescriptor *desc, |
37 | int x, int y, int c, int w, |
38 | int read_pal_component) |
39 | { |
40 | AVComponentDescriptor comp = desc->comp[c]; |
41 | int plane = comp.plane; |
42 | int depth = comp.depth; |
43 | int mask = (1 << depth) - 1; |
44 | int shift = comp.shift; |
45 | int step = comp.step; |
46 | int flags = desc->flags; |
47 | |
48 | if (flags & AV_PIX_FMT_FLAG_BITSTREAM) { |
49 | int skip = x * step + comp.offset; |
50 | const uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3); |
51 | int shift = 8 - depth - (skip & 7); |
52 | |
53 | while (w--) { |
54 | int val = (*p >> shift) & mask; |
55 | if (read_pal_component) |
56 | val = data[1][4*val + c]; |
57 | shift -= step; |
58 | p -= shift >> 3; |
59 | shift &= 7; |
60 | *dst++ = val; |
61 | } |
62 | } else { |
63 | const uint8_t *p = data[plane] + y * linesize[plane] + |
64 | x * step + comp.offset; |
65 | int is_8bit = shift + depth <= 8; |
66 | |
67 | if (is_8bit) |
68 | p += !!(flags & AV_PIX_FMT_FLAG_BE); |
69 | |
70 | while (w--) { |
71 | int val = is_8bit ? *p : |
72 | flags & AV_PIX_FMT_FLAG_BE ? AV_RB16(p) : AV_RL16(p); |
73 | val = (val >> shift) & mask; |
74 | if (read_pal_component) |
75 | val = data[1][4 * val + c]; |
76 | p += step; |
77 | *dst++ = val; |
78 | } |
79 | } |
80 | } |
81 | |
82 | void av_write_image_line(const uint16_t *src, |
83 | uint8_t *data[4], const int linesize[4], |
84 | const AVPixFmtDescriptor *desc, |
85 | int x, int y, int c, int w) |
86 | { |
87 | AVComponentDescriptor comp = desc->comp[c]; |
88 | int plane = comp.plane; |
89 | int depth = comp.depth; |
90 | int step = comp.step; |
91 | int flags = desc->flags; |
92 | |
93 | if (flags & AV_PIX_FMT_FLAG_BITSTREAM) { |
94 | int skip = x * step + comp.offset; |
95 | uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3); |
96 | int shift = 8 - depth - (skip & 7); |
97 | |
98 | while (w--) { |
99 | *p |= *src++ << shift; |
100 | shift -= step; |
101 | p -= shift >> 3; |
102 | shift &= 7; |
103 | } |
104 | } else { |
105 | int shift = comp.shift; |
106 | uint8_t *p = data[plane] + y * linesize[plane] + |
107 | x * step + comp.offset; |
108 | |
109 | if (shift + depth <= 8) { |
110 | p += !!(flags & AV_PIX_FMT_FLAG_BE); |
111 | while (w--) { |
112 | *p |= (*src++ << shift); |
113 | p += step; |
114 | } |
115 | } else { |
116 | while (w--) { |
117 | if (flags & AV_PIX_FMT_FLAG_BE) { |
118 | uint16_t val = AV_RB16(p) | (*src++ << shift); |
119 | AV_WB16(p, val); |
120 | } else { |
121 | uint16_t val = AV_RL16(p) | (*src++ << shift); |
122 | AV_WL16(p, val); |
123 | } |
124 | p += step; |
125 | } |
126 | } |
127 | } |
128 | } |
129 | |
130 | #if FF_API_PLUS1_MINUS1 |
131 | FF_DISABLE_DEPRECATION_WARNINGS |
132 | #endif |
133 | static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { |
134 | [AV_PIX_FMT_YUV420P] = { |
135 | .name = "yuv420p", |
136 | .nb_components = 3, |
137 | .log2_chroma_w = 1, |
138 | .log2_chroma_h = 1, |
139 | .comp = { |
140 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
141 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
142 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
143 | }, |
144 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
145 | }, |
146 | [AV_PIX_FMT_YUYV422] = { |
147 | .name = "yuyv422", |
148 | .nb_components = 3, |
149 | .log2_chroma_w = 1, |
150 | .log2_chroma_h = 0, |
151 | .comp = { |
152 | { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */ |
153 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* U */ |
154 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* V */ |
155 | }, |
156 | }, |
157 | [AV_PIX_FMT_YVYU422] = { |
158 | .name = "yvyu422", |
159 | .nb_components = 3, |
160 | .log2_chroma_w = 1, |
161 | .log2_chroma_h = 0, |
162 | .comp = { |
163 | { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */ |
164 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* U */ |
165 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* V */ |
166 | }, |
167 | }, |
168 | [AV_PIX_FMT_RGB24] = { |
169 | .name = "rgb24", |
170 | .nb_components = 3, |
171 | .log2_chroma_w = 0, |
172 | .log2_chroma_h = 0, |
173 | .comp = { |
174 | { 0, 3, 0, 0, 8, 2, 7, 1 }, /* R */ |
175 | { 0, 3, 1, 0, 8, 2, 7, 2 }, /* G */ |
176 | { 0, 3, 2, 0, 8, 2, 7, 3 }, /* B */ |
177 | }, |
178 | .flags = AV_PIX_FMT_FLAG_RGB, |
179 | }, |
180 | [AV_PIX_FMT_BGR24] = { |
181 | .name = "bgr24", |
182 | .nb_components = 3, |
183 | .log2_chroma_w = 0, |
184 | .log2_chroma_h = 0, |
185 | .comp = { |
186 | { 0, 3, 2, 0, 8, 2, 7, 3 }, /* R */ |
187 | { 0, 3, 1, 0, 8, 2, 7, 2 }, /* G */ |
188 | { 0, 3, 0, 0, 8, 2, 7, 1 }, /* B */ |
189 | }, |
190 | .flags = AV_PIX_FMT_FLAG_RGB, |
191 | }, |
192 | [AV_PIX_FMT_YUV422P] = { |
193 | .name = "yuv422p", |
194 | .nb_components = 3, |
195 | .log2_chroma_w = 1, |
196 | .log2_chroma_h = 0, |
197 | .comp = { |
198 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
199 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
200 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
201 | }, |
202 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
203 | }, |
204 | [AV_PIX_FMT_YUV444P] = { |
205 | .name = "yuv444p", |
206 | .nb_components = 3, |
207 | .log2_chroma_w = 0, |
208 | .log2_chroma_h = 0, |
209 | .comp = { |
210 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
211 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
212 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
213 | }, |
214 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
215 | }, |
216 | [AV_PIX_FMT_YUV410P] = { |
217 | .name = "yuv410p", |
218 | .nb_components = 3, |
219 | .log2_chroma_w = 2, |
220 | .log2_chroma_h = 2, |
221 | .comp = { |
222 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
223 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
224 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
225 | }, |
226 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
227 | }, |
228 | [AV_PIX_FMT_YUV411P] = { |
229 | .name = "yuv411p", |
230 | .nb_components = 3, |
231 | .log2_chroma_w = 2, |
232 | .log2_chroma_h = 0, |
233 | .comp = { |
234 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
235 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
236 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
237 | }, |
238 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
239 | }, |
240 | [AV_PIX_FMT_YUVJ411P] = { |
241 | .name = "yuvj411p", |
242 | .nb_components = 3, |
243 | .log2_chroma_w = 2, |
244 | .log2_chroma_h = 0, |
245 | .comp = { |
246 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
247 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
248 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
249 | }, |
250 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
251 | }, |
252 | [AV_PIX_FMT_GRAY8] = { |
253 | .name = "gray", |
254 | .nb_components = 1, |
255 | .log2_chroma_w = 0, |
256 | .log2_chroma_h = 0, |
257 | .comp = { |
258 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
259 | }, |
260 | .flags = AV_PIX_FMT_FLAG_PSEUDOPAL, |
261 | .alias = "gray8,y8", |
262 | }, |
263 | [AV_PIX_FMT_MONOWHITE] = { |
264 | .name = "monow", |
265 | .nb_components = 1, |
266 | .log2_chroma_w = 0, |
267 | .log2_chroma_h = 0, |
268 | .comp = { |
269 | { 0, 1, 0, 0, 1, 0, 0, 1 }, /* Y */ |
270 | }, |
271 | .flags = AV_PIX_FMT_FLAG_BITSTREAM, |
272 | }, |
273 | [AV_PIX_FMT_MONOBLACK] = { |
274 | .name = "monob", |
275 | .nb_components = 1, |
276 | .log2_chroma_w = 0, |
277 | .log2_chroma_h = 0, |
278 | .comp = { |
279 | { 0, 1, 0, 7, 1, 0, 0, 1 }, /* Y */ |
280 | }, |
281 | .flags = AV_PIX_FMT_FLAG_BITSTREAM, |
282 | }, |
283 | [AV_PIX_FMT_PAL8] = { |
284 | .name = "pal8", |
285 | .nb_components = 1, |
286 | .log2_chroma_w = 0, |
287 | .log2_chroma_h = 0, |
288 | .comp = { |
289 | { 0, 1, 0, 0, 8, 0, 7, 1 }, |
290 | }, |
291 | .flags = AV_PIX_FMT_FLAG_PAL, |
292 | }, |
293 | [AV_PIX_FMT_YUVJ420P] = { |
294 | .name = "yuvj420p", |
295 | .nb_components = 3, |
296 | .log2_chroma_w = 1, |
297 | .log2_chroma_h = 1, |
298 | .comp = { |
299 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
300 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
301 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
302 | }, |
303 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
304 | }, |
305 | [AV_PIX_FMT_YUVJ422P] = { |
306 | .name = "yuvj422p", |
307 | .nb_components = 3, |
308 | .log2_chroma_w = 1, |
309 | .log2_chroma_h = 0, |
310 | .comp = { |
311 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
312 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
313 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
314 | }, |
315 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
316 | }, |
317 | [AV_PIX_FMT_YUVJ444P] = { |
318 | .name = "yuvj444p", |
319 | .nb_components = 3, |
320 | .log2_chroma_w = 0, |
321 | .log2_chroma_h = 0, |
322 | .comp = { |
323 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
324 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
325 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
326 | }, |
327 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
328 | }, |
329 | #if FF_API_XVMC |
330 | [AV_PIX_FMT_XVMC_MPEG2_MC] = { |
331 | .name = "xvmcmc", |
332 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
333 | }, |
334 | [AV_PIX_FMT_XVMC_MPEG2_IDCT] = { |
335 | .name = "xvmcidct", |
336 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
337 | }, |
338 | #endif /* FF_API_XVMC */ |
339 | #if !FF_API_XVMC |
340 | [AV_PIX_FMT_XVMC] = { |
341 | .name = "xvmc", |
342 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
343 | }, |
344 | #endif /* !FF_API_XVMC */ |
345 | [AV_PIX_FMT_UYVY422] = { |
346 | .name = "uyvy422", |
347 | .nb_components = 3, |
348 | .log2_chroma_w = 1, |
349 | .log2_chroma_h = 0, |
350 | .comp = { |
351 | { 0, 2, 1, 0, 8, 1, 7, 2 }, /* Y */ |
352 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* U */ |
353 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* V */ |
354 | }, |
355 | }, |
356 | [AV_PIX_FMT_UYYVYY411] = { |
357 | .name = "uyyvyy411", |
358 | .nb_components = 3, |
359 | .log2_chroma_w = 2, |
360 | .log2_chroma_h = 0, |
361 | .comp = { |
362 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* Y */ |
363 | { 0, 6, 0, 0, 8, 5, 7, 1 }, /* U */ |
364 | { 0, 6, 3, 0, 8, 5, 7, 4 }, /* V */ |
365 | }, |
366 | }, |
367 | [AV_PIX_FMT_BGR8] = { |
368 | .name = "bgr8", |
369 | .nb_components = 3, |
370 | .log2_chroma_w = 0, |
371 | .log2_chroma_h = 0, |
372 | .comp = { |
373 | { 0, 1, 0, 0, 3, 0, 2, 1 }, /* R */ |
374 | { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */ |
375 | { 0, 1, 0, 6, 2, 0, 1, 1 }, /* B */ |
376 | }, |
377 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL, |
378 | }, |
379 | [AV_PIX_FMT_BGR4] = { |
380 | .name = "bgr4", |
381 | .nb_components = 3, |
382 | .log2_chroma_w = 0, |
383 | .log2_chroma_h = 0, |
384 | .comp = { |
385 | { 0, 4, 3, 0, 1, 3, 0, 4 }, /* R */ |
386 | { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */ |
387 | { 0, 4, 0, 0, 1, 3, 0, 1 }, /* B */ |
388 | }, |
389 | .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB, |
390 | }, |
391 | [AV_PIX_FMT_BGR4_BYTE] = { |
392 | .name = "bgr4_byte", |
393 | .nb_components = 3, |
394 | .log2_chroma_w = 0, |
395 | .log2_chroma_h = 0, |
396 | .comp = { |
397 | { 0, 1, 0, 0, 1, 0, 0, 1 }, /* R */ |
398 | { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */ |
399 | { 0, 1, 0, 3, 1, 0, 0, 1 }, /* B */ |
400 | }, |
401 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL, |
402 | }, |
403 | [AV_PIX_FMT_RGB8] = { |
404 | .name = "rgb8", |
405 | .nb_components = 3, |
406 | .log2_chroma_w = 0, |
407 | .log2_chroma_h = 0, |
408 | .comp = { |
409 | { 0, 1, 0, 6, 2, 0, 1, 1 }, /* R */ |
410 | { 0, 1, 0, 3, 3, 0, 2, 1 }, /* G */ |
411 | { 0, 1, 0, 0, 3, 0, 2, 1 }, /* B */ |
412 | }, |
413 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL, |
414 | }, |
415 | [AV_PIX_FMT_RGB4] = { |
416 | .name = "rgb4", |
417 | .nb_components = 3, |
418 | .log2_chroma_w = 0, |
419 | .log2_chroma_h = 0, |
420 | .comp = { |
421 | { 0, 4, 0, 0, 1, 3, 0, 1 }, /* R */ |
422 | { 0, 4, 1, 0, 2, 3, 1, 2 }, /* G */ |
423 | { 0, 4, 3, 0, 1, 3, 0, 4 }, /* B */ |
424 | }, |
425 | .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB, |
426 | }, |
427 | [AV_PIX_FMT_RGB4_BYTE] = { |
428 | .name = "rgb4_byte", |
429 | .nb_components = 3, |
430 | .log2_chroma_w = 0, |
431 | .log2_chroma_h = 0, |
432 | .comp = { |
433 | { 0, 1, 0, 3, 1, 0, 0, 1 }, /* R */ |
434 | { 0, 1, 0, 1, 2, 0, 1, 1 }, /* G */ |
435 | { 0, 1, 0, 0, 1, 0, 0, 1 }, /* B */ |
436 | }, |
437 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL, |
438 | }, |
439 | [AV_PIX_FMT_NV12] = { |
440 | .name = "nv12", |
441 | .nb_components = 3, |
442 | .log2_chroma_w = 1, |
443 | .log2_chroma_h = 1, |
444 | .comp = { |
445 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
446 | { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */ |
447 | { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */ |
448 | }, |
449 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
450 | }, |
451 | [AV_PIX_FMT_NV21] = { |
452 | .name = "nv21", |
453 | .nb_components = 3, |
454 | .log2_chroma_w = 1, |
455 | .log2_chroma_h = 1, |
456 | .comp = { |
457 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
458 | { 1, 2, 1, 0, 8, 1, 7, 2 }, /* U */ |
459 | { 1, 2, 0, 0, 8, 1, 7, 1 }, /* V */ |
460 | }, |
461 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
462 | }, |
463 | [AV_PIX_FMT_ARGB] = { |
464 | .name = "argb", |
465 | .nb_components = 4, |
466 | .log2_chroma_w = 0, |
467 | .log2_chroma_h = 0, |
468 | .comp = { |
469 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* R */ |
470 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */ |
471 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* B */ |
472 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */ |
473 | }, |
474 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
475 | }, |
476 | [AV_PIX_FMT_RGBA] = { |
477 | .name = "rgba", |
478 | .nb_components = 4, |
479 | .log2_chroma_w = 0, |
480 | .log2_chroma_h = 0, |
481 | .comp = { |
482 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* R */ |
483 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */ |
484 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* B */ |
485 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */ |
486 | }, |
487 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
488 | }, |
489 | [AV_PIX_FMT_ABGR] = { |
490 | .name = "abgr", |
491 | .nb_components = 4, |
492 | .log2_chroma_w = 0, |
493 | .log2_chroma_h = 0, |
494 | .comp = { |
495 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* R */ |
496 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */ |
497 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* B */ |
498 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* A */ |
499 | }, |
500 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
501 | }, |
502 | [AV_PIX_FMT_BGRA] = { |
503 | .name = "bgra", |
504 | .nb_components = 4, |
505 | .log2_chroma_w = 0, |
506 | .log2_chroma_h = 0, |
507 | .comp = { |
508 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* R */ |
509 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */ |
510 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* B */ |
511 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* A */ |
512 | }, |
513 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
514 | }, |
515 | [AV_PIX_FMT_0RGB] = { |
516 | .name = "0rgb", |
517 | .nb_components= 3, |
518 | .log2_chroma_w= 0, |
519 | .log2_chroma_h= 0, |
520 | .comp = { |
521 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* R */ |
522 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */ |
523 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* B */ |
524 | }, |
525 | .flags = AV_PIX_FMT_FLAG_RGB, |
526 | }, |
527 | [AV_PIX_FMT_RGB0] = { |
528 | .name = "rgb0", |
529 | .nb_components= 3, |
530 | .log2_chroma_w= 0, |
531 | .log2_chroma_h= 0, |
532 | .comp = { |
533 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* R */ |
534 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */ |
535 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* B */ |
536 | }, |
537 | .flags = AV_PIX_FMT_FLAG_RGB, |
538 | }, |
539 | [AV_PIX_FMT_0BGR] = { |
540 | .name = "0bgr", |
541 | .nb_components= 3, |
542 | .log2_chroma_w= 0, |
543 | .log2_chroma_h= 0, |
544 | .comp = { |
545 | { 0, 4, 3, 0, 8, 3, 7, 4 }, /* R */ |
546 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* G */ |
547 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* B */ |
548 | }, |
549 | .flags = AV_PIX_FMT_FLAG_RGB, |
550 | }, |
551 | [AV_PIX_FMT_BGR0] = { |
552 | .name = "bgr0", |
553 | .nb_components= 3, |
554 | .log2_chroma_w= 0, |
555 | .log2_chroma_h= 0, |
556 | .comp = { |
557 | { 0, 4, 2, 0, 8, 3, 7, 3 }, /* R */ |
558 | { 0, 4, 1, 0, 8, 3, 7, 2 }, /* G */ |
559 | { 0, 4, 0, 0, 8, 3, 7, 1 }, /* B */ |
560 | }, |
561 | .flags = AV_PIX_FMT_FLAG_RGB, |
562 | }, |
563 | [AV_PIX_FMT_GRAY10BE] = { |
564 | .name = "gray10be", |
565 | .nb_components = 1, |
566 | .log2_chroma_w = 0, |
567 | .log2_chroma_h = 0, |
568 | .comp = { |
569 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
570 | }, |
571 | .flags = AV_PIX_FMT_FLAG_BE, |
572 | .alias = "y10be", |
573 | }, |
574 | [AV_PIX_FMT_GRAY10LE] = { |
575 | .name = "gray10le", |
576 | .nb_components = 1, |
577 | .log2_chroma_w = 0, |
578 | .log2_chroma_h = 0, |
579 | .comp = { |
580 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
581 | }, |
582 | .alias = "y10le", |
583 | }, |
584 | [AV_PIX_FMT_GRAY12BE] = { |
585 | .name = "gray12be", |
586 | .nb_components = 1, |
587 | .log2_chroma_w = 0, |
588 | .log2_chroma_h = 0, |
589 | .comp = { |
590 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
591 | }, |
592 | .flags = AV_PIX_FMT_FLAG_BE, |
593 | .alias = "y12be", |
594 | }, |
595 | [AV_PIX_FMT_GRAY12LE] = { |
596 | .name = "gray12le", |
597 | .nb_components = 1, |
598 | .log2_chroma_w = 0, |
599 | .log2_chroma_h = 0, |
600 | .comp = { |
601 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
602 | }, |
603 | .alias = "y12le", |
604 | }, |
605 | [AV_PIX_FMT_GRAY16BE] = { |
606 | .name = "gray16be", |
607 | .nb_components = 1, |
608 | .log2_chroma_w = 0, |
609 | .log2_chroma_h = 0, |
610 | .comp = { |
611 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
612 | }, |
613 | .flags = AV_PIX_FMT_FLAG_BE, |
614 | .alias = "y16be", |
615 | }, |
616 | [AV_PIX_FMT_GRAY16LE] = { |
617 | .name = "gray16le", |
618 | .nb_components = 1, |
619 | .log2_chroma_w = 0, |
620 | .log2_chroma_h = 0, |
621 | .comp = { |
622 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
623 | }, |
624 | .alias = "y16le", |
625 | }, |
626 | [AV_PIX_FMT_YUV440P] = { |
627 | .name = "yuv440p", |
628 | .nb_components = 3, |
629 | .log2_chroma_w = 0, |
630 | .log2_chroma_h = 1, |
631 | .comp = { |
632 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
633 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
634 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
635 | }, |
636 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
637 | }, |
638 | [AV_PIX_FMT_YUVJ440P] = { |
639 | .name = "yuvj440p", |
640 | .nb_components = 3, |
641 | .log2_chroma_w = 0, |
642 | .log2_chroma_h = 1, |
643 | .comp = { |
644 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
645 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
646 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
647 | }, |
648 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
649 | }, |
650 | [AV_PIX_FMT_YUV440P10LE] = { |
651 | .name = "yuv440p10le", |
652 | .nb_components = 3, |
653 | .log2_chroma_w = 0, |
654 | .log2_chroma_h = 1, |
655 | .comp = { |
656 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
657 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
658 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
659 | }, |
660 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
661 | }, |
662 | [AV_PIX_FMT_YUV440P10BE] = { |
663 | .name = "yuv440p10be", |
664 | .nb_components = 3, |
665 | .log2_chroma_w = 0, |
666 | .log2_chroma_h = 1, |
667 | .comp = { |
668 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
669 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
670 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
671 | }, |
672 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
673 | }, |
674 | [AV_PIX_FMT_YUV440P12LE] = { |
675 | .name = "yuv440p12le", |
676 | .nb_components = 3, |
677 | .log2_chroma_w = 0, |
678 | .log2_chroma_h = 1, |
679 | .comp = { |
680 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
681 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
682 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
683 | }, |
684 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
685 | }, |
686 | [AV_PIX_FMT_YUV440P12BE] = { |
687 | .name = "yuv440p12be", |
688 | .nb_components = 3, |
689 | .log2_chroma_w = 0, |
690 | .log2_chroma_h = 1, |
691 | .comp = { |
692 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
693 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
694 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
695 | }, |
696 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
697 | }, |
698 | [AV_PIX_FMT_YUVA420P] = { |
699 | .name = "yuva420p", |
700 | .nb_components = 4, |
701 | .log2_chroma_w = 1, |
702 | .log2_chroma_h = 1, |
703 | .comp = { |
704 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
705 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
706 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
707 | { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */ |
708 | }, |
709 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
710 | }, |
711 | [AV_PIX_FMT_YUVA422P] = { |
712 | .name = "yuva422p", |
713 | .nb_components = 4, |
714 | .log2_chroma_w = 1, |
715 | .log2_chroma_h = 0, |
716 | .comp = { |
717 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
718 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
719 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
720 | { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */ |
721 | }, |
722 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
723 | }, |
724 | [AV_PIX_FMT_YUVA444P] = { |
725 | .name = "yuva444p", |
726 | .nb_components = 4, |
727 | .log2_chroma_w = 0, |
728 | .log2_chroma_h = 0, |
729 | .comp = { |
730 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
731 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* U */ |
732 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* V */ |
733 | { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */ |
734 | }, |
735 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
736 | }, |
737 | [AV_PIX_FMT_YUVA420P9BE] = { |
738 | .name = "yuva420p9be", |
739 | .nb_components = 4, |
740 | .log2_chroma_w = 1, |
741 | .log2_chroma_h = 1, |
742 | .comp = { |
743 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
744 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
745 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
746 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
747 | }, |
748 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
749 | }, |
750 | [AV_PIX_FMT_YUVA420P9LE] = { |
751 | .name = "yuva420p9le", |
752 | .nb_components = 4, |
753 | .log2_chroma_w = 1, |
754 | .log2_chroma_h = 1, |
755 | .comp = { |
756 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
757 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
758 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
759 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
760 | }, |
761 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
762 | }, |
763 | [AV_PIX_FMT_YUVA422P9BE] = { |
764 | .name = "yuva422p9be", |
765 | .nb_components = 4, |
766 | .log2_chroma_w = 1, |
767 | .log2_chroma_h = 0, |
768 | .comp = { |
769 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
770 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
771 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
772 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
773 | }, |
774 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
775 | }, |
776 | [AV_PIX_FMT_YUVA422P9LE] = { |
777 | .name = "yuva422p9le", |
778 | .nb_components = 4, |
779 | .log2_chroma_w = 1, |
780 | .log2_chroma_h = 0, |
781 | .comp = { |
782 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
783 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
784 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
785 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
786 | }, |
787 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
788 | }, |
789 | [AV_PIX_FMT_YUVA444P9BE] = { |
790 | .name = "yuva444p9be", |
791 | .nb_components = 4, |
792 | .log2_chroma_w = 0, |
793 | .log2_chroma_h = 0, |
794 | .comp = { |
795 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
796 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
797 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
798 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
799 | }, |
800 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
801 | }, |
802 | [AV_PIX_FMT_YUVA444P9LE] = { |
803 | .name = "yuva444p9le", |
804 | .nb_components = 4, |
805 | .log2_chroma_w = 0, |
806 | .log2_chroma_h = 0, |
807 | .comp = { |
808 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
809 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
810 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
811 | { 3, 2, 0, 0, 9, 1, 8, 1 }, /* A */ |
812 | }, |
813 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
814 | }, |
815 | [AV_PIX_FMT_YUVA420P10BE] = { |
816 | .name = "yuva420p10be", |
817 | .nb_components = 4, |
818 | .log2_chroma_w = 1, |
819 | .log2_chroma_h = 1, |
820 | .comp = { |
821 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
822 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
823 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
824 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
825 | }, |
826 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
827 | }, |
828 | [AV_PIX_FMT_YUVA420P10LE] = { |
829 | .name = "yuva420p10le", |
830 | .nb_components = 4, |
831 | .log2_chroma_w = 1, |
832 | .log2_chroma_h = 1, |
833 | .comp = { |
834 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
835 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
836 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
837 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
838 | }, |
839 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
840 | }, |
841 | [AV_PIX_FMT_YUVA422P10BE] = { |
842 | .name = "yuva422p10be", |
843 | .nb_components = 4, |
844 | .log2_chroma_w = 1, |
845 | .log2_chroma_h = 0, |
846 | .comp = { |
847 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
848 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
849 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
850 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
851 | }, |
852 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
853 | }, |
854 | [AV_PIX_FMT_YUVA422P10LE] = { |
855 | .name = "yuva422p10le", |
856 | .nb_components = 4, |
857 | .log2_chroma_w = 1, |
858 | .log2_chroma_h = 0, |
859 | .comp = { |
860 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
861 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
862 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
863 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
864 | }, |
865 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
866 | }, |
867 | [AV_PIX_FMT_YUVA444P10BE] = { |
868 | .name = "yuva444p10be", |
869 | .nb_components = 4, |
870 | .log2_chroma_w = 0, |
871 | .log2_chroma_h = 0, |
872 | .comp = { |
873 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
874 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
875 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
876 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
877 | }, |
878 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
879 | }, |
880 | [AV_PIX_FMT_YUVA444P10LE] = { |
881 | .name = "yuva444p10le", |
882 | .nb_components = 4, |
883 | .log2_chroma_w = 0, |
884 | .log2_chroma_h = 0, |
885 | .comp = { |
886 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
887 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
888 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
889 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
890 | }, |
891 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
892 | }, |
893 | [AV_PIX_FMT_YUVA420P16BE] = { |
894 | .name = "yuva420p16be", |
895 | .nb_components = 4, |
896 | .log2_chroma_w = 1, |
897 | .log2_chroma_h = 1, |
898 | .comp = { |
899 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
900 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
901 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
902 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
903 | }, |
904 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
905 | }, |
906 | [AV_PIX_FMT_YUVA420P16LE] = { |
907 | .name = "yuva420p16le", |
908 | .nb_components = 4, |
909 | .log2_chroma_w = 1, |
910 | .log2_chroma_h = 1, |
911 | .comp = { |
912 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
913 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
914 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
915 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
916 | }, |
917 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
918 | }, |
919 | [AV_PIX_FMT_YUVA422P16BE] = { |
920 | .name = "yuva422p16be", |
921 | .nb_components = 4, |
922 | .log2_chroma_w = 1, |
923 | .log2_chroma_h = 0, |
924 | .comp = { |
925 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
926 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
927 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
928 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
929 | }, |
930 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
931 | }, |
932 | [AV_PIX_FMT_YUVA422P16LE] = { |
933 | .name = "yuva422p16le", |
934 | .nb_components = 4, |
935 | .log2_chroma_w = 1, |
936 | .log2_chroma_h = 0, |
937 | .comp = { |
938 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
939 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
940 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
941 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
942 | }, |
943 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
944 | }, |
945 | [AV_PIX_FMT_YUVA444P16BE] = { |
946 | .name = "yuva444p16be", |
947 | .nb_components = 4, |
948 | .log2_chroma_w = 0, |
949 | .log2_chroma_h = 0, |
950 | .comp = { |
951 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
952 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
953 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
954 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
955 | }, |
956 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
957 | }, |
958 | [AV_PIX_FMT_YUVA444P16LE] = { |
959 | .name = "yuva444p16le", |
960 | .nb_components = 4, |
961 | .log2_chroma_w = 0, |
962 | .log2_chroma_h = 0, |
963 | .comp = { |
964 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
965 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
966 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
967 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
968 | }, |
969 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA, |
970 | }, |
971 | #if FF_API_VDPAU |
972 | [AV_PIX_FMT_VDPAU_H264] = { |
973 | .name = "vdpau_h264", |
974 | .log2_chroma_w = 1, |
975 | .log2_chroma_h = 1, |
976 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
977 | }, |
978 | [AV_PIX_FMT_VDPAU_MPEG1] = { |
979 | .name = "vdpau_mpeg1", |
980 | .log2_chroma_w = 1, |
981 | .log2_chroma_h = 1, |
982 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
983 | }, |
984 | [AV_PIX_FMT_VDPAU_MPEG2] = { |
985 | .name = "vdpau_mpeg2", |
986 | .log2_chroma_w = 1, |
987 | .log2_chroma_h = 1, |
988 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
989 | }, |
990 | [AV_PIX_FMT_VDPAU_WMV3] = { |
991 | .name = "vdpau_wmv3", |
992 | .log2_chroma_w = 1, |
993 | .log2_chroma_h = 1, |
994 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
995 | }, |
996 | [AV_PIX_FMT_VDPAU_VC1] = { |
997 | .name = "vdpau_vc1", |
998 | .log2_chroma_w = 1, |
999 | .log2_chroma_h = 1, |
1000 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1001 | }, |
1002 | [AV_PIX_FMT_VDPAU_MPEG4] = { |
1003 | .name = "vdpau_mpeg4", |
1004 | .log2_chroma_w = 1, |
1005 | .log2_chroma_h = 1, |
1006 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1007 | }, |
1008 | #endif |
1009 | [AV_PIX_FMT_RGB48BE] = { |
1010 | .name = "rgb48be", |
1011 | .nb_components = 3, |
1012 | .log2_chroma_w = 0, |
1013 | .log2_chroma_h = 0, |
1014 | .comp = { |
1015 | { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */ |
1016 | { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */ |
1017 | { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */ |
1018 | }, |
1019 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE, |
1020 | }, |
1021 | [AV_PIX_FMT_RGB48LE] = { |
1022 | .name = "rgb48le", |
1023 | .nb_components = 3, |
1024 | .log2_chroma_w = 0, |
1025 | .log2_chroma_h = 0, |
1026 | .comp = { |
1027 | { 0, 6, 0, 0, 16, 5, 15, 1 }, /* R */ |
1028 | { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */ |
1029 | { 0, 6, 4, 0, 16, 5, 15, 5 }, /* B */ |
1030 | }, |
1031 | .flags = AV_PIX_FMT_FLAG_RGB, |
1032 | }, |
1033 | [AV_PIX_FMT_RGBA64BE] = { |
1034 | .name = "rgba64be", |
1035 | .nb_components = 4, |
1036 | .log2_chroma_w = 0, |
1037 | .log2_chroma_h = 0, |
1038 | .comp = { |
1039 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */ |
1040 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */ |
1041 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */ |
1042 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */ |
1043 | }, |
1044 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
1045 | }, |
1046 | [AV_PIX_FMT_RGBA64LE] = { |
1047 | .name = "rgba64le", |
1048 | .nb_components = 4, |
1049 | .log2_chroma_w = 0, |
1050 | .log2_chroma_h = 0, |
1051 | .comp = { |
1052 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* R */ |
1053 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */ |
1054 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* B */ |
1055 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */ |
1056 | }, |
1057 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
1058 | }, |
1059 | [AV_PIX_FMT_RGB565BE] = { |
1060 | .name = "rgb565be", |
1061 | .nb_components = 3, |
1062 | .log2_chroma_w = 0, |
1063 | .log2_chroma_h = 0, |
1064 | .comp = { |
1065 | { 0, 2, -1, 3, 5, 1, 4, 0 }, /* R */ |
1066 | { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */ |
1067 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */ |
1068 | }, |
1069 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1070 | }, |
1071 | [AV_PIX_FMT_RGB565LE] = { |
1072 | .name = "rgb565le", |
1073 | .nb_components = 3, |
1074 | .log2_chroma_w = 0, |
1075 | .log2_chroma_h = 0, |
1076 | .comp = { |
1077 | { 0, 2, 1, 3, 5, 1, 4, 2 }, /* R */ |
1078 | { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */ |
1079 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */ |
1080 | }, |
1081 | .flags = AV_PIX_FMT_FLAG_RGB, |
1082 | }, |
1083 | [AV_PIX_FMT_RGB555BE] = { |
1084 | .name = "rgb555be", |
1085 | .nb_components = 3, |
1086 | .log2_chroma_w = 0, |
1087 | .log2_chroma_h = 0, |
1088 | .comp = { |
1089 | { 0, 2, -1, 2, 5, 1, 4, 0 }, /* R */ |
1090 | { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */ |
1091 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */ |
1092 | }, |
1093 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1094 | }, |
1095 | [AV_PIX_FMT_RGB555LE] = { |
1096 | .name = "rgb555le", |
1097 | .nb_components = 3, |
1098 | .log2_chroma_w = 0, |
1099 | .log2_chroma_h = 0, |
1100 | .comp = { |
1101 | { 0, 2, 1, 2, 5, 1, 4, 2 }, /* R */ |
1102 | { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */ |
1103 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* B */ |
1104 | }, |
1105 | .flags = AV_PIX_FMT_FLAG_RGB, |
1106 | }, |
1107 | [AV_PIX_FMT_RGB444BE] = { |
1108 | .name = "rgb444be", |
1109 | .nb_components = 3, |
1110 | .log2_chroma_w = 0, |
1111 | .log2_chroma_h = 0, |
1112 | .comp = { |
1113 | { 0, 2, -1, 0, 4, 1, 3, 0 }, /* R */ |
1114 | { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */ |
1115 | { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */ |
1116 | }, |
1117 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1118 | }, |
1119 | [AV_PIX_FMT_RGB444LE] = { |
1120 | .name = "rgb444le", |
1121 | .nb_components = 3, |
1122 | .log2_chroma_w = 0, |
1123 | .log2_chroma_h = 0, |
1124 | .comp = { |
1125 | { 0, 2, 1, 0, 4, 1, 3, 2 }, /* R */ |
1126 | { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */ |
1127 | { 0, 2, 0, 0, 4, 1, 3, 1 }, /* B */ |
1128 | }, |
1129 | .flags = AV_PIX_FMT_FLAG_RGB, |
1130 | }, |
1131 | [AV_PIX_FMT_BGR48BE] = { |
1132 | .name = "bgr48be", |
1133 | .nb_components = 3, |
1134 | .log2_chroma_w = 0, |
1135 | .log2_chroma_h = 0, |
1136 | .comp = { |
1137 | { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */ |
1138 | { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */ |
1139 | { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */ |
1140 | }, |
1141 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1142 | }, |
1143 | [AV_PIX_FMT_BGR48LE] = { |
1144 | .name = "bgr48le", |
1145 | .nb_components = 3, |
1146 | .log2_chroma_w = 0, |
1147 | .log2_chroma_h = 0, |
1148 | .comp = { |
1149 | { 0, 6, 4, 0, 16, 5, 15, 5 }, /* R */ |
1150 | { 0, 6, 2, 0, 16, 5, 15, 3 }, /* G */ |
1151 | { 0, 6, 0, 0, 16, 5, 15, 1 }, /* B */ |
1152 | }, |
1153 | .flags = AV_PIX_FMT_FLAG_RGB, |
1154 | }, |
1155 | [AV_PIX_FMT_BGRA64BE] = { |
1156 | .name = "bgra64be", |
1157 | .nb_components = 4, |
1158 | .log2_chroma_w = 0, |
1159 | .log2_chroma_h = 0, |
1160 | .comp = { |
1161 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */ |
1162 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */ |
1163 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */ |
1164 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */ |
1165 | }, |
1166 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
1167 | }, |
1168 | [AV_PIX_FMT_BGRA64LE] = { |
1169 | .name = "bgra64le", |
1170 | .nb_components = 4, |
1171 | .log2_chroma_w = 0, |
1172 | .log2_chroma_h = 0, |
1173 | .comp = { |
1174 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* R */ |
1175 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* G */ |
1176 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* B */ |
1177 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* A */ |
1178 | }, |
1179 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
1180 | }, |
1181 | [AV_PIX_FMT_BGR565BE] = { |
1182 | .name = "bgr565be", |
1183 | .nb_components = 3, |
1184 | .log2_chroma_w = 0, |
1185 | .log2_chroma_h = 0, |
1186 | .comp = { |
1187 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */ |
1188 | { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */ |
1189 | { 0, 2, -1, 3, 5, 1, 4, 0 }, /* B */ |
1190 | }, |
1191 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1192 | }, |
1193 | [AV_PIX_FMT_BGR565LE] = { |
1194 | .name = "bgr565le", |
1195 | .nb_components = 3, |
1196 | .log2_chroma_w = 0, |
1197 | .log2_chroma_h = 0, |
1198 | .comp = { |
1199 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */ |
1200 | { 0, 2, 0, 5, 6, 1, 5, 1 }, /* G */ |
1201 | { 0, 2, 1, 3, 5, 1, 4, 2 }, /* B */ |
1202 | }, |
1203 | .flags = AV_PIX_FMT_FLAG_RGB, |
1204 | }, |
1205 | [AV_PIX_FMT_BGR555BE] = { |
1206 | .name = "bgr555be", |
1207 | .nb_components = 3, |
1208 | .log2_chroma_w = 0, |
1209 | .log2_chroma_h = 0, |
1210 | .comp = { |
1211 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */ |
1212 | { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */ |
1213 | { 0, 2, -1, 2, 5, 1, 4, 0 }, /* B */ |
1214 | }, |
1215 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1216 | }, |
1217 | [AV_PIX_FMT_BGR555LE] = { |
1218 | .name = "bgr555le", |
1219 | .nb_components = 3, |
1220 | .log2_chroma_w = 0, |
1221 | .log2_chroma_h = 0, |
1222 | .comp = { |
1223 | { 0, 2, 0, 0, 5, 1, 4, 1 }, /* R */ |
1224 | { 0, 2, 0, 5, 5, 1, 4, 1 }, /* G */ |
1225 | { 0, 2, 1, 2, 5, 1, 4, 2 }, /* B */ |
1226 | }, |
1227 | .flags = AV_PIX_FMT_FLAG_RGB, |
1228 | }, |
1229 | [AV_PIX_FMT_BGR444BE] = { |
1230 | .name = "bgr444be", |
1231 | .nb_components = 3, |
1232 | .log2_chroma_w = 0, |
1233 | .log2_chroma_h = 0, |
1234 | .comp = { |
1235 | { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */ |
1236 | { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */ |
1237 | { 0, 2, -1, 0, 4, 1, 3, 0 }, /* B */ |
1238 | }, |
1239 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, |
1240 | }, |
1241 | [AV_PIX_FMT_BGR444LE] = { |
1242 | .name = "bgr444le", |
1243 | .nb_components = 3, |
1244 | .log2_chroma_w = 0, |
1245 | .log2_chroma_h = 0, |
1246 | .comp = { |
1247 | { 0, 2, 0, 0, 4, 1, 3, 1 }, /* R */ |
1248 | { 0, 2, 0, 4, 4, 1, 3, 1 }, /* G */ |
1249 | { 0, 2, 1, 0, 4, 1, 3, 2 }, /* B */ |
1250 | }, |
1251 | .flags = AV_PIX_FMT_FLAG_RGB, |
1252 | }, |
1253 | #if FF_API_VAAPI |
1254 | [AV_PIX_FMT_VAAPI_MOCO] = { |
1255 | .name = "vaapi_moco", |
1256 | .log2_chroma_w = 1, |
1257 | .log2_chroma_h = 1, |
1258 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1259 | }, |
1260 | [AV_PIX_FMT_VAAPI_IDCT] = { |
1261 | .name = "vaapi_idct", |
1262 | .log2_chroma_w = 1, |
1263 | .log2_chroma_h = 1, |
1264 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1265 | }, |
1266 | [AV_PIX_FMT_VAAPI_VLD] = { |
1267 | .name = "vaapi_vld", |
1268 | .log2_chroma_w = 1, |
1269 | .log2_chroma_h = 1, |
1270 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1271 | }, |
1272 | #else |
1273 | [AV_PIX_FMT_VAAPI] = { |
1274 | .name = "vaapi", |
1275 | .log2_chroma_w = 1, |
1276 | .log2_chroma_h = 1, |
1277 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1278 | }, |
1279 | #endif |
1280 | [AV_PIX_FMT_YUV420P9LE] = { |
1281 | .name = "yuv420p9le", |
1282 | .nb_components = 3, |
1283 | .log2_chroma_w = 1, |
1284 | .log2_chroma_h = 1, |
1285 | .comp = { |
1286 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1287 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1288 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1289 | }, |
1290 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1291 | }, |
1292 | [AV_PIX_FMT_YUV420P9BE] = { |
1293 | .name = "yuv420p9be", |
1294 | .nb_components = 3, |
1295 | .log2_chroma_w = 1, |
1296 | .log2_chroma_h = 1, |
1297 | .comp = { |
1298 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1299 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1300 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1301 | }, |
1302 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1303 | }, |
1304 | [AV_PIX_FMT_YUV420P10LE] = { |
1305 | .name = "yuv420p10le", |
1306 | .nb_components = 3, |
1307 | .log2_chroma_w = 1, |
1308 | .log2_chroma_h = 1, |
1309 | .comp = { |
1310 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1311 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1312 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1313 | }, |
1314 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1315 | }, |
1316 | [AV_PIX_FMT_YUV420P10BE] = { |
1317 | .name = "yuv420p10be", |
1318 | .nb_components = 3, |
1319 | .log2_chroma_w = 1, |
1320 | .log2_chroma_h = 1, |
1321 | .comp = { |
1322 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1323 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1324 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1325 | }, |
1326 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1327 | }, |
1328 | [AV_PIX_FMT_YUV420P12LE] = { |
1329 | .name = "yuv420p12le", |
1330 | .nb_components = 3, |
1331 | .log2_chroma_w = 1, |
1332 | .log2_chroma_h = 1, |
1333 | .comp = { |
1334 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1335 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1336 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1337 | }, |
1338 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1339 | }, |
1340 | [AV_PIX_FMT_YUV420P12BE] = { |
1341 | .name = "yuv420p12be", |
1342 | .nb_components = 3, |
1343 | .log2_chroma_w = 1, |
1344 | .log2_chroma_h = 1, |
1345 | .comp = { |
1346 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1347 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1348 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1349 | }, |
1350 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1351 | }, |
1352 | [AV_PIX_FMT_YUV420P14LE] = { |
1353 | .name = "yuv420p14le", |
1354 | .nb_components = 3, |
1355 | .log2_chroma_w = 1, |
1356 | .log2_chroma_h = 1, |
1357 | .comp = { |
1358 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1359 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1360 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1361 | }, |
1362 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1363 | }, |
1364 | [AV_PIX_FMT_YUV420P14BE] = { |
1365 | .name = "yuv420p14be", |
1366 | .nb_components = 3, |
1367 | .log2_chroma_w = 1, |
1368 | .log2_chroma_h = 1, |
1369 | .comp = { |
1370 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1371 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1372 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1373 | }, |
1374 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1375 | }, |
1376 | [AV_PIX_FMT_YUV420P16LE] = { |
1377 | .name = "yuv420p16le", |
1378 | .nb_components = 3, |
1379 | .log2_chroma_w = 1, |
1380 | .log2_chroma_h = 1, |
1381 | .comp = { |
1382 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1383 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1384 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1385 | }, |
1386 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1387 | }, |
1388 | [AV_PIX_FMT_YUV420P16BE] = { |
1389 | .name = "yuv420p16be", |
1390 | .nb_components = 3, |
1391 | .log2_chroma_w = 1, |
1392 | .log2_chroma_h = 1, |
1393 | .comp = { |
1394 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1395 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1396 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1397 | }, |
1398 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1399 | }, |
1400 | [AV_PIX_FMT_YUV422P9LE] = { |
1401 | .name = "yuv422p9le", |
1402 | .nb_components = 3, |
1403 | .log2_chroma_w = 1, |
1404 | .log2_chroma_h = 0, |
1405 | .comp = { |
1406 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1407 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1408 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1409 | }, |
1410 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1411 | }, |
1412 | [AV_PIX_FMT_YUV422P9BE] = { |
1413 | .name = "yuv422p9be", |
1414 | .nb_components = 3, |
1415 | .log2_chroma_w = 1, |
1416 | .log2_chroma_h = 0, |
1417 | .comp = { |
1418 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1419 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1420 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1421 | }, |
1422 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1423 | }, |
1424 | [AV_PIX_FMT_YUV422P10LE] = { |
1425 | .name = "yuv422p10le", |
1426 | .nb_components = 3, |
1427 | .log2_chroma_w = 1, |
1428 | .log2_chroma_h = 0, |
1429 | .comp = { |
1430 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1431 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1432 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1433 | }, |
1434 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1435 | }, |
1436 | [AV_PIX_FMT_YUV422P10BE] = { |
1437 | .name = "yuv422p10be", |
1438 | .nb_components = 3, |
1439 | .log2_chroma_w = 1, |
1440 | .log2_chroma_h = 0, |
1441 | .comp = { |
1442 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1443 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1444 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1445 | }, |
1446 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1447 | }, |
1448 | [AV_PIX_FMT_YUV422P12LE] = { |
1449 | .name = "yuv422p12le", |
1450 | .nb_components = 3, |
1451 | .log2_chroma_w = 1, |
1452 | .log2_chroma_h = 0, |
1453 | .comp = { |
1454 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1455 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1456 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1457 | }, |
1458 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1459 | }, |
1460 | [AV_PIX_FMT_YUV422P12BE] = { |
1461 | .name = "yuv422p12be", |
1462 | .nb_components = 3, |
1463 | .log2_chroma_w = 1, |
1464 | .log2_chroma_h = 0, |
1465 | .comp = { |
1466 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1467 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1468 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1469 | }, |
1470 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1471 | }, |
1472 | [AV_PIX_FMT_YUV422P14LE] = { |
1473 | .name = "yuv422p14le", |
1474 | .nb_components = 3, |
1475 | .log2_chroma_w = 1, |
1476 | .log2_chroma_h = 0, |
1477 | .comp = { |
1478 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1479 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1480 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1481 | }, |
1482 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1483 | }, |
1484 | [AV_PIX_FMT_YUV422P14BE] = { |
1485 | .name = "yuv422p14be", |
1486 | .nb_components = 3, |
1487 | .log2_chroma_w = 1, |
1488 | .log2_chroma_h = 0, |
1489 | .comp = { |
1490 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1491 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1492 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1493 | }, |
1494 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1495 | }, |
1496 | [AV_PIX_FMT_YUV422P16LE] = { |
1497 | .name = "yuv422p16le", |
1498 | .nb_components = 3, |
1499 | .log2_chroma_w = 1, |
1500 | .log2_chroma_h = 0, |
1501 | .comp = { |
1502 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1503 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1504 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1505 | }, |
1506 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1507 | }, |
1508 | [AV_PIX_FMT_YUV422P16BE] = { |
1509 | .name = "yuv422p16be", |
1510 | .nb_components = 3, |
1511 | .log2_chroma_w = 1, |
1512 | .log2_chroma_h = 0, |
1513 | .comp = { |
1514 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1515 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1516 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1517 | }, |
1518 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1519 | }, |
1520 | [AV_PIX_FMT_YUV444P16LE] = { |
1521 | .name = "yuv444p16le", |
1522 | .nb_components = 3, |
1523 | .log2_chroma_w = 0, |
1524 | .log2_chroma_h = 0, |
1525 | .comp = { |
1526 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1527 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1528 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1529 | }, |
1530 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1531 | }, |
1532 | [AV_PIX_FMT_YUV444P16BE] = { |
1533 | .name = "yuv444p16be", |
1534 | .nb_components = 3, |
1535 | .log2_chroma_w = 0, |
1536 | .log2_chroma_h = 0, |
1537 | .comp = { |
1538 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
1539 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* U */ |
1540 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* V */ |
1541 | }, |
1542 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1543 | }, |
1544 | [AV_PIX_FMT_YUV444P10LE] = { |
1545 | .name = "yuv444p10le", |
1546 | .nb_components = 3, |
1547 | .log2_chroma_w = 0, |
1548 | .log2_chroma_h = 0, |
1549 | .comp = { |
1550 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1551 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1552 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1553 | }, |
1554 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1555 | }, |
1556 | [AV_PIX_FMT_YUV444P10BE] = { |
1557 | .name = "yuv444p10be", |
1558 | .nb_components = 3, |
1559 | .log2_chroma_w = 0, |
1560 | .log2_chroma_h = 0, |
1561 | .comp = { |
1562 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1563 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* U */ |
1564 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* V */ |
1565 | }, |
1566 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1567 | }, |
1568 | [AV_PIX_FMT_YUV444P9LE] = { |
1569 | .name = "yuv444p9le", |
1570 | .nb_components = 3, |
1571 | .log2_chroma_w = 0, |
1572 | .log2_chroma_h = 0, |
1573 | .comp = { |
1574 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1575 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1576 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1577 | }, |
1578 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1579 | }, |
1580 | [AV_PIX_FMT_YUV444P9BE] = { |
1581 | .name = "yuv444p9be", |
1582 | .nb_components = 3, |
1583 | .log2_chroma_w = 0, |
1584 | .log2_chroma_h = 0, |
1585 | .comp = { |
1586 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* Y */ |
1587 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* U */ |
1588 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* V */ |
1589 | }, |
1590 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1591 | }, |
1592 | [AV_PIX_FMT_YUV444P12LE] = { |
1593 | .name = "yuv444p12le", |
1594 | .nb_components = 3, |
1595 | .log2_chroma_w = 0, |
1596 | .log2_chroma_h = 0, |
1597 | .comp = { |
1598 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1599 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1600 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1601 | }, |
1602 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1603 | }, |
1604 | [AV_PIX_FMT_YUV444P12BE] = { |
1605 | .name = "yuv444p12be", |
1606 | .nb_components = 3, |
1607 | .log2_chroma_w = 0, |
1608 | .log2_chroma_h = 0, |
1609 | .comp = { |
1610 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */ |
1611 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */ |
1612 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */ |
1613 | }, |
1614 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1615 | }, |
1616 | [AV_PIX_FMT_YUV444P14LE] = { |
1617 | .name = "yuv444p14le", |
1618 | .nb_components = 3, |
1619 | .log2_chroma_w = 0, |
1620 | .log2_chroma_h = 0, |
1621 | .comp = { |
1622 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1623 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1624 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1625 | }, |
1626 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1627 | }, |
1628 | [AV_PIX_FMT_YUV444P14BE] = { |
1629 | .name = "yuv444p14be", |
1630 | .nb_components = 3, |
1631 | .log2_chroma_w = 0, |
1632 | .log2_chroma_h = 0, |
1633 | .comp = { |
1634 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* Y */ |
1635 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* U */ |
1636 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* V */ |
1637 | }, |
1638 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, |
1639 | }, |
1640 | [AV_PIX_FMT_D3D11VA_VLD] = { |
1641 | .name = "d3d11va_vld", |
1642 | .log2_chroma_w = 1, |
1643 | .log2_chroma_h = 1, |
1644 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1645 | }, |
1646 | [AV_PIX_FMT_DXVA2_VLD] = { |
1647 | .name = "dxva2_vld", |
1648 | .log2_chroma_w = 1, |
1649 | .log2_chroma_h = 1, |
1650 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1651 | }, |
1652 | [AV_PIX_FMT_VDA_VLD] = { |
1653 | .name = "vda_vld", |
1654 | .log2_chroma_w = 1, |
1655 | .log2_chroma_h = 1, |
1656 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1657 | }, |
1658 | [AV_PIX_FMT_YA8] = { |
1659 | .name = "ya8", |
1660 | .nb_components = 2, |
1661 | .comp = { |
1662 | { 0, 2, 0, 0, 8, 1, 7, 1 }, /* Y */ |
1663 | { 0, 2, 1, 0, 8, 1, 7, 2 }, /* A */ |
1664 | }, |
1665 | .flags = AV_PIX_FMT_FLAG_ALPHA, |
1666 | .alias = "gray8a", |
1667 | }, |
1668 | [AV_PIX_FMT_YA16LE] = { |
1669 | .name = "ya16le", |
1670 | .nb_components = 2, |
1671 | .comp = { |
1672 | { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */ |
1673 | { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */ |
1674 | }, |
1675 | .flags = AV_PIX_FMT_FLAG_ALPHA, |
1676 | }, |
1677 | [AV_PIX_FMT_YA16BE] = { |
1678 | .name = "ya16be", |
1679 | .nb_components = 2, |
1680 | .comp = { |
1681 | { 0, 4, 0, 0, 16, 3, 15, 1 }, /* Y */ |
1682 | { 0, 4, 2, 0, 16, 3, 15, 3 }, /* A */ |
1683 | }, |
1684 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA, |
1685 | }, |
1686 | [AV_PIX_FMT_VIDEOTOOLBOX] = { |
1687 | .name = "videotoolbox_vld", |
1688 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1689 | }, |
1690 | [AV_PIX_FMT_GBRP] = { |
1691 | .name = "gbrp", |
1692 | .nb_components = 3, |
1693 | .log2_chroma_w = 0, |
1694 | .log2_chroma_h = 0, |
1695 | .comp = { |
1696 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */ |
1697 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */ |
1698 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */ |
1699 | }, |
1700 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1701 | }, |
1702 | [AV_PIX_FMT_GBRP9LE] = { |
1703 | .name = "gbrp9le", |
1704 | .nb_components = 3, |
1705 | .log2_chroma_w = 0, |
1706 | .log2_chroma_h = 0, |
1707 | .comp = { |
1708 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */ |
1709 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */ |
1710 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */ |
1711 | }, |
1712 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1713 | }, |
1714 | [AV_PIX_FMT_GBRP9BE] = { |
1715 | .name = "gbrp9be", |
1716 | .nb_components = 3, |
1717 | .log2_chroma_w = 0, |
1718 | .log2_chroma_h = 0, |
1719 | .comp = { |
1720 | { 2, 2, 0, 0, 9, 1, 8, 1 }, /* R */ |
1721 | { 0, 2, 0, 0, 9, 1, 8, 1 }, /* G */ |
1722 | { 1, 2, 0, 0, 9, 1, 8, 1 }, /* B */ |
1723 | }, |
1724 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1725 | }, |
1726 | [AV_PIX_FMT_GBRP10LE] = { |
1727 | .name = "gbrp10le", |
1728 | .nb_components = 3, |
1729 | .log2_chroma_w = 0, |
1730 | .log2_chroma_h = 0, |
1731 | .comp = { |
1732 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */ |
1733 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */ |
1734 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */ |
1735 | }, |
1736 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1737 | }, |
1738 | [AV_PIX_FMT_GBRP10BE] = { |
1739 | .name = "gbrp10be", |
1740 | .nb_components = 3, |
1741 | .log2_chroma_w = 0, |
1742 | .log2_chroma_h = 0, |
1743 | .comp = { |
1744 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */ |
1745 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */ |
1746 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */ |
1747 | }, |
1748 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1749 | }, |
1750 | [AV_PIX_FMT_GBRP12LE] = { |
1751 | .name = "gbrp12le", |
1752 | .nb_components = 3, |
1753 | .log2_chroma_w = 0, |
1754 | .log2_chroma_h = 0, |
1755 | .comp = { |
1756 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */ |
1757 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */ |
1758 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */ |
1759 | }, |
1760 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1761 | }, |
1762 | [AV_PIX_FMT_GBRP12BE] = { |
1763 | .name = "gbrp12be", |
1764 | .nb_components = 3, |
1765 | .log2_chroma_w = 0, |
1766 | .log2_chroma_h = 0, |
1767 | .comp = { |
1768 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */ |
1769 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */ |
1770 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */ |
1771 | }, |
1772 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1773 | }, |
1774 | [AV_PIX_FMT_GBRP14LE] = { |
1775 | .name = "gbrp14le", |
1776 | .nb_components = 3, |
1777 | .log2_chroma_w = 0, |
1778 | .log2_chroma_h = 0, |
1779 | .comp = { |
1780 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* R */ |
1781 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* G */ |
1782 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* B */ |
1783 | }, |
1784 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1785 | }, |
1786 | [AV_PIX_FMT_GBRP14BE] = { |
1787 | .name = "gbrp14be", |
1788 | .nb_components = 3, |
1789 | .log2_chroma_w = 0, |
1790 | .log2_chroma_h = 0, |
1791 | .comp = { |
1792 | { 2, 2, 0, 0, 14, 1, 13, 1 }, /* R */ |
1793 | { 0, 2, 0, 0, 14, 1, 13, 1 }, /* G */ |
1794 | { 1, 2, 0, 0, 14, 1, 13, 1 }, /* B */ |
1795 | }, |
1796 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1797 | }, |
1798 | [AV_PIX_FMT_GBRP16LE] = { |
1799 | .name = "gbrp16le", |
1800 | .nb_components = 3, |
1801 | .log2_chroma_w = 0, |
1802 | .log2_chroma_h = 0, |
1803 | .comp = { |
1804 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */ |
1805 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */ |
1806 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */ |
1807 | }, |
1808 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1809 | }, |
1810 | [AV_PIX_FMT_GBRP16BE] = { |
1811 | .name = "gbrp16be", |
1812 | .nb_components = 3, |
1813 | .log2_chroma_w = 0, |
1814 | .log2_chroma_h = 0, |
1815 | .comp = { |
1816 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */ |
1817 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */ |
1818 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */ |
1819 | }, |
1820 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, |
1821 | }, |
1822 | [AV_PIX_FMT_GBRAP] = { |
1823 | .name = "gbrap", |
1824 | .nb_components = 4, |
1825 | .log2_chroma_w = 0, |
1826 | .log2_chroma_h = 0, |
1827 | .comp = { |
1828 | { 2, 1, 0, 0, 8, 0, 7, 1 }, /* R */ |
1829 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* G */ |
1830 | { 1, 1, 0, 0, 8, 0, 7, 1 }, /* B */ |
1831 | { 3, 1, 0, 0, 8, 0, 7, 1 }, /* A */ |
1832 | }, |
1833 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | |
1834 | AV_PIX_FMT_FLAG_ALPHA, |
1835 | }, |
1836 | [AV_PIX_FMT_GBRAP16LE] = { |
1837 | .name = "gbrap16le", |
1838 | .nb_components = 4, |
1839 | .log2_chroma_w = 0, |
1840 | .log2_chroma_h = 0, |
1841 | .comp = { |
1842 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */ |
1843 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */ |
1844 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */ |
1845 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
1846 | }, |
1847 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | |
1848 | AV_PIX_FMT_FLAG_ALPHA, |
1849 | }, |
1850 | [AV_PIX_FMT_GBRAP16BE] = { |
1851 | .name = "gbrap16be", |
1852 | .nb_components = 4, |
1853 | .log2_chroma_w = 0, |
1854 | .log2_chroma_h = 0, |
1855 | .comp = { |
1856 | { 2, 2, 0, 0, 16, 1, 15, 1 }, /* R */ |
1857 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* G */ |
1858 | { 1, 2, 0, 0, 16, 1, 15, 1 }, /* B */ |
1859 | { 3, 2, 0, 0, 16, 1, 15, 1 }, /* A */ |
1860 | }, |
1861 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | |
1862 | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
1863 | }, |
1864 | [AV_PIX_FMT_VDPAU] = { |
1865 | .name = "vdpau", |
1866 | .log2_chroma_w = 1, |
1867 | .log2_chroma_h = 1, |
1868 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
1869 | }, |
1870 | [AV_PIX_FMT_XYZ12LE] = { |
1871 | .name = "xyz12le", |
1872 | .nb_components = 3, |
1873 | .log2_chroma_w = 0, |
1874 | .log2_chroma_h = 0, |
1875 | .comp = { |
1876 | { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */ |
1877 | { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */ |
1878 | { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */ |
1879 | }, |
1880 | /*.flags = -- not used*/ |
1881 | }, |
1882 | [AV_PIX_FMT_XYZ12BE] = { |
1883 | .name = "xyz12be", |
1884 | .nb_components = 3, |
1885 | .log2_chroma_w = 0, |
1886 | .log2_chroma_h = 0, |
1887 | .comp = { |
1888 | { 0, 6, 0, 4, 12, 5, 11, 1 }, /* X */ |
1889 | { 0, 6, 2, 4, 12, 5, 11, 3 }, /* Y */ |
1890 | { 0, 6, 4, 4, 12, 5, 11, 5 }, /* Z */ |
1891 | }, |
1892 | .flags = AV_PIX_FMT_FLAG_BE, |
1893 | }, |
1894 | |
1895 | #define BAYER8_DESC_COMMON \ |
1896 | .nb_components= 3, \ |
1897 | .log2_chroma_w= 0, \ |
1898 | .log2_chroma_h= 0, \ |
1899 | .comp = { \ |
1900 | {0,1,0,0,2,0,1,1},\ |
1901 | {0,1,0,0,4,0,3,1},\ |
1902 | {0,1,0,0,2,0,1,1},\ |
1903 | }, \ |
1904 | |
1905 | #define BAYER16_DESC_COMMON \ |
1906 | .nb_components= 3, \ |
1907 | .log2_chroma_w= 0, \ |
1908 | .log2_chroma_h= 0, \ |
1909 | .comp = { \ |
1910 | {0,2,0,0,4,1,3,1},\ |
1911 | {0,2,0,0,8,1,7,1},\ |
1912 | {0,2,0,0,4,1,3,1},\ |
1913 | }, \ |
1914 | |
1915 | [AV_PIX_FMT_BAYER_BGGR8] = { |
1916 | .name = "bayer_bggr8", |
1917 | BAYER8_DESC_COMMON |
1918 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1919 | }, |
1920 | [AV_PIX_FMT_BAYER_BGGR16LE] = { |
1921 | .name = "bayer_bggr16le", |
1922 | BAYER16_DESC_COMMON |
1923 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1924 | }, |
1925 | [AV_PIX_FMT_BAYER_BGGR16BE] = { |
1926 | .name = "bayer_bggr16be", |
1927 | BAYER16_DESC_COMMON |
1928 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1929 | }, |
1930 | [AV_PIX_FMT_BAYER_RGGB8] = { |
1931 | .name = "bayer_rggb8", |
1932 | BAYER8_DESC_COMMON |
1933 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1934 | }, |
1935 | [AV_PIX_FMT_BAYER_RGGB16LE] = { |
1936 | .name = "bayer_rggb16le", |
1937 | BAYER16_DESC_COMMON |
1938 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1939 | }, |
1940 | [AV_PIX_FMT_BAYER_RGGB16BE] = { |
1941 | .name = "bayer_rggb16be", |
1942 | BAYER16_DESC_COMMON |
1943 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1944 | }, |
1945 | [AV_PIX_FMT_BAYER_GBRG8] = { |
1946 | .name = "bayer_gbrg8", |
1947 | BAYER8_DESC_COMMON |
1948 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1949 | }, |
1950 | [AV_PIX_FMT_BAYER_GBRG16LE] = { |
1951 | .name = "bayer_gbrg16le", |
1952 | BAYER16_DESC_COMMON |
1953 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1954 | }, |
1955 | [AV_PIX_FMT_BAYER_GBRG16BE] = { |
1956 | .name = "bayer_gbrg16be", |
1957 | BAYER16_DESC_COMMON |
1958 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1959 | }, |
1960 | [AV_PIX_FMT_BAYER_GRBG8] = { |
1961 | .name = "bayer_grbg8", |
1962 | BAYER8_DESC_COMMON |
1963 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1964 | }, |
1965 | [AV_PIX_FMT_BAYER_GRBG16LE] = { |
1966 | .name = "bayer_grbg16le", |
1967 | BAYER16_DESC_COMMON |
1968 | .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1969 | }, |
1970 | [AV_PIX_FMT_BAYER_GRBG16BE] = { |
1971 | .name = "bayer_grbg16be", |
1972 | BAYER16_DESC_COMMON |
1973 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BAYER, |
1974 | }, |
1975 | [AV_PIX_FMT_NV16] = { |
1976 | .name = "nv16", |
1977 | .nb_components = 3, |
1978 | .log2_chroma_w = 1, |
1979 | .log2_chroma_h = 0, |
1980 | .comp = { |
1981 | { 0, 1, 0, 0, 8, 0, 7, 1 }, /* Y */ |
1982 | { 1, 2, 0, 0, 8, 1, 7, 1 }, /* U */ |
1983 | { 1, 2, 1, 0, 8, 1, 7, 2 }, /* V */ |
1984 | }, |
1985 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1986 | }, |
1987 | [AV_PIX_FMT_NV20LE] = { |
1988 | .name = "nv20le", |
1989 | .nb_components = 3, |
1990 | .log2_chroma_w = 1, |
1991 | .log2_chroma_h = 0, |
1992 | .comp = { |
1993 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
1994 | { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */ |
1995 | { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */ |
1996 | }, |
1997 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
1998 | }, |
1999 | [AV_PIX_FMT_NV20BE] = { |
2000 | .name = "nv20be", |
2001 | .nb_components = 3, |
2002 | .log2_chroma_w = 1, |
2003 | .log2_chroma_h = 0, |
2004 | .comp = { |
2005 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* Y */ |
2006 | { 1, 4, 0, 0, 10, 3, 9, 1 }, /* U */ |
2007 | { 1, 4, 2, 0, 10, 3, 9, 3 }, /* V */ |
2008 | }, |
2009 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE, |
2010 | }, |
2011 | [AV_PIX_FMT_VDA] = { |
2012 | .name = "vda", |
2013 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
2014 | }, |
2015 | [AV_PIX_FMT_QSV] = { |
2016 | .name = "qsv", |
2017 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
2018 | }, |
2019 | [AV_PIX_FMT_MEDIACODEC] = { |
2020 | .name = "mediacodec", |
2021 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
2022 | }, |
2023 | [AV_PIX_FMT_MMAL] = { |
2024 | .name = "mmal", |
2025 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
2026 | }, |
2027 | [AV_PIX_FMT_CUDA] = { |
2028 | .name = "cuda", |
2029 | .flags = AV_PIX_FMT_FLAG_HWACCEL, |
2030 | }, |
2031 | [AV_PIX_FMT_AYUV64LE] = { |
2032 | .name = "ayuv64le", |
2033 | .nb_components = 4, |
2034 | .log2_chroma_w = 0, |
2035 | .log2_chroma_h = 0, |
2036 | .comp = { |
2037 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* Y */ |
2038 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* U */ |
2039 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* V */ |
2040 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* A */ |
2041 | }, |
2042 | .flags = AV_PIX_FMT_FLAG_ALPHA, |
2043 | }, |
2044 | [AV_PIX_FMT_AYUV64BE] = { |
2045 | .name = "ayuv64be", |
2046 | .nb_components = 4, |
2047 | .log2_chroma_w = 0, |
2048 | .log2_chroma_h = 0, |
2049 | .comp = { |
2050 | { 0, 8, 2, 0, 16, 7, 15, 3 }, /* Y */ |
2051 | { 0, 8, 4, 0, 16, 7, 15, 5 }, /* U */ |
2052 | { 0, 8, 6, 0, 16, 7, 15, 7 }, /* V */ |
2053 | { 0, 8, 0, 0, 16, 7, 15, 1 }, /* A */ |
2054 | }, |
2055 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA, |
2056 | }, |
2057 | [AV_PIX_FMT_P010LE] = { |
2058 | .name = "p010le", |
2059 | .nb_components = 3, |
2060 | .log2_chroma_w = 1, |
2061 | .log2_chroma_h = 1, |
2062 | .comp = { |
2063 | { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */ |
2064 | { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */ |
2065 | { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */ |
2066 | }, |
2067 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
2068 | }, |
2069 | [AV_PIX_FMT_P010BE] = { |
2070 | .name = "p010be", |
2071 | .nb_components = 3, |
2072 | .log2_chroma_w = 1, |
2073 | .log2_chroma_h = 1, |
2074 | .comp = { |
2075 | { 0, 2, 0, 6, 10, 1, 9, 1 }, /* Y */ |
2076 | { 1, 4, 0, 6, 10, 3, 9, 1 }, /* U */ |
2077 | { 1, 4, 2, 6, 10, 3, 9, 3 }, /* V */ |
2078 | }, |
2079 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE, |
2080 | }, |
2081 | [AV_PIX_FMT_P016LE] = { |
2082 | .name = "p016le", |
2083 | .nb_components = 3, |
2084 | .log2_chroma_w = 1, |
2085 | .log2_chroma_h = 1, |
2086 | .comp = { |
2087 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
2088 | { 1, 4, 0, 0, 16, 3, 15, 1 }, /* U */ |
2089 | { 1, 4, 2, 0, 16, 3, 15, 3 }, /* V */ |
2090 | }, |
2091 | .flags = AV_PIX_FMT_FLAG_PLANAR, |
2092 | }, |
2093 | [AV_PIX_FMT_P016BE] = { |
2094 | .name = "p016be", |
2095 | .nb_components = 3, |
2096 | .log2_chroma_w = 1, |
2097 | .log2_chroma_h = 1, |
2098 | .comp = { |
2099 | { 0, 2, 0, 0, 16, 1, 15, 1 }, /* Y */ |
2100 | { 1, 4, 0, 0, 16, 3, 15, 1 }, /* U */ |
2101 | { 1, 4, 2, 0, 16, 3, 15, 3 }, /* V */ |
2102 | }, |
2103 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE, |
2104 | }, |
2105 | [AV_PIX_FMT_GBRAP12LE] = { |
2106 | .name = "gbrap12le", |
2107 | .nb_components = 4, |
2108 | .log2_chroma_w = 0, |
2109 | .log2_chroma_h = 0, |
2110 | .comp = { |
2111 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */ |
2112 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */ |
2113 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */ |
2114 | { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */ |
2115 | }, |
2116 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | |
2117 | AV_PIX_FMT_FLAG_ALPHA, |
2118 | }, |
2119 | [AV_PIX_FMT_GBRAP12BE] = { |
2120 | .name = "gbrap12be", |
2121 | .nb_components = 4, |
2122 | .log2_chroma_w = 0, |
2123 | .log2_chroma_h = 0, |
2124 | .comp = { |
2125 | { 2, 2, 0, 0, 12, 1, 11, 1 }, /* R */ |
2126 | { 0, 2, 0, 0, 12, 1, 11, 1 }, /* G */ |
2127 | { 1, 2, 0, 0, 12, 1, 11, 1 }, /* B */ |
2128 | { 3, 2, 0, 0, 12, 1, 11, 1 }, /* A */ |
2129 | }, |
2130 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | |
2131 | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
2132 | }, |
2133 | [AV_PIX_FMT_GBRAP10LE] = { |
2134 | .name = "gbrap10le", |
2135 | .nb_components = 4, |
2136 | .log2_chroma_w = 0, |
2137 | .log2_chroma_h = 0, |
2138 | .comp = { |
2139 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */ |
2140 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */ |
2141 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */ |
2142 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
2143 | }, |
2144 | .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | |
2145 | AV_PIX_FMT_FLAG_ALPHA, |
2146 | }, |
2147 | [AV_PIX_FMT_GBRAP10BE] = { |
2148 | .name = "gbrap10be", |
2149 | .nb_components = 4, |
2150 | .log2_chroma_w = 0, |
2151 | .log2_chroma_h = 0, |
2152 | .comp = { |
2153 | { 2, 2, 0, 0, 10, 1, 9, 1 }, /* R */ |
2154 | { 0, 2, 0, 0, 10, 1, 9, 1 }, /* G */ |
2155 | { 1, 2, 0, 0, 10, 1, 9, 1 }, /* B */ |
2156 | { 3, 2, 0, 0, 10, 1, 9, 1 }, /* A */ |
2157 | }, |
2158 | .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | |
2159 | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, |
2160 | }, |
2161 | }; |
2162 | #if FF_API_PLUS1_MINUS1 |
2163 | FF_ENABLE_DEPRECATION_WARNINGS |
2164 | #endif |
2165 | |
2166 | static const char *color_range_names[] = { |
2167 | [AVCOL_RANGE_UNSPECIFIED] = "unknown", |
2168 | [AVCOL_RANGE_MPEG] = "tv", |
2169 | [AVCOL_RANGE_JPEG] = "pc", |
2170 | }; |
2171 | |
2172 | static const char *color_primaries_names[AVCOL_PRI_NB] = { |
2173 | [AVCOL_PRI_RESERVED0] = "reserved", |
2174 | [AVCOL_PRI_BT709] = "bt709", |
2175 | [AVCOL_PRI_UNSPECIFIED] = "unknown", |
2176 | [AVCOL_PRI_RESERVED] = "reserved", |
2177 | [AVCOL_PRI_BT470M] = "bt470m", |
2178 | [AVCOL_PRI_BT470BG] = "bt470bg", |
2179 | [AVCOL_PRI_SMPTE170M] = "smpte170m", |
2180 | [AVCOL_PRI_SMPTE240M] = "smpte240m", |
2181 | [AVCOL_PRI_FILM] = "film", |
2182 | [AVCOL_PRI_BT2020] = "bt2020", |
2183 | [AVCOL_PRI_SMPTE428] = "smpte428", |
2184 | [AVCOL_PRI_SMPTE431] = "smpte431", |
2185 | [AVCOL_PRI_SMPTE432] = "smpte432", |
2186 | [AVCOL_PRI_JEDEC_P22] = "jedec-p22", |
2187 | }; |
2188 | |
2189 | static const char *color_transfer_names[] = { |
2190 | [AVCOL_TRC_RESERVED0] = "reserved", |
2191 | [AVCOL_TRC_BT709] = "bt709", |
2192 | [AVCOL_TRC_UNSPECIFIED] = "unknown", |
2193 | [AVCOL_TRC_RESERVED] = "reserved", |
2194 | [AVCOL_TRC_GAMMA22] = "bt470m", |
2195 | [AVCOL_TRC_GAMMA28] = "bt470bg", |
2196 | [AVCOL_TRC_SMPTE170M] = "smpte170m", |
2197 | [AVCOL_TRC_SMPTE240M] = "smpte240m", |
2198 | [AVCOL_TRC_LINEAR] = "linear", |
2199 | [AVCOL_TRC_LOG] = "log100", |
2200 | [AVCOL_TRC_LOG_SQRT] = "log316", |
2201 | [AVCOL_TRC_IEC61966_2_4] = "iec61966-2-4", |
2202 | [AVCOL_TRC_BT1361_ECG] = "bt1361e", |
2203 | [AVCOL_TRC_IEC61966_2_1] = "iec61966-2-1", |
2204 | [AVCOL_TRC_BT2020_10] = "bt2020-10", |
2205 | [AVCOL_TRC_BT2020_12] = "bt2020-12", |
2206 | [AVCOL_TRC_SMPTE2084] = "smpte2084", |
2207 | [AVCOL_TRC_SMPTE428] = "smpte428", |
2208 | [AVCOL_TRC_ARIB_STD_B67] = "arib-std-b67", |
2209 | }; |
2210 | |
2211 | static const char *color_space_names[] = { |
2212 | [AVCOL_SPC_RGB] = "gbr", |
2213 | [AVCOL_SPC_BT709] = "bt709", |
2214 | [AVCOL_SPC_UNSPECIFIED] = "unknown", |
2215 | [AVCOL_SPC_RESERVED] = "reserved", |
2216 | [AVCOL_SPC_FCC] = "fcc", |
2217 | [AVCOL_SPC_BT470BG] = "bt470bg", |
2218 | [AVCOL_SPC_SMPTE170M] = "smpte170m", |
2219 | [AVCOL_SPC_SMPTE240M] = "smpte240m", |
2220 | [AVCOL_SPC_YCGCO] = "ycgco", |
2221 | [AVCOL_SPC_BT2020_NCL] = "bt2020nc", |
2222 | [AVCOL_SPC_BT2020_CL] = "bt2020c", |
2223 | [AVCOL_SPC_SMPTE2085] = "smpte2085", |
2224 | }; |
2225 | |
2226 | static const char *chroma_location_names[] = { |
2227 | [AVCHROMA_LOC_UNSPECIFIED] = "unspecified", |
2228 | [AVCHROMA_LOC_LEFT] = "left", |
2229 | [AVCHROMA_LOC_CENTER] = "center", |
2230 | [AVCHROMA_LOC_TOPLEFT] = "topleft", |
2231 | [AVCHROMA_LOC_TOP] = "top", |
2232 | [AVCHROMA_LOC_BOTTOMLEFT] = "bottomleft", |
2233 | [AVCHROMA_LOC_BOTTOM] = "bottom", |
2234 | }; |
2235 | |
2236 | static enum AVPixelFormat get_pix_fmt_internal(const char *name) |
2237 | { |
2238 | enum AVPixelFormat pix_fmt; |
2239 | |
2240 | for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++) |
2241 | if (av_pix_fmt_descriptors[pix_fmt].name && |
2242 | (!strcmp(av_pix_fmt_descriptors[pix_fmt].name, name) || |
2243 | av_match_name(name, av_pix_fmt_descriptors[pix_fmt].alias))) |
2244 | return pix_fmt; |
2245 | |
2246 | return AV_PIX_FMT_NONE; |
2247 | } |
2248 | |
2249 | const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt) |
2250 | { |
2251 | return (unsigned)pix_fmt < AV_PIX_FMT_NB ? |
2252 | av_pix_fmt_descriptors[pix_fmt].name : NULL; |
2253 | } |
2254 | |
2255 | #if HAVE_BIGENDIAN |
2256 | # define X_NE(be, le) be |
2257 | #else |
2258 | # define X_NE(be, le) le |
2259 | #endif |
2260 | |
2261 | enum AVPixelFormat av_get_pix_fmt(const char *name) |
2262 | { |
2263 | enum AVPixelFormat pix_fmt; |
2264 | |
2265 | if (!strcmp(name, "rgb32")) |
2266 | name = X_NE("argb", "bgra"); |
2267 | else if (!strcmp(name, "bgr32")) |
2268 | name = X_NE("abgr", "rgba"); |
2269 | |
2270 | pix_fmt = get_pix_fmt_internal(name); |
2271 | if (pix_fmt == AV_PIX_FMT_NONE) { |
2272 | char name2[32]; |
2273 | |
2274 | snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le")); |
2275 | pix_fmt = get_pix_fmt_internal(name2); |
2276 | } |
2277 | |
2278 | #if FF_API_VAAPI |
2279 | if (pix_fmt == AV_PIX_FMT_NONE && !strcmp(name, "vaapi")) |
2280 | pix_fmt = AV_PIX_FMT_VAAPI; |
2281 | #endif |
2282 | return pix_fmt; |
2283 | } |
2284 | |
2285 | int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc) |
2286 | { |
2287 | int c, bits = 0; |
2288 | int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h; |
2289 | |
2290 | for (c = 0; c < pixdesc->nb_components; c++) { |
2291 | int s = c == 1 || c == 2 ? 0 : log2_pixels; |
2292 | bits += pixdesc->comp[c].depth << s; |
2293 | } |
2294 | |
2295 | return bits >> log2_pixels; |
2296 | } |
2297 | |
2298 | int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc) |
2299 | { |
2300 | int c, bits = 0; |
2301 | int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h; |
2302 | int steps[4] = {0}; |
2303 | |
2304 | for (c = 0; c < pixdesc->nb_components; c++) { |
2305 | const AVComponentDescriptor *comp = &pixdesc->comp[c]; |
2306 | int s = c == 1 || c == 2 ? 0 : log2_pixels; |
2307 | steps[comp->plane] = comp->step << s; |
2308 | } |
2309 | for (c = 0; c < 4; c++) |
2310 | bits += steps[c]; |
2311 | |
2312 | if(!(pixdesc->flags & AV_PIX_FMT_FLAG_BITSTREAM)) |
2313 | bits *= 8; |
2314 | |
2315 | return bits >> log2_pixels; |
2316 | } |
2317 | |
2318 | char *av_get_pix_fmt_string(char *buf, int buf_size, |
2319 | enum AVPixelFormat pix_fmt) |
2320 | { |
2321 | /* print header */ |
2322 | if (pix_fmt < 0) { |
2323 | snprintf (buf, buf_size, "name" " nb_components" " nb_bits"); |
2324 | } else { |
2325 | const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[pix_fmt]; |
2326 | snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name, |
2327 | pixdesc->nb_components, av_get_bits_per_pixel(pixdesc)); |
2328 | } |
2329 | |
2330 | return buf; |
2331 | } |
2332 | |
2333 | const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt) |
2334 | { |
2335 | if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB) |
2336 | return NULL; |
2337 | return &av_pix_fmt_descriptors[pix_fmt]; |
2338 | } |
2339 | |
2340 | const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev) |
2341 | { |
2342 | if (!prev) |
2343 | return &av_pix_fmt_descriptors[0]; |
2344 | while (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1) { |
2345 | prev++; |
2346 | if (prev->name) |
2347 | return prev; |
2348 | } |
2349 | return NULL; |
2350 | } |
2351 | |
2352 | enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc) |
2353 | { |
2354 | if (desc < av_pix_fmt_descriptors || |
2355 | desc >= av_pix_fmt_descriptors + FF_ARRAY_ELEMS(av_pix_fmt_descriptors)) |
2356 | return AV_PIX_FMT_NONE; |
2357 | |
2358 | return desc - av_pix_fmt_descriptors; |
2359 | } |
2360 | |
2361 | int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, |
2362 | int *h_shift, int *v_shift) |
2363 | { |
2364 | const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); |
2365 | if (!desc) |
2366 | return AVERROR(ENOSYS); |
2367 | *h_shift = desc->log2_chroma_w; |
2368 | *v_shift = desc->log2_chroma_h; |
2369 | |
2370 | return 0; |
2371 | } |
2372 | |
2373 | int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt) |
2374 | { |
2375 | const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); |
2376 | int i, planes[4] = { 0 }, ret = 0; |
2377 | |
2378 | if (!desc) |
2379 | return AVERROR(EINVAL); |
2380 | |
2381 | for (i = 0; i < desc->nb_components; i++) |
2382 | planes[desc->comp[i].plane] = 1; |
2383 | for (i = 0; i < FF_ARRAY_ELEMS(planes); i++) |
2384 | ret += planes[i]; |
2385 | return ret; |
2386 | } |
2387 | |
2388 | void ff_check_pixfmt_descriptors(void){ |
2389 | int i, j; |
2390 | |
2391 | for (i=0; i<FF_ARRAY_ELEMS(av_pix_fmt_descriptors); i++) { |
2392 | const AVPixFmtDescriptor *d = &av_pix_fmt_descriptors[i]; |
2393 | uint8_t fill[4][8+6+3] = {{0}}; |
2394 | uint8_t *data[4] = {fill[0], fill[1], fill[2], fill[3]}; |
2395 | int linesize[4] = {0,0,0,0}; |
2396 | uint16_t tmp[2]; |
2397 | |
2398 | if (!d->name && !d->nb_components && !d->log2_chroma_w && !d->log2_chroma_h && !d->flags) |
2399 | continue; |
2400 | // av_log(NULL, AV_LOG_DEBUG, "Checking: %s\n", d->name); |
2401 | av_assert0(d->log2_chroma_w <= 3); |
2402 | av_assert0(d->log2_chroma_h <= 3); |
2403 | av_assert0(d->nb_components <= 4); |
2404 | av_assert0(d->name && d->name[0]); |
2405 | av_assert0((d->nb_components==4 || d->nb_components==2) == !!(d->flags & AV_PIX_FMT_FLAG_ALPHA)); |
2406 | av_assert2(av_get_pix_fmt(d->name) == i); |
2407 | |
2408 | for (j=0; j<FF_ARRAY_ELEMS(d->comp); j++) { |
2409 | const AVComponentDescriptor *c = &d->comp[j]; |
2410 | if(j>=d->nb_components) { |
2411 | av_assert0(!c->plane && !c->step && !c->offset && !c->shift && !c->depth); |
2412 | continue; |
2413 | } |
2414 | if (d->flags & AV_PIX_FMT_FLAG_BITSTREAM) { |
2415 | av_assert0(c->step >= c->depth); |
2416 | } else { |
2417 | av_assert0(8*c->step >= c->depth); |
2418 | } |
2419 | if (d->flags & AV_PIX_FMT_FLAG_BAYER) |
2420 | continue; |
2421 | av_read_image_line(tmp, (void*)data, linesize, d, 0, 0, j, 2, 0); |
2422 | av_assert0(tmp[0] == 0 && tmp[1] == 0); |
2423 | tmp[0] = tmp[1] = (1<<c->depth) - 1; |
2424 | av_write_image_line(tmp, data, linesize, d, 0, 0, j, 2); |
2425 | } |
2426 | } |
2427 | } |
2428 | |
2429 | |
2430 | enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt) |
2431 | { |
2432 | const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); |
2433 | char name[16]; |
2434 | int i; |
2435 | |
2436 | if (!desc || strlen(desc->name) < 2) |
2437 | return AV_PIX_FMT_NONE; |
2438 | av_strlcpy(name, desc->name, sizeof(name)); |
2439 | i = strlen(name) - 2; |
2440 | if (strcmp(name + i, "be") && strcmp(name + i, "le")) |
2441 | return AV_PIX_FMT_NONE; |
2442 | |
2443 | name[i] ^= 'b' ^ 'l'; |
2444 | |
2445 | return get_pix_fmt_internal(name); |
2446 | } |
2447 | |
2448 | #define FF_COLOR_NA -1 |
2449 | #define FF_COLOR_RGB 0 /**< RGB color space */ |
2450 | #define FF_COLOR_GRAY 1 /**< gray color space */ |
2451 | #define FF_COLOR_YUV 2 /**< YUV color space. 16 <= Y <= 235, 16 <= U, V <= 240 */ |
2452 | #define FF_COLOR_YUV_JPEG 3 /**< YUV color space. 0 <= Y <= 255, 0 <= U, V <= 255 */ |
2453 | #define FF_COLOR_XYZ 4 |
2454 | |
2455 | #define pixdesc_has_alpha(pixdesc) \ |
2456 | ((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL) |
2457 | |
2458 | |
2459 | static int get_color_type(const AVPixFmtDescriptor *desc) { |
2460 | if (desc->flags & AV_PIX_FMT_FLAG_PAL) |
2461 | return FF_COLOR_RGB; |
2462 | |
2463 | if(desc->nb_components == 1 || desc->nb_components == 2) |
2464 | return FF_COLOR_GRAY; |
2465 | |
2466 | if(desc->name && !strncmp(desc->name, "yuvj", 4)) |
2467 | return FF_COLOR_YUV_JPEG; |
2468 | |
2469 | if(desc->name && !strncmp(desc->name, "xyz", 3)) |
2470 | return FF_COLOR_XYZ; |
2471 | |
2472 | if(desc->flags & AV_PIX_FMT_FLAG_RGB) |
2473 | return FF_COLOR_RGB; |
2474 | |
2475 | if(desc->nb_components == 0) |
2476 | return FF_COLOR_NA; |
2477 | |
2478 | return FF_COLOR_YUV; |
2479 | } |
2480 | |
2481 | static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt) |
2482 | { |
2483 | const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); |
2484 | int i; |
2485 | |
2486 | if (!desc || !desc->nb_components) { |
2487 | *min = *max = 0; |
2488 | return AVERROR(EINVAL); |
2489 | } |
2490 | |
2491 | *min = INT_MAX, *max = -INT_MAX; |
2492 | for (i = 0; i < desc->nb_components; i++) { |
2493 | *min = FFMIN(desc->comp[i].depth, *min); |
2494 | *max = FFMAX(desc->comp[i].depth, *max); |
2495 | } |
2496 | return 0; |
2497 | } |
2498 | |
2499 | static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt, |
2500 | enum AVPixelFormat src_pix_fmt, |
2501 | unsigned *lossp, unsigned consider) |
2502 | { |
2503 | const AVPixFmtDescriptor *src_desc = av_pix_fmt_desc_get(src_pix_fmt); |
2504 | const AVPixFmtDescriptor *dst_desc = av_pix_fmt_desc_get(dst_pix_fmt); |
2505 | int src_color, dst_color; |
2506 | int src_min_depth, src_max_depth, dst_min_depth, dst_max_depth; |
2507 | int ret, loss, i, nb_components; |
2508 | int score = INT_MAX - 1; |
2509 | |
2510 | if (dst_pix_fmt >= AV_PIX_FMT_NB || dst_pix_fmt <= AV_PIX_FMT_NONE) |
2511 | return ~0; |
2512 | |
2513 | /* compute loss */ |
2514 | *lossp = loss = 0; |
2515 | |
2516 | if (dst_pix_fmt == src_pix_fmt) |
2517 | return INT_MAX; |
2518 | |
2519 | if ((ret = get_pix_fmt_depth(&src_min_depth, &src_max_depth, src_pix_fmt)) < 0) |
2520 | return ret; |
2521 | if ((ret = get_pix_fmt_depth(&dst_min_depth, &dst_max_depth, dst_pix_fmt)) < 0) |
2522 | return ret; |
2523 | |
2524 | src_color = get_color_type(src_desc); |
2525 | dst_color = get_color_type(dst_desc); |
2526 | if (dst_pix_fmt == AV_PIX_FMT_PAL8) |
2527 | nb_components = FFMIN(src_desc->nb_components, 4); |
2528 | else |
2529 | nb_components = FFMIN(src_desc->nb_components, dst_desc->nb_components); |
2530 | |
2531 | for (i = 0; i < nb_components; i++) { |
2532 | int depth_minus1 = (dst_pix_fmt == AV_PIX_FMT_PAL8) ? 7/nb_components : (dst_desc->comp[i].depth - 1); |
2533 | if (src_desc->comp[i].depth - 1 > depth_minus1 && (consider & FF_LOSS_DEPTH)) { |
2534 | loss |= FF_LOSS_DEPTH; |
2535 | score -= 65536 >> depth_minus1; |
2536 | } |
2537 | } |
2538 | |
2539 | if (consider & FF_LOSS_RESOLUTION) { |
2540 | if (dst_desc->log2_chroma_w > src_desc->log2_chroma_w) { |
2541 | loss |= FF_LOSS_RESOLUTION; |
2542 | score -= 256 << dst_desc->log2_chroma_w; |
2543 | } |
2544 | if (dst_desc->log2_chroma_h > src_desc->log2_chroma_h) { |
2545 | loss |= FF_LOSS_RESOLUTION; |
2546 | score -= 256 << dst_desc->log2_chroma_h; |
2547 | } |
2548 | // don't favor 422 over 420 if downsampling is needed, because 420 has much better support on the decoder side |
2549 | if (dst_desc->log2_chroma_w == 1 && src_desc->log2_chroma_w == 0 && |
2550 | dst_desc->log2_chroma_h == 1 && src_desc->log2_chroma_h == 0 ) { |
2551 | score += 512; |
2552 | } |
2553 | } |
2554 | |
2555 | if(consider & FF_LOSS_COLORSPACE) |
2556 | switch(dst_color) { |
2557 | case FF_COLOR_RGB: |
2558 | if (src_color != FF_COLOR_RGB && |
2559 | src_color != FF_COLOR_GRAY) |
2560 | loss |= FF_LOSS_COLORSPACE; |
2561 | break; |
2562 | case FF_COLOR_GRAY: |
2563 | if (src_color != FF_COLOR_GRAY) |
2564 | loss |= FF_LOSS_COLORSPACE; |
2565 | break; |
2566 | case FF_COLOR_YUV: |
2567 | if (src_color != FF_COLOR_YUV) |
2568 | loss |= FF_LOSS_COLORSPACE; |
2569 | break; |
2570 | case FF_COLOR_YUV_JPEG: |
2571 | if (src_color != FF_COLOR_YUV_JPEG && |
2572 | src_color != FF_COLOR_YUV && |
2573 | src_color != FF_COLOR_GRAY) |
2574 | loss |= FF_LOSS_COLORSPACE; |
2575 | break; |
2576 | default: |
2577 | /* fail safe test */ |
2578 | if (src_color != dst_color) |
2579 | loss |= FF_LOSS_COLORSPACE; |
2580 | break; |
2581 | } |
2582 | if(loss & FF_LOSS_COLORSPACE) |
2583 | score -= (nb_components * 65536) >> FFMIN(dst_desc->comp[0].depth - 1, src_desc->comp[0].depth - 1); |
2584 | |
2585 | if (dst_color == FF_COLOR_GRAY && |
2586 | src_color != FF_COLOR_GRAY && (consider & FF_LOSS_CHROMA)) { |
2587 | loss |= FF_LOSS_CHROMA; |
2588 | score -= 2 * 65536; |
2589 | } |
2590 | if (!pixdesc_has_alpha(dst_desc) && (pixdesc_has_alpha(src_desc) && (consider & FF_LOSS_ALPHA))) { |
2591 | loss |= FF_LOSS_ALPHA; |
2592 | score -= 65536; |
2593 | } |
2594 | if (dst_pix_fmt == AV_PIX_FMT_PAL8 && (consider & FF_LOSS_COLORQUANT) && |
2595 | (src_pix_fmt != AV_PIX_FMT_PAL8 && (src_color != FF_COLOR_GRAY || (pixdesc_has_alpha(src_desc) && (consider & FF_LOSS_ALPHA))))) { |
2596 | loss |= FF_LOSS_COLORQUANT; |
2597 | score -= 65536; |
2598 | } |
2599 | |
2600 | *lossp = loss; |
2601 | return score; |
2602 | } |
2603 | |
2604 | int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, |
2605 | enum AVPixelFormat src_pix_fmt, |
2606 | int has_alpha) |
2607 | { |
2608 | int loss; |
2609 | int ret = get_pix_fmt_score(dst_pix_fmt, src_pix_fmt, &loss, has_alpha ? ~0 : ~FF_LOSS_ALPHA); |
2610 | if (ret < 0) |
2611 | return ret; |
2612 | return loss; |
2613 | } |
2614 | |
2615 | enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, |
2616 | enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr) |
2617 | { |
2618 | enum AVPixelFormat dst_pix_fmt; |
2619 | int loss1, loss2, loss_mask; |
2620 | const AVPixFmtDescriptor *desc1 = av_pix_fmt_desc_get(dst_pix_fmt1); |
2621 | const AVPixFmtDescriptor *desc2 = av_pix_fmt_desc_get(dst_pix_fmt2); |
2622 | int score1, score2; |
2623 | |
2624 | loss_mask= loss_ptr?~*loss_ptr:~0; /* use loss mask if provided */ |
2625 | if(!has_alpha) |
2626 | loss_mask &= ~FF_LOSS_ALPHA; |
2627 | |
2628 | score1 = get_pix_fmt_score(dst_pix_fmt1, src_pix_fmt, &loss1, loss_mask); |
2629 | score2 = get_pix_fmt_score(dst_pix_fmt2, src_pix_fmt, &loss2, loss_mask); |
2630 | |
2631 | if (score1 == score2) { |
2632 | if(av_get_padded_bits_per_pixel(desc2) != av_get_padded_bits_per_pixel(desc1)) { |
2633 | dst_pix_fmt = av_get_padded_bits_per_pixel(desc2) < av_get_padded_bits_per_pixel(desc1) ? dst_pix_fmt2 : dst_pix_fmt1; |
2634 | } else { |
2635 | dst_pix_fmt = desc2->nb_components < desc1->nb_components ? dst_pix_fmt2 : dst_pix_fmt1; |
2636 | } |
2637 | } else { |
2638 | dst_pix_fmt = score1 < score2 ? dst_pix_fmt2 : dst_pix_fmt1; |
2639 | } |
2640 | |
2641 | if (loss_ptr) |
2642 | *loss_ptr = av_get_pix_fmt_loss(dst_pix_fmt, src_pix_fmt, has_alpha); |
2643 | return dst_pix_fmt; |
2644 | } |
2645 | |
2646 | const char *av_color_range_name(enum AVColorRange range) |
2647 | { |
2648 | return (unsigned) range < AVCOL_RANGE_NB ? |
2649 | color_range_names[range] : NULL; |
2650 | } |
2651 | |
2652 | const char *av_color_primaries_name(enum AVColorPrimaries primaries) |
2653 | { |
2654 | return (unsigned) primaries < AVCOL_PRI_NB ? |
2655 | color_primaries_names[primaries] : NULL; |
2656 | } |
2657 | |
2658 | const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer) |
2659 | { |
2660 | return (unsigned) transfer < AVCOL_TRC_NB ? |
2661 | color_transfer_names[transfer] : NULL; |
2662 | } |
2663 | |
2664 | const char *av_color_space_name(enum AVColorSpace space) |
2665 | { |
2666 | return (unsigned) space < AVCOL_SPC_NB ? |
2667 | color_space_names[space] : NULL; |
2668 | } |
2669 | |
2670 | const char *av_chroma_location_name(enum AVChromaLocation location) |
2671 | { |
2672 | return (unsigned) location < AVCHROMA_LOC_NB ? |
2673 | chroma_location_names[location] : NULL; |
2674 | } |
2675 |