vlc_fourcc.h 29.8 KB
Newer Older
1 2 3 4 5 6 7 8
/*****************************************************************************
 * vlc_fourcc.h: Definition of various FOURCC and helpers
 *****************************************************************************
 * Copyright (C) 2009 Laurent Aimar
 * $Id$
 *
 * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ com>
 *
Jean-Baptiste Kempf's avatar
LGPL  
Jean-Baptiste Kempf committed
9 10 11
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
12 13 14 15
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Jean-Baptiste Kempf's avatar
LGPL  
Jean-Baptiste Kempf committed
16 17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
18
 *
Jean-Baptiste Kempf's avatar
LGPL  
Jean-Baptiste Kempf committed
19 20 21
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 23 24 25 26 27 28 29
 *****************************************************************************/

#ifndef VLC_FOURCC_H
#define VLC_FOURCC_H 1

#include <vlc_common.h>

/* Video codec */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
#define VLC_CODEC_MPGV            VLC_FOURCC('m','p','g','v')
#define VLC_CODEC_MP4V            VLC_FOURCC('m','p','4','v')
#define VLC_CODEC_DIV1            VLC_FOURCC('D','I','V','1')
#define VLC_CODEC_DIV2            VLC_FOURCC('D','I','V','2')
#define VLC_CODEC_DIV3            VLC_FOURCC('D','I','V','3')
#define VLC_CODEC_SVQ1            VLC_FOURCC('S','V','Q','1')
#define VLC_CODEC_SVQ3            VLC_FOURCC('S','V','Q','3')
#define VLC_CODEC_H264            VLC_FOURCC('h','2','6','4')
#define VLC_CODEC_H263            VLC_FOURCC('h','2','6','3')
#define VLC_CODEC_H263I           VLC_FOURCC('I','2','6','3')
#define VLC_CODEC_H263P           VLC_FOURCC('I','L','V','R')
#define VLC_CODEC_FLV1            VLC_FOURCC('F','L','V','1')
#define VLC_CODEC_H261            VLC_FOURCC('h','2','6','1')
#define VLC_CODEC_MJPG            VLC_FOURCC('M','J','P','G')
#define VLC_CODEC_MJPGB           VLC_FOURCC('m','j','p','b')
#define VLC_CODEC_LJPG            VLC_FOURCC('L','J','P','G')
#define VLC_CODEC_WMV1            VLC_FOURCC('W','M','V','1')
#define VLC_CODEC_WMV2            VLC_FOURCC('W','M','V','2')
#define VLC_CODEC_WMV3            VLC_FOURCC('W','M','V','3')
#define VLC_CODEC_WMVA            VLC_FOURCC('W','M','V','A')
#define VLC_CODEC_WMVP            VLC_FOURCC('W','M','V','P')
#define VLC_CODEC_WMVP2           VLC_FOURCC('W','V','P','2')
#define VLC_CODEC_VC1             VLC_FOURCC('V','C','-','1')
#define VLC_CODEC_THEORA          VLC_FOURCC('t','h','e','o')
#define VLC_CODEC_TARKIN          VLC_FOURCC('t','a','r','k')
#define VLC_CODEC_DIRAC           VLC_FOURCC('d','r','a','c')
#define VLC_CODEC_CAVS            VLC_FOURCC('C','A','V','S')
#define VLC_CODEC_NUV             VLC_FOURCC('N','J','P','G')
#define VLC_CODEC_RV10            VLC_FOURCC('R','V','1','0')
#define VLC_CODEC_RV13            VLC_FOURCC('R','V','1','3')
#define VLC_CODEC_RV20            VLC_FOURCC('R','V','2','0')
#define VLC_CODEC_RV30            VLC_FOURCC('R','V','3','0')
#define VLC_CODEC_RV40            VLC_FOURCC('R','V','4','0')
#define VLC_CODEC_VP3             VLC_FOURCC('V','P','3',' ')
#define VLC_CODEC_VP5             VLC_FOURCC('V','P','5',' ')
#define VLC_CODEC_VP6             VLC_FOURCC('V','P','6','2')
#define VLC_CODEC_VP6F            VLC_FOURCC('V','P','6','F')
#define VLC_CODEC_VP6A            VLC_FOURCC('V','P','6','A')
#define VLC_CODEC_MSVIDEO1        VLC_FOURCC('M','S','V','C')
#define VLC_CODEC_FLIC            VLC_FOURCC('F','L','I','C')
#define VLC_CODEC_SP5X            VLC_FOURCC('S','P','5','X')
#define VLC_CODEC_DV              VLC_FOURCC('d','v',' ',' ')
#define VLC_CODEC_MSRLE           VLC_FOURCC('m','r','l','e')
#define VLC_CODEC_HUFFYUV         VLC_FOURCC('H','F','Y','U')
#define VLC_CODEC_FFVHUFF         VLC_FOURCC('F','F','V','H')
#define VLC_CODEC_ASV1            VLC_FOURCC('A','S','V','1')
#define VLC_CODEC_ASV2            VLC_FOURCC('A','S','V','2')
#define VLC_CODEC_FFV1            VLC_FOURCC('F','F','V','1')
#define VLC_CODEC_VCR1            VLC_FOURCC('V','C','R','1')
#define VLC_CODEC_CLJR            VLC_FOURCC('C','L','J','R')
#define VLC_CODEC_RPZA            VLC_FOURCC('r','p','z','a')
#define VLC_CODEC_SMC             VLC_FOURCC('s','m','c',' ')
#define VLC_CODEC_CINEPAK         VLC_FOURCC('C','V','I','D')
#define VLC_CODEC_TSCC            VLC_FOURCC('T','S','C','C')
#define VLC_CODEC_CSCD            VLC_FOURCC('C','S','C','D')
#define VLC_CODEC_ZMBV            VLC_FOURCC('Z','M','B','V')
#define VLC_CODEC_VMNC            VLC_FOURCC('V','M','n','c')
#define VLC_CODEC_FRAPS           VLC_FOURCC('F','P','S','1')
#define VLC_CODEC_TRUEMOTION1     VLC_FOURCC('D','U','C','K')
#define VLC_CODEC_TRUEMOTION2     VLC_FOURCC('T','M','2','0')
#define VLC_CODEC_QTRLE           VLC_FOURCC('r','l','e',' ')
#define VLC_CODEC_QDRAW           VLC_FOURCC('q','d','r','w')
#define VLC_CODEC_QPEG            VLC_FOURCC('Q','P','E','G')
#define VLC_CODEC_ULTI            VLC_FOURCC('U','L','T','I')
#define VLC_CODEC_VIXL            VLC_FOURCC('V','I','X','L')
#define VLC_CODEC_LOCO            VLC_FOURCC('L','O','C','O')
#define VLC_CODEC_WNV1            VLC_FOURCC('W','N','V','1')
#define VLC_CODEC_AASC            VLC_FOURCC('A','A','S','C')
#define VLC_CODEC_INDEO2          VLC_FOURCC('I','V','2','0')
#define VLC_CODEC_INDEO3          VLC_FOURCC('I','V','3','1')
#define VLC_CODEC_INDEO4          VLC_FOURCC('I','V','4','1')
#define VLC_CODEC_INDEO5          VLC_FOURCC('I','V','5','0')
#define VLC_CODEC_FLASHSV         VLC_FOURCC('F','S','V','1')
#define VLC_CODEC_KMVC            VLC_FOURCC('K','M','V','C')
#define VLC_CODEC_SMACKVIDEO      VLC_FOURCC('S','M','K','2')
#define VLC_CODEC_DNXHD           VLC_FOURCC('A','V','d','n')
#define VLC_CODEC_8BPS            VLC_FOURCC('8','B','P','S')
#define VLC_CODEC_MIMIC           VLC_FOURCC('M','L','2','O')
#define VLC_CODEC_INTERPLAY       VLC_FOURCC('i','m','v','e')
#define VLC_CODEC_IDCIN           VLC_FOURCC('I','D','C','I')
#define VLC_CODEC_4XM             VLC_FOURCC('4','X','M','V')
#define VLC_CODEC_ROQ             VLC_FOURCC('R','o','Q','v')
#define VLC_CODEC_MDEC            VLC_FOURCC('M','D','E','C')
#define VLC_CODEC_VMDVIDEO        VLC_FOURCC('V','M','D','V')
#define VLC_CODEC_CDG             VLC_FOURCC('C','D','G',' ')
#define VLC_CODEC_FRWU            VLC_FOURCC('F','R','W','U')
#define VLC_CODEC_AMV             VLC_FOURCC('A','M','V',' ')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
117
#define VLC_CODEC_VP7             VLC_FOURCC('V','P','7','0')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
118
#define VLC_CODEC_VP8             VLC_FOURCC('V','P','8','0')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
119
#define VLC_CODEC_VP9             VLC_FOURCC('V','P','9','0')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
#define VLC_CODEC_JPEG2000        VLC_FOURCC('J','P','2','K')
#define VLC_CODEC_LAGARITH        VLC_FOURCC('L','A','G','S')
#define VLC_CODEC_FLASHSV2        VLC_FOURCC('F','S','V','2')
#define VLC_CODEC_PRORES          VLC_FOURCC('a','p','c','n')
#define VLC_CODEC_MXPEG           VLC_FOURCC('M','X','P','G')
#define VLC_CODEC_CDXL            VLC_FOURCC('C','D','X','L')
#define VLC_CODEC_BMVVIDEO        VLC_FOURCC('B','M','V','V')
#define VLC_CODEC_UTVIDEO         VLC_FOURCC('U','L','R','A')
#define VLC_CODEC_VBLE            VLC_FOURCC('V','B','L','E')
#define VLC_CODEC_DXTORY          VLC_FOURCC('x','t','o','r')
#define VLC_CODEC_MSS1            VLC_FOURCC('M','S','S','1')
#define VLC_CODEC_MSS2            VLC_FOURCC('M','S','S','2')
#define VLC_CODEC_MSA1            VLC_FOURCC('M','S','A','1')
#define VLC_CODEC_TSC2            VLC_FOURCC('T','S','C','2')
#define VLC_CODEC_MTS2            VLC_FOURCC('M','T','S','2')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
135
#define VLC_CODEC_HEVC            VLC_FOURCC('h','e','v','c')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
136
#define VLC_CODEC_ICOD            VLC_FOURCC('i','c','o','d')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
137 138 139
#define VLC_CODEC_G2M2            VLC_FOURCC('G','2','M','2')
#define VLC_CODEC_G2M3            VLC_FOURCC('G','2','M','3')
#define VLC_CODEC_G2M4            VLC_FOURCC('G','2','M','4')
140 141 142
#define VLC_CODEC_BINKVIDEO       VLC_FOURCC('B','I','K','f')
#define VLC_CODEC_BINKAUDIO_DCT   VLC_FOURCC('B','A','U','1')
#define VLC_CODEC_BINKAUDIO_RDFT  VLC_FOURCC('B','A','U','2')
143
#define VLC_CODEC_XAN_WC4         VLC_FOURCC('X','x','a','n')
144 145
#define VLC_CODEC_LCL_MSZH        VLC_FOURCC('M','S','Z','H')
#define VLC_CODEC_LCL_ZLIB        VLC_FOURCC('Z','L','I','B')
146
#define VLC_CODEC_THP             VLC_FOURCC('T','H','P','0')
147
#define VLC_CODEC_ESCAPE124       VLC_FOURCC('E','1','2','4')
148
#define VLC_CODEC_KGV1            VLC_FOURCC('K','G','V','1')
149
#define VLC_CODEC_CLLC            VLC_FOURCC('C','L','L','C')
150
#define VLC_CODEC_AURA            VLC_FOURCC('A','U','R','A')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
151
#define VLC_CODEC_FIC             VLC_FOURCC('F','I','C','V')
Daniel Verkamp's avatar
Daniel Verkamp committed
152
#define VLC_CODEC_TMV             VLC_FOURCC('T','M','A','V')
153
#define VLC_CODEC_XAN_WC3         VLC_FOURCC('X','A','N','3')
Daniel Verkamp's avatar
Daniel Verkamp committed
154
#define VLC_CODEC_WS_VQA          VLC_FOURCC('W','V','Q','A')
155
#define VLC_CODEC_MMVIDEO         VLC_FOURCC('M','M','V','I')
156
#define VLC_CODEC_AVS             VLC_FOURCC('A','V','S','V')
157
#define VLC_CODEC_DSICINVIDEO     VLC_FOURCC('D','C','I','V')
158
#define VLC_CODEC_TIERTEXSEQVIDEO VLC_FOURCC('T','S','E','Q')
159
#define VLC_CODEC_DXA             VLC_FOURCC('D','E','X','A')
Daniel Verkamp's avatar
Daniel Verkamp committed
160
#define VLC_CODEC_C93             VLC_FOURCC('I','C','9','3')
Daniel Verkamp's avatar
Daniel Verkamp committed
161
#define VLC_CODEC_BETHSOFTVID     VLC_FOURCC('B','V','I','D')
162
#define VLC_CODEC_VB              VLC_FOURCC('V','B','V','1')
Daniel Verkamp's avatar
Daniel Verkamp committed
163
#define VLC_CODEC_RL2             VLC_FOURCC('R','L','V','2')
Daniel Verkamp's avatar
Daniel Verkamp committed
164
#define VLC_CODEC_BFI             VLC_FOURCC('B','F','&','I')
165
#define VLC_CODEC_CMV             VLC_FOURCC('E','C','M','V')
Daniel Verkamp's avatar
Daniel Verkamp committed
166
#define VLC_CODEC_MOTIONPIXELS    VLC_FOURCC('M','P','I','X')
167
#define VLC_CODEC_TGV             VLC_FOURCC('T','G','V','V')
168

