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 "libavutil/pixfmt.h"
23#include "pixdesc.h"
24
25static const AVPixFmtDescriptor pix_fmt_desc[PIX_FMT_NB] = {
26    [PIX_FMT_YUV422P] = {
27        .nb_channels  = 3,
28        .log2_chroma_w= 1,
29        .log2_chroma_h= 0,
30        .comp = {
31            {0,0,1,0,7},
32            {1,0,1,0,7},
33            {2,0,1,0,7},
34        },
35    },
36    [PIX_FMT_YUV420P] = {
37        .nb_channels  = 3,
38        .log2_chroma_w= 1,
39        .log2_chroma_h= 1,
40        .comp = {
41            {0,0,1,0,7},
42            {1,0,1,0,7},
43            {2,0,1,0,7},
44        },
45    },
46    [PIX_FMT_YUV410P] = {
47        .nb_channels  = 3,
48        .log2_chroma_w= 2,
49        .log2_chroma_h= 2,
50        .comp = {
51            {0,0,1,0,7},
52            {1,0,1,0,7},
53            {2,0,1,0,7},
54        },
55    },
56    [PIX_FMT_NV12] = {
57        .nb_channels  = 3,
58        .log2_chroma_w= 1,
59        .log2_chroma_h= 1,
60        .comp = {
61            {0,0,1,0,7},
62            {1,1,1,0,7},
63            {1,1,2,0,7},
64        },
65    },
66    [PIX_FMT_YUYV422] = {
67        .nb_channels  = 3,
68        .log2_chroma_w= 1,
69        .log2_chroma_h= 0,
70        .comp = {
71            {0,1,1,0,7},
72            {0,3,2,0,7},
73            {0,3,4,0,7},
74        },
75    },
76    [PIX_FMT_UYVY422] = {
77        .nb_channels  = 3,
78        .log2_chroma_w= 1,
79        .log2_chroma_h= 0,
80        .comp = {
81            {0,1,2,0,7},
82            {0,3,1,0,7},
83            {0,3,3,0,7},
84        },
85    },
86    [PIX_FMT_GRAY16LE] = {
87        .nb_channels  = 1,
88        .log2_chroma_w= 0,
89        .log2_chroma_h= 0,
90        .comp = {
91            {0,1,1,0,15},
92        },
93    },
94    [PIX_FMT_GRAY16BE] = {
95        .nb_channels  = 1,
96        .log2_chroma_w= 0,
97        .log2_chroma_h= 0,
98        .comp = {
99            {0,1,1,0,15},
100        },
101        .flags = PIX_FMT_BE,
102    },
103    [PIX_FMT_RGB24] = {
104        .nb_channels  = 3,
105        .log2_chroma_w= 0,
106        .log2_chroma_h= 0,
107        .comp = {
108            {0,2,1,0,7},
109            {0,2,2,0,7},
110            {0,2,3,0,7},
111        },
112    },
113    [PIX_FMT_RGBA] = {
114        .nb_channels  = 4,
115        .log2_chroma_w= 0,
116        .log2_chroma_h= 0,
117        .comp = {
118            {0,3,1,0,7},
119            {0,3,2,0,7},
120            {0,3,3,0,7},
121            {0,3,4,0,7},
122        },
123    },
124    [PIX_FMT_RGB48LE] = {
125        .nb_channels  = 3,
126        .log2_chroma_w= 0,
127        .log2_chroma_h= 0,
128        .comp = {
129            {0,5,1,0,15},
130            {0,5,3,0,15},
131            {0,5,5,0,15},
132        },
133    },
134    [PIX_FMT_RGB48BE] = {
135        .nb_channels  = 3,
136        .log2_chroma_w= 0,
137        .log2_chroma_h= 0,
138        .comp = {
139            {0,5,1,0,15},
140            {0,5,3,0,15},
141            {0,5,5,0,15},
142        },
143        .flags = PIX_FMT_BE,
144    },
145//FIXME change pix fmt defines so that we have a LE & BE instead of a native-endian
146#if 0
147    [PIX_FMT_RGB565_LE] = {
148        .nb_channels  = 3,
149        .log2_chroma_w= 0,
150        .log2_chroma_h= 0,
151        .comp = {
152            {0,1,1,0,4},
153            {0,1,1,5,5},
154            {0,1,2,3,4},
155        },
156    },
157    [PIX_FMT_RGB565_BE] = {
158        .nb_channels  = 3,
159        .log2_chroma_w= 0,
160        .log2_chroma_h= 0,
161        .comp = {
162            {0,1,1, 0,4},
163            {0,1,1, 5,5},
164            {0,1,0, 3,4},
165        },
166        .flags = PIX_FMT_BE,
167    },
168#endif
169    [PIX_FMT_MONOBLACK] = {
170        .nb_channels  = 1,
171        .log2_chroma_w= 0,
172        .log2_chroma_h= 0,
173        .comp = {
174            {0,0,1,7,0},
175        },
176        .flags = PIX_FMT_BITSTREAM,
177    },
178    [PIX_FMT_PAL8] = {
179        .nb_channels  = 1,
180        .log2_chroma_w= 0,
181        .log2_chroma_h= 0,
182        .comp = {
183            {0,0,1,0,7},
184        },
185        .flags = PIX_FMT_PAL,
186    },
187};
188