]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blob - libavcodec/pixdesc.c
aac9cba6cf539ee5b02778720da6a17a7a2b6cff
[frescor/ffmpeg.git] / libavcodec / pixdesc.c
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
25 static 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 };