169
/* Planar YUV 4:1:0 Y:V:U */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
170
#define VLC_CODEC_YV9             VLC_FOURCC('Y','V','U','9')
171
/* Planar YUV 4:2:0 Y:V:U */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
172
#define VLC_CODEC_YV12            VLC_FOURCC('Y','V','1','2')
173
/* Planar YUV 4:1:0 Y:U:V */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
174
#define VLC_CODEC_I410            VLC_FOURCC('I','4','1','0')
175
/* Planar YUV 4:1:1 Y:U:V */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
176
#define VLC_CODEC_I411            VLC_FOURCC('I','4','1','1')
177
/* Planar YUV 4:2:0 Y:U:V 8-bit */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
178
#define VLC_CODEC_I420            VLC_FOURCC('I','4','2','0')
179
/* Planar YUV 4:2:0 Y:U:V  9-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
180 181
#define VLC_CODEC_I420_9L         VLC_FOURCC('I','0','9','L')
#define VLC_CODEC_I420_9B         VLC_FOURCC('I','0','9','B')
182
/* Planar YUV 4:2:0 Y:U:V 10-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
183 184
#define VLC_CODEC_I420_10L        VLC_FOURCC('I','0','A','L')
#define VLC_CODEC_I420_10B        VLC_FOURCC('I','0','A','B')
185
/* Planar YUV 4:2:2 Y:U:V 8-bit */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
186
#define VLC_CODEC_I422            VLC_FOURCC('I','4','2','2')
187
/* Planar YUV 4:2:2 Y:U:V  9-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
188 189
#define VLC_CODEC_I422_9L         VLC_FOURCC('I','2','9','L')
#define VLC_CODEC_I422_9B         VLC_FOURCC('I','2','9','B')
190
/* Planar YUV 4:2:2 Y:U:V 10-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
191 192
#define VLC_CODEC_I422_10L        VLC_FOURCC('I','2','A','L')
#define VLC_CODEC_I422_10B        VLC_FOURCC('I','2','A','B')
193
/* Planar YUV 4:4:0 Y:U:V */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
194
#define VLC_CODEC_I440            VLC_FOURCC('I','4','4','0')
195
/* Planar YUV 4:4:4 Y:U:V 8-bit */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
196
#define VLC_CODEC_I444            VLC_FOURCC('I','4','4','4')
Laurent Aimar's avatar
Laurent Aimar committed
197
/* Planar YUV 4:4:4 Y:U:V  9-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
198 199
#define VLC_CODEC_I444_9L         VLC_FOURCC('I','4','9','L')
#define VLC_CODEC_I444_9B         VLC_FOURCC('I','4','9','B')
Laurent Aimar's avatar
Laurent Aimar committed
200
/* Planar YUV 4:4:4 Y:U:V 10-bit stored on 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
201 202
#define VLC_CODEC_I444_10L        VLC_FOURCC('I','4','A','L')
#define VLC_CODEC_I444_10B        VLC_FOURCC('I','4','A','B')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
203 204 205
/* Planar YUV 4:4:4 Y:U:V 16-bit */
#define VLC_CODEC_I444_16L        VLC_FOURCC('I','4','F','L')
#define VLC_CODEC_I444_16B        VLC_FOURCC('I','4','F','B')
206
/* Planar YUV 4:2:0 Y:U:V full scale */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
207
#define VLC_CODEC_J420            VLC_FOURCC('J','4','2','0')
208
/* Planar YUV 4:2:2 Y:U:V full scale */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
209
#define VLC_CODEC_J422            VLC_FOURCC('J','4','2','2')
210
/* Planar YUV 4:4:0 Y:U:V full scale */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
211
#define VLC_CODEC_J440            VLC_FOURCC('J','4','4','0')
212
/* Planar YUV 4:4:4 Y:U:V full scale */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
213
#define VLC_CODEC_J444            VLC_FOURCC('J','4','4','4')
214
/* Palettized YUV with palette element Y:U:V:A */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
215
#define VLC_CODEC_YUVP            VLC_FOURCC('Y','U','V','P')
216
/* Planar YUV 4:4:4 Y:U:V:A */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
217
#define VLC_CODEC_YUVA            VLC_FOURCC('Y','U','V','A')
218 219 220 221
/* Planar YUV 4:2:2 Y:U:V:A */
#define VLC_CODEC_YUV422A         VLC_FOURCC('I','4','2','A')
/* Planar YUV 4:2:0 Y:U:V:A */
#define VLC_CODEC_YUV420A         VLC_FOURCC('I','4','0','A')
222

