summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--codec-cfg.c24
-rw-r--r--codec-cfg.h1
-rw-r--r--mplayer.c35
3 files changed, 48 insertions, 12 deletions
diff --git a/codec-cfg.c b/codec-cfg.c
index 05320e02bc..65c9147fe1 100644
--- a/codec-cfg.c
+++ b/codec-cfg.c
@@ -644,6 +644,30 @@ codecs_t* find_codec(unsigned int fourcc,unsigned int *fourccmap,
return NULL;
}
+void list_codecs(int audioflag){
+ int i, j;
+ codecs_t *c;
+
+ if (audioflag) {
+ i = nr_acodecs;
+ c = audio_codecs;
+ } else {
+ i = nr_vcodecs;
+ c = video_codecs;
+ }
+ if(!i) return NULL;
+ for (/* NOTHING */; i--; c++) {
+ if(c->dll)
+ printf("%-10s %2d %s [%s]\n",c->name,c->driver,c->info,c->dll);
+ else
+ printf("%-10s %2d %s\n",c->name,c->driver,c->info);
+
+ }
+
+}
+
+
+
#ifdef CODECS2HTML
void wrapline(FILE *f2,char *s){
diff --git a/codec-cfg.h b/codec-cfg.h
index 9ade3e28c7..a97868cfd2 100644
--- a/codec-cfg.h
+++ b/codec-cfg.h
@@ -71,5 +71,6 @@ codecs_t** parse_codec_cfg(char *cfgfile);
codecs_t* find_video_codec(unsigned int fourcc, unsigned int *fourccmap, codecs_t *start);
codecs_t* find_audio_codec(unsigned int fourcc, unsigned int *fourccmap, codecs_t *start);
codecs_t* find_codec(unsigned int fourcc,unsigned int *fourccmap,codecs_t *start,int audioflag);
+void list_codecs(int audioflag);
#endif
diff --git a/mplayer.c b/mplayer.c
index 40457df43e..a717034b26 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -430,11 +430,7 @@ if ((conffile = get_path("")) == NULL) {
}
}
-//ifndef HAVE_GUI
- int main(int argc,char* argv[], char *envp[]){
-//else
-// int mplayer(int argc,char* argv[], char *envp[]){
-//endif
+int main(int argc,char* argv[], char *envp[]){
#ifdef USE_SUB
static subtitle* subtitles=NULL;
@@ -530,6 +526,28 @@ int gui_no_filename=0;
exit(0);
}
+// check codec.conf
+if(!parse_codec_cfg(get_path("codecs.conf"))){
+ if(!parse_codec_cfg(DATADIR"/codecs.conf")){
+ mp_msg(MSGT_CPLAYER,MSGL_HINT,MSGTR_CopyCodecsConf);
+ exit(1);
+ }
+}
+
+ if(audio_codec && strcmp(audio_codec,"help")==0){
+ printf("Available audio codecs:\n");
+ list_codecs(1);
+ printf("\n");
+ exit(0);
+ }
+ if(video_codec && strcmp(video_codec,"help")==0){
+ printf("Available video codecs:\n");
+ list_codecs(0);
+ printf("\n");
+ exit(0);
+ }
+
+
if(!num_filenames && !vcd_track && !dvd_title){
if(!use_gui){
// no file/vcd/dvd -> show HELP:
@@ -550,13 +568,6 @@ int gui_no_filename=0;
//------ load global data first ------
-// check codec.conf
-if(!parse_codec_cfg(get_path("codecs.conf"))){
- if(!parse_codec_cfg(DATADIR"/codecs.conf")){
- mp_msg(MSGT_CPLAYER,MSGL_HINT,MSGTR_CopyCodecsConf);
- exit(1);
- }
-}
// check font
#ifdef USE_OSD