summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/dec_audio.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_audio.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_audio.c')
-rw-r--r--libmpcodecs/dec_audio.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libmpcodecs/dec_audio.c b/libmpcodecs/dec_audio.c
index 3def4897d8..01535a3375 100644
--- a/libmpcodecs/dec_audio.c
+++ b/libmpcodecs/dec_audio.c
@@ -129,6 +129,41 @@ int init_audio(sh_audio_t *sh_audio)
return 1;
}
+int init_best_audio_codec(sh_audio_t *sh_audio,char* audio_codec,char* audio_fm){
+ // Go through the codec.conf and find the best codec...
+ sh_audio->codec=NULL;
+ if(audio_fm) mp_msg(MSGT_DECAUDIO,MSGL_INFO,MSGTR_TryForceAudioFmtStr,audio_fm);
+ while(1){
+ sh_audio->codec=find_codec(sh_audio->format,NULL,sh_audio->codec,1);
+ if(!sh_audio->codec){
+ if(audio_fm) {
+ sh_audio->codec=NULL; /* re-search */
+ mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_CantFindAfmtFallback);
+ audio_fm=NULL;
+ continue;
+ }
+ mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_CantFindAudioCodec,sh_audio->format);
+ mp_msg(MSGT_DECAUDIO,MSGL_HINT, MSGTR_TryUpgradeCodecsConfOrRTFM,get_path("codecs.conf"));
+ return 0;
+ }
+ if(audio_codec && strcmp(sh_audio->codec->name,audio_codec)) continue;
+ if(audio_fm && strcmp(sh_audio->codec->drv,audio_fm)) continue;
+ mp_msg(MSGT_DECAUDIO,MSGL_INFO,"%s audio codec: [%s] afm:%s (%s)\n",
+ audio_codec?mp_gettext("Forcing"):mp_gettext("Detected"),sh_audio->codec->name,sh_audio->codec->drv,sh_audio->codec->info);
+ break;
+ }
+ // found it...
+ if(!init_audio(sh_audio)){
+ mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_CouldntInitAudioCodec);
+ return 0;
+ }
+ mp_msg(MSGT_DECAUDIO,MSGL_INFO,"AUDIO: %d Hz, %d ch, sfmt: 0x%X (%d bps), ratio: %d->%d (%3.1f kbit)\n",
+ sh_audio->samplerate,sh_audio->channels,
+ sh_audio->sample_format,sh_audio->samplesize,
+ sh_audio->i_bps,sh_audio->o_bps,sh_audio->i_bps*8*0.001);
+ return 1; // success!
+}
+
void uninit_audio(sh_audio_t *sh_audio)
{
if(sh_audio->inited){