223
/* Palettized RGB with palette element R:G:B */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
224
#define VLC_CODEC_RGBP            VLC_FOURCC('R','G','B','P')
225
/* 8 bits RGB */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
226
#define VLC_CODEC_RGB8            VLC_FOURCC('R','G','B','8')
227
/* 12 bits RGB padded to 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
228
#define VLC_CODEC_RGB12           VLC_FOURCC('R','V','1','2')
229
/* 15 bits RGB padded to 16 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
230
#define VLC_CODEC_RGB15           VLC_FOURCC('R','V','1','5')
231
/* 16 bits RGB */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
232
#define VLC_CODEC_RGB16           VLC_FOURCC('R','V','1','6')
233
/* 24 bits RGB */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
234
#define VLC_CODEC_RGB24           VLC_FOURCC('R','V','2','4')
235
/* 24 bits RGB padded to 32 bits */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
236
#define VLC_CODEC_RGB32           VLC_FOURCC('R','V','3','2')
237
/* 32 bits RGBA */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
238
#define VLC_CODEC_RGBA            VLC_FOURCC('R','G','B','A')
239 240
/* 32 bits ARGB */
#define VLC_CODEC_ARGB            VLC_FOURCC('A','R','G','B')
Jean-Paul Saman's avatar
Jean-Paul Saman committed
241 242
/* 32 bits BGRA */
#define VLC_CODEC_BGRA            VLC_FOURCC('B','G','R','A')
243 244 245 246 247 248 249 250 251 252

