diff options
61 files changed, 66 insertions, 166 deletions
diff --git a/cfg-common.h b/cfg-common.h index ea1f0e7599..e50f2bb44e 100644 --- a/cfg-common.h +++ b/cfg-common.h @@ -104,8 +104,10 @@ {"nosound", &has_audio, CONF_TYPE_FLAG, 0, 1, 0, NULL}, // select audio/video codec (by name) or codec family (by number): - {"afm", &audio_family, CONF_TYPE_INT, CONF_MIN, 0, 22, NULL}, // keep ranges in sync - {"vfm", &video_family, CONF_TYPE_INT, CONF_MIN, 0, 29, NULL}, // with codec-cfg.c +// {"afm", &audio_family, CONF_TYPE_INT, CONF_MIN, 0, 22, NULL}, // keep ranges in sync +// {"vfm", &video_family, CONF_TYPE_INT, CONF_MIN, 0, 29, NULL}, // with codec-cfg.c + {"afm", &audio_fm, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"vfm", &video_fm, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"ac", &audio_codec, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"vc", &video_codec, CONF_TYPE_STRING, 0, 0, 0, NULL}, diff --git a/codec-cfg.c b/codec-cfg.c index f40f6f45b2..979b79849b 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -210,6 +210,7 @@ err_out_parse_error: return 0; } +#if 0 static short get_driver(char *s,int audioflag) { static char *audiodrv[] = { @@ -278,6 +279,7 @@ static short get_driver(char *s,int audioflag) return -1; } +#endif static int validate_codec(codecs_t *c, int type) { @@ -581,8 +583,10 @@ int parse_codec_cfg(char *cfgfile) } else if (!strcmp(token[0], "driver")) { if (get_token(1, 1) < 0) goto err_out_parse_error; - if ((codec->driver = get_driver(token[0],codec_type))<0) - goto err_out_parse_error; + if (!(codec->drv = strdup(token[0]))) { + mp_msg(MSGT_CODECCFG,MSGL_ERR,"can't strdup -> 'driver': %s\n", strerror(errno)); + goto err_out; + } } else if (!strcmp(token[0], "dll")) { if (get_token(1, 1) < 0) goto err_out_parse_error; @@ -651,11 +655,6 @@ int parse_codec_cfg(char *cfgfile) goto err_out_parse_error; if (!(codec->cpuflags = get_cpuflags(token[0]))) goto err_out_parse_error; - } else if (!strcasecmp(token[0], "priority")) { - if (get_token(1, 1) < 0) - goto err_out_parse_error; - //printf("\n\n!!!cfg-parse: priority %s (%d) found!!!\n\n", token[0], atoi(token[0])); // ::atmos - codec->priority = atoi(token[0]); } else goto err_out_parse_error; } @@ -738,7 +737,8 @@ codecs_t* find_codec(unsigned int fourcc,unsigned int *fourccmap, for (/* NOTHING */; i--; c++) { if(start && c<=start) continue; for (j = 0; j < CODECS_MAX_FOURCC; j++) { - if (c->fourcc[j]==fourcc || c->driver==0) { + // FIXME: do NOT hardwire 'null' name here: + if (c->fourcc[j]==fourcc || !strcmp(c->drv,"null")) { if (fourccmap) *fourccmap = c->fourccmap[j]; return c; @@ -787,9 +787,9 @@ void list_codecs(int audioflag){ case CODECS_STATUS_UNTESTED: s="untested";break; } if(c->dll) - mp_msg(MSGT_CODECCFG,MSGL_INFO,"%-11s%2d %s %s [%s]\n",c->name,c->driver,s,c->info,c->dll); + mp_msg(MSGT_CODECCFG,MSGL_INFO,"%-11s %-6s %s %s [%s]\n",c->name,c->drv,s,c->info,c->dll); else - mp_msg(MSGT_CODECCFG,MSGL_INFO,"%-11s%2d %s %s\n",c->name,c->driver,s,c->info); + mp_msg(MSGT_CODECCFG,MSGL_INFO,"%-11s %-6s %s %s\n",c->name,c->drv,s,c->info); } diff --git a/codec-cfg.h b/codec-cfg.h index b08deaf14e..220e97ade4 100644 --- a/codec-cfg.h +++ b/codec-cfg.h @@ -26,59 +26,6 @@ #define CODECS_STATUS_UNTESTED 2 #define CODECS_STATUS__MAX 2 -// Codec family/driver: -#define AFM_MPEG 1 -#define AFM_PCM 2 -#define AFM_AC3 3 -#define AFM_ACM 4 -#define AFM_ALAW 5 -#define AFM_GSM 6 -#define AFM_DSHOW 7 -#define AFM_DVDPCM 8 -#define AFM_HWAC3 9 -#define AFM_VORBIS 10 -#define AFM_FFMPEG 11 -#define AFM_MAD 12 -#define AFM_MSADPCM 13 -#define AFM_A52 14 -#define AFM_G72X 15 -#define AFM_IMAADPCM 16 -#define AFM_DK4ADPCM 17 -#define AFM_DK3ADPCM 18 -#define AFM_ROQAUDIO 19 -#define AFM_AAC 20 -#define AFM_REAL 21 -#define AFM_LIBDV 22 - -#define VFM_MPEG 1 -#define VFM_VFW 2 -#define VFM_ODIVX 3 -#define VFM_DSHOW 4 -#define VFM_FFMPEG 5 -#define VFM_VFWEX 6 -#define VFM_DIVX4 7 -#define VFM_RAW 8 -#define VFM_MSRLE 9 -#define VFM_XANIM 10 -#define VFM_MSVIDC 11 -#define VFM_FLI 12 -#define VFM_CINEPAK 13 -#define VFM_QTRLE 14 -#define VFM_NUV 15 -#define VFM_CYUV 16 -#define VFM_QTSMC 17 -#define VFM_DUCKTM1 18 -#define VFM_ROQVIDEO 19 -#define VFM_QTRPZA 20 -#define VFM_MPNG 21 -#define VFM_IJPG 22 -#define VFM_HUFFYUV 23 -#define VFM_ZLIB 24 -#define VFM_MPEGPES 25 -#define VFM_REAL 26 -#define VFM_SVQ1 27 -#define VFM_XVID 28 -#define VFM_LIBDV 29 #ifndef GUID_TYPE #define GUID_TYPE @@ -102,12 +49,12 @@ typedef struct codecs_st { char *info; char *comment; char *dll; + char* drv; GUID guid; - short driver; +// short driver; short flags; short status; short cpuflags; - short priority; } codecs_t; int parse_codec_cfg(char *cfgfile); diff --git a/help_mp-en.h b/help_mp-en.h index 164dd2f69a..2103453a5b 100644 --- a/help_mp-en.h +++ b/help_mp-en.h @@ -85,12 +85,12 @@ static char help_text[]= #define MSGTR_CoreDumped "core dumped :)\n" #define MSGTR_FPSnotspecified "FPS not specified (or invalid) in the header! Use the -fps option!\n" #define MSGTR_NoVideoStream "Sorry, no video stream... it's unplayable yet\n" -#define MSGTR_TryForceAudioFmt "Trying to force audio codec driver family %d ...\n" +#define MSGTR_TryForceAudioFmtStr "Trying to force audio codec driver family %s ...\n" #define MSGTR_CantFindAfmtFallback "Can't find audio codec for forced driver family, fallback to other drivers.\n" #define MSGTR_CantFindAudioCodec "Can't find codec for audio format 0x%X !\n" #define MSGTR_TryUpgradeCodecsConfOrRTFM "*** Try to upgrade %s from etc/codecs.conf\n*** If it's still not OK, then read DOCS/codecs.html!\n" #define MSGTR_CouldntInitAudioCodec "Couldn't initialize audio codec! -> nosound\n" -#define MSGTR_TryForceVideoFmt "Trying to force video codec driver family %d ...\n" +#define MSGTR_TryForceVideoFmtStr "Trying to force video codec driver family %s ...\n" #define MSGTR_CantFindVfmtFallback "Can't find video codec for forced driver family, fallback to other drivers.\n" #define MSGTR_CantFindVideoCodec "Can't find codec matching selected -vo and video format 0x%X !\n" #define MSGTR_VOincompCodec "Sorry, selected video_out device is incompatible with this codec.\n" @@ -286,12 +286,12 @@ static char help_text[]= #define MSGTR_UsingExternalPP "[PP] Using external postprocessing filter, max q = %d\n" #define MSGTR_UsingCodecPP "[PP] Using codec's postprocessing, max q = %d\n" #define MSGTR_VideoAttributeNotSupportedByVO_VD "Video attribute '%s' isn't supported by selected vo & vd! \n" -#define MSGTR_VideoCodecFamilyNotAvailable "Requested video codec family [%s] (vfm=%d) not available (enable it at compile time!)\n" -#define MSGTR_AudioCodecFamilyNotAvailable "Requested audio codec family [%s] (afm=%d) not available (enable it at compile time!)\n" +#define MSGTR_VideoCodecFamilyNotAvailableStr "Requested video codec family [%s] (vfm=%s) not available (enable it at compile time!)\n" +#define MSGTR_AudioCodecFamilyNotAvailableStr "Requested audio codec family [%s] (afm=%s) not available (enable it at compile time!)\n" #define MSGTR_OpeningVideoDecoder "Opening video decoder: [%s] %s\n" #define MSGTR_OpeningAudioDecoder "Opening audio decoder: [%s] %s\n" -#define MSGTR_UninitVideo "uninit video: %d \n" -#define MSGTR_UninitAudio "uninit audio: %d \n" +#define MSGTR_UninitVideoStr "uninit video: %s \n" +#define MSGTR_UninitAudioStr "uninit audio: %s \n" #define MSGTR_VDecoderInitFailed "VDecoder init failed :(\n" #define MSGTR_ADecoderInitFailed "ADecoder init failed :(\n" #define MSGTR_ADecoderPreinitFailed "ADecoder preinit failed :(\n" diff --git a/libmpcodecs/ad_acm.c b/libmpcodecs/ad_acm.c index c728af0838..ca3890643d 100644 --- a/libmpcodecs/ad_acm.c +++ b/libmpcodecs/ad_acm.c @@ -14,7 +14,6 @@ static ad_info_t info = { "Win32 ACM audio decoder", "acm", - AFM_ACM, "Nick Kurshev", "avifile.sf.net", "" diff --git a/libmpcodecs/ad_alaw.c b/libmpcodecs/ad_alaw.c index d1a7e4cfe4..ca8db2768a 100644 --- a/libmpcodecs/ad_alaw.c +++ b/libmpcodecs/ad_alaw.c @@ -9,7 +9,6 @@ static ad_info_t info = { "aLaw/uLaw audio decoder", "alaw", - AFM_ALAW, "Nick Kurshev", "A'rpi", "" diff --git a/libmpcodecs/ad_dk3adpcm.c b/libmpcodecs/ad_dk3adpcm.c index 5cb6b6b232..a6b2c94639 100644 --- a/libmpcodecs/ad_dk3adpcm.c +++ b/libmpcodecs/ad_dk3adpcm.c @@ -20,7 +20,6 @@ static ad_info_t info = { "Duck DK3 ADPCM decoder", "dk3adpcm", - AFM_DK3ADPCM, "Nick Kurshev", "Mike Melanson", "This format number was used by Duck Corp. but not officially registered with Microsoft" diff --git a/libmpcodecs/ad_dshow.c b/libmpcodecs/ad_dshow.c index 208a927814..662a5204db 100644 --- a/libmpcodecs/ad_dshow.c +++ b/libmpcodecs/ad_dshow.c @@ -14,7 +14,6 @@ static ad_info_t info = { "Win32/DirectShow decoders", "dshow", - AFM_DSHOW, "Nick Kurshev", "avifile.sf.net", "" diff --git a/libmpcodecs/ad_dvdpcm.c b/libmpcodecs/ad_dvdpcm.c index faab6a7584..60704c9185 100644 --- a/libmpcodecs/ad_dvdpcm.c +++ b/libmpcodecs/ad_dvdpcm.c @@ -9,7 +9,6 @@ static ad_info_t info = { "Uncompressed DVD PCM audio decoder", "dvdpcm", - AFM_DVDPCM, "Nick Kurshev", "A'rpi", "" diff --git a/libmpcodecs/ad_faad.c b/libmpcodecs/ad_faad.c index bd210d96f9..c76257145f 100644 --- a/libmpcodecs/ad_faad.c +++ b/libmpcodecs/ad_faad.c @@ -17,7 +17,6 @@ static ad_info_t info = { "AAC (MPEG2/4 Advanced Audio Coding)", "faad", - AFM_AAC, "Felix Buenemann", "faad2", "Under development!" diff --git a/libmpcodecs/ad_ffmpeg.c b/libmpcodecs/ad_ffmpeg.c index fa642a6a95..7aac9e8418 100644 --- a/libmpcodecs/ad_ffmpeg.c +++ b/libmpcodecs/ad_ffmpeg.c @@ -16,7 +16,6 @@ static ad_info_t info = { "FFmpeg audio decoders", "ffmpeg", - AFM_FFMPEG, "Nick Kurshev", "ffmpeg.sf.net", "" diff --git a/libmpcodecs/ad_hwac3.c b/libmpcodecs/ad_hwac3.c index 1b9a78d853..e645233f3c 100644 --- a/libmpcodecs/ad_hwac3.c +++ b/libmpcodecs/ad_hwac3.c @@ -20,7 +20,6 @@ static ad_info_t info = { "AC3 through SPDIF", "hwac3", - AFM_HWAC3, "Nick Kurshev", "???", "" diff --git a/libmpcodecs/ad_imaadpcm.c b/libmpcodecs/ad_imaadpcm.c index d3727e90ed..d134ae63ef 100644 --- a/libmpcodecs/ad_imaadpcm.c +++ b/libmpcodecs/ad_imaadpcm.c @@ -71,7 +71,6 @@ static ad_info_t info = { "IMA ADPCM audio decoder", "imaadpcm", - AFM_IMAADPCM, "Nick Kurshev", "Mike Melanson", "" diff --git a/libmpcodecs/ad_liba52.c b/libmpcodecs/ad_liba52.c index cc85fe0004..f6d6df264d 100644 --- a/libmpcodecs/ad_liba52.c +++ b/libmpcodecs/ad_liba52.c @@ -23,7 +23,6 @@ static ad_info_t info = { "AC3-liba52", "liba52", - AFM_A52, "Nick Kurshev", "Michel LESPINASSE", "" diff --git a/libmpcodecs/ad_libdv.c b/libmpcodecs/ad_libdv.c index 0cd5553f8b..a193369047 100644 --- a/libmpcodecs/ad_libdv.c +++ b/libmpcodecs/ad_libdv.c @@ -24,7 +24,6 @@ static ad_info_t info = { "Raw DV Audio Decoder", "libdv", - AFM_LIBDV, "Alexander Neundorf <neundorf@kde.org>", "http://libdv.sf.net", "" diff --git a/libmpcodecs/ad_libmad.c b/libmpcodecs/ad_libmad.c index 083a0942ad..5ecfd5c4f5 100644 --- a/libmpcodecs/ad_libmad.c +++ b/libmpcodecs/ad_libmad.c @@ -13,7 +13,6 @@ static ad_info_t info = { "libmad mpeg audio decoder", "libmad", - AFM_MAD, "A'rpi", "libmad...", "based on Xine's libmad/xine_decoder.c" diff --git a/libmpcodecs/ad_libvorbis.c b/libmpcodecs/ad_libvorbis.c index 526667ea4e..630362c829 100644 --- a/libmpcodecs/ad_libvorbis.c +++ b/libmpcodecs/ad_libvorbis.c @@ -12,7 +12,6 @@ static ad_info_t info = { "Ogg/Vorbis audio decoder", "libvorbis", - AFM_VORBIS, "Felix Buenemann, A'rpi", "libvorbis", "buggy" diff --git a/libmpcodecs/ad_mp3lib.c b/libmpcodecs/ad_mp3lib.c index e4b8f9c4bc..ef544f465d 100644 --- a/libmpcodecs/ad_mp3lib.c +++ b/libmpcodecs/ad_mp3lib.c @@ -9,7 +9,6 @@ static ad_info_t info = { "MPEG layer-2, layer-3", "mp3lib", - AFM_MPEG, "Nick Kurshev", "mpg123", "Optimized to MMX/SSE/3Dnow!" diff --git a/libmpcodecs/ad_msadpcm.c b/libmpcodecs/ad_msadpcm.c index 7457cbc3d5..5bfa0e46fc 100644 --- a/libmpcodecs/ad_msadpcm.c +++ b/libmpcodecs/ad_msadpcm.c @@ -19,7 +19,6 @@ static ad_info_t info = { "MS ADPCM audio decoder", "msadpcm", - AFM_MSADPCM, "Nick Kurshev", "Mike Melanson", "" diff --git a/libmpcodecs/ad_msgsm.c b/libmpcodecs/ad_msgsm.c index 0aabe0aaba..a4dbe122df 100644 --- a/libmpcodecs/ad_msgsm.c +++ b/libmpcodecs/ad_msgsm.c @@ -9,7 +9,6 @@ static ad_info_t info = { "native MSGSM audio decoder", "msgsm", - AFM_GSM, "A'rpi", "XAnim", "" diff --git a/libmpcodecs/ad_pcm.c b/libmpcodecs/ad_pcm.c index e0bc8f4960..e3b3430fd5 100644 --- a/libmpcodecs/ad_pcm.c +++ b/libmpcodecs/ad_pcm.c @@ -9,7 +9,6 @@ static ad_info_t info = { "Uncompressed PCM audio decoder", "pcm", - AFM_PCM, "Nick Kurshev", "A'rpi", "" diff --git a/libmpcodecs/ad_realaud.c b/libmpcodecs/ad_realaud.c index 09cbbc678c..fd0511c99d 100644 --- a/libmpcodecs/ad_realaud.c +++ b/libmpcodecs/ad_realaud.c @@ -15,7 +15,6 @@ static ad_info_t info = { "RealAudio decoder", "realaud", - AFM_REAL, "A'rpi", "Florian Schneider", "binary real audio codecs" diff --git a/libmpcodecs/ad_roqaudio.c b/libmpcodecs/ad_roqaudio.c index 556a8bdcf5..3d6454c916 100644 --- a/libmpcodecs/ad_roqaudio.c +++ b/libmpcodecs/ad_roqaudio.c @@ -10,7 +10,6 @@ static ad_info_t info = { "Id RoQ File Audio Decoder", "roqaudio", - AFM_ROQAUDIO, "Nick Kurshev", "Mike Melanson" "RoQA is an internal MPlayer FOURCC" diff --git a/libmpcodecs/ad_sample.c b/libmpcodecs/ad_sample.c index 56d5a46dea..aa7912bba8 100644 --- a/libmpcodecs/ad_sample.c +++ b/libmpcodecs/ad_sample.c @@ -10,7 +10,6 @@ static ad_info_t info = { "Sample audio decoder", // name of the driver "sample", // driver name. should be the same as filename without ad_ - AFM_SAMPLE, // replace with registered AFM number "A'rpi", // writer/maintainer of _this_ file "", // writer/maintainer/site of the _codec_ "" // comments diff --git a/libmpcodecs/dec_audio.c b/libmpcodecs/dec_audio.c index 4185415e91..af48c9136c 100644 --- a/libmpcodecs/dec_audio.c +++ b/libmpcodecs/dec_audio.c @@ -30,12 +30,13 @@ int init_audio(sh_audio_t *sh_audio) { unsigned i; for (i=0; mpcodecs_ad_drivers[i] != NULL; i++) - if(mpcodecs_ad_drivers[i]->info->id==sh_audio->codec->driver){ +// if(mpcodecs_ad_drivers[i]->info->id==sh_audio->codec->driver){ + if(!strcmp(mpcodecs_ad_drivers[i]->info->short_name,sh_audio->codec->drv)){ mpadec=mpcodecs_ad_drivers[i]; break; } if(!mpadec){ - mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_AudioCodecFamilyNotAvailable, - sh_audio->codec->name, sh_audio->codec->driver); + mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_AudioCodecFamilyNotAvailableStr, + sh_audio->codec->name, sh_audio->codec->drv); return 0; // no such driver } @@ -119,7 +120,7 @@ void uninit_audio(sh_audio_t *sh_audio) if(sh_audio->a_in_buffer) free(sh_audio->a_in_buffer); sh_audio->a_in_buffer=NULL; if(!sh_audio->inited) return; - mp_msg(MSGT_DECAUDIO,MSGL_V,MSGTR_UninitAudio,sh_audio->codec->driver); + mp_msg(MSGT_DECAUDIO,MSGL_V,MSGTR_UninitAudioStr,sh_audio->codec->drv); mpadec->uninit(sh_audio); sh_audio->inited=0; } diff --git a/libmpcodecs/dec_video.c b/libmpcodecs/dec_video.c index dc8c411476..efcd660f3e 100644 --- a/libmpcodecs/dec_video.c +++ b/libmpcodecs/dec_video.c @@ -134,13 +134,13 @@ int set_rectangle(sh_video_t *sh_video,int param,int value) void uninit_video(sh_video_t *sh_video){ if(!sh_video->inited) return; - mp_msg(MSGT_DECVIDEO,MSGL_V,MSGTR_UninitVideo,sh_video->codec->driver); + mp_msg(MSGT_DECVIDEO,MSGL_V,MSGTR_UninitVideoStr,sh_video->codec->drv); mpvdec->uninit(sh_video); vf_uninit_filter_chain(sh_video->vfilter); sh_video->inited=0; } -int init_video(sh_video_t *sh_video,char* codecname,int vfm,int status){ +int init_video(sh_video_t *sh_video,char* codecname,char* vfm,int status){ unsigned int orig_fourcc=sh_video->bih?sh_video->bih->biCompression:0; sh_video->codec=NULL; sh_video->vf_inited=0; @@ -155,16 +155,17 @@ int init_video(sh_video_t *sh_video,char* codecname,int vfm,int status){ // ok we found one codec if(sh_video->codec->flags&CODECS_FLAG_SELECTED) continue; // already tried & failed if(codecname && strcmp(sh_video->codec->name,codecname)) continue; // -vc - if(vfm>=0 && sh_video->codec->driver!=vfm) continue; // vfm doesn't match + if(vfm && strcmp(sh_video->codec->drv,vfm)) continue; // vfm doesn't match if(sh_video->codec->status<status) continue; // too unstable sh_video->codec->flags|=CODECS_FLAG_SELECTED; // tagging it // ok, it matches all rules, let's find the driver! for (i=0; mpcodecs_vd_drivers[i] != NULL; i++) - if(mpcodecs_vd_drivers[i]->info->id==sh_video->codec->driver) break; +// if(mpcodecs_vd_drivers[i]->info->id==sh_video->codec->driver) break; + if(!strcmp(mpcodecs_vd_drivers[i]->info->short_name,sh_video->codec->drv)) break; mpvdec=mpcodecs_vd_drivers[i]; if(!mpvdec){ // driver not available (==compiled in) - mp_msg(MSGT_DECVIDEO,MSGL_WARN,MSGTR_VideoCodecFamilyNotAvailable, - sh_video->codec->name, sh_video->codec->driver); + mp_msg(MSGT_DECVIDEO,MSGL_WARN,MSGTR_VideoCodecFamilyNotAvailableStr, + sh_video->codec->name, sh_video->codec->drv); continue; } // it's available, let's try to init! diff --git a/libmpcodecs/dec_video.h b/libmpcodecs/dec_video.h index 296af5ef1a..be29e8e760 100644 --- a/libmpcodecs/dec_video.h +++ b/libmpcodecs/dec_video.h @@ -3,7 +3,7 @@ extern int video_read_properties(sh_video_t *sh_video); //extern int init_video(sh_video_t *sh_video, int *pitches); -extern int init_video(sh_video_t *sh_video,char* codecname,int vfm,int status); +extern int init_video(sh_video_t *sh_video,char* codecname,char* vfm,int status); extern void uninit_video(sh_video_t *sh_video); extern int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame); diff --git a/libmpcodecs/mpc_info.h b/libmpcodecs/mpc_info.h index 1f527dd66d..9 |