Mercurial > mplayer.hg
diff mplayer.c @ 7604:32efb806436e
aufio filter layer (libaf) integration to libmpcodecs, mplayer and mencoder
author | arpi |
---|---|
date | Sat, 05 Oct 2002 22:55:45 +0000 |
parents | 4a233f3b09a7 |
children | c3bbe602aff3 |
line wrap: on
line diff
--- a/mplayer.c Sat Oct 05 22:54:11 2002 +0000 +++ b/mplayer.c Sat Oct 05 22:55:45 2002 +0000 @@ -1237,6 +1237,7 @@ if(!(audio_out=init_best_audio_out(audio_driver_list, (ao_plugin_cfg.plugin_list), // plugin flag force_srate?force_srate:sh_audio->samplerate, + audio_output_channels?audio_output_channels: sh_audio->channels,sh_audio->sample_format,0))){ // FAILED: mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CannotInitAO); @@ -1244,7 +1245,7 @@ } else { // SUCCESS: inited_flags|=INITED_AO; - mp_msg(MSGT_CPLAYER,MSGL_INFO,"AO: [%s] %iHz %dch %s\n", + mp_msg(MSGT_CPLAYER,MSGL_INFO,"AO: [%s] %dHz %dch %s\n", audio_out->info->short_name, force_srate?force_srate:sh_audio->samplerate, sh_audio->channels, @@ -1253,6 +1254,19 @@ audio_out->info->name, audio_out->info->author); if(strlen(audio_out->info->comment) > 0) mp_msg(MSGT_CPLAYER,MSGL_V,MSGTR_AOComment, audio_out->info->comment); + // init audio filters: +#if 1 + current_module="af_init"; + if(!init_audio_filters(sh_audio, + sh_audio->samplerate, + sh_audio->channels, sh_audio->sample_format, sh_audio->samplesize, + ao_data.samplerate, ao_data.channels, ao_data.format, + audio_out_format_bits(ao_data.format)/8, /* ao_data.bps, */ + ao_data.outburst*4, ao_data.buffersize)){ + mp_msg(MSGT_CPLAYER,MSGL_ERR,"Couldn't find matching filter / ao format, -> nosound\n"); + sh_audio=d_audio->sh=NULL; // -> nosound + } +#endif } } @@ -1338,24 +1352,25 @@ // Fill buffer if needed: current_module="decode_audio"; // Enter AUDIO decoder module t=GetTimer(); - while(sh_audio->a_buffer_len<playsize && !d_audio->eof){ - int ret=decode_audio(sh_audio,&sh_audio->a_buffer[sh_audio->a_buffer_len], - playsize-sh_audio->a_buffer_len,sh_audio->a_buffer_size-sh_audio->a_buffer_len); + while(sh_audio->a_out_buffer_len<playsize && !d_audio->eof){ + int ret=decode_audio(sh_audio,&sh_audio->a_out_buffer[sh_audio->a_out_buffer_len], + playsize-sh_audio->a_out_buffer_len,sh_audio->a_out_buffer_size-sh_audio->a_out_buffer_len); if(ret<=0) break; // EOF? - sh_audio->a_buffer_len+=ret; + sh_audio->a_out_buffer_len+=ret; } t=GetTimer()-t; tt = t*0.000001f; audio_time_usage+=tt; - if(playsize>sh_audio->a_buffer_len) playsize=sh_audio->a_buffer_len; + if(playsize>sh_audio->a_out_buffer_len) playsize=sh_audio->a_out_buffer_len; // play audio: current_module="play_audio"; - playsize=audio_out->play(sh_audio->a_buffer,playsize,0); + playsize=audio_out->play(sh_audio->a_out_buffer,playsize,0); if(playsize>0){ - sh_audio->a_buffer_len-=playsize; - memmove(sh_audio->a_buffer,&sh_audio->a_buffer[playsize],sh_audio->a_buffer_len); - sh_audio->timer+=playsize/(float)(sh_audio->o_bps); + sh_audio->a_out_buffer_len-=playsize; + memmove(sh_audio->a_out_buffer,&sh_audio->a_out_buffer[playsize],sh_audio->a_out_buffer_len); + sh_audio->timer+=playsize/((float)((ao_data.bps && sh_audio->afilter) ? + ao_data.bps : sh_audio->o_bps)); } break;