/* Planar GBR 4:4:4 8 bits */
#define VLC_CODEC_GBR_PLANAR      VLC_FOURCC('G','B','R','8')
#define VLC_CODEC_GBR_PLANAR_9B   VLC_FOURCC('G','B','9','B')
#define VLC_CODEC_GBR_PLANAR_9L   VLC_FOURCC('G','B','9','L')
#define VLC_CODEC_GBR_PLANAR_10B  VLC_FOURCC('G','B','A','B')
#define VLC_CODEC_GBR_PLANAR_10L  VLC_FOURCC('G','B','A','L')
#define VLC_CODEC_GBR_PLANAR_16L  VLC_FOURCC('G','B','F','L')
#define VLC_CODEC_GBR_PLANAR_16B  VLC_FOURCC('G','B','F','B')

253
/* 8 bits grey */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
254
#define VLC_CODEC_GREY            VLC_FOURCC('G','R','E','Y')
255
/* Packed YUV 4:2:2, U:Y:V:Y */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
256
#define VLC_CODEC_UYVY            VLC_FOURCC('U','Y','V','Y')
257
/* Packed YUV 4:2:2, V:Y:U:Y */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
258
#define VLC_CODEC_VYUY            VLC_FOURCC('V','Y','U','Y')
259
/* Packed YUV 4:2:2, Y:U:Y:V */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
260
#define VLC_CODEC_YUYV            VLC_FOURCC('Y','U','Y','2')
261
/* Packed YUV 4:2:2, Y:V:Y:U */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
262
#define VLC_CODEC_YVYU            VLC_FOURCC('Y','V','Y','U')
263
/* Packed YUV 2:1:1, Y:U:Y:V */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
264
#define VLC_CODEC_Y211            VLC_FOURCC('Y','2','1','1')
265
/* Packed YUV 4:2:2, U:Y:V:Y, reverted */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
266
#define VLC_CODEC_CYUV            VLC_FOURCC('c','y','u','v')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
267
/* 10-bit 4:2:2 Component YCbCr */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
268
#define VLC_CODEC_V210            VLC_FOURCC('v','2','1','0')
269
/* 2 planes Y/UV 4:2:0 */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
270
#define VLC_CODEC_NV12            VLC_FOURCC('N','V','1','2')
271
/* 2 planes Y/VU 4:2:0 */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
272
#define VLC_CODEC_NV21            VLC_FOURCC('N','V','2','1')
273
/* 2 planes Y/UV 4:2:2 */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
274
#define VLC_CODEC_NV16            VLC_FOURCC('N','V','1','6')
275
/* 2 planes Y/VU 4:2:2 */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
276
#define VLC_CODEC_NV61            VLC_FOURCC('N','V','6','1')
277 278 279 280
/* 2 planes Y/UV 4:4:4 */
#define VLC_CODEC_NV24            VLC_FOURCC('N','V','2','4')
/* 2 planes Y/VU 4:4:4 */
#define VLC_CODEC_NV42            VLC_FOURCC('N','V','4','2')
281

