diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-09-26 01:31:18 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-09-26 01:31:18 +0000 |
commit | 50de15356ad928c225b9666449ed968908e96c28 (patch) | |
tree | 6f3fa7416a0ee193757d6d050c5d93c15caa2ee2 /libmpcodecs/dec_video.c | |
parent | e8cc8584f11c70dbbfe9c28211aa763964167576 (diff) | |
download | mpv-50de15356ad928c225b9666449ed968908e96c28.tar.bz2 mpv-50de15356ad928c225b9666449ed968908e96c28.tar.xz |
-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
Diffstat (limited to 'libmpcodecs/dec_video.c')
-rw-r--r-- | libmpcodecs/dec_video.c | 35 |
1 files changed, 25 insertions, 10 deletions
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 } |