1 /*****************************************************************************
2 * fourcc.c: libavcodec <-> libvlc conversion routines
3 *****************************************************************************
4 * Copyright (C) 1999-2009 the VideoLAN team
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
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 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 General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
29 #include <vlc_common.h>
30 #include <vlc_codec.h>
32 #ifdef HAVE_LIBAVCODEC_AVCODEC_H
33 # include <libavcodec/avcodec.h>
34 #elif defined(HAVE_FFMPEG_AVCODEC_H)
35 # include <ffmpeg/avcodec.h>
41 /*****************************************************************************
42 * Codec fourcc -> ffmpeg_id mapping
43 *****************************************************************************/
46 vlc_fourcc_t i_fourcc
;
55 { VLC_CODEC_MPGV
, CODEC_ID_MPEG2VIDEO
, VIDEO_ES
},
57 { VLC_CODEC_MP4V
, CODEC_ID_MPEG4
, VIDEO_ES
},
58 /* 3ivx delta 3.5 Unsupported
59 * putting it here gives extreme distorted images
60 { VLC_FOURCC('3','I','V','1'), CODEC_ID_MPEG4, VIDEO_ES },
61 { VLC_FOURCC('3','i','v','1'), CODEC_ID_MPEG4, VIDEO_ES }, */
63 { VLC_CODEC_DIV1
, CODEC_ID_MSMPEG4V1
, VIDEO_ES
},
64 { VLC_CODEC_DIV2
, CODEC_ID_MSMPEG4V2
, VIDEO_ES
},
65 { VLC_CODEC_DIV3
, CODEC_ID_MSMPEG4V3
, VIDEO_ES
},
67 { VLC_CODEC_SVQ1
, CODEC_ID_SVQ1
, VIDEO_ES
},
68 { VLC_CODEC_SVQ3
, CODEC_ID_SVQ3
, VIDEO_ES
},
70 { VLC_CODEC_H264
, CODEC_ID_H264
, VIDEO_ES
},
71 { VLC_CODEC_H263
, CODEC_ID_H263
, VIDEO_ES
},
72 { VLC_CODEC_H263I
,CODEC_ID_H263I
,VIDEO_ES
},
73 { VLC_CODEC_H263P
,CODEC_ID_H263P
,VIDEO_ES
},
75 { VLC_CODEC_FLV1
, CODEC_ID_FLV1
, VIDEO_ES
},
77 { VLC_CODEC_H261
, CODEC_ID_H261
, VIDEO_ES
},
78 { VLC_CODEC_FLIC
, CODEC_ID_FLIC
, VIDEO_ES
},
80 { VLC_CODEC_MJPG
, CODEC_ID_MJPEG
, VIDEO_ES
},
81 { VLC_CODEC_MJPGB
,CODEC_ID_MJPEGB
,VIDEO_ES
},
82 { VLC_CODEC_LJPG
, CODEC_ID_LJPEG
, VIDEO_ES
},
84 { VLC_CODEC_SP5X
, CODEC_ID_SP5X
, VIDEO_ES
},
86 { VLC_CODEC_DV
, CODEC_ID_DVVIDEO
, VIDEO_ES
},
88 { VLC_CODEC_WMV1
, CODEC_ID_WMV1
, VIDEO_ES
},
89 { VLC_CODEC_WMV2
, CODEC_ID_WMV2
, VIDEO_ES
},
90 { VLC_CODEC_WMV3
, CODEC_ID_WMV3
, VIDEO_ES
},
92 { VLC_CODEC_VC1
, CODEC_ID_VC1
, VIDEO_ES
},
93 { VLC_CODEC_WMVA
, CODEC_ID_VC1
, VIDEO_ES
},
95 { VLC_CODEC_MSVIDEO1
, CODEC_ID_MSVIDEO1
, VIDEO_ES
},
96 { VLC_CODEC_MSRLE
, CODEC_ID_MSRLE
, VIDEO_ES
},
98 { VLC_CODEC_INDEO2
, CODEC_ID_INDEO2
, VIDEO_ES
},
99 /* Indeo Video Codecs (Quality of this decoder on ppc is not good) */
100 { VLC_CODEC_INDEO3
, CODEC_ID_INDEO3
, VIDEO_ES
},
102 { VLC_CODEC_HUFFYUV
, CODEC_ID_HUFFYUV
, VIDEO_ES
},
103 { VLC_CODEC_FFVHUFF
, CODEC_ID_FFVHUFF
, VIDEO_ES
},
104 { VLC_CODEC_CYUV
, CODEC_ID_CYUV
, VIDEO_ES
},
106 { VLC_CODEC_VP3
, CODEC_ID_VP3
, VIDEO_ES
},
107 { VLC_CODEC_VP5
, CODEC_ID_VP5
, VIDEO_ES
},
108 { VLC_CODEC_VP6
, CODEC_ID_VP6
, VIDEO_ES
},
109 { VLC_CODEC_VP6F
, CODEC_ID_VP6F
, VIDEO_ES
},
110 { VLC_CODEC_VP6A
, CODEC_ID_VP6A
, VIDEO_ES
},
112 { VLC_CODEC_THEORA
, CODEC_ID_THEORA
, VIDEO_ES
},
114 #if ( !defined( WORDS_BIGENDIAN ) )
115 /* Asus Video (Another thing that doesn't work on PPC) */
116 { VLC_CODEC_ASV1
, CODEC_ID_ASV1
, VIDEO_ES
},
117 { VLC_CODEC_ASV2
, CODEC_ID_ASV2
, VIDEO_ES
},
120 { VLC_CODEC_FFV1
, CODEC_ID_FFV1
, VIDEO_ES
},
122 { VLC_CODEC_VCR1
, CODEC_ID_VCR1
, VIDEO_ES
},
124 { VLC_CODEC_CLJR
, CODEC_ID_CLJR
, VIDEO_ES
},
127 { VLC_CODEC_RV10
, CODEC_ID_RV10
, VIDEO_ES
},
128 { VLC_CODEC_RV13
, CODEC_ID_RV10
, VIDEO_ES
},
129 { VLC_CODEC_RV20
, CODEC_ID_RV20
, VIDEO_ES
},
130 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 8, 0 )
131 { VLC_CODEC_RV30
, CODEC_ID_RV30
, VIDEO_ES
},
133 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 5, 0 )
134 { VLC_CODEC_RV40
, CODEC_ID_RV40
, VIDEO_ES
},
137 { VLC_CODEC_RPZA
, CODEC_ID_RPZA
, VIDEO_ES
},
139 { VLC_CODEC_SMC
, CODEC_ID_SMC
, VIDEO_ES
},
141 { VLC_CODEC_CINEPAK
, CODEC_ID_CINEPAK
, VIDEO_ES
},
143 { VLC_CODEC_TSCC
, CODEC_ID_TSCC
, VIDEO_ES
},
145 { VLC_CODEC_CSCD
, CODEC_ID_CSCD
, VIDEO_ES
},
147 { VLC_CODEC_ZMBV
, CODEC_ID_ZMBV
, VIDEO_ES
},
149 { VLC_CODEC_VMNC
, CODEC_ID_VMNC
, VIDEO_ES
},
150 { VLC_CODEC_FRAPS
, CODEC_ID_FRAPS
, VIDEO_ES
},
152 { VLC_CODEC_TRUEMOTION1
, CODEC_ID_TRUEMOTION1
, VIDEO_ES
},
153 { VLC_CODEC_TRUEMOTION2
, CODEC_ID_TRUEMOTION2
, VIDEO_ES
},
155 { VLC_CODEC_SNOW
, CODEC_ID_SNOW
, VIDEO_ES
},
157 { VLC_CODEC_QTRLE
, CODEC_ID_QTRLE
, VIDEO_ES
},
159 { VLC_CODEC_QDRAW
, CODEC_ID_QDRAW
, VIDEO_ES
},
161 { VLC_CODEC_QPEG
, CODEC_ID_QPEG
, VIDEO_ES
},
163 { VLC_CODEC_ULTI
, CODEC_ID_ULTI
, VIDEO_ES
},
165 { VLC_CODEC_VIXL
, CODEC_ID_VIXL
, VIDEO_ES
},
167 { VLC_CODEC_LOCO
, CODEC_ID_LOCO
, VIDEO_ES
},
169 { VLC_CODEC_WNV1
, CODEC_ID_WNV1
, VIDEO_ES
},
171 { VLC_CODEC_AASC
, CODEC_ID_AASC
, VIDEO_ES
},
173 { VLC_CODEC_FLASHSV
, CODEC_ID_FLASHSV
, VIDEO_ES
},
174 { VLC_CODEC_KMVC
, CODEC_ID_KMVC
, VIDEO_ES
},
176 { VLC_CODEC_NUV
, CODEC_ID_NUV
, VIDEO_ES
},
178 { VLC_CODEC_SMACKVIDEO
, CODEC_ID_SMACKVIDEO
, VIDEO_ES
},
180 /* Chinese AVS - Untested */
181 { VLC_CODEC_CAVS
, CODEC_ID_CAVS
, VIDEO_ES
},
184 { VLC_CODEC_DNXHD
, CODEC_ID_DNXHD
, VIDEO_ES
},
185 { VLC_CODEC_8BPS
, CODEC_ID_8BPS
, VIDEO_ES
},
187 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 52, 0 )
188 { VLC_CODEC_MIMIC
, CODEC_ID_MIMIC
, VIDEO_ES
},
191 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 55, 0 )
192 { VLC_CODEC_DIRAC
, CODEC_ID_DIRAC
, VIDEO_ES
},
195 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 29, 0 )
196 { VLC_CODEC_V210
, CODEC_ID_V210
, VIDEO_ES
},
199 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 37, 1 )
200 { VLC_CODEC_FRWU
, CODEC_ID_FRWU
, VIDEO_ES
},
203 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 53, 0 )
204 { VLC_CODEC_INDEO5
, CODEC_ID_INDEO5
, VIDEO_ES
},
207 /* Videogames Codecs */
209 { VLC_CODEC_INTERPLAY
, CODEC_ID_INTERPLAY_VIDEO
, VIDEO_ES
},
211 { VLC_CODEC_IDCIN
, CODEC_ID_IDCIN
, VIDEO_ES
},
213 { VLC_CODEC_4XM
, CODEC_ID_4XM
, VIDEO_ES
},
215 { VLC_CODEC_ROQ
, CODEC_ID_ROQ
, VIDEO_ES
},
217 { VLC_CODEC_MDEC
, CODEC_ID_MDEC
, VIDEO_ES
},
219 { VLC_CODEC_VMDVIDEO
, CODEC_ID_VMDVIDEO
, VIDEO_ES
},
221 { VLC_CODEC_AMV
, CODEC_ID_AMV
, VIDEO_ES
},
225 /* UNTESTED VideoGames*/
226 { VLC_FOURCC('W','C','3','V'), CODEC_ID_XAN_WC3
,
227 VIDEO_ES
, "XAN wc3 Video" },
228 { VLC_FOURCC('W','C','4','V'), CODEC_ID_XAN_WC4
,
229 VIDEO_ES
, "XAN wc4 Video" },
230 { VLC_FOURCC('S','T','3','C'), CODEC_ID_TXD
,
231 VIDEO_ES
, "Renderware TeXture Dictionary" },
232 { VLC_FOURCC('V','Q','A','V'), CODEC_ID_WS_VQA
,
233 VIDEO_ES
, "WestWood Vector Quantized Animation" },
234 { VLC_FOURCC('T','S','E','Q'), CODEC_ID_TIERTEXSEQVIDEO
,
235 VIDEO_ES
, "Tiertex SEQ Video" },
236 { VLC_FOURCC('D','X','A','1'), CODEC_ID_DXA
,
237 VIDEO_ES
, "Feeble DXA Video" },
238 { VLC_FOURCC('D','C','I','V'), CODEC_ID_DSICINVIDEO
,
239 VIDEO_ES
, "Delphine CIN Video" },
240 { VLC_FOURCC('T','H','P','V'), CODEC_ID_THP
,
241 VIDEO_ES
, "THP Video" },
242 { VLC_FOURCC('B','E','T','H'), CODEC_ID_BETHSOFTVID
,
243 VIDEO_ES
, "THP Video" },
244 { VLC_FOURCC('C','9','3','V'), CODEC_ID_C93
,
245 VIDEO_ES
, "THP Video" },
251 { VLC_CODEC_PNG
, CODEC_ID_PNG
, VIDEO_ES
},
252 { VLC_CODEC_PPM
, CODEC_ID_PPM
, VIDEO_ES
},
253 { VLC_CODEC_PGM
, CODEC_ID_PGM
, VIDEO_ES
},
254 { VLC_CODEC_PGMYUV
, CODEC_ID_PGMYUV
, VIDEO_ES
},
255 { VLC_CODEC_PAM
, CODEC_ID_PAM
, VIDEO_ES
},
256 { VLC_CODEC_JPEGLS
, CODEC_ID_JPEGLS
, VIDEO_ES
},
258 { VLC_CODEC_BMP
, CODEC_ID_BMP
, VIDEO_ES
},
260 { VLC_CODEC_TIFF
, CODEC_ID_TIFF
, VIDEO_ES
},
261 { VLC_CODEC_GIF
, CODEC_ID_GIF
, VIDEO_ES
},
262 { VLC_CODEC_TARGA
, CODEC_ID_TARGA
, VIDEO_ES
},
263 { VLC_CODEC_SGI
, CODEC_ID_SGI
, VIDEO_ES
},
269 { VLC_CODEC_WMA1
, CODEC_ID_WMAV1
, AUDIO_ES
},
270 { VLC_CODEC_WMA2
, CODEC_ID_WMAV2
, AUDIO_ES
},
271 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 35, 0 )
272 { VLC_CODEC_WMAP
, CODEC_ID_WMAPRO
, AUDIO_ES
},
274 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 54, 0 )
275 { VLC_CODEC_WMAS
, CODEC_ID_WMAVOICE
, AUDIO_ES
},
278 { VLC_CODEC_DVAUDIO
, CODEC_ID_DVAUDIO
, AUDIO_ES
},
280 { VLC_CODEC_MACE3
, CODEC_ID_MACE3
, AUDIO_ES
},
281 { VLC_CODEC_MACE6
, CODEC_ID_MACE6
, AUDIO_ES
},
283 { VLC_CODEC_MUSEPACK7
, CODEC_ID_MUSEPACK7
, AUDIO_ES
},
284 { VLC_CODEC_MUSEPACK8
, CODEC_ID_MUSEPACK8
, AUDIO_ES
},
286 { VLC_CODEC_RA_144
, CODEC_ID_RA_144
, AUDIO_ES
},
287 { VLC_CODEC_RA_288
, CODEC_ID_RA_288
, AUDIO_ES
},
289 { VLC_CODEC_A52
, CODEC_ID_AC3
, AUDIO_ES
},
290 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 0, 0 )
291 { VLC_CODEC_EAC3
, CODEC_ID_EAC3
, AUDIO_ES
},
294 { VLC_CODEC_DTS
, CODEC_ID_DTS
, AUDIO_ES
},
296 { VLC_CODEC_MPGA
, CODEC_ID_MP3
, AUDIO_ES
},
297 { VLC_CODEC_MPGA
, CODEC_ID_MP2
, AUDIO_ES
},
299 { VLC_CODEC_MP4A
, CODEC_ID_AAC
, AUDIO_ES
},
300 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 26, 0 )
301 { VLC_CODEC_ALS
, CODEC_ID_MP4ALS
, AUDIO_ES
},
304 { VLC_CODEC_INTERPLAY_DPCM
, CODEC_ID_INTERPLAY_DPCM
, AUDIO_ES
},
306 { VLC_CODEC_ROQ_DPCM
, CODEC_ID_ROQ_DPCM
, AUDIO_ES
},
308 { VLC_CODEC_DSICINAUDIO
, CODEC_ID_DSICINAUDIO
, AUDIO_ES
},
310 { VLC_CODEC_ADPCM_4XM
, CODEC_ID_ADPCM_4XM
, AUDIO_ES
},
311 { VLC_CODEC_ADPCM_EA
, CODEC_ID_ADPCM_EA
, AUDIO_ES
},
312 { VLC_CODEC_ADPCM_XA
, CODEC_ID_ADPCM_XA
, AUDIO_ES
},
313 { VLC_CODEC_ADPCM_ADX
, CODEC_ID_ADPCM_ADX
, AUDIO_ES
},
314 { VLC_CODEC_ADPCM_IMA_WS
, CODEC_ID_ADPCM_IMA_WS
, AUDIO_ES
},
315 { VLC_CODEC_ADPCM_MS
, CODEC_ID_ADPCM_MS
, AUDIO_ES
},
316 { VLC_CODEC_ADPCM_IMA_WAV
, CODEC_ID_ADPCM_IMA_WAV
, AUDIO_ES
},
317 { VLC_CODEC_ADPCM_IMA_AMV
, CODEC_ID_ADPCM_IMA_AMV
, AUDIO_ES
},
319 { VLC_CODEC_VMDAUDIO
, CODEC_ID_VMDAUDIO
, AUDIO_ES
},
321 { VLC_CODEC_ADPCM_G726
, CODEC_ID_ADPCM_G726
, AUDIO_ES
},
322 { VLC_CODEC_ADPCM_SWF
, CODEC_ID_ADPCM_SWF
, AUDIO_ES
},
324 { VLC_CODEC_AMR_NB
, CODEC_ID_AMR_NB
, AUDIO_ES
},
325 { VLC_CODEC_AMR_WB
, CODEC_ID_AMR_WB
, AUDIO_ES
},
327 { VLC_CODEC_GSM
, CODEC_ID_GSM
, AUDIO_ES
},
328 { VLC_CODEC_GSM_MS
, CODEC_ID_GSM_MS
, AUDIO_ES
},
330 { VLC_CODEC_QDM2
, CODEC_ID_QDM2
, AUDIO_ES
},
332 { VLC_CODEC_COOK
, CODEC_ID_COOK
, AUDIO_ES
},
334 { VLC_CODEC_TTA
, CODEC_ID_TTA
, AUDIO_ES
},
336 { VLC_CODEC_WAVPACK
, CODEC_ID_WAVPACK
, AUDIO_ES
},
338 { VLC_CODEC_ATRAC3
, CODEC_ID_ATRAC3
, AUDIO_ES
},
340 { VLC_CODEC_SONIC
, CODEC_ID_SONIC
, AUDIO_ES
},
342 { VLC_CODEC_IMC
, CODEC_ID_IMC
, AUDIO_ES
},
344 { VLC_CODEC_TRUESPEECH
, CODEC_ID_TRUESPEECH
, AUDIO_ES
},
346 { VLC_CODEC_NELLYMOSER
, CODEC_ID_NELLYMOSER
, AUDIO_ES
},
348 { VLC_CODEC_VORBIS
, CODEC_ID_VORBIS
, AUDIO_ES
},
350 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 6, 0 )
351 { VLC_CODEC_QCELP
, CODEC_ID_QCELP
, AUDIO_ES
},
353 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 50, 1 )
354 { VLC_CODEC_SPEEX
, CODEC_ID_SPEEX
, AUDIO_ES
},
356 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 34, 0 )
357 { VLC_CODEC_TWINVQ
, CODEC_ID_TWINVQ
, AUDIO_ES
},
359 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 36, 0 )
360 { VLC_CODEC_ATRAC1
, CODEC_ID_ATRAC1
, AUDIO_ES
},
362 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 47, 0 )
363 { VLC_CODEC_SIPR
, CODEC_ID_SIPR
, AUDIO_ES
},
367 { VLC_CODEC_FLAC
, CODEC_ID_FLAC
, AUDIO_ES
},
369 { VLC_CODEC_ALAC
, CODEC_ID_ALAC
, AUDIO_ES
},
371 { VLC_CODEC_APE
, CODEC_ID_APE
, AUDIO_ES
},
373 { VLC_CODEC_SHORTEN
, CODEC_ID_SHORTEN
, AUDIO_ES
},
375 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 22, 0 )
376 { VLC_CODEC_TRUEHD
, CODEC_ID_TRUEHD
, AUDIO_ES
},
378 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 58, 0 )
379 { VLC_CODEC_MLP
, CODEC_ID_MLP
, AUDIO_ES
},
384 { VLC_CODEC_S8
, CODEC_ID_PCM_S8
, AUDIO_ES
},
385 { VLC_CODEC_U8
, CODEC_ID_PCM_U8
, AUDIO_ES
},
386 { VLC_CODEC_S16L
, CODEC_ID_PCM_S16LE
, AUDIO_ES
},
387 { VLC_CODEC_S16B
, CODEC_ID_PCM_S16BE
, AUDIO_ES
},
388 { VLC_CODEC_U16L
, CODEC_ID_PCM_U16LE
, AUDIO_ES
},
389 { VLC_CODEC_U16B
, CODEC_ID_PCM_U16BE
, AUDIO_ES
},
390 { VLC_CODEC_S24L
, CODEC_ID_PCM_S24LE
, AUDIO_ES
},
391 { VLC_CODEC_S24B
, CODEC_ID_PCM_S24BE
, AUDIO_ES
},
392 { VLC_CODEC_U24L
, CODEC_ID_PCM_U24LE
, AUDIO_ES
},
393 { VLC_CODEC_U24B
, CODEC_ID_PCM_U24BE
, AUDIO_ES
},
394 { VLC_CODEC_S32L
, CODEC_ID_PCM_S32LE
, AUDIO_ES
},
395 { VLC_CODEC_S32B
, CODEC_ID_PCM_S32BE
, AUDIO_ES
},
396 { VLC_CODEC_U32L
, CODEC_ID_PCM_U32LE
, AUDIO_ES
},
397 { VLC_CODEC_U32B
, CODEC_ID_PCM_U32BE
, AUDIO_ES
},
398 { VLC_CODEC_ALAW
, CODEC_ID_PCM_ALAW
, AUDIO_ES
},
399 { VLC_CODEC_MULAW
, CODEC_ID_PCM_MULAW
, AUDIO_ES
},
400 { VLC_CODEC_S24DAUD
, CODEC_ID_PCM_S24DAUD
, AUDIO_ES
},
401 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 66, 0 )
402 #if ( !defined( WORDS_BIGENDIAN ) )
403 { VLC_CODEC_FL32
, CODEC_ID_PCM_F32LE
, AUDIO_ES
},
404 { VLC_CODEC_FL64
, CODEC_ID_PCM_F64LE
, AUDIO_ES
},
406 { VLC_CODEC_FL32
, CODEC_ID_PCM_F32BE
, AUDIO_ES
},
407 { VLC_CODEC_FL64
, CODEC_ID_PCM_F64BE
, AUDIO_ES
},
411 /* Subtitle streams */
412 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 33, 0 )
413 { VLC_CODEC_BD_PG
, CODEC_ID_HDMV_PGS_SUBTITLE
, SPU_ES
},
415 { VLC_CODEC_SPU
, CODEC_ID_DVD_SUBTITLE
, SPU_ES
},
416 { VLC_CODEC_DVBS
, CODEC_ID_DVB_SUBTITLE
, SPU_ES
},
417 { VLC_CODEC_SUBT
, CODEC_ID_TEXT
, SPU_ES
},
418 { VLC_CODEC_XSUB
, CODEC_ID_XSUB
, SPU_ES
},
419 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 50, 0 )
420 { VLC_CODEC_SSA
, CODEC_ID_SSA
, SPU_ES
},
426 int GetFfmpegCodec( vlc_fourcc_t i_fourcc
, int *pi_cat
,
427 int *pi_ffmpeg_codec
, const char **ppsz_name
)
429 i_fourcc
= vlc_fourcc_GetCodec( UNKNOWN_ES
, i_fourcc
);
430 for( unsigned i
= 0; codecs_table
[i
].i_fourcc
!= 0; i
++ )
432 if( codecs_table
[i
].i_fourcc
== i_fourcc
)
434 if( pi_cat
) *pi_cat
= codecs_table
[i
].i_cat
;
435 if( pi_ffmpeg_codec
) *pi_ffmpeg_codec
= codecs_table
[i
].i_codec
;
436 if( ppsz_name
) *ppsz_name
= vlc_fourcc_GetDescription( UNKNOWN_ES
, i_fourcc
);//char *)codecs_table[i].psz_name;
444 int GetVlcFourcc( int i_ffmpeg_codec
, int *pi_cat
,
445 vlc_fourcc_t
*pi_fourcc
, const char **ppsz_name
)
447 for( unsigned i
= 0; codecs_table
[i
].i_codec
!= 0; i
++ )
449 if( codecs_table
[i
].i_codec
== i_ffmpeg_codec
)
451 if( pi_cat
) *pi_cat
= codecs_table
[i
].i_cat
;
452 if( pi_fourcc
) *pi_fourcc
= codecs_table
[i
].i_fourcc
;
453 if( ppsz_name
) *ppsz_name
= vlc_fourcc_GetDescription( codecs_table
[i
].i_cat
, codecs_table
[i
].i_fourcc
);