282 283
/* VDPAU video surface YCbCr 4:2:0 */
#define VLC_CODEC_VDPAU_VIDEO_420 VLC_FOURCC('V','D','V','0')
284
/* VDPAU video surface YCbCr 4:2:2 */
285
#define VLC_CODEC_VDPAU_VIDEO_422 VLC_FOURCC('V','D','V','2')
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
286 287
/* VDPAU video surface YCbCr 4:4:4 */
#define VLC_CODEC_VDPAU_VIDEO_444 VLC_FOURCC('V','D','V','4')
288 289 290
/* VDPAU output surface RGBA */
#define VLC_CODEC_VDPAU_OUTPUT    VLC_FOURCC('V','D','O','R')

291 292 293
/* MediaCodec/IOMX opaque buffer type */
#define VLC_CODEC_ANDROID_OPAQUE  VLC_FOURCC('A','N','O','P')

294 295 296
/* Broadcom MMAL opaque buffer type */
#define VLC_CODEC_MMAL_OPAQUE     VLC_FOURCC('M','M','A','L')

297
/* Image codec (video) */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
298 299 300 301 302 303 304 305 306 307 308
#define VLC_CODEC_PNG             VLC_FOURCC('p','n','g',' ')
#define VLC_CODEC_PPM             VLC_FOURCC('p','p','m',' ')
#define VLC_CODEC_PGM             VLC_FOURCC('p','g','m',' ')
#define VLC_CODEC_PGMYUV          VLC_FOURCC('p','g','m','y')
#define VLC_CODEC_PAM             VLC_FOURCC('p','a','m',' ')
#define VLC_CODEC_JPEG            VLC_FOURCC('j','p','e','g')
#define VLC_CODEC_JPEGLS          VLC_FOURCC('M','J','L','S')
#define VLC_CODEC_BMP             VLC_FOURCC('b','m','p',' ')
#define VLC_CODEC_TIFF            VLC_FOURCC('t','i','f','f')
#define VLC_CODEC_GIF             VLC_FOURCC('g','i','f',' ')
#define VLC_CODEC_TARGA           VLC_FOURCC('t','g','a',' ')
Jean-Paul Saman's avatar
Jean-Paul Saman committed
309
#define VLC_CODEC_SVG             VLC_FOURCC('s','v','g',' ')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
310 311 312
#define VLC_CODEC_SGI             VLC_FOURCC('s','g','i',' ')
#define VLC_CODEC_PNM             VLC_FOURCC('p','n','m',' ')
#define VLC_CODEC_PCX             VLC_FOURCC('p','c','x',' ')
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
313
#define VLC_CODEC_XWD             VLC_FOURCC('X','W','D',' ')
Daniel Verkamp's avatar
Daniel Verkamp committed
314
#define VLC_CODEC_TXD             VLC_FOURCC('T','X','D',' ')
315 316 317


