From 50de15356ad928c225b9666449ed968908e96c28 Mon Sep 17 00:00:00 2001 From: arpi Date: Thu, 26 Sep 2002 01:31:18 +0000 Subject: -vc/-vfm accepts codec/driver _list_ now. empty list element for -vc means *, ie search all codecs. codec name starting with - disables the codec. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7507 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/dec_video.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'libmpcodecs/dec_video.c') diff --git a/libmpcodecs/dec_video.c b/libmpcodecs/dec_video.c index a29e95cf3a..589887a305 100644 --- a/libmpcodecs/dec_video.c +++ b/libmpcodecs/dec_video.c @@ -204,26 +204,41 @@ int init_video(sh_video_t *sh_video,char* codecname,char* vfm,int status){ return 0; } -int init_best_video_codec(sh_video_t *sh_video,char* video_codec,char* video_fm){ +int init_best_video_codec(sh_video_t *sh_video,char** video_codec_list,char** video_fm_list){ +char* vc_l_default[2]={"",(char*)NULL}; +// hack: +if(!video_codec_list) video_codec_list=vc_l_default; // Go through the codec.conf and find the best codec... sh_video->inited=0; codecs_reset_selection(0); -if(video_codec){ - // forced codec by name: - mp_msg(MSGT_DECVIDEO,MSGL_INFO,MSGTR_ForcedVideoCodec,video_codec); - init_video(sh_video,video_codec,NULL,-1); -} else { +while(!sh_video->inited && *video_codec_list){ + char* video_codec=*(video_codec_list++); + if(video_codec[0]){ + if(video_codec[0]=='-'){ + // disable this codec: + select_codec(video_codec+1,0); + } else { + // forced codec by name: + mp_msg(MSGT_DECVIDEO,MSGL_INFO,MSGTR_ForcedVideoCodec,video_codec); + init_video(sh_video,video_codec,NULL,-1); + } + } else { int status; // try in stability order: UNTESTED, WORKING, BUGGY. never try CRASHING. - if(video_fm){ - // try first the preferred codec family: + if(video_fm_list){ + char** fmlist=video_fm_list; + // try first the preferred codec families: + while(!sh_video->inited && *fmlist){ + char* video_fm=*(fmlist++); mp_msg(MSGT_DECVIDEO,MSGL_INFO,MSGTR_TryForceVideoFmtStr,video_fm); for(status=CODECS_STATUS__MAX;status>=CODECS_STATUS__MIN;--status) if(init_video(sh_video,NULL,video_fm,status)) break; + } } if(!sh_video->inited) for(status=CODECS_STATUS__MAX;status>=CODECS_STATUS__MIN;--status) if(init_video(sh_video,NULL,NULL,status)) break; + } } if(!sh_video->inited){ @@ -232,8 +247,8 @@ if(!sh_video->inited){ return 0; // failed } -mp_msg(MSGT_DECVIDEO,MSGL_INFO,"%s video codec: [%s] vfm:%s (%s)\n", - video_codec?mp_gettext("Forcing"):mp_gettext("Detected"),sh_video->codec->name,sh_video->codec->drv,sh_video->codec->info); +mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Selected video codec: [%s] vfm:%s (%s)\n", + sh_video->codec->name,sh_video->codec->drv,sh_video->codec->info); return 1; // success } -- cgit v1.2.3