Mercurial > mplayer.hg
changeset 29794:df1826dcdb2d
Disable audio when initializing the filter chain fails (can happen e.g. when the hwmpa
decoder is used but the hardware does not support hardware MPEG audio).
Otherwise this will lead to a crash later on when the decode code tries to access
the audio filter chain.
author | reimar |
---|---|
date | Fri, 06 Nov 2009 15:56:30 +0000 |
parents | e19b989877c6 |
children | 72e11974c9c3 |
files | mplayer.c |
diffstat | 1 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mplayer.c Fri Nov 06 15:45:55 2009 +0000 +++ b/mplayer.c Fri Nov 06 15:56:30 2009 +0000 @@ -1642,10 +1642,7 @@ ao_data.format,0))){ // FAILED: mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CannotInitAO); - uninit_player(INITIALIZED_ACODEC); // close codec - mpctx->sh_audio=mpctx->d_audio->sh=NULL; // -> nosound - mpctx->d_audio->id = -2; - return; + goto init_error; } else { // SUCCESS: initialized_flags|=INITIALIZED_AO; @@ -1663,15 +1660,19 @@ current_module="af_init"; if(!build_afilter_chain(mpctx->sh_audio, &ao_data)) { mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_NoMatchingFilter); -// mp_msg(MSGT_CPLAYER,MSGL_ERR,"Couldn't find matching filter / ao format! -> NOSOUND\n"); -// uninit_player(INITIALIZED_ACODEC|INITIALIZED_AO); // close codec & ao -// sh_audio=mpctx->d_audio->sh=NULL; // -> nosound + goto init_error; } #endif } mpctx->mixer.audio_out = mpctx->audio_out; mpctx->mixer.volstep = volstep; } +return; + +init_error: + uninit_player(INITIALIZED_ACODEC|INITIALIZED_AO); // close codec and possibly AO + mpctx->sh_audio=mpctx->d_audio->sh=NULL; // -> nosound + mpctx->d_audio->id = -2; }