/* Audio codec */
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357
#define VLC_CODEC_MPGA                       VLC_FOURCC('m','p','g','a')
#define VLC_CODEC_MP4A                       VLC_FOURCC('m','p','4','a')
#define VLC_CODEC_ALS                        VLC_FOURCC('a','l','s',' ')
#define VLC_CODEC_A52                        VLC_FOURCC('a','5','2',' ')
#define VLC_CODEC_EAC3                       VLC_FOURCC('e','a','c','3')
#define VLC_CODEC_DTS                        VLC_FOURCC('d','t','s',' ')
#define VLC_CODEC_WMA1                       VLC_FOURCC('W','M','A','1')
#define VLC_CODEC_WMA2                       VLC_FOURCC('W','M','A','2')
#define VLC_CODEC_WMAP                       VLC_FOURCC('W','M','A','P')
#define VLC_CODEC_WMAL                       VLC_FOURCC('W','M','A','L')
#define VLC_CODEC_WMAS                       VLC_FOURCC('W','M','A','S')
#define VLC_CODEC_FLAC                       VLC_FOURCC('f','l','a','c')
#define VLC_CODEC_MLP                        VLC_FOURCC('m','l','p',' ')
#define VLC_CODEC_TRUEHD                     VLC_FOURCC('t','r','h','d')
#define VLC_CODEC_DVAUDIO                    VLC_FOURCC('d','v','a','u')
#define VLC_CODEC_SPEEX                      VLC_FOURCC('s','p','x',' ')
#define VLC_CODEC_OPUS                       VLC_FOURCC('O','p','u','s')
#define VLC_CODEC_VORBIS                     VLC_FOURCC('v','o','r','b')
#define VLC_CODEC_MACE3                      VLC_FOURCC('M','A','C','3')
#define VLC_CODEC_MACE6                      VLC_FOURCC('M','A','C','6')
#define VLC_CODEC_MUSEPACK7                  VLC_FOURCC('M','P','C',' ')
#define VLC_CODEC_MUSEPACK8                  VLC_FOURCC('M','P','C','K')
#define VLC_CODEC_RA_144                     VLC_FOURCC('1','4','_','4')
#define VLC_CODEC_RA_288                     VLC_FOURCC('2','8','_','8')
#define VLC_CODEC_INTERPLAY_DPCM             VLC_FOURCC('i','d','p','c')
#define VLC_CODEC_ROQ_DPCM                   VLC_FOURCC('R','o','Q','a')
#define VLC_CODEC_DSICINAUDIO                VLC_FOURCC('D','C','I','A')
#define VLC_CODEC_ADPCM_4XM                  VLC_FOURCC('4','x','m','a')
#define VLC_CODEC_ADPCM_EA                   VLC_FOURCC('A','D','E','A')
#define VLC_CODEC_ADPCM_XA                   VLC_FOURCC('x','a',' ',' ')
#define VLC_CODEC_ADPCM_ADX                  VLC_FOURCC('a','d','x',' ')
#define VLC_CODEC_ADPCM_IMA_WS               VLC_FOURCC('A','I','W','S')
#define VLC_CODEC_ADPCM_G722                 VLC_FOURCC('g','7','2','2')
#define VLC_CODEC_ADPCM_G726                 VLC_FOURCC('g','7','2','6')
#define VLC_CODEC_ADPCM_SWF                  VLC_FOURCC('S','W','F','a')
#define VLC_CODEC_ADPCM_MS                   VLC_FOURCC('m','s',0x00,0x02)
#define VLC_CODEC_ADPCM_IMA_WAV              VLC_FOURCC('m','s',0x00,0x11)
#define VLC_CODEC_ADPCM_IMA_AMV              VLC_FOURCC('i','m','a','v')
#define VLC_CODEC_ADPCM_IMA_QT               VLC_FOURCC('i','m','a','4')
#define VLC_CODEC_ADPCM_YAMAHA               VLC_FOURCC('m','s',0x00,0x20)
358 359
#define VLC_CODEC_ADPCM_DK3                  VLC_FOURCC('m','s',0x00,0x62)
#define VLC_CODEC_ADPCM_DK4                  VLC_FOURCC('m','s',0x00,0x61)
360
#define VLC_CODEC_ADPCM_THP                  VLC_FOURCC('T','H','P','A')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
#define VLC_CODEC_G723_1                     VLC_FOURCC('g','7','2', 0x31)
#define VLC_CODEC_G729                       VLC_FOURCC('g','7','2','9')
#define VLC_CODEC_VMDAUDIO                   VLC_FOURCC('v','m','d','a')
#define VLC_CODEC_AMR_NB                     VLC_FOURCC('s','a','m','r')
#define VLC_CODEC_AMR_WB                     VLC_FOURCC('s','a','w','b')
#define VLC_CODEC_ALAC                       VLC_FOURCC('a','l','a','c')
#define VLC_CODEC_QDM2                       VLC_FOURCC('Q','D','M','2')
#define VLC_CODEC_COOK                       VLC_FOURCC('c','o','o','k')
#define VLC_CODEC_SIPR                       VLC_FOURCC('s','i','p','r')
#define VLC_CODEC_TTA                        VLC_FOURCC('T','T','A','1')
#define VLC_CODEC_SHORTEN                    VLC_FOURCC('s','h','n',' ')
#define VLC_CODEC_WAVPACK                    VLC_FOURCC('W','V','P','K')
#define VLC_CODEC_GSM                        VLC_FOURCC('g','s','m',' ')
#define VLC_CODEC_GSM_MS                     VLC_FOURCC('a','g','s','m')
#define VLC_CODEC_ATRAC1                     VLC_FOURCC('a','t','r','1')
#define VLC_CODEC_ATRAC3                     VLC_FOURCC('a','t','r','c')
377
#define VLC_CODEC_ATRAC3P                    VLC_FOURCC('a','t','r','p')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
378 379 380 381 382 383 384 385 386
#define VLC_CODEC_IMC                        VLC_FOURCC(0x1,0x4,0x0,0x0)
#define VLC_CODEC_TRUESPEECH                 VLC_FOURCC(0x22,0x0,0x0,0x0)
#define VLC_CODEC_NELLYMOSER                 VLC_FOURCC('N','E','L','L')
#define VLC_CODEC_APE                        VLC_FOURCC('A','P','E',' ')
#define VLC_CODEC_QCELP                      VLC_FOURCC('Q','c','l','p')
#define VLC_CODEC_302M                       VLC_FOURCC('3','0','2','m')
#define VLC_CODEC_DVD_LPCM                   VLC_FOURCC('l','p','c','m')
#define VLC_CODEC_DVDA_LPCM                  VLC_FOURCC('a','p','c','m')
#define VLC_CODEC_BD_LPCM                    VLC_FOURCC('b','p','c','m')
387
#define VLC_CODEC_WIDI_LPCM                  VLC_FOURCC('w','p','c','m')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
388 389 390
#define VLC_CODEC_SDDS                       VLC_FOURCC('s','d','d','s')
#define VLC_CODEC_MIDI                       VLC_FOURCC('M','I','D','I')
#define VLC_CODEC_RALF                       VLC_FOURCC('R','A','L','F')
391

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
392 393 394 395 396 397 398 399 400 401 402
#define VLC_CODEC_S8                         VLC_FOURCC('s','8',' ',' ')
#define VLC_CODEC_U8                         VLC_FOURCC('u','8',' ',' ')
#define VLC_CODEC_S16L                       VLC_FOURCC('s','1','6','l')
#define VLC_CODEC_S16B                       VLC_FOURCC('s','1','6','b')
#define VLC_CODEC_U16L                       VLC_FOURCC('u','1','6','l')
#define VLC_CODEC_U16B                       VLC_FOURCC('u','1','6','b')
#define VLC_CODEC_S20B                       VLC_FOURCC('s','2','0','b')
#define VLC_CODEC_S24L                       VLC_FOURCC('s','2','4','l')
#define VLC_CODEC_S24B                       VLC_FOURCC('s','2','4','b')
#define VLC_CODEC_U24L                       VLC_FOURCC('u','2','4','l')
#define VLC_CODEC_U24B                       VLC_FOURCC('u','2','4','b')
403 404
#define VLC_CODEC_S24L32                     VLC_FOURCC('s','2','4','4')
#define VLC_CODEC_S24B32                     VLC_FOURCC('S','2','4','4')
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
405 406 407 408 409 410 411 412
#define VLC_CODEC_S32L                       VLC_FOURCC('s','3','2','l')
#define VLC_CODEC_S32B                       VLC_FOURCC('s','3','2','b')
#define VLC_CODEC_U32L                       VLC_FOURCC('u','3','2','l')
#define VLC_CODEC_U32B                       VLC_FOURCC('u','3','2','b')
#define VLC_CODEC_F32L                       VLC_FOURCC('f','3','2','l')
#define VLC_CODEC_F32B                       VLC_FOURCC('f','3','2','b')
#define VLC_CODEC_F64L                       VLC_FOURCC('f','6','4','l')
#define VLC_CODEC_F64B                       VLC_FOURCC('f','6','4','b')
Laurent Aimar's avatar
Laurent Aimar committed
413

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
414 415 416 417 418 419 420 421 422
#define VLC_CODEC_ALAW                       VLC_FOURCC('a','l','a','w')
#define VLC_CODEC_MULAW                      VLC_FOURCC('m','l','a','w')
#define VLC_CODEC_DAT12                      VLC_FOURCC('L','P','1','2')
#define VLC_CODEC_S24DAUD                    VLC_FOURCC('d','a','u','d')
#define VLC_CODEC_TWINVQ                     VLC_FOURCC('T','W','I','N')
#define VLC_CODEC_BMVAUDIO                   VLC_FOURCC('B','M','V','A')
#define VLC_CODEC_ULEAD_DV_AUDIO_NTSC        VLC_FOURCC('m','s',0x02,0x15)
#define VLC_CODEC_ULEAD_DV_AUDIO_PAL         VLC_FOURCC('m','s',0x02,0x16)
#define VLC_CODEC_INDEO_AUDIO                VLC_FOURCC('m','s',0x04,0x02)
423
#define VLC_CODEC_METASOUND                  VLC_FOURCC('m','s',0x00,0x75)
424
#define VLC_CODEC_ON2AVC                     VLC_FOURCC('m','s',0x05,0x00)
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
425
#define VLC_CODEC_TAK                        VLC_FOURCC('t','a','k',' ')
Daniel Verkamp's avatar
Daniel Verkamp committed
426
#define VLC_CODEC_SMACKAUDIO                 VLC_FOURCC('S','M','K','A')
427
#define VLC_CODEC_ADPCM_IMA_EA_SEAD          VLC_FOURCC('S','E','A','D')
428 429 430 431 432 433 434 435 436 437 438 439 440 441 442

