FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pixdesc.c
Go to the documentation of this file.
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 "common.h"
27 #include "pixfmt.h"
28 #include "pixdesc.h"
29 #include "internal.h"
30 #include "intreadwrite.h"
31 #include "avstring.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 {
41  int plane = comp.plane;
42  int depth = comp.depth_minus1 + 1;
43  int mask = (1 << depth) - 1;
44  int shift = comp.shift;
45  int step = comp.step_minus1 + 1;
46  int flags = desc->flags;
47 
48  if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
49  int skip = x * step + comp.offset_plus1 - 1;
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_plus1 - 1;
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 {
88  int plane = comp.plane;
89  int depth = comp.depth_minus1 + 1;
90  int step = comp.step_minus1 + 1;
91  int flags = desc->flags;
92 
93  if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
94  int skip = x * step + comp.offset_plus1 - 1;
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_plus1 - 1;
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_PIX_FMT_DESC
131 static
132 #endif
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, 0, 1, 0, 7 }, /* Y */
141  { 1, 0, 1, 0, 7 }, /* U */
142  { 2, 0, 1, 0, 7 }, /* 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, 1, 1, 0, 7 }, /* Y */
153  { 0, 3, 2, 0, 7 }, /* U */
154  { 0, 3, 4, 0, 7 }, /* V */
155  },
156  },
157  [AV_PIX_FMT_RGB24] = {
158  .name = "rgb24",
159  .nb_components = 3,
160  .log2_chroma_w = 0,
161  .log2_chroma_h = 0,
162  .comp = {
163  { 0, 2, 1, 0, 7 }, /* R */
164  { 0, 2, 2, 0, 7 }, /* G */
165  { 0, 2, 3, 0, 7 }, /* B */
166  },
167  .flags = AV_PIX_FMT_FLAG_RGB,
168  },
169  [AV_PIX_FMT_BGR24] = {
170  .name = "bgr24",
171  .nb_components = 3,
172  .log2_chroma_w = 0,
173  .log2_chroma_h = 0,
174  .comp = {
175  { 0, 2, 3, 0, 7 }, /* R */
176  { 0, 2, 2, 0, 7 }, /* G */
177  { 0, 2, 1, 0, 7 }, /* B */
178  },
179  .flags = AV_PIX_FMT_FLAG_RGB,
180  },
181  [AV_PIX_FMT_YUV422P] = {
182  .name = "yuv422p",
183  .nb_components = 3,
184  .log2_chroma_w = 1,
185  .log2_chroma_h = 0,
186  .comp = {
187  { 0, 0, 1, 0, 7 }, /* Y */
188  { 1, 0, 1, 0, 7 }, /* U */
189  { 2, 0, 1, 0, 7 }, /* V */
190  },
191  .flags = AV_PIX_FMT_FLAG_PLANAR,
192  },
193  [AV_PIX_FMT_YUV444P] = {
194  .name = "yuv444p",
195  .nb_components = 3,
196  .log2_chroma_w = 0,
197  .log2_chroma_h = 0,
198  .comp = {
199  { 0, 0, 1, 0, 7 }, /* Y */
200  { 1, 0, 1, 0, 7 }, /* U */
201  { 2, 0, 1, 0, 7 }, /* V */
202  },
203  .flags = AV_PIX_FMT_FLAG_PLANAR,
204  },
205  [AV_PIX_FMT_YUV410P] = {
206  .name = "yuv410p",
207  .nb_components = 3,
208  .log2_chroma_w = 2,
209  .log2_chroma_h = 2,
210  .comp = {
211  { 0, 0, 1, 0, 7 }, /* Y */
212  { 1, 0, 1, 0, 7 }, /* U */
213  { 2, 0, 1, 0, 7 }, /* V */
214  },
215  .flags = AV_PIX_FMT_FLAG_PLANAR,
216  },
217  [AV_PIX_FMT_YUV411P] = {
218  .name = "yuv411p",
219  .nb_components = 3,
220  .log2_chroma_w = 2,
221  .log2_chroma_h = 0,
222  .comp = {
223  { 0, 0, 1, 0, 7 }, /* Y */
224  { 1, 0, 1, 0, 7 }, /* U */
225  { 2, 0, 1, 0, 7 }, /* V */
226  },
227  .flags = AV_PIX_FMT_FLAG_PLANAR,
228  },
229  [AV_PIX_FMT_YUVJ411P] = {
230  .name = "yuvj411p",
231  .nb_components = 3,
232  .log2_chroma_w = 2,
233  .log2_chroma_h = 0,
234  .comp = {
235  { 0, 0, 1, 0, 7 }, /* Y */
236  { 1, 0, 1, 0, 7 }, /* U */
237  { 2, 0, 1, 0, 7 }, /* V */
238  },
239  .flags = AV_PIX_FMT_FLAG_PLANAR,
240  },
241  [AV_PIX_FMT_GRAY8] = {
242  .name = "gray",
243  .nb_components = 1,
244  .log2_chroma_w = 0,
245  .log2_chroma_h = 0,
246  .comp = {
247  { 0, 0, 1, 0, 7 }, /* Y */
248  },
249  .flags = AV_PIX_FMT_FLAG_PSEUDOPAL,
250  },
252  .name = "monow",
253  .nb_components = 1,
254  .log2_chroma_w = 0,
255  .log2_chroma_h = 0,
256  .comp = {
257  { 0, 0, 1, 0, 0 }, /* Y */
258  },
259  .flags = AV_PIX_FMT_FLAG_BITSTREAM,
260  },
262  .name = "monob",
263  .nb_components = 1,
264  .log2_chroma_w = 0,
265  .log2_chroma_h = 0,
266  .comp = {
267  { 0, 0, 1, 7, 0 }, /* Y */
268  },
269  .flags = AV_PIX_FMT_FLAG_BITSTREAM,
270  },
271  [AV_PIX_FMT_PAL8] = {
272  .name = "pal8",
273  .nb_components = 1,
274  .log2_chroma_w = 0,
275  .log2_chroma_h = 0,
276  .comp = {
277  { 0, 0, 1, 0, 7 },
278  },
279  .flags = AV_PIX_FMT_FLAG_PAL,
280  },
281  [AV_PIX_FMT_YUVJ420P] = {
282  .name = "yuvj420p",
283  .nb_components = 3,
284  .log2_chroma_w = 1,
285  .log2_chroma_h = 1,
286  .comp = {
287  { 0, 0, 1, 0, 7 }, /* Y */
288  { 1, 0, 1, 0, 7 }, /* U */
289  { 2, 0, 1, 0, 7 }, /* V */
290  },
291  .flags = AV_PIX_FMT_FLAG_PLANAR,
292  },
293  [AV_PIX_FMT_YUVJ422P] = {
294  .name = "yuvj422p",
295  .nb_components = 3,
296  .log2_chroma_w = 1,
297  .log2_chroma_h = 0,
298  .comp = {
299  { 0, 0, 1, 0, 7 }, /* Y */
300  { 1, 0, 1, 0, 7 }, /* U */
301  { 2, 0, 1, 0, 7 }, /* V */
302  },
303  .flags = AV_PIX_FMT_FLAG_PLANAR,
304  },
305  [AV_PIX_FMT_YUVJ444P] = {
306  .name = "yuvj444p",
307  .nb_components = 3,
308  .log2_chroma_w = 0,
309  .log2_chroma_h = 0,
310  .comp = {
311  { 0, 0, 1, 0, 7 }, /* Y */
312  { 1, 0, 1, 0, 7 }, /* U */
313  { 2, 0, 1, 0, 7 }, /* V */
314  },
315  .flags = AV_PIX_FMT_FLAG_PLANAR,
316  },
317 #if FF_API_XVMC
319  .name = "xvmcmc",
320  .flags = AV_PIX_FMT_FLAG_HWACCEL,
321  },
323  .name = "xvmcidct",
324  .flags = AV_PIX_FMT_FLAG_HWACCEL,
325  },
326 #endif /* FF_API_XVMC */
327 #if !FF_API_XVMC
328  [AV_PIX_FMT_XVMC] = {
329  .name = "xvmc",
330  .flags = AV_PIX_FMT_FLAG_HWACCEL,
331  },
332 #endif /* !FF_API_XVMC */
333  [AV_PIX_FMT_UYVY422] = {
334  .name = "uyvy422",
335  .nb_components = 3,
336  .log2_chroma_w = 1,
337  .log2_chroma_h = 0,
338  .comp = {
339  { 0, 1, 2, 0, 7 }, /* Y */
340  { 0, 3, 1, 0, 7 }, /* U */
341  { 0, 3, 3, 0, 7 }, /* V */
342  },
343  },
345  .name = "uyyvyy411",
346  .nb_components = 3,
347  .log2_chroma_w = 2,
348  .log2_chroma_h = 0,
349  .comp = {
350  { 0, 3, 2, 0, 7 }, /* Y */
351  { 0, 5, 1, 0, 7 }, /* U */
352  { 0, 5, 4, 0, 7 }, /* V */
353  },
354  },
355  [AV_PIX_FMT_BGR8] = {
356  .name = "bgr8",
357  .nb_components = 3,
358  .log2_chroma_w = 0,
359  .log2_chroma_h = 0,
360  .comp = {
361  { 0, 0, 1, 0, 2 }, /* R */
362  { 0, 0, 1, 3, 2 }, /* G */
363  { 0, 0, 1, 6, 1 }, /* B */
364  },
366  },
367  [AV_PIX_FMT_BGR4] = {
368  .name = "bgr4",
369  .nb_components = 3,
370  .log2_chroma_w = 0,
371  .log2_chroma_h = 0,
372  .comp = {
373  { 0, 3, 4, 0, 0 }, /* R */
374  { 0, 3, 2, 0, 1 }, /* G */
375  { 0, 3, 1, 0, 0 }, /* B */
376  },
378  },
380  .name = "bgr4_byte",
381  .nb_components = 3,
382  .log2_chroma_w = 0,
383  .log2_chroma_h = 0,
384  .comp = {
385  { 0, 0, 1, 0, 0 }, /* R */
386  { 0, 0, 1, 1, 1 }, /* G */
387  { 0, 0, 1, 3, 0 }, /* B */
388  },
390  },
391  [AV_PIX_FMT_RGB8] = {
392  .name = "rgb8",
393  .nb_components = 3,
394  .log2_chroma_w = 0,
395  .log2_chroma_h = 0,
396  .comp = {
397  { 0, 0, 1, 6, 1 }, /* R */
398  { 0, 0, 1, 3, 2 }, /* G */
399  { 0, 0, 1, 0, 2 }, /* B */
400  },
402  },
403  [AV_PIX_FMT_RGB4] = {
404  .name = "rgb4",
405  .nb_components = 3,
406  .log2_chroma_w = 0,
407  .log2_chroma_h = 0,
408  .comp = {
409  { 0, 3, 1, 0, 0 }, /* R */
410  { 0, 3, 2, 0, 1 }, /* G */
411  { 0, 3, 4, 0, 0 }, /* B */
412  },
414  },
416  .name = "rgb4_byte",
417  .nb_components = 3,
418  .log2_chroma_w = 0,
419  .log2_chroma_h = 0,
420  .comp = {
421  { 0, 0, 1, 3, 0 }, /* R */
422  { 0, 0, 1, 1, 1 }, /* G */
423  { 0, 0, 1, 0, 0 }, /* B */
424  },
426  },
427  [AV_PIX_FMT_NV12] = {
428  .name = "nv12",
429  .nb_components = 3,
430  .log2_chroma_w = 1,
431  .log2_chroma_h = 1,
432  .comp = {
433  { 0, 0, 1, 0, 7 }, /* Y */
434  { 1, 1, 1, 0, 7 }, /* U */
435  { 1, 1, 2, 0, 7 }, /* V */
436  },
437  .flags = AV_PIX_FMT_FLAG_PLANAR,
438  },
439  [AV_PIX_FMT_NV21] = {
440  .name = "nv21",
441  .nb_components = 3,
442  .log2_chroma_w = 1,
443  .log2_chroma_h = 1,
444  .comp = {
445  { 0, 0, 1, 0, 7 }, /* Y */
446  { 1, 1, 2, 0, 7 }, /* U */
447  { 1, 1, 1, 0, 7 }, /* V */
448  },
449  .flags = AV_PIX_FMT_FLAG_PLANAR,
450  },
451  [AV_PIX_FMT_ARGB] = {
452  .name = "argb",
453  .nb_components = 4,
454  .log2_chroma_w = 0,
455  .log2_chroma_h = 0,
456  .comp = {
457  { 0, 3, 2, 0, 7 }, /* R */
458  { 0, 3, 3, 0, 7 }, /* G */
459  { 0, 3, 4, 0, 7 }, /* B */
460  { 0, 3, 1, 0, 7 }, /* A */
461  },
463  },
464  [AV_PIX_FMT_RGBA] = {
465  .name = "rgba",
466  .nb_components = 4,
467  .log2_chroma_w = 0,
468  .log2_chroma_h = 0,
469  .comp = {
470  { 0, 3, 1, 0, 7 }, /* R */
471  { 0, 3, 2, 0, 7 }, /* G */
472  { 0, 3, 3, 0, 7 }, /* B */
473  { 0, 3, 4, 0, 7 }, /* A */
474  },
476  },
477  [AV_PIX_FMT_ABGR] = {
478  .name = "abgr",
479  .nb_components = 4,
480  .log2_chroma_w = 0,
481  .log2_chroma_h = 0,
482  .comp = {
483  { 0, 3, 4, 0, 7 }, /* R */
484  { 0, 3, 3, 0, 7 }, /* G */
485  { 0, 3, 2, 0, 7 }, /* B */
486  { 0, 3, 1, 0, 7 }, /* A */
487  },
489  },
490  [AV_PIX_FMT_BGRA] = {
491  .name = "bgra",
492  .nb_components = 4,
493  .log2_chroma_w = 0,
494  .log2_chroma_h = 0,
495  .comp = {
496  { 0, 3, 3, 0, 7 }, /* R */
497  { 0, 3, 2, 0, 7 }, /* G */
498  { 0, 3, 1, 0, 7 }, /* B */
499  { 0, 3, 4, 0, 7 }, /* A */
500  },
502  },
503  [AV_PIX_FMT_0RGB] = {
504  .name = "0rgb",
505  .nb_components= 3,
506  .log2_chroma_w= 0,
507  .log2_chroma_h= 0,
508  .comp = {
509  { 0, 3, 2, 0, 7 }, /* R */
510  { 0, 3, 3, 0, 7 }, /* G */
511  { 0, 3, 4, 0, 7 }, /* B */
512  },
513  .flags = AV_PIX_FMT_FLAG_RGB,
514  },
515  [AV_PIX_FMT_RGB0] = {
516  .name = "rgb0",
517  .nb_components= 3,
518  .log2_chroma_w= 0,
519  .log2_chroma_h= 0,
520  .comp = {
521  { 0, 3, 1, 0, 7 }, /* R */
522  { 0, 3, 2, 0, 7 }, /* G */
523  { 0, 3, 3, 0, 7 }, /* B */
524  },
525  .flags = AV_PIX_FMT_FLAG_RGB,
526  },
527  [AV_PIX_FMT_0BGR] = {
528  .name = "0bgr",
529  .nb_components= 3,
530  .log2_chroma_w= 0,
531  .log2_chroma_h= 0,
532  .comp = {
533  { 0, 3, 4, 0, 7 }, /* R */
534  { 0, 3, 3, 0, 7 }, /* G */
535  { 0, 3, 2, 0, 7 }, /* B */
536  },
537  .flags = AV_PIX_FMT_FLAG_RGB,
538  },
539  [AV_PIX_FMT_BGR0] = {
540  .name = "bgr0",
541  .nb_components= 3,
542  .log2_chroma_w= 0,
543  .log2_chroma_h= 0,
544  .comp = {
545  { 0, 3, 3, 0, 7 }, /* R */
546  { 0, 3, 2, 0, 7 }, /* G */
547  { 0, 3, 1, 0, 7 }, /* B */
548  },
549  .flags = AV_PIX_FMT_FLAG_RGB,
550  },
551  [AV_PIX_FMT_GRAY16BE] = {
552  .name = "gray16be",
553  .nb_components = 1,
554  .log2_chroma_w = 0,
555  .log2_chroma_h = 0,
556  .comp = {
557  { 0, 1, 1, 0, 15 }, /* Y */
558  },
559  .flags = AV_PIX_FMT_FLAG_BE,
560  },
561  [AV_PIX_FMT_GRAY16LE] = {
562  .name = "gray16le",
563  .nb_components = 1,
564  .log2_chroma_w = 0,
565  .log2_chroma_h = 0,
566  .comp = {
567  { 0, 1, 1, 0, 15 }, /* Y */
568  },
569  },
570  [AV_PIX_FMT_YUV440P] = {
571  .name = "yuv440p",
572  .nb_components = 3,
573  .log2_chroma_w = 0,
574  .log2_chroma_h = 1,
575  .comp = {
576  { 0, 0, 1, 0, 7 }, /* Y */
577  { 1, 0, 1, 0, 7 }, /* U */
578  { 2, 0, 1, 0, 7 }, /* V */
579  },
580  .flags = AV_PIX_FMT_FLAG_PLANAR,
581  },
582  [AV_PIX_FMT_YUVJ440P] = {
583  .name = "yuvj440p",
584  .nb_components = 3,
585  .log2_chroma_w = 0,
586  .log2_chroma_h = 1,
587  .comp = {
588  { 0, 0, 1, 0, 7 }, /* Y */
589  { 1, 0, 1, 0, 7 }, /* U */
590  { 2, 0, 1, 0, 7 }, /* V */
591  },
592  .flags = AV_PIX_FMT_FLAG_PLANAR,
593  },
594  [AV_PIX_FMT_YUVA420P] = {
595  .name = "yuva420p",
596  .nb_components = 4,
597  .log2_chroma_w = 1,
598  .log2_chroma_h = 1,
599  .comp = {
600  { 0, 0, 1, 0, 7 }, /* Y */
601  { 1, 0, 1, 0, 7 }, /* U */
602  { 2, 0, 1, 0, 7 }, /* V */
603  { 3, 0, 1, 0, 7 }, /* A */
604  },
606  },
607  [AV_PIX_FMT_YUVA422P] = {
608  .name = "yuva422p",
609  .nb_components = 4,
610  .log2_chroma_w = 1,
611  .log2_chroma_h = 0,
612  .comp = {
613  { 0, 0, 1, 0, 7 }, /* Y */
614  { 1, 0, 1, 0, 7 }, /* U */
615  { 2, 0, 1, 0, 7 }, /* V */
616  { 3, 0, 1, 0, 7 }, /* A */
617  },
619  },
620  [AV_PIX_FMT_YUVA444P] = {
621  .name = "yuva444p",
622  .nb_components = 4,
623  .log2_chroma_w = 0,
624  .log2_chroma_h = 0,
625  .comp = {
626  { 0, 0, 1, 0, 7 }, /* Y */
627  { 1, 0, 1, 0, 7 }, /* U */
628  { 2, 0, 1, 0, 7 }, /* V */
629  { 3, 0, 1, 0, 7 }, /* A */
630  },
632  },
634  .name = "yuva420p9be",
635  .nb_components = 4,
636  .log2_chroma_w = 1,
637  .log2_chroma_h = 1,
638  .comp = {
639  { 0, 1, 1, 0, 8 }, /* Y */
640  { 1, 1, 1, 0, 8 }, /* U */
641  { 2, 1, 1, 0, 8 }, /* V */
642  { 3, 1, 1, 0, 8 }, /* A */
643  },
645  },
647  .name = "yuva420p9le",
648  .nb_components = 4,
649  .log2_chroma_w = 1,
650  .log2_chroma_h = 1,
651  .comp = {
652  { 0, 1, 1, 0, 8 }, /* Y */
653  { 1, 1, 1, 0, 8 }, /* U */
654  { 2, 1, 1, 0, 8 }, /* V */
655  { 3, 1, 1, 0, 8 }, /* A */
656  },
658  },
660  .name = "yuva422p9be",
661  .nb_components = 4,
662  .log2_chroma_w = 1,
663  .log2_chroma_h = 0,
664  .comp = {
665  { 0, 1, 1, 0, 8 }, /* Y */
666  { 1, 1, 1, 0, 8 }, /* U */
667  { 2, 1, 1, 0, 8 }, /* V */
668  { 3, 1, 1, 0, 8 }, /* A */
669  },
671  },
673  .name = "yuva422p9le",
674  .nb_components = 4,
675  .log2_chroma_w = 1,
676  .log2_chroma_h = 0,
677  .comp = {
678  { 0, 1, 1, 0, 8 }, /* Y */
679  { 1, 1, 1, 0, 8 }, /* U */
680  { 2, 1, 1, 0, 8 }, /* V */
681  { 3, 1, 1, 0, 8 }, /* A */
682  },
684  },
686  .name = "yuva444p9be",
687  .nb_components = 4,
688  .log2_chroma_w = 0,
689  .log2_chroma_h = 0,
690  .comp = {
691  { 0, 1, 1, 0, 8 }, /* Y */
692  { 1, 1, 1, 0, 8 }, /* U */
693  { 2, 1, 1, 0, 8 }, /* V */
694  { 3, 1, 1, 0, 8 }, /* A */
695  },
697  },
699  .name = "yuva444p9le",
700  .nb_components = 4,
701  .log2_chroma_w = 0,
702  .log2_chroma_h = 0,
703  .comp = {
704  { 0, 1, 1, 0, 8 }, /* Y */
705  { 1, 1, 1, 0, 8 }, /* U */
706  { 2, 1, 1, 0, 8 }, /* V */
707  { 3, 1, 1, 0, 8 }, /* A */
708  },
710  },
712  .name = "yuva420p10be",
713  .nb_components = 4,
714  .log2_chroma_w = 1,
715  .log2_chroma_h = 1,
716  .comp = {
717  { 0, 1, 1, 0, 9 }, /* Y */
718  { 1, 1, 1, 0, 9 }, /* U */
719  { 2, 1, 1, 0, 9 }, /* V */
720  { 3, 1, 1, 0, 9 }, /* A */
721  },
723  },
725  .name = "yuva420p10le",
726  .nb_components = 4,
727  .log2_chroma_w = 1,
728  .log2_chroma_h = 1,
729  .comp = {
730  { 0, 1, 1, 0, 9 }, /* Y */
731  { 1, 1, 1, 0, 9 }, /* U */
732  { 2, 1, 1, 0, 9 }, /* V */
733  { 3, 1, 1, 0, 9 }, /* A */
734  },
736  },
738  .name = "yuva422p10be",
739  .nb_components = 4,
740  .log2_chroma_w = 1,
741  .log2_chroma_h = 0,
742  .comp = {
743  { 0, 1, 1, 0, 9 }, /* Y */
744  { 1, 1, 1, 0, 9 }, /* U */
745  { 2, 1, 1, 0, 9 }, /* V */
746  { 3, 1, 1, 0, 9 }, /* A */
747  },
749  },
751  .name = "yuva422p10le",
752  .nb_components = 4,
753  .log2_chroma_w = 1,
754  .log2_chroma_h = 0,
755  .comp = {
756  { 0, 1, 1, 0, 9 }, /* Y */
757  { 1, 1, 1, 0, 9 }, /* U */
758  { 2, 1, 1, 0, 9 }, /* V */
759  { 3, 1, 1, 0, 9 }, /* A */
760  },
762  },
764  .name = "yuva444p10be",
765  .nb_components = 4,
766  .log2_chroma_w = 0,
767  .log2_chroma_h = 0,
768  .comp = {
769  { 0, 1, 1, 0, 9 }, /* Y */
770  { 1, 1, 1, 0, 9 }, /* U */
771  { 2, 1, 1, 0, 9 }, /* V */
772  { 3, 1, 1, 0, 9 }, /* A */
773  },
775  },
777  .name = "yuva444p10le",
778  .nb_components = 4,
779  .log2_chroma_w = 0,
780  .log2_chroma_h = 0,
781  .comp = {
782  { 0, 1, 1, 0, 9 }, /* Y */
783  { 1, 1, 1, 0, 9 }, /* U */
784  { 2, 1, 1, 0, 9 }, /* V */
785  { 3, 1, 1, 0, 9 }, /* A */
786  },
788  },
790  .name = "yuva420p16be",
791  .nb_components = 4,
792  .log2_chroma_w = 1,
793  .log2_chroma_h = 1,
794  .comp = {
795  { 0, 1, 1, 0, 15 }, /* Y */
796  { 1, 1, 1, 0, 15 }, /* U */
797  { 2, 1, 1, 0, 15 }, /* V */
798  { 3, 1, 1, 0, 15 }, /* A */
799  },
801  },
803  .name = "yuva420p16le",
804  .nb_components = 4,
805  .log2_chroma_w = 1,
806  .log2_chroma_h = 1,
807  .comp = {
808  { 0, 1, 1, 0, 15 }, /* Y */
809  { 1, 1, 1, 0, 15 }, /* U */
810  { 2, 1, 1, 0, 15 }, /* V */
811  { 3, 1, 1, 0, 15 }, /* A */
812  },
814  },
816  .name = "yuva422p16be",
817  .nb_components = 4,
818  .log2_chroma_w = 1,
819  .log2_chroma_h = 0,
820  .comp = {
821  { 0, 1, 1, 0, 15 }, /* Y */
822  { 1, 1, 1, 0, 15 }, /* U */
823  { 2, 1, 1, 0, 15 }, /* V */
824  { 3, 1, 1, 0, 15 }, /* A */
825  },
827  },
829  .name = "yuva422p16le",
830  .nb_components = 4,
831  .log2_chroma_w = 1,
832  .log2_chroma_h = 0,
833  .comp = {
834  { 0, 1, 1, 0, 15 }, /* Y */
835  { 1, 1, 1, 0, 15 }, /* U */
836  { 2, 1, 1, 0, 15 }, /* V */
837  { 3, 1, 1, 0, 15 }, /* A */
838  },
840  },
842  .name = "yuva444p16be",
843  .nb_components = 4,
844  .log2_chroma_w = 0,
845  .log2_chroma_h = 0,
846  .comp = {
847  { 0, 1, 1, 0, 15 }, /* Y */
848  { 1, 1, 1, 0, 15 }, /* U */
849  { 2, 1, 1, 0, 15 }, /* V */
850  { 3, 1, 1, 0, 15 }, /* A */
851  },
853  },
855  .name = "yuva444p16le",
856  .nb_components = 4,
857  .log2_chroma_w = 0,
858  .log2_chroma_h = 0,
859  .comp = {
860  { 0, 1, 1, 0, 15 }, /* Y */
861  { 1, 1, 1, 0, 15 }, /* U */
862  { 2, 1, 1, 0, 15 }, /* V */
863  { 3, 1, 1, 0, 15 }, /* A */
864  },
866  },
867 #if FF_API_VDPAU
869  .name = "vdpau_h264",
870  .log2_chroma_w = 1,
871  .log2_chroma_h = 1,
872  .flags = AV_PIX_FMT_FLAG_HWACCEL,
873  },
875  .name = "vdpau_mpeg1",
876  .log2_chroma_w = 1,
877  .log2_chroma_h = 1,
878  .flags = AV_PIX_FMT_FLAG_HWACCEL,
879  },
881  .name = "vdpau_mpeg2",
882  .log2_chroma_w = 1,
883  .log2_chroma_h = 1,
884  .flags = AV_PIX_FMT_FLAG_HWACCEL,
885  },
887  .name = "vdpau_wmv3",
888  .log2_chroma_w = 1,
889  .log2_chroma_h = 1,
890  .flags = AV_PIX_FMT_FLAG_HWACCEL,
891  },
893  .name = "vdpau_vc1",
894  .log2_chroma_w = 1,
895  .log2_chroma_h = 1,
896  .flags = AV_PIX_FMT_FLAG_HWACCEL,
897  },
899  .name = "vdpau_mpeg4",
900  .log2_chroma_w = 1,
901  .log2_chroma_h = 1,
902  .flags = AV_PIX_FMT_FLAG_HWACCEL,
903  },
904 #endif
905  [AV_PIX_FMT_RGB48BE] = {
906  .name = "rgb48be",
907  .nb_components = 3,
908  .log2_chroma_w = 0,
909  .log2_chroma_h = 0,
910  .comp = {
911  { 0, 5, 1, 0, 15 }, /* R */
912  { 0, 5, 3, 0, 15 }, /* G */
913  { 0, 5, 5, 0, 15 }, /* B */
914  },
916  },
917  [AV_PIX_FMT_RGB48LE] = {
918  .name = "rgb48le",
919  .nb_components = 3,
920  .log2_chroma_w = 0,
921  .log2_chroma_h = 0,
922  .comp = {
923  { 0, 5, 1, 0, 15 }, /* R */
924  { 0, 5, 3, 0, 15 }, /* G */
925  { 0, 5, 5, 0, 15 }, /* B */
926  },
927  .flags = AV_PIX_FMT_FLAG_RGB,
928  },
929  [AV_PIX_FMT_RGBA64BE] = {
930  .name = "rgba64be",
931  .nb_components= 4,
932  .log2_chroma_w= 0,
933  .log2_chroma_h= 0,
934  .comp = {
935  { 0, 7, 1, 0, 15 }, /* R */
936  { 0, 7, 3, 0, 15 }, /* G */
937  { 0, 7, 5, 0, 15 }, /* B */
938  { 0, 7, 7, 0, 15 }, /* A */
939  },
941  },
942  [AV_PIX_FMT_RGBA64LE] = {
943  .name = "rgba64le",
944  .nb_components= 4,
945  .log2_chroma_w= 0,
946  .log2_chroma_h= 0,
947  .comp = {
948  { 0, 7, 1, 0, 15 }, /* R */
949  { 0, 7, 3, 0, 15 }, /* G */
950  { 0, 7, 5, 0, 15 }, /* B */
951  { 0, 7, 7, 0, 15 }, /* A */
952  },
954  },
955  [AV_PIX_FMT_RGB565BE] = {
956  .name = "rgb565be",
957  .nb_components = 3,
958  .log2_chroma_w = 0,
959  .log2_chroma_h = 0,
960  .comp = {
961  { 0, 1, 0, 3, 4 }, /* R */
962  { 0, 1, 1, 5, 5 }, /* G */
963  { 0, 1, 1, 0, 4 }, /* B */
964  },
966  },
967  [AV_PIX_FMT_RGB565LE] = {
968  .name = "rgb565le",
969  .nb_components = 3,
970  .log2_chroma_w = 0,
971  .log2_chroma_h = 0,
972  .comp = {
973  { 0, 1, 2, 3, 4 }, /* R */
974  { 0, 1, 1, 5, 5 }, /* G */
975  { 0, 1, 1, 0, 4 }, /* B */
976  },
977  .flags = AV_PIX_FMT_FLAG_RGB,
978  },
979  [AV_PIX_FMT_RGB555BE] = {
980  .name = "rgb555be",
981  .nb_components = 3,
982  .log2_chroma_w = 0,
983  .log2_chroma_h = 0,
984  .comp = {
985  { 0, 1, 0, 2, 4 }, /* R */
986  { 0, 1, 1, 5, 4 }, /* G */
987  { 0, 1, 1, 0, 4 }, /* B */
988  },
990  },
991  [AV_PIX_FMT_RGB555LE] = {
992  .name = "rgb555le",
993  .nb_components = 3,
994  .log2_chroma_w = 0,
995  .log2_chroma_h = 0,
996  .comp = {
997  { 0, 1, 2, 2, 4 }, /* R */
998  { 0, 1, 1, 5, 4 }, /* G */
999  { 0, 1, 1, 0, 4 }, /* B */
1000  },
1001  .flags = AV_PIX_FMT_FLAG_RGB,
1002  },
1003  [AV_PIX_FMT_RGB444BE] = {
1004  .name = "rgb444be",
1005  .nb_components = 3,
1006  .log2_chroma_w = 0,
1007  .log2_chroma_h = 0,
1008  .comp = {
1009  { 0, 1, 0, 0, 3 }, /* R */
1010  { 0, 1, 1, 4, 3 }, /* G */
1011  { 0, 1, 1, 0, 3 }, /* B */
1012  },
1014  },
1015  [AV_PIX_FMT_RGB444LE] = {
1016  .name = "rgb444le",
1017  .nb_components = 3,
1018  .log2_chroma_w = 0,
1019  .log2_chroma_h = 0,
1020  .comp = {
1021  { 0, 1, 2, 0, 3 }, /* R */
1022  { 0, 1, 1, 4, 3 }, /* G */
1023  { 0, 1, 1, 0, 3 }, /* B */
1024  },
1025  .flags = AV_PIX_FMT_FLAG_RGB,
1026  },
1027  [AV_PIX_FMT_BGR48BE] = {
1028  .name = "bgr48be",
1029  .nb_components = 3,
1030  .log2_chroma_w = 0,
1031  .log2_chroma_h = 0,
1032  .comp = {
1033  { 0, 5, 5, 0, 15 }, /* R */
1034  { 0, 5, 3, 0, 15 }, /* G */
1035  { 0, 5, 1, 0, 15 }, /* B */
1036  },
1038  },
1039  [AV_PIX_FMT_BGR48LE] = {
1040  .name = "bgr48le",
1041  .nb_components = 3,
1042  .log2_chroma_w = 0,
1043  .log2_chroma_h = 0,
1044  .comp = {
1045  { 0, 5, 5, 0, 15 }, /* R */
1046  { 0, 5, 3, 0, 15 }, /* G */
1047  { 0, 5, 1, 0, 15 }, /* B */
1048  },
1049  .flags = AV_PIX_FMT_FLAG_RGB,
1050  },
1051  [AV_PIX_FMT_BGRA64BE] = {
1052  .name = "bgra64be",
1053  .nb_components= 4,
1054  .log2_chroma_w= 0,
1055  .log2_chroma_h= 0,
1056  .comp = {
1057  { 0, 7, 5, 0, 15 }, /* R */
1058  { 0, 7, 3, 0, 15 }, /* G */
1059  { 0, 7, 1, 0, 15 }, /* B */
1060  { 0, 7, 7, 0, 15 }, /* A */
1061  },
1063  },
1064  [AV_PIX_FMT_BGRA64LE] = {
1065  .name = "bgra64le",
1066  .nb_components= 4,
1067  .log2_chroma_w= 0,
1068  .log2_chroma_h= 0,
1069  .comp = {
1070  { 0, 7, 5, 0, 15 }, /* R */
1071  { 0, 7, 3, 0, 15 }, /* G */
1072  { 0, 7, 1, 0, 15 }, /* B */
1073  { 0, 7, 7, 0, 15 }, /* A */
1074  },
1076  },
1077  [AV_PIX_FMT_BGR565BE] = {
1078  .name = "bgr565be",
1079  .nb_components = 3,
1080  .log2_chroma_w = 0,
1081  .log2_chroma_h = 0,
1082  .comp = {
1083  { 0, 1, 1, 0, 4 }, /* R */
1084  { 0, 1, 1, 5, 5 }, /* G */
1085  { 0, 1, 0, 3, 4 }, /* B */
1086  },
1088  },
1089  [AV_PIX_FMT_BGR565LE] = {
1090  .name = "bgr565le",
1091  .nb_components = 3,
1092  .log2_chroma_w = 0,
1093  .log2_chroma_h = 0,
1094  .comp = {
1095  { 0, 1, 1, 0, 4 }, /* R */
1096  { 0, 1, 1, 5, 5 }, /* G */
1097  { 0, 1, 2, 3, 4 }, /* B */
1098  },
1099  .flags = AV_PIX_FMT_FLAG_RGB,
1100  },
1101  [AV_PIX_FMT_BGR555BE] = {
1102  .name = "bgr555be",
1103  .nb_components = 3,
1104  .log2_chroma_w = 0,
1105  .log2_chroma_h = 0,
1106  .comp = {
1107  { 0, 1, 1, 0, 4 }, /* R */
1108  { 0, 1, 1, 5, 4 }, /* G */
1109  { 0, 1, 0, 2, 4 }, /* B */
1110  },
1112  },
1113  [AV_PIX_FMT_BGR555LE] = {
1114  .name = "bgr555le",
1115  .nb_components = 3,
1116  .log2_chroma_w = 0,
1117  .log2_chroma_h = 0,
1118  .comp = {
1119  { 0, 1, 1, 0, 4 }, /* R */
1120  { 0, 1, 1, 5, 4 }, /* G */
1121  { 0, 1, 2, 2, 4 }, /* B */
1122  },
1123  .flags = AV_PIX_FMT_FLAG_RGB,
1124  },
1125  [AV_PIX_FMT_BGR444BE] = {
1126  .name = "bgr444be",
1127  .nb_components = 3,
1128  .log2_chroma_w = 0,
1129  .log2_chroma_h = 0,
1130  .comp = {
1131  { 0, 1, 1, 0, 3 }, /* R */
1132  { 0, 1, 1, 4, 3 }, /* G */
1133  { 0, 1, 0, 0, 3 }, /* B */
1134  },
1136  },
1137  [AV_PIX_FMT_BGR444LE] = {
1138  .name = "bgr444le",
1139  .nb_components = 3,
1140  .log2_chroma_w = 0,
1141  .log2_chroma_h = 0,
1142  .comp = {
1143  { 0, 1, 1, 0, 3 }, /* R */
1144  { 0, 1, 1, 4, 3 }, /* G */
1145  { 0, 1, 2, 0, 3 }, /* B */
1146  },
1147  .flags = AV_PIX_FMT_FLAG_RGB,
1148  },
1149  [AV_PIX_FMT_VAAPI_MOCO] = {
1150  .name = "vaapi_moco",
1151  .log2_chroma_w = 1,
1152  .log2_chroma_h = 1,
1153  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1154  },
1155  [AV_PIX_FMT_VAAPI_IDCT] = {
1156  .name = "vaapi_idct",
1157  .log2_chroma_w = 1,
1158  .log2_chroma_h = 1,
1159  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1160  },
1161  [AV_PIX_FMT_VAAPI_VLD] = {
1162  .name = "vaapi_vld",
1163  .log2_chroma_w = 1,
1164  .log2_chroma_h = 1,
1165  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1166  },
1167  [AV_PIX_FMT_YUV420P9LE] = {
1168  .name = "yuv420p9le",
1169  .nb_components = 3,
1170  .log2_chroma_w = 1,
1171  .log2_chroma_h = 1,
1172  .comp = {
1173  { 0, 1, 1, 0, 8 }, /* Y */
1174  { 1, 1, 1, 0, 8 }, /* U */
1175  { 2, 1, 1, 0, 8 }, /* V */
1176  },
1177  .flags = AV_PIX_FMT_FLAG_PLANAR,
1178  },
1179  [AV_PIX_FMT_YUV420P9BE] = {
1180  .name = "yuv420p9be",
1181  .nb_components = 3,
1182  .log2_chroma_w = 1,
1183  .log2_chroma_h = 1,
1184  .comp = {
1185  { 0, 1, 1, 0, 8 }, /* Y */
1186  { 1, 1, 1, 0, 8 }, /* U */
1187  { 2, 1, 1, 0, 8 }, /* V */
1188  },
1190  },
1192  .name = "yuv420p10le",
1193  .nb_components = 3,
1194  .log2_chroma_w = 1,
1195  .log2_chroma_h = 1,
1196  .comp = {
1197  { 0, 1, 1, 0, 9 }, /* Y */
1198  { 1, 1, 1, 0, 9 }, /* U */
1199  { 2, 1, 1, 0, 9 }, /* V */
1200  },
1201  .flags = AV_PIX_FMT_FLAG_PLANAR,
1202  },
1204  .name = "yuv420p10be",
1205  .nb_components = 3,
1206  .log2_chroma_w = 1,
1207  .log2_chroma_h = 1,
1208  .comp = {
1209  { 0, 1, 1, 0, 9 }, /* Y */
1210  { 1, 1, 1, 0, 9 }, /* U */
1211  { 2, 1, 1, 0, 9 }, /* V */
1212  },
1214  },
1216  .name = "yuv420p12le",
1217  .nb_components = 3,
1218  .log2_chroma_w = 1,
1219  .log2_chroma_h = 1,
1220  .comp = {
1221  { 0, 1, 1, 0, 11 }, /* Y */
1222  { 1, 1, 1, 0, 11 }, /* U */
1223  { 2, 1, 1, 0, 11 }, /* V */
1224  },
1225  .flags = AV_PIX_FMT_FLAG_PLANAR,
1226  },
1228  .name = "yuv420p12be",
1229  .nb_components = 3,
1230  .log2_chroma_w = 1,
1231  .log2_chroma_h = 1,
1232  .comp = {
1233  { 0, 1, 1, 0, 11 }, /* Y */
1234  { 1, 1, 1, 0, 11 }, /* U */
1235  { 2, 1, 1, 0, 11 }, /* V */
1236  },
1238  },
1240  .name = "yuv420p14le",
1241  .nb_components = 3,
1242  .log2_chroma_w = 1,
1243  .log2_chroma_h = 1,
1244  .comp = {
1245  { 0, 1, 1, 0, 13 }, /* Y */
1246  { 1, 1, 1, 0, 13 }, /* U */
1247  { 2, 1, 1, 0, 13 }, /* V */
1248  },
1249  .flags = AV_PIX_FMT_FLAG_PLANAR,
1250  },
1252  .name = "yuv420p14be",
1253  .nb_components = 3,
1254  .log2_chroma_w = 1,
1255  .log2_chroma_h = 1,
1256  .comp = {
1257  { 0, 1, 1, 0, 13 }, /* Y */
1258  { 1, 1, 1, 0, 13 }, /* U */
1259  { 2, 1, 1, 0, 13 }, /* V */
1260  },
1262  },
1264  .name = "yuv420p16le",
1265  .nb_components = 3,
1266  .log2_chroma_w = 1,
1267  .log2_chroma_h = 1,
1268  .comp = {
1269  { 0, 1, 1, 0, 15 }, /* Y */
1270  { 1, 1, 1, 0, 15 }, /* U */
1271  { 2, 1, 1, 0, 15 }, /* V */
1272  },
1273  .flags = AV_PIX_FMT_FLAG_PLANAR,
1274  },
1276  .name = "yuv420p16be",
1277  .nb_components = 3,
1278  .log2_chroma_w = 1,
1279  .log2_chroma_h = 1,
1280  .comp = {
1281  { 0, 1, 1, 0, 15 }, /* Y */
1282  { 1, 1, 1, 0, 15 }, /* U */
1283  { 2, 1, 1, 0, 15 }, /* V */
1284  },
1286  },
1287  [AV_PIX_FMT_YUV422P9LE] = {
1288  .name = "yuv422p9le",
1289  .nb_components = 3,
1290  .log2_chroma_w = 1,
1291  .log2_chroma_h = 0,
1292  .comp = {
1293  { 0, 1, 1, 0, 8 }, /* Y */
1294  { 1, 1, 1, 0, 8 }, /* U */
1295  { 2, 1, 1, 0, 8 }, /* V */
1296  },
1297  .flags = AV_PIX_FMT_FLAG_PLANAR,
1298  },
1299  [AV_PIX_FMT_YUV422P9BE] = {
1300  .name = "yuv422p9be",
1301  .nb_components = 3,
1302  .log2_chroma_w = 1,
1303  .log2_chroma_h = 0,
1304  .comp = {
1305  { 0, 1, 1, 0, 8 }, /* Y */
1306  { 1, 1, 1, 0, 8 }, /* U */
1307  { 2, 1, 1, 0, 8 }, /* V */
1308  },
1310  },
1312  .name = "yuv422p10le",
1313  .nb_components = 3,
1314  .log2_chroma_w = 1,
1315  .log2_chroma_h = 0,
1316  .comp = {
1317  { 0, 1, 1, 0, 9 }, /* Y */
1318  { 1, 1, 1, 0, 9 }, /* U */
1319  { 2, 1, 1, 0, 9 }, /* V */
1320  },
1321  .flags = AV_PIX_FMT_FLAG_PLANAR,
1322  },
1324  .name = "yuv422p10be",
1325  .nb_components = 3,
1326  .log2_chroma_w = 1,
1327  .log2_chroma_h = 0,
1328  .comp = {
1329  { 0, 1, 1, 0, 9 }, /* Y */
1330  { 1, 1, 1, 0, 9 }, /* U */
1331  { 2, 1, 1, 0, 9 }, /* V */
1332  },
1334  },
1336  .name = "yuv422p12le",
1337  .nb_components = 3,
1338  .log2_chroma_w = 1,
1339  .log2_chroma_h = 0,
1340  .comp = {
1341  { 0, 1, 1, 0, 11 }, /* Y */
1342  { 1, 1, 1, 0, 11 }, /* U */
1343  { 2, 1, 1, 0, 11 }, /* V */
1344  },
1345  .flags = AV_PIX_FMT_FLAG_PLANAR,
1346  },
1348  .name = "yuv422p12be",
1349  .nb_components = 3,
1350  .log2_chroma_w = 1,
1351  .log2_chroma_h = 0,
1352  .comp = {
1353  { 0, 1, 1, 0, 11 }, /* Y */
1354  { 1, 1, 1, 0, 11 }, /* U */
1355  { 2, 1, 1, 0, 11 }, /* V */
1356  },
1358  },
1360  .name = "yuv422p14le",
1361  .nb_components = 3,
1362  .log2_chroma_w = 1,
1363  .log2_chroma_h = 0,
1364  .comp = {
1365  { 0, 1, 1, 0, 13 }, /* Y */
1366  { 1, 1, 1, 0, 13 }, /* U */
1367  { 2, 1, 1, 0, 13 }, /* V */
1368  },
1369  .flags = AV_PIX_FMT_FLAG_PLANAR,
1370  },
1372  .name = "yuv422p14be",
1373  .nb_components = 3,
1374  .log2_chroma_w = 1,
1375  .log2_chroma_h = 0,
1376  .comp = {
1377  { 0, 1, 1, 0, 13 }, /* Y */
1378  { 1, 1, 1, 0, 13 }, /* U */
1379  { 2, 1, 1, 0, 13 }, /* V */
1380  },
1382  },
1384  .name = "yuv422p16le",
1385  .nb_components = 3,
1386  .log2_chroma_w = 1,
1387  .log2_chroma_h = 0,
1388  .comp = {
1389  { 0, 1, 1, 0, 15 }, /* Y */
1390  { 1, 1, 1, 0, 15 }, /* U */
1391  { 2, 1, 1, 0, 15 }, /* V */
1392  },
1393  .flags = AV_PIX_FMT_FLAG_PLANAR,
1394  },
1396  .name = "yuv422p16be",
1397  .nb_components = 3,
1398  .log2_chroma_w = 1,
1399  .log2_chroma_h = 0,
1400  .comp = {
1401  { 0, 1, 1, 0, 15 }, /* Y */
1402  { 1, 1, 1, 0, 15 }, /* U */
1403  { 2, 1, 1, 0, 15 }, /* V */
1404  },
1406  },
1408  .name = "yuv444p16le",
1409  .nb_components = 3,
1410  .log2_chroma_w = 0,
1411  .log2_chroma_h = 0,
1412  .comp = {
1413  { 0, 1, 1, 0, 15 }, /* Y */
1414  { 1, 1, 1, 0, 15 }, /* U */
1415  { 2, 1, 1, 0, 15 }, /* V */
1416  },
1417  .flags = AV_PIX_FMT_FLAG_PLANAR,
1418  },
1420  .name = "yuv444p16be",
1421  .nb_components = 3,
1422  .log2_chroma_w = 0,
1423  .log2_chroma_h = 0,
1424  .comp = {
1425  { 0, 1, 1, 0, 15 }, /* Y */
1426  { 1, 1, 1, 0, 15 }, /* U */
1427  { 2, 1, 1, 0, 15 }, /* V */
1428  },
1430  },
1432  .name = "yuv444p10le",
1433  .nb_components = 3,
1434  .log2_chroma_w = 0,
1435  .log2_chroma_h = 0,
1436  .comp = {
1437  { 0, 1, 1, 0, 9 }, /* Y */
1438  { 1, 1, 1, 0, 9 }, /* U */
1439  { 2, 1, 1, 0, 9 }, /* V */
1440  },
1441  .flags = AV_PIX_FMT_FLAG_PLANAR,
1442  },
1444  .name = "yuv444p10be",
1445  .nb_components = 3,
1446  .log2_chroma_w = 0,
1447  .log2_chroma_h = 0,
1448  .comp = {
1449  { 0, 1, 1, 0, 9 }, /* Y */
1450  { 1, 1, 1, 0, 9 }, /* U */
1451  { 2, 1, 1, 0, 9 }, /* V */
1452  },
1454  },
1455  [AV_PIX_FMT_YUV444P9LE] = {
1456  .name = "yuv444p9le",
1457  .nb_components = 3,
1458  .log2_chroma_w = 0,
1459  .log2_chroma_h = 0,
1460  .comp = {
1461  { 0, 1, 1, 0, 8 }, /* Y */
1462  { 1, 1, 1, 0, 8 }, /* U */
1463  { 2, 1, 1, 0, 8 }, /* V */
1464  },
1465  .flags = AV_PIX_FMT_FLAG_PLANAR,
1466  },
1467  [AV_PIX_FMT_YUV444P9BE] = {
1468  .name = "yuv444p9be",
1469  .nb_components = 3,
1470  .log2_chroma_w = 0,
1471  .log2_chroma_h = 0,
1472  .comp = {
1473  { 0, 1, 1, 0, 8 }, /* Y */
1474  { 1, 1, 1, 0, 8 }, /* U */
1475  { 2, 1, 1, 0, 8 }, /* V */
1476  },
1478  },
1480  .name = "yuv444p12le",
1481  .nb_components = 3,
1482  .log2_chroma_w = 0,
1483  .log2_chroma_h = 0,
1484  .comp = {
1485  { 0, 1, 1, 0, 11 }, /* Y */
1486  { 1, 1, 1, 0, 11 }, /* U */
1487  { 2, 1, 1, 0, 11 }, /* V */
1488  },
1489  .flags = AV_PIX_FMT_FLAG_PLANAR,
1490  },
1492  .name = "yuv444p12be",
1493  .nb_components = 3,
1494  .log2_chroma_w = 0,
1495  .log2_chroma_h = 0,
1496  .comp = {
1497  { 0, 1, 1, 0, 11 }, /* Y */
1498  { 1, 1, 1, 0, 11 }, /* U */
1499  { 2, 1, 1, 0, 11 }, /* V */
1500  },
1502  },
1504  .name = "yuv444p14le",
1505  .nb_components = 3,
1506  .log2_chroma_w = 0,
1507  .log2_chroma_h = 0,
1508  .comp = {
1509  { 0, 1, 1, 0, 13 }, /* Y */
1510  { 1, 1, 1, 0, 13 }, /* U */
1511  { 2, 1, 1, 0, 13 }, /* V */
1512  },
1513  .flags = AV_PIX_FMT_FLAG_PLANAR,
1514  },
1516  .name = "yuv444p14be",
1517  .nb_components = 3,
1518  .log2_chroma_w = 0,
1519  .log2_chroma_h = 0,
1520  .comp = {
1521  { 0, 1, 1, 0, 13 }, /* Y */
1522  { 1, 1, 1, 0, 13 }, /* U */
1523  { 2, 1, 1, 0, 13 }, /* V */
1524  },
1526  },
1527  [AV_PIX_FMT_DXVA2_VLD] = {
1528  .name = "dxva2_vld",
1529  .log2_chroma_w = 1,
1530  .log2_chroma_h = 1,
1531  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1532  },
1533  [AV_PIX_FMT_VDA_VLD] = {
1534  .name = "vda_vld",
1535  .log2_chroma_w = 1,
1536  .log2_chroma_h = 1,
1537  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1538  },
1539  [AV_PIX_FMT_GRAY8A] = {
1540  .name = "gray8a",
1541  .nb_components = 2,
1542  .comp = {
1543  { 0, 1, 1, 0, 7 }, /* Y */
1544  { 0, 1, 2, 0, 7 }, /* A */
1545  },
1546  .flags = AV_PIX_FMT_FLAG_ALPHA,
1547  },
1548  [AV_PIX_FMT_GBRP] = {
1549  .name = "gbrp",
1550  .nb_components = 3,
1551  .log2_chroma_w = 0,
1552  .log2_chroma_h = 0,
1553  .comp = {
1554  { 2, 0, 1, 0, 7 }, /* R */
1555  { 0, 0, 1, 0, 7 }, /* G */
1556  { 1, 0, 1, 0, 7 }, /* B */
1557  },
1559  },
1560  [AV_PIX_FMT_GBRP9LE] = {
1561  .name = "gbrp9le",
1562  .nb_components = 3,
1563  .log2_chroma_w = 0,
1564  .log2_chroma_h = 0,
1565  .comp = {
1566  { 2, 1, 1, 0, 8 }, /* R */
1567  { 0, 1, 1, 0, 8 }, /* G */
1568  { 1, 1, 1, 0, 8 }, /* B */
1569  },
1571  },
1572  [AV_PIX_FMT_GBRP9BE] = {
1573  .name = "gbrp9be",
1574  .nb_components = 3,
1575  .log2_chroma_w = 0,
1576  .log2_chroma_h = 0,
1577  .comp = {
1578  { 2, 1, 1, 0, 8 }, /* R */
1579  { 0, 1, 1, 0, 8 }, /* G */
1580  { 1, 1, 1, 0, 8 }, /* B */
1581  },
1583  },
1584  [AV_PIX_FMT_GBRP10LE] = {
1585  .name = "gbrp10le",
1586  .nb_components = 3,
1587  .log2_chroma_w = 0,
1588  .log2_chroma_h = 0,
1589  .comp = {
1590  { 2, 1, 1, 0, 9 }, /* R */
1591  { 0, 1, 1, 0, 9 }, /* G */
1592  { 1, 1, 1, 0, 9 }, /* B */
1593  },
1595  },
1596  [AV_PIX_FMT_GBRP10BE] = {
1597  .name = "gbrp10be",
1598  .nb_components = 3,
1599  .log2_chroma_w = 0,
1600  .log2_chroma_h = 0,
1601  .comp = {
1602  { 2, 1, 1, 0, 9 }, /* R */
1603  { 0, 1, 1, 0, 9 }, /* G */
1604  { 1, 1, 1, 0, 9 }, /* B */
1605  },
1607  },
1608  [AV_PIX_FMT_GBRP12LE] = {
1609  .name = "gbrp12le",
1610  .nb_components = 3,
1611  .log2_chroma_w = 0,
1612  .log2_chroma_h = 0,
1613  .comp = {
1614  { 2, 1, 1, 0, 11 }, /* R */
1615  { 0, 1, 1, 0, 11 }, /* G */
1616  { 1, 1, 1, 0, 11 }, /* B */
1617  },
1619  },
1620  [AV_PIX_FMT_GBRP12BE] = {
1621  .name = "gbrp12be",
1622  .nb_components = 3,
1623  .log2_chroma_w = 0,
1624  .log2_chroma_h = 0,
1625  .comp = {
1626  { 2, 1, 1, 0, 11 }, /* R */
1627  { 0, 1, 1, 0, 11 }, /* G */
1628  { 1, 1, 1, 0, 11 }, /* B */
1629  },
1631  },
1632  [AV_PIX_FMT_GBRP14LE] = {
1633  .name = "gbrp14le",
1634  .nb_components = 3,
1635  .log2_chroma_w = 0,
1636  .log2_chroma_h = 0,
1637  .comp = {
1638  { 2, 1, 1, 0, 13 }, /* R */
1639  { 0, 1, 1, 0, 13 }, /* G */
1640  { 1, 1, 1, 0, 13 }, /* B */
1641  },
1643  },
1644  [AV_PIX_FMT_GBRP14BE] = {
1645  .name = "gbrp14be",
1646  .nb_components = 3,
1647  .log2_chroma_w = 0,
1648  .log2_chroma_h = 0,
1649  .comp = {
1650  { 2, 1, 1, 0, 13 }, /* R */
1651  { 0, 1, 1, 0, 13 }, /* G */
1652  { 1, 1, 1, 0, 13 }, /* B */
1653  },
1655  },
1656  [AV_PIX_FMT_GBRP16LE] = {
1657  .name = "gbrp16le",
1658  .nb_components = 3,
1659  .log2_chroma_w = 0,
1660  .log2_chroma_h = 0,
1661  .comp = {
1662  { 2, 1, 1, 0, 15 }, /* R */
1663  { 0, 1, 1, 0, 15 }, /* G */
1664  { 1, 1, 1, 0, 15 }, /* B */
1665  },
1667  },
1668  [AV_PIX_FMT_GBRP16BE] = {
1669  .name = "gbrp16be",
1670  .nb_components = 3,
1671  .log2_chroma_w = 0,
1672  .log2_chroma_h = 0,
1673  .comp = {
1674  { 2, 1, 1, 0, 15 }, /* R */
1675  { 0, 1, 1, 0, 15 }, /* G */
1676  { 1, 1, 1, 0, 15 }, /* B */
1677  },
1679  },
1680  [AV_PIX_FMT_GBRAP] = {
1681  .name = "gbrap",
1682  .nb_components = 4,
1683  .log2_chroma_w = 0,
1684  .log2_chroma_h = 0,
1685  .comp = {
1686  { 2, 0, 1, 0, 7 }, /* R */
1687  { 0, 0, 1, 0, 7 }, /* G */
1688  { 1, 0, 1, 0, 7 }, /* B */
1689  { 3, 0, 1, 0, 7 }, /* A */
1690  },
1692  },
1693  [AV_PIX_FMT_GBRAP16LE] = {
1694  .name = "gbrap16le",
1695  .nb_components = 4,
1696  .log2_chroma_w = 0,
1697  .log2_chroma_h = 0,
1698  .comp = {
1699  { 2, 1, 1, 0, 15 }, /* R */
1700  { 0, 1, 1, 0, 15 }, /* G */
1701  { 1, 1, 1, 0, 15 }, /* B */
1702  { 3, 1, 1, 0, 15 }, /* A */
1703  },
1705  },
1706  [AV_PIX_FMT_GBRAP16BE] = {
1707  .name = "gbrap16be",
1708  .nb_components = 4,
1709  .log2_chroma_w = 0,
1710  .log2_chroma_h = 0,
1711  .comp = {
1712  { 2, 1, 1, 0, 15 }, /* R */
1713  { 0, 1, 1, 0, 15 }, /* G */
1714  { 1, 1, 1, 0, 15 }, /* B */
1715  { 3, 1, 1, 0, 15 }, /* A */
1716  },
1718  },
1719  [AV_PIX_FMT_VDPAU] = {
1720  .name = "vdpau",
1721  .log2_chroma_w = 1,
1722  .log2_chroma_h = 1,
1723  .flags = AV_PIX_FMT_FLAG_HWACCEL,
1724  },
1725  [AV_PIX_FMT_XYZ12LE] = {
1726  .name = "xyz12le",
1727  .nb_components = 3,
1728  .log2_chroma_w = 0,
1729  .log2_chroma_h = 0,
1730  .comp = {
1731  { 0, 5, 1, 4, 11 }, /* X */
1732  { 0, 5, 3, 4, 11 }, /* Y */
1733  { 0, 5, 5, 4, 11 }, /* Z */
1734  },
1735  /*.flags = -- not used*/
1736  },
1737  [AV_PIX_FMT_XYZ12BE] = {
1738  .name = "xyz12be",
1739  .nb_components = 3,
1740  .log2_chroma_w = 0,
1741  .log2_chroma_h = 0,
1742  .comp = {
1743  { 0, 5, 1, 4, 11 }, /* X */
1744  { 0, 5, 3, 4, 11 }, /* Y */
1745  { 0, 5, 5, 4, 11 }, /* Z */
1746  },
1747  .flags = AV_PIX_FMT_FLAG_BE,
1748  },
1749 
1750 #define BAYER8_DESC_COMMON \
1751  .nb_components= 3, \
1752  .log2_chroma_w= 0, \
1753  .log2_chroma_h= 0, \
1754  .comp = { \
1755  {0,0,0,0,1}, \
1756  {0,0,0,0,3}, \
1757  {0,0,0,0,1}, \
1758  }, \
1759 
1760 #define BAYER16_DESC_COMMON \
1761  .nb_components= 3, \
1762  .log2_chroma_w= 0, \
1763  .log2_chroma_h= 0, \
1764  .comp = { \
1765  {0,1,0,0, 3}, \
1766  {0,1,0,0, 7}, \
1767  {0,1,0,0, 3}, \
1768  }, \
1769 
1771  .name = "bayer_bggr8",
1773  .flags = AV_PIX_FMT_FLAG_RGB,
1774  },
1776  .name = "bayer_bggr16le",
1778  .flags = AV_PIX_FMT_FLAG_RGB,
1779  },
1781  .name = "bayer_bggr16be",
1784  },
1786  .name = "bayer_rggb8",
1788  .flags = AV_PIX_FMT_FLAG_RGB,
1789  },
1791  .name = "bayer_rggb16le",
1793  .flags = AV_PIX_FMT_FLAG_RGB,
1794  },
1796  .name = "bayer_rggb16be",
1799  },
1801  .name = "bayer_gbrg8",
1803  .flags = AV_PIX_FMT_FLAG_RGB,
1804  },
1806  .name = "bayer_gbrg16le",
1808  .flags = AV_PIX_FMT_FLAG_RGB,
1809  },
1811  .name = "bayer_gbrg16be",
1814  },
1816  .name = "bayer_grbg8",
1818  .flags = AV_PIX_FMT_FLAG_RGB,
1819  },
1821  .name = "bayer_grbg16le",
1823  .flags = AV_PIX_FMT_FLAG_RGB,
1824  },
1826  .name = "bayer_grbg16be",
1829  },
1830  [AV_PIX_FMT_NV16] = {
1831  .name = "nv16",
1832  .nb_components = 3,
1833  .log2_chroma_w = 1,
1834  .log2_chroma_h = 0,
1835  .comp = {
1836  { 0, 0, 1, 0, 7 }, /* Y */
1837  { 1, 1, 1, 0, 7 }, /* U */
1838  { 1, 1, 2, 0, 7 }, /* V */
1839  },
1840  .flags = AV_PIX_FMT_FLAG_PLANAR,
1841  },
1842  [AV_PIX_FMT_NV20LE] = {
1843  .name = "nv20le",
1844  .nb_components = 3,
1845  .log2_chroma_w = 1,
1846  .log2_chroma_h = 0,
1847  .comp = {
1848  { 0, 1, 1, 0, 9 }, /* Y */
1849  { 1, 3, 1, 0, 9 }, /* U */
1850  { 1, 3, 3, 0, 9 }, /* V */
1851  },
1852  .flags = AV_PIX_FMT_FLAG_PLANAR,
1853  },
1854  [AV_PIX_FMT_NV20BE] = {
1855  .name = "nv20be",
1856  .nb_components = 3,
1857  .log2_chroma_w = 1,
1858  .log2_chroma_h = 0,
1859  .comp = {
1860  { 0, 1, 1, 0, 9 }, /* Y */
1861  { 1, 3, 1, 0, 9 }, /* U */
1862  { 1, 3, 3, 0, 9 }, /* V */
1863  },
1865  },
1866 };
1867 
1869 static enum AVPixelFormat get_pix_fmt_internal(const char *name)
1870 {
1871  enum AVPixelFormat pix_fmt;
1872 
1873  for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++)
1874  if (av_pix_fmt_descriptors[pix_fmt].name &&
1875  !strcmp(av_pix_fmt_descriptors[pix_fmt].name, name))
1876  return pix_fmt;
1877 
1878  return AV_PIX_FMT_NONE;
1879 }
1880 
1882 {
1883  return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
1884  av_pix_fmt_descriptors[pix_fmt].name : NULL;
1885 }
1886 
1887 #if HAVE_BIGENDIAN
1888 # define X_NE(be, le) be
1889 #else
1890 # define X_NE(be, le) le
1891 #endif
1892 
1894 {
1895  enum AVPixelFormat pix_fmt;
1896 
1897  if (!strcmp(name, "rgb32"))
1898  name = X_NE("argb", "bgra");
1899  else if (!strcmp(name, "bgr32"))
1900  name = X_NE("abgr", "rgba");
1901 
1902  pix_fmt = get_pix_fmt_internal(name);
1903  if (pix_fmt == AV_PIX_FMT_NONE) {
1904  char name2[32];
1905 
1906  snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
1907  pix_fmt = get_pix_fmt_internal(name2);
1908  }
1909  return pix_fmt;
1910 }
1911 
1913 {
1914  int c, bits = 0;
1915  int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
1916 
1917  for (c = 0; c < pixdesc->nb_components; c++) {
1918  int s = c == 1 || c == 2 ? 0 : log2_pixels;
1919  bits += (pixdesc->comp[c].depth_minus1 + 1) << s;
1920  }
1921 
1922  return bits >> log2_pixels;
1923 }
1924 
1926 {
1927  int c, bits = 0;
1928  int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
1929  int steps[4] = {0};
1930 
1931  for (c = 0; c < pixdesc->nb_components; c++) {
1932  const AVComponentDescriptor *comp = &pixdesc->comp[c];
1933  int s = c == 1 || c == 2 ? 0 : log2_pixels;
1934  steps[comp->plane] = (comp->step_minus1 + 1) << s;
1935  }
1936  for (c = 0; c < 4; c++)
1937  bits += steps[c];
1938 
1939  if(!(pixdesc->flags & AV_PIX_FMT_FLAG_BITSTREAM))
1940  bits *= 8;
1941 
1942  return bits >> log2_pixels;
1943 }
1944 
1945 char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt)
1946 {
1947  /* print header */
1948  if (pix_fmt < 0) {
1949  snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
1950  } else {
1951  const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[pix_fmt];
1952  snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name,
1953  pixdesc->nb_components, av_get_bits_per_pixel(pixdesc));
1954  }
1955 
1956  return buf;
1957 }
1958 
1960 {
1961  if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB)
1962  return NULL;
1963  return &av_pix_fmt_descriptors[pix_fmt];
1964 }
1965 
1967 {
1968  if (!prev)
1969  return &av_pix_fmt_descriptors[0];
1970  while (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1) {
1971  prev++;
1972  if (prev->name)
1973  return prev;
1974  }
1975  return NULL;
1976 }
1977 
1979 {
1980  if (desc < av_pix_fmt_descriptors ||
1981  desc >= av_pix_fmt_descriptors + FF_ARRAY_ELEMS(av_pix_fmt_descriptors))
1982  return AV_PIX_FMT_NONE;
1983 
1984  return desc - av_pix_fmt_descriptors;
1985 }
1987 
1989  int *h_shift, int *v_shift)
1990 {
1991  const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
1992  if (!desc)
1993  return AVERROR(ENOSYS);
1994  *h_shift = desc->log2_chroma_w;
1995  *v_shift = desc->log2_chroma_h;
1996 
1997  return 0;
1998 }
1999 
2001 {
2002  const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
2003  int i, planes[4] = { 0 }, ret = 0;
2004 
2005  if (!desc)
2006  return AVERROR(EINVAL);
2007 
2008  for (i = 0; i < desc->nb_components; i++)
2009  planes[desc->comp[i].plane] = 1;
2010  for (i = 0; i < FF_ARRAY_ELEMS(planes); i++)
2011  ret += planes[i];
2012  return ret;
2013 }
2014 
2016  int i, j;
2017 
2018  for (i=0; i<FF_ARRAY_ELEMS(av_pix_fmt_descriptors); i++) {
2019  const AVPixFmtDescriptor *d = &av_pix_fmt_descriptors[i];
2020  uint8_t fill[4][8+6+3] = {{0}};
2021  uint8_t *data[4] = {fill[0], fill[1], fill[2], fill[3]};
2022  int linesize[4] = {0,0,0,0};
2023  uint16_t tmp[2];
2024 
2025  if (!d->name && !d->nb_components && !d->log2_chroma_w && !d->log2_chroma_h && !d->flags)
2026  continue;
2027 // av_log(NULL, AV_LOG_DEBUG, "Checking: %s\n", d->name);
2028  av_assert0(d->log2_chroma_w <= 3);
2029  av_assert0(d->log2_chroma_h <= 3);
2030  av_assert0(d->nb_components <= 4);
2031  av_assert0(d->name && d->name[0]);
2032  av_assert0((d->nb_components==4 || d->nb_components==2) == !!(d->flags & AV_PIX_FMT_FLAG_ALPHA));
2033  av_assert2(av_get_pix_fmt(d->name) == i);
2034 
2035  for (j=0; j<FF_ARRAY_ELEMS(d->comp); j++) {
2036  const AVComponentDescriptor *c = &d->comp[j];
2037  if(j>=d->nb_components) {
2038  av_assert0(!c->plane && !c->step_minus1 && !c->offset_plus1 && !c->shift && !c->depth_minus1);
2039  continue;
2040  }
2041  if (d->flags & AV_PIX_FMT_FLAG_BITSTREAM) {
2043  } else {
2044  av_assert0(8*(c->step_minus1+1) >= c->depth_minus1+1);
2045  }
2046  if (!strncmp(d->name, "bayer_", 6))
2047  continue;
2048  av_read_image_line(tmp, (void*)data, linesize, d, 0, 0, j, 2, 0);
2049  av_assert0(tmp[0] == 0 && tmp[1] == 0);
2050  tmp[0] = tmp[1] = (1<<(c->depth_minus1 + 1)) - 1;
2051  av_write_image_line(tmp, data, linesize, d, 0, 0, j, 2);
2052  }
2053  }
2054 }
2055 
2056 
2058 {
2059  const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
2060  char name[16];
2061  int i;
2062 
2063  if (!desc || strlen(desc->name) < 2)
2064  return AV_PIX_FMT_NONE;
2065  av_strlcpy(name, desc->name, sizeof(name));
2066  i = strlen(name) - 2;
2067  if (strcmp(name + i, "be") && strcmp(name + i, "le"))
2068  return AV_PIX_FMT_NONE;
2069 
2070  name[i] ^= 'b' ^ 'l';
2071 
2072  return get_pix_fmt_internal(name);
2073 }