summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/dec_video.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-25 23:45:34 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-25 23:45:34 +0000
commit1fbd3baf78a734372fc3483155af4fb17ced7019 (patch)
tree5c8aea6ee6872a5773d1ca6d4d4681fa6e5553eb /libmpcodecs/dec_video.c
parent2c23e786e5a6ef60803036d79de380cc7dc1f55c (diff)
downloadmpv-1fbd3baf78a734372fc3483155af4fb17ced7019.tar.bz2
mpv-1fbd3baf78a734372fc3483155af4fb17ced7019.tar.xz
best audio/video codec selection & init moved to libmpcodecs
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7503 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/dec_video.c')
-rw-r--r--libmpcodecs/dec_video.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/libmpcodecs/dec_video.c b/libmpcodecs/dec_video.c
index ad4fce1f84..a29e95cf3a 100644
--- a/libmpcodecs/dec_video.c
+++ b/libmpcodecs/dec_video.c
@@ -204,6 +204,39 @@ 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){
+// 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 {
+ int status;
+ // try in stability order: UNTESTED, WORKING, BUGGY. never try CRASHING.
+ if(video_fm){
+ // try first the preferred codec family:
+ 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){
+ mp_msg(MSGT_DECVIDEO,MSGL_HINT, MSGTR_TryUpgradeCodecsConfOrRTFM,get_path("codecs.conf"));
+ mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_CantFindVideoCodec,sh_video->format);
+ 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);
+return 1; // success
+}
+
extern int vo_directrendering;
int decode_video(sh_video_t *sh_video,unsigned char *start,int in_size,int drop_frame){