/* Subtitle */
#define VLC_CODEC_SPU       VLC_FOURCC('s','p','u',' ')
#define VLC_CODEC_DVBS      VLC_FOURCC('d','v','b','s')
#define VLC_CODEC_SUBT      VLC_FOURCC('s','u','b','t')
#define VLC_CODEC_XSUB      VLC_FOURCC('X','S','U','B')
#define VLC_CODEC_SSA       VLC_FOURCC('s','s','a',' ')
#define VLC_CODEC_TEXT      VLC_FOURCC('T','E','X','T')
#define VLC_CODEC_TELETEXT  VLC_FOURCC('t','e','l','x')
#define VLC_CODEC_KATE      VLC_FOURCC('k','a','t','e')
#define VLC_CODEC_CMML      VLC_FOURCC('c','m','m','l')
#define VLC_CODEC_ITU_T140  VLC_FOURCC('t','1','4','0')
#define VLC_CODEC_USF       VLC_FOURCC('u','s','f',' ')
#define VLC_CODEC_OGT       VLC_FOURCC('o','g','t',' ')
#define VLC_CODEC_CVD       VLC_FOURCC('c','v','d',' ')
François Cartegnie's avatar
François Cartegnie committed
443
#define VLC_CODEC_TX3G      VLC_FOURCC('t','x','3','g')
Laurent Aimar's avatar
Laurent Aimar committed
444 445
/* Blu-ray Presentation Graphics */
#define VLC_CODEC_BD_PG     VLC_FOURCC('b','d','p','g')
Laurent Aimar's avatar
Laurent Aimar committed
446 447
/* EBU STL (TECH. 3264-E) */
#define VLC_CODEC_EBU_STL   VLC_FOURCC('S','T','L',' ')
448
#define VLC_CODEC_SCTE_27   VLC_FOURCC('S','C','2','7')
449

Nicolas Bertrand's avatar
Nicolas Bertrand committed
450 451 452
/* XYZ colorspace 12 bits packed in 16 bits, organisation |XXX0|YYY0|ZZZ0| */
#define VLC_CODEC_XYZ12     VLC_FOURCC('X','Y','1','2')

453

454 455 456
/* Special endian dependant values
 * The suffic N means Native
 * The suffix I means Inverted (ie non native) */
457 458 459 460
#ifdef WORDS_BIGENDIAN
#   define VLC_CODEC_S16N VLC_CODEC_S16B
#   define VLC_CODEC_U16N VLC_CODEC_U16B
#   define VLC_CODEC_S24N VLC_CODEC_S24B
461
#   define VLC_CODEC_U24N VLC_CODEC_U24B
462
#   define VLC_CODEC_S32N VLC_CODEC_S32B
463
#   define VLC_CODEC_U32N VLC_CODEC_U32B
Laurent Aimar's avatar
Laurent Aimar committed
464 465
#   define VLC_CODEC_FL32 VLC_CODEC_F32B
#   define VLC_CODEC_FL64 VLC_CODEC_F64B
466 467 468 469

#   define VLC_CODEC_S16I VLC_CODEC_S16L
#   define VLC_CODEC_U16I VLC_CODEC_U16L
#   define VLC_CODEC_S24I VLC_CODEC_S24L
470
#   define VLC_CODEC_U24I VLC_CODEC_U24L
471
#   define VLC_CODEC_S32I VLC_CODEC_S32L
472
#   define VLC_CODEC_U32I VLC_CODEC_U32L
473

