1 /*****************************************************************************
2 * fourcc.c: libavcodec <-> libvlc conversion routines
3 *****************************************************************************
4 * Copyright (C) 1999-2009 VLC authors and VideoLAN
7 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
8 * Gildas Bazin <gbazin@videolan.org>
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU Lesser General Public License as published by
12 * the Free Software Foundation; either version 2.1 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
29 #include <vlc_common.h>
30 #include <vlc_codec.h>
32 #include <libavcodec/avcodec.h>
35 /*****************************************************************************
36 * Codec fourcc -> libavcodec Codec_id mapping
37 *****************************************************************************/
40 vlc_fourcc_t i_fourcc
;
49 { VLC_CODEC_MPGV
, AV_CODEC_ID_MPEG2VIDEO
, VIDEO_ES
},
50 { VLC_CODEC_MPGV
, AV_CODEC_ID_MPEG1VIDEO
, VIDEO_ES
},
52 { VLC_CODEC_MP4V
, AV_CODEC_ID_MPEG4
, VIDEO_ES
},
53 /* 3ivx delta 3.5 Unsupported
54 * putting it here gives extreme distorted images
55 { VLC_FOURCC('3','I','V','1'), AV_CODEC_ID_MPEG4, VIDEO_ES },
56 { VLC_FOURCC('3','i','v','1'), AV_CODEC_ID_MPEG4, VIDEO_ES }, */
58 { VLC_CODEC_DIV1
, AV_CODEC_ID_MSMPEG4V1
, VIDEO_ES
},
59 { VLC_CODEC_DIV2
, AV_CODEC_ID_MSMPEG4V2
, VIDEO_ES
},
60 { VLC_CODEC_DIV3
, AV_CODEC_ID_MSMPEG4V3
, VIDEO_ES
},
62 { VLC_CODEC_SVQ1
, AV_CODEC_ID_SVQ1
, VIDEO_ES
},
63 { VLC_CODEC_SVQ3
, AV_CODEC_ID_SVQ3
, VIDEO_ES
},
64 #ifdef AV_CODEC_ID_H265
65 { VLC_CODEC_HEVC
, AV_CODEC_ID_HEVC
, VIDEO_ES
},
67 { VLC_CODEC_H264
, AV_CODEC_ID_H264
, VIDEO_ES
},
68 { VLC_CODEC_H263
, AV_CODEC_ID_H263
, VIDEO_ES
},
69 { VLC_CODEC_H263I
, AV_CODEC_ID_H263I
,VIDEO_ES
},
70 { VLC_CODEC_H263P
, AV_CODEC_ID_H263P
,VIDEO_ES
},
72 { VLC_CODEC_FLV1
, AV_CODEC_ID_FLV1
, VIDEO_ES
},
74 { VLC_CODEC_H261
, AV_CODEC_ID_H261
, VIDEO_ES
},
75 { VLC_CODEC_FLIC
, AV_CODEC_ID_FLIC
, VIDEO_ES
},
77 { VLC_CODEC_MJPG
, AV_CODEC_ID_MJPEG
, VIDEO_ES
},
78 { VLC_CODEC_MJPGB
, AV_CODEC_ID_MJPEGB
,VIDEO_ES
},
79 { VLC_CODEC_LJPG
, AV_CODEC_ID_LJPEG
, VIDEO_ES
},
81 { VLC_CODEC_SP5X
, AV_CODEC_ID_SP5X
, VIDEO_ES
},
83 { VLC_CODEC_DV
, AV_CODEC_ID_DVVIDEO
, VIDEO_ES
},
85 { VLC_CODEC_WMV1
, AV_CODEC_ID_WMV1
, VIDEO_ES
},
86 { VLC_CODEC_WMV2
, AV_CODEC_ID_WMV2
, VIDEO_ES
},
87 { VLC_CODEC_WMV3
, AV_CODEC_ID_WMV3
, VIDEO_ES
},
88 { VLC_CODEC_WMVP
, AV_CODEC_ID_WMV3
, VIDEO_ES
},
90 { VLC_CODEC_VC1
, AV_CODEC_ID_VC1
, VIDEO_ES
},
91 { VLC_CODEC_WMVA
, AV_CODEC_ID_VC1
, VIDEO_ES
},
93 { VLC_CODEC_MSVIDEO1
, AV_CODEC_ID_MSVIDEO1
, VIDEO_ES
},
94 { VLC_CODEC_MSRLE
, AV_CODEC_ID_MSRLE
, VIDEO_ES
},
96 { VLC_CODEC_INDEO2
, AV_CODEC_ID_INDEO2
, VIDEO_ES
},
97 /* Indeo Video Codecs (Quality of this decoder on ppc is not good) */
98 { VLC_CODEC_INDEO3
, AV_CODEC_ID_INDEO3
, VIDEO_ES
},
100 { VLC_CODEC_HUFFYUV
, AV_CODEC_ID_HUFFYUV
, VIDEO_ES
},
101 { VLC_CODEC_FFVHUFF
, AV_CODEC_ID_FFVHUFF
, VIDEO_ES
},
102 { VLC_CODEC_CYUV
, AV_CODEC_ID_CYUV
, VIDEO_ES
},
104 { VLC_CODEC_VP3
, AV_CODEC_ID_VP3
, VIDEO_ES
},
105 { VLC_CODEC_VP5
, AV_CODEC_ID_VP5
, VIDEO_ES
},
106 { VLC_CODEC_VP6
, AV_CODEC_ID_VP6
, VIDEO_ES
},
107 { VLC_CODEC_VP6F
, AV_CODEC_ID_VP6F
, VIDEO_ES
},
108 { VLC_CODEC_VP6A
, AV_CODEC_ID_VP6A
, VIDEO_ES
},
110 { VLC_CODEC_THEORA
, AV_CODEC_ID_THEORA
, VIDEO_ES
},
112 #if ( !defined( WORDS_BIGENDIAN ) )
113 /* Asus Video (Another thing that doesn't work on PPC) */
114 { VLC_CODEC_ASV1
, AV_CODEC_ID_ASV1
, VIDEO_ES
},
115 { VLC_CODEC_ASV2
, AV_CODEC_ID_ASV2
, VIDEO_ES
},
118 { VLC_CODEC_FFV1
, AV_CODEC_ID_FFV1
, VIDEO_ES
},
120 { VLC_CODEC_VCR1
, AV_CODEC_ID_VCR1
, VIDEO_ES
},
122 { VLC_CODEC_CLJR
, AV_CODEC_ID_CLJR
, VIDEO_ES
},
125 { VLC_CODEC_RV10
, AV_CODEC_ID_RV10
, VIDEO_ES
},
126 { VLC_CODEC_RV13
, AV_CODEC_ID_RV10
, VIDEO_ES
},
127 { VLC_CODEC_RV20
, AV_CODEC_ID_RV20
, VIDEO_ES
},
128 { VLC_CODEC_RV30
, AV_CODEC_ID_RV30
, VIDEO_ES
},
129 { VLC_CODEC_RV40
, AV_CODEC_ID_RV40
, VIDEO_ES
},
131 { VLC_CODEC_RPZA
, AV_CODEC_ID_RPZA
, VIDEO_ES
},
133 { VLC_CODEC_SMC
, AV_CODEC_ID_SMC
, VIDEO_ES
},
135 { VLC_CODEC_CINEPAK
, AV_CODEC_ID_CINEPAK
, VIDEO_ES
},
137 { VLC_CODEC_TSCC
, AV_CODEC_ID_TSCC
, VIDEO_ES
},
139 { VLC_CODEC_CSCD
, AV_CODEC_ID_CSCD
, VIDEO_ES
},
141 { VLC_CODEC_ZMBV
, AV_CODEC_ID_ZMBV
, VIDEO_ES
},
143 { VLC_CODEC_VMNC
, AV_CODEC_ID_VMNC
, VIDEO_ES
},
144 { VLC_CODEC_FRAPS
, AV_CODEC_ID_FRAPS
, VIDEO_ES
},
146 { VLC_CODEC_TRUEMOTION1
, AV_CODEC_ID_TRUEMOTION1
, VIDEO_ES
},
147 { VLC_CODEC_TRUEMOTION2
, AV_CODEC_ID_TRUEMOTION2
, VIDEO_ES
},
149 { VLC_CODEC_QTRLE
, AV_CODEC_ID_QTRLE
, VIDEO_ES
},
151 { VLC_CODEC_QDRAW
, AV_CODEC_ID_QDRAW
, VIDEO_ES
},
153 { VLC_CODEC_QPEG
, AV_CODEC_ID_QPEG
, VIDEO_ES
},
155 { VLC_CODEC_ULTI
, AV_CODEC_ID_ULTI
, VIDEO_ES
},
157 { VLC_CODEC_VIXL
, AV_CODEC_ID_VIXL
, VIDEO_ES
},
159 { VLC_CODEC_LOCO
, AV_CODEC_ID_LOCO
, VIDEO_ES
},
161 { VLC_CODEC_WNV1
, AV_CODEC_ID_WNV1
, VIDEO_ES
},
163 { VLC_CODEC_AASC
, AV_CODEC_ID_AASC
, VIDEO_ES
},
165 { VLC_CODEC_FLASHSV
, AV_CODEC_ID_FLASHSV
, VIDEO_ES
},
166 { VLC_CODEC_KMVC
, AV_CODEC_ID_KMVC
, VIDEO_ES
},
168 { VLC_CODEC_NUV
, AV_CODEC_ID_NUV
, VIDEO_ES
},
170 { VLC_CODEC_SMACKVIDEO
, AV_CODEC_ID_SMACKVIDEO
, VIDEO_ES
},
172 /* Chinese AVS - Untested */
173 { VLC_CODEC_CAVS
, AV_CODEC_ID_CAVS
, VIDEO_ES
},
176 { VLC_CODEC_DNXHD
, AV_CODEC_ID_DNXHD
, VIDEO_ES
},
177 { VLC_CODEC_8BPS
, AV_CODEC_ID_8BPS
, VIDEO_ES
},
179 { VLC_CODEC_MIMIC
, AV_CODEC_ID_MIMIC
, VIDEO_ES
},
181 { VLC_CODEC_DIRAC
, AV_CODEC_ID_DIRAC
, VIDEO_ES
},
183 { VLC_CODEC_V210
, AV_CODEC_ID_V210
, VIDEO_ES
},
185 { VLC_CODEC_FRWU
, AV_CODEC_ID_FRWU
, VIDEO_ES
},
187 { VLC_CODEC_INDEO5
, AV_CODEC_ID_INDEO5
, VIDEO_ES
},
189 { VLC_CODEC_VP8
, AV_CODEC_ID_VP8
, VIDEO_ES
},
191 { VLC_CODEC_LAGARITH
, AV_CODEC_ID_LAGARITH
, VIDEO_ES
},
193 { VLC_CODEC_MXPEG
, AV_CODEC_ID_MXPEG
, VIDEO_ES
},
195 { VLC_CODEC_VBLE
, AV_CODEC_ID_VBLE
, VIDEO_ES
},
197 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 1, 0 )
198 { VLC_CODEC_CDXL
, AV_CODEC_ID_CDXL
, VIDEO_ES
},
201 { VLC_CODEC_UTVIDEO
, AV_CODEC_ID_UTVIDEO
, VIDEO_ES
},
203 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 53, 42, 0 )
204 { VLC_CODEC_DXTORY
, AV_CODEC_ID_DXTORY
, VIDEO_ES
},
207 #if LIBAVCODEC_VERSION_CHECK( 54, 16, 0, 27, 100 )
208 { VLC_CODEC_MSS1
, AV_CODEC_ID_MSS1
, VIDEO_ES
},
211 #if LIBAVCODEC_VERSION_CHECK( 54, 17, 0, 32, 100 )
212 { VLC_CODEC_MSA1
, AV_CODEC_ID_MSA1
, VIDEO_ES
},
215 #if LIBAVCODEC_VERSION_CHECK( 54, 18, 0, 34, 100 )
216 { VLC_CODEC_TSC2
, AV_CODEC_ID_TSCC2
, VIDEO_ES
},
219 #if LIBAVCODEC_VERSION_CHECK( 54, 20, 0, 37, 100 )
220 { VLC_CODEC_MTS2
, AV_CODEC_ID_MTS2
, VIDEO_ES
},
223 #if LIBAVCODEC_VERSION_CHECK( 54, 27, 0, 55, 100 )
224 { VLC_CODEC_MSS2
, AV_CODEC_ID_MSS2
, VIDEO_ES
},
227 /* Videogames Codecs */
229 { VLC_CODEC_INTERPLAY
, AV_CODEC_ID_INTERPLAY_VIDEO
, VIDEO_ES
},
231 { VLC_CODEC_IDCIN
, AV_CODEC_ID_IDCIN
, VIDEO_ES
},
233 { VLC_CODEC_4XM
, AV_CODEC_ID_4XM
, VIDEO_ES
},
235 { VLC_CODEC_ROQ
, AV_CODEC_ID_ROQ
, VIDEO_ES
},
237 { VLC_CODEC_MDEC
, AV_CODEC_ID_MDEC
, VIDEO_ES
},
239 { VLC_CODEC_VMDVIDEO
, AV_CODEC_ID_VMDVIDEO
, VIDEO_ES
},
241 { VLC_CODEC_AMV
, AV_CODEC_ID_AMV
, VIDEO_ES
},
243 { VLC_CODEC_FLASHSV2
, AV_CODEC_ID_FLASHSV2
, VIDEO_ES
},
245 { VLC_CODEC_WMVP
, AV_CODEC_ID_WMV3IMAGE
, VIDEO_ES
},
246 { VLC_CODEC_WMVP2
, AV_CODEC_ID_VC1IMAGE
, VIDEO_ES
},
248 { VLC_CODEC_PRORES
, AV_CODEC_ID_PRORES
, VIDEO_ES
},
250 { VLC_CODEC_INDEO4
, AV_CODEC_ID_INDEO4
, VIDEO_ES
},
252 { VLC_CODEC_BMVVIDEO
, AV_CODEC_ID_BMV_VIDEO
, VIDEO_ES
},
254 #if LIBAVCODEC_VERSION_CHECK( 55, 5, 0, 10, 100 )
255 { VLC_CODEC_ICOD
, AV_CODEC_ID_AIC
, VIDEO_ES
},
258 #if LIBAVCODEC_VERSION_CHECK( 55, 8, 0, 15, 100 )
259 { VLC_CODEC_G2M4
, AV_CODEC_ID_G2M
, VIDEO_ES
},
264 /* UNTESTED VideoGames*/
265 { VLC_FOURCC('W','C','3','V'), AV_CODEC_ID_XAN_WC3
,
266 VIDEO_ES
, "XAN wc3 Video" },
267 { VLC_FOURCC('W','C','4','V'), AV_CODEC_ID_XAN_WC4
,
268 VIDEO_ES
, "XAN wc4 Video" },
269 { VLC_FOURCC('S','T','3','C'), AV_CODEC_ID_TXD
,
270 VIDEO_ES
, "Renderware TeXture Dictionary" },
271 { VLC_FOURCC('V','Q','A','V'), AV_CODEC_ID_WS_VQA
,
272 VIDEO_ES
, "WestWood Vector Quantized Animation" },
273 { VLC_FOURCC('T','S','E','Q'), AV_CODEC_ID_TIERTEXSEQVIDEO
,
274 VIDEO_ES
, "Tiertex SEQ Video" },
275 { VLC_FOURCC('D','X','A','1'), AV_CODEC_ID_DXA
,
276 VIDEO_ES
, "Feeble DXA Video" },
277 { VLC_FOURCC('D','C','I','V'), AV_CODEC_ID_DSICINVIDEO
,
278 VIDEO_ES
, "Delphine CIN Video" },
279 { VLC_FOURCC('T','H','P','V'), AV_CODEC_ID_THP
,
280 VIDEO_ES
, "THP Video" },
281 { VLC_FOURCC('B','E','T','H'), AV_CODEC_ID_BETHSOFTVID
,
282 VIDEO_ES
, "THP Video" },
283 { VLC_FOURCC('C','9','3','V'), AV_CODEC_ID_C93
,
284 VIDEO_ES
, "THP Video" },
290 { VLC_CODEC_PNG
, AV_CODEC_ID_PNG
, VIDEO_ES
},
291 { VLC_CODEC_PPM
, AV_CODEC_ID_PPM
, VIDEO_ES
},
292 { VLC_CODEC_PGM
, AV_CODEC_ID_PGM
, VIDEO_ES
},
293 { VLC_CODEC_PGMYUV
, AV_CODEC_ID_PGMYUV
, VIDEO_ES
},
294 { VLC_CODEC_PAM
, AV_CODEC_ID_PAM
, VIDEO_ES
},
295 { VLC_CODEC_JPEGLS
, AV_CODEC_ID_JPEGLS
, VIDEO_ES
},
297 { VLC_CODEC_BMP
, AV_CODEC_ID_BMP
, VIDEO_ES
},
299 { VLC_CODEC_TIFF
, AV_CODEC_ID_TIFF
, VIDEO_ES
},
300 { VLC_CODEC_GIF
, AV_CODEC_ID_GIF
, VIDEO_ES
},
301 { VLC_CODEC_TARGA
, AV_CODEC_ID_TARGA
, VIDEO_ES
},
302 { VLC_CODEC_SGI
, AV_CODEC_ID_SGI
, VIDEO_ES
},
303 { VLC_CODEC_JPEG2000
, AV_CODEC_ID_JPEG2000
, VIDEO_ES
},
309 { VLC_CODEC_WMA1
, AV_CODEC_ID_WMAV1
, AUDIO_ES
},
310 { VLC_CODEC_WMA2
, AV_CODEC_ID_WMAV2
, AUDIO_ES
},
311 { VLC_CODEC_WMAP
, AV_CODEC_ID_WMAPRO
, AUDIO_ES
},
312 { VLC_CODEC_WMAS
, AV_CODEC_ID_WMAVOICE
, AUDIO_ES
},
314 { VLC_CODEC_DVAUDIO
, AV_CODEC_ID_DVAUDIO
, AUDIO_ES
},
316 { VLC_CODEC_MACE3
, AV_CODEC_ID_MACE3
, AUDIO_ES
},
317 { VLC_CODEC_MACE6
, AV_CODEC_ID_MACE6
, AUDIO_ES
},
319 { VLC_CODEC_MUSEPACK7
, AV_CODEC_ID_MUSEPACK7
, AUDIO_ES
},
320 { VLC_CODEC_MUSEPACK8
, AV_CODEC_ID_MUSEPACK8
, AUDIO_ES
},
322 { VLC_CODEC_RA_144
, AV_CODEC_ID_RA_144
, AUDIO_ES
},
323 { VLC_CODEC_RA_288
, AV_CODEC_ID_RA_288
, AUDIO_ES
},
325 { VLC_CODEC_A52
, AV_CODEC_ID_AC3
, AUDIO_ES
},
326 { VLC_CODEC_EAC3
, AV_CODEC_ID_EAC3
, AUDIO_ES
},
328 { VLC_CODEC_DTS
, AV_CODEC_ID_DTS
, AUDIO_ES
},
330 { VLC_CODEC_MPGA
, AV_CODEC_ID_MP3
, AUDIO_ES
},
331 { VLC_CODEC_MPGA
, AV_CODEC_ID_MP2
, AUDIO_ES
},
333 { VLC_CODEC_MP4A
, AV_CODEC_ID_AAC
, AUDIO_ES
},
334 { VLC_CODEC_ALS
, AV_CODEC_ID_MP4ALS
, AUDIO_ES
},
335 { VLC_CODEC_MP4A
, AV_CODEC_ID_AAC_LATM
, AUDIO_ES
},
337 { VLC_CODEC_INTERPLAY_DPCM
, AV_CODEC_ID_INTERPLAY_DPCM
, AUDIO_ES
},
339 { VLC_CODEC_ROQ_DPCM
, AV_CODEC_ID_ROQ_DPCM
, AUDIO_ES
},
341 { VLC_CODEC_DSICINAUDIO
, AV_CODEC_ID_DSICINAUDIO
, AUDIO_ES
},
343 { VLC_CODEC_ADPCM_4XM
, AV_CODEC_ID_ADPCM_4XM
, AUDIO_ES
},
344 { VLC_CODEC_ADPCM_EA
, AV_CODEC_ID_ADPCM_EA
, AUDIO_ES
},
345 { VLC_CODEC_ADPCM_XA
, AV_CODEC_ID_ADPCM_XA
, AUDIO_ES
},
346 { VLC_CODEC_ADPCM_ADX
, AV_CODEC_ID_ADPCM_ADX
, AUDIO_ES
},
347 { VLC_CODEC_ADPCM_IMA_WS
, AV_CODEC_ID_ADPCM_IMA_WS
, AUDIO_ES
},
348 { VLC_CODEC_ADPCM_MS
, AV_CODEC_ID_ADPCM_MS
, AUDIO_ES
},
349 { VLC_CODEC_ADPCM_IMA_WAV
, AV_CODEC_ID_ADPCM_IMA_WAV
, AUDIO_ES
},
350 { VLC_CODEC_ADPCM_IMA_AMV
, AV_CODEC_ID_ADPCM_IMA_AMV
, AUDIO_ES
},
351 { VLC_CODEC_ADPCM_IMA_QT
, AV_CODEC_ID_ADPCM_IMA_QT
, AUDIO_ES
},
352 { VLC_CODEC_ADPCM_YAMAHA
, AV_CODEC_ID_ADPCM_YAMAHA
, AUDIO_ES
},
354 { VLC_CODEC_VMDAUDIO
, AV_CODEC_ID_VMDAUDIO
, AUDIO_ES
},
356 { VLC_CODEC_ADPCM_G726
, AV_CODEC_ID_ADPCM_G726
, AUDIO_ES
},
357 { VLC_CODEC_ADPCM_SWF
, AV_CODEC_ID_ADPCM_SWF
, AUDIO_ES
},
359 { VLC_CODEC_AMR_NB
, AV_CODEC_ID_AMR_NB
, AUDIO_ES
},
360 { VLC_CODEC_AMR_WB
, AV_CODEC_ID_AMR_WB
, AUDIO_ES
},
362 { VLC_CODEC_GSM
, AV_CODEC_ID_GSM
, AUDIO_ES
},
363 { VLC_CODEC_GSM_MS
, AV_CODEC_ID_GSM_MS
, AUDIO_ES
},
365 { VLC_CODEC_QDM2
, AV_CODEC_ID_QDM2
, AUDIO_ES
},
367 { VLC_CODEC_COOK
, AV_CODEC_ID_COOK
, AUDIO_ES
},
369 { VLC_CODEC_TTA
, AV_CODEC_ID_TTA
, AUDIO_ES
},
371 { VLC_CODEC_WAVPACK
, AV_CODEC_ID_WAVPACK
, AUDIO_ES
},
373 { VLC_CODEC_ATRAC3
, AV_CODEC_ID_ATRAC3
, AUDIO_ES
},
375 { VLC_CODEC_IMC
, AV_CODEC_ID_IMC
, AUDIO_ES
},
377 { VLC_CODEC_TRUESPEECH
, AV_CODEC_ID_TRUESPEECH
, AUDIO_ES
},
379 { VLC_CODEC_NELLYMOSER
, AV_CODEC_ID_NELLYMOSER
, AUDIO_ES
},
381 { VLC_CODEC_VORBIS
, AV_CODEC_ID_VORBIS
, AUDIO_ES
},
383 { VLC_CODEC_QCELP
, AV_CODEC_ID_QCELP
, AUDIO_ES
},
384 { VLC_CODEC_SPEEX
, AV_CODEC_ID_SPEEX
, AUDIO_ES
},
385 { VLC_CODEC_TWINVQ
, AV_CODEC_ID_TWINVQ
, AUDIO_ES
},
386 { VLC_CODEC_ATRAC1
, AV_CODEC_ID_ATRAC1
, AUDIO_ES
},
387 { VLC_CODEC_SIPR
, AV_CODEC_ID_SIPR
, AUDIO_ES
},
388 { VLC_CODEC_ADPCM_G722
, AV_CODEC_ID_ADPCM_G722
, AUDIO_ES
},
389 { VLC_CODEC_BMVAUDIO
, AV_CODEC_ID_BMV_AUDIO
, AUDIO_ES
},
391 { VLC_CODEC_G723_1
, AV_CODEC_ID_G723_1
, AUDIO_ES
},
393 { VLC_CODEC_BD_LPCM
, AV_CODEC_ID_PCM_BLURAY
, AUDIO_ES
},
396 { VLC_CODEC_FLAC
, AV_CODEC_ID_FLAC
, AUDIO_ES
},
398 { VLC_CODEC_ALAC
, AV_CODEC_ID_ALAC
, AUDIO_ES
},
400 { VLC_CODEC_APE
, AV_CODEC_ID_APE
, AUDIO_ES
},
402 { VLC_CODEC_SHORTEN
, AV_CODEC_ID_SHORTEN
, AUDIO_ES
},
404 { VLC_CODEC_TRUEHD
, AV_CODEC_ID_TRUEHD
, AUDIO_ES
},
405 { VLC_CODEC_MLP
, AV_CODEC_ID_MLP
, AUDIO_ES
},
407 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 5, 0 )
408 { VLC_CODEC_WMAL
, AV_CODEC_ID_WMALOSSLESS
, AUDIO_ES
},
411 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 12, 0 )
412 { VLC_CODEC_RALF
, AV_CODEC_ID_RALF
, AUDIO_ES
},
415 #if LIBAVCODEC_VERSION_CHECK( 54, 14, 0, 26, 100 )
416 { VLC_CODEC_INDEO_AUDIO
, AV_CODEC_ID_IAC
, AUDIO_ES
},
419 #if LIBAVCODEC_VERSION_CHECK( 55, 15, 0, 24, 100 )
420 { VLC_CODEC_METASOUND
, AV_CODEC_ID_METASOUND
, AUDIO_ES
},
424 { VLC_CODEC_S8
, AV_CODEC_ID_PCM_S8
, AUDIO_ES
},
425 { VLC_CODEC_U8
, AV_CODEC_ID_PCM_U8
, AUDIO_ES
},
426 { VLC_CODEC_S16L
, AV_CODEC_ID_PCM_S16LE
, AUDIO_ES
},
427 { VLC_CODEC_S16B
, AV_CODEC_ID_PCM_S16BE
, AUDIO_ES
},
428 { VLC_CODEC_U16L
, AV_CODEC_ID_PCM_U16LE
, AUDIO_ES
},
429 { VLC_CODEC_U16B
, AV_CODEC_ID_PCM_U16BE
, AUDIO_ES
},
430 { VLC_CODEC_S24L
, AV_CODEC_ID_PCM_S24LE
, AUDIO_ES
},
431 { VLC_CODEC_S24B
, AV_CODEC_ID_PCM_S24BE
, AUDIO_ES
},
432 { VLC_CODEC_U24L
, AV_CODEC_ID_PCM_U24LE
, AUDIO_ES
},
433 { VLC_CODEC_U24B
, AV_CODEC_ID_PCM_U24BE
, AUDIO_ES
},
434 { VLC_CODEC_S32L
, AV_CODEC_ID_PCM_S32LE
, AUDIO_ES
},
435 { VLC_CODEC_S32B
, AV_CODEC_ID_PCM_S32BE
, AUDIO_ES
},
436 { VLC_CODEC_U32L
, AV_CODEC_ID_PCM_U32LE
, AUDIO_ES
},
437 { VLC_CODEC_U32B
, AV_CODEC_ID_PCM_U32BE
, AUDIO_ES
},
438 { VLC_CODEC_ALAW
, AV_CODEC_ID_PCM_ALAW
, AUDIO_ES
},
439 { VLC_CODEC_MULAW
, AV_CODEC_ID_PCM_MULAW
, AUDIO_ES
},
440 { VLC_CODEC_S24DAUD
, AV_CODEC_ID_PCM_S24DAUD
, AUDIO_ES
},
441 { VLC_CODEC_F32L
, AV_CODEC_ID_PCM_F32LE
, AUDIO_ES
},
442 { VLC_CODEC_F64L
, AV_CODEC_ID_PCM_F64LE
, AUDIO_ES
},
443 { VLC_CODEC_F32B
, AV_CODEC_ID_PCM_F32BE
, AUDIO_ES
},
444 { VLC_CODEC_F64B
, AV_CODEC_ID_PCM_F64BE
, AUDIO_ES
},
446 /* Subtitle streams */
447 { VLC_CODEC_BD_PG
, AV_CODEC_ID_HDMV_PGS_SUBTITLE
, SPU_ES
},
448 { VLC_CODEC_SPU
, AV_CODEC_ID_DVD_SUBTITLE
, SPU_ES
},
449 { VLC_CODEC_DVBS
, AV_CODEC_ID_DVB_SUBTITLE
, SPU_ES
},
450 { VLC_CODEC_SUBT
, AV_CODEC_ID_TEXT
, SPU_ES
},
451 { VLC_CODEC_XSUB
, AV_CODEC_ID_XSUB
, SPU_ES
},
452 { VLC_CODEC_SSA
, AV_CODEC_ID_SSA
, SPU_ES
},
453 { VLC_CODEC_TELETEXT
, AV_CODEC_ID_DVB_TELETEXT
, SPU_ES
},
456 static const size_t codecs_count
= sizeof (codecs_table
)
457 / sizeof (codecs_table
[0]);
459 int GetFfmpegCodec( vlc_fourcc_t i_fourcc
, int *pi_cat
,
460 unsigned *pi_ffmpeg_codec
, const char **ppsz_name
)
462 i_fourcc
= vlc_fourcc_GetCodec( UNKNOWN_ES
, i_fourcc
);
463 for( unsigned i
= 0; i
< codecs_count
; i
++ )
465 if( codecs_table
[i
].i_fourcc
== i_fourcc
)
467 if( pi_cat
) *pi_cat
= codecs_table
[i
].i_cat
;
468 if( pi_ffmpeg_codec
) *pi_ffmpeg_codec
= codecs_table
[i
].i_codec
;
469 if( ppsz_name
) *ppsz_name
= vlc_fourcc_GetDescription( UNKNOWN_ES
, i_fourcc
);//char *)codecs_table[i].psz_name;
477 int GetVlcFourcc( unsigned i_ffmpeg_codec
, int *pi_cat
,
478 vlc_fourcc_t
*pi_fourcc
, const char **ppsz_name
)
480 for( unsigned i
= 0; i
< codecs_count
; i
++ )
482 if( codecs_table
[i
].i_codec
== i_ffmpeg_codec
)
484 if( pi_cat
) *pi_cat
= codecs_table
[i
].i_cat
;
485 if( pi_fourcc
) *pi_fourcc
= codecs_table
[i
].i_fourcc
;
486 if( ppsz_name
) *ppsz_name
= vlc_fourcc_GetDescription( codecs_table
[i
].i_cat
, codecs_table
[i
].i_fourcc
);