474 475 476 477
#else
#   define VLC_CODEC_S16N VLC_CODEC_S16L
#   define VLC_CODEC_U16N VLC_CODEC_U16L
#   define VLC_CODEC_S24N VLC_CODEC_S24L
478
#   define VLC_CODEC_U24N VLC_CODEC_U24L
479
#   define VLC_CODEC_S32N VLC_CODEC_S32L
480
#   define VLC_CODEC_U32N VLC_CODEC_U32L
Laurent Aimar's avatar
Laurent Aimar committed
481 482
#   define VLC_CODEC_FL32 VLC_CODEC_F32L
#   define VLC_CODEC_FL64 VLC_CODEC_F64L
483 484 485 486

#   define VLC_CODEC_S16I VLC_CODEC_S16B
#   define VLC_CODEC_U16I VLC_CODEC_U16B
#   define VLC_CODEC_S24I VLC_CODEC_S24B
487
#   define VLC_CODEC_U24I VLC_CODEC_U24B
488
#   define VLC_CODEC_S32I VLC_CODEC_S32B
489
#   define VLC_CODEC_U32I VLC_CODEC_U32B
490 491
#endif

Laurent Aimar's avatar
Laurent Aimar committed
492
/* Non official codecs, used to force a profile in an encoder */
493
/* MPEG-1 video */
Laurent Aimar's avatar
Laurent Aimar committed
494
#define VLC_CODEC_MP1V      VLC_FOURCC('m','p','1','v')
495
/* MPEG-2 video */
Laurent Aimar's avatar
Laurent Aimar committed
496
#define VLC_CODEC_MP2V      VLC_FOURCC('m','p','2','v')
497 498
/* MPEG-I/II layer 2 audio */
#define VLC_CODEC_MP2       VLC_FOURCC('m','p','2',' ')
499 500
/* MPEG-I/II layer 3 audio */
#define VLC_CODEC_MP3       VLC_FOURCC('m','p','3',' ')
Laurent Aimar's avatar
Laurent Aimar committed
501

502
/**
503
 * It returns the codec associated to a fourcc within a ES category.
504 505
 *
 * If not found, it will return the given fourcc.
Kaarlo Raiha's avatar
Kaarlo Raiha committed
506
 * If found, it will always be one of the VLC_CODEC_ defined above.
507 508 509
 *
 * You may use UNKNOWN_ES for the ES category if you don't have the information.
 */
510
VLC_API vlc_fourcc_t vlc_fourcc_GetCodec( int i_cat, vlc_fourcc_t i_fourcc );
511

512 513 514 515 516 517 518 519 520
/**
 * It returns the codec associated to a fourcc store in a zero terminated
 * string.
 *
 * If the string is NULL or does not have exactly 4 charateres, it will
 * return 0, otherwise it behaves like vlc_fourcc_GetCodec.
 *
 * Provided for convenience.
 */
521
VLC_API vlc_fourcc_t vlc_fourcc_GetCodecFromString( int i_cat, const char * );
522

523 524 525 526 527 528 529
/**
 * It convert the gives fourcc to an audio codec when possible.
 *
 * The fourcc converted are aflt, araw/pcm , twos, sowt. When an incompatible i_bits
 * is detected, 0 is returned.
 * The other fourcc goes through vlc_fourcc_GetCodec and i_bits is not checked.
 */
530
VLC_API vlc_fourcc_t vlc_fourcc_GetCodecAudio( vlc_fourcc_t i_fourcc, int i_bits );
531

532 533 534 535 536
/**
 * It returns the description of the given fourcc or NULL if not found.
 *
 * You may use UNKNOWN_ES for the ES category if you don't have the information.
 */
537
VLC_API const char * vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc );
538

539 540 541 542
/**
 * It returns a list (terminated with the value 0) of YUV fourccs in
 * decreasing priority order for the given chroma.
 *
Laurent Aimar's avatar
Laurent Aimar committed
543
 * It will always return a non NULL pointer that must not be freed.
544
 */
545
VLC_API const vlc_fourcc_t * vlc_fourcc_GetYUVFallback( vlc_fourcc_t );
546

547 548 549 550 551 552
/**
 * It returns a list (terminated with the value 0) of RGB fourccs in
 * decreasing priority order for the given chroma.
 *
 * It will always return a non NULL pointer that must not be freed.
 */
553
VLC_API const vlc_fourcc_t * vlc_fourcc_GetRGBFallback( vlc_fourcc_t );
554

Laurent Aimar's avatar
Laurent Aimar committed
555 556 557
/**
 * It returns true if the given fourcc is YUV and false otherwise.
 */
558
VLC_API bool vlc_fourcc_IsYUV( vlc_fourcc_t );
Laurent Aimar's avatar
Laurent Aimar committed
559

560 561 562 563
/**
 * It returns true if the two fourccs are equivalent if their U&V planes are
 * swapped.
 */
564
VLC_API bool vlc_fourcc_AreUVPlanesSwapped(vlc_fourcc_t , vlc_fourcc_t );
565

566
/**
567
 * Chroma related information.
568 569 570 571 572 573 574 575 576 577 578 579 580
 */
typedef struct {
    unsigned plane_count;
    struct {
        struct {
            unsigned num;
            unsigned den;
        } w;
        struct {
            unsigned num;
            unsigned den;
        } h;
    } p[4];
581 582
    unsigned pixel_size;        /* Number of bytes per pixel for a plane */
    unsigned pixel_bits;        /* Number of bits actually used bits per pixel for a plane */
583 584 585 586 587 588
} vlc_chroma_description_t;

/**
 * It returns a vlc_chroma_description_t describing the request fourcc or NULL
 * if not found.
 */
589
VLC_API const vlc_chroma_description_t * vlc_fourcc_GetChromaDescription( vlc_fourcc_t fourcc );
590

591 592
#endif /* _VLC_FOURCC_H */