diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-12-30 03:57:55 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-12-30 03:57:55 +0000 |
commit | 9534c8bb3e00f3c67f1f16d3b8177bbb4a214db1 (patch) | |
tree | df6393223542895435b126e6046a38a526859a07 /dec_audio.c | |
parent | e41d35c31bec3de89fe09d59ee2c317d3e4fe708 (diff) | |
download | mpv-9534c8bb3e00f3c67f1f16d3b8177bbb4a214db1.tar.bz2 mpv-9534c8bb3e00f3c67f1f16d3b8177bbb4a214db1.tar.xz |
print AC3 info + hotfix for channels upmix
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3888 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'dec_audio.c')
-rw-r--r-- | dec_audio.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/dec_audio.c b/dec_audio.c index 952da6cc1e..d64ee765fa 100644 --- a/dec_audio.c +++ b/dec_audio.c @@ -249,6 +249,32 @@ while(1){ return length; } +// returns: number of available channels +static int a52_printinfo(sh_audio_t *sh_audio){ +int flags, sample_rate, bit_rate; +char* mode="unknown"; +int channels=0; + a52_syncinfo (sh_audio->a_in_buffer, &flags, &sample_rate, &bit_rate); + switch(flags&A52_CHANNEL_MASK){ + case A52_CHANNEL: mode="channel"; channels=2; break; + case A52_MONO: mode="mono"; channels=1; break; + case A52_STEREO: mode="stereo"; channels=2; break; + case A52_3F: mode="3f";channels=3;break; + case A52_2F1R: mode="2f+1r";channels=3;break; + case A52_3F1R: mode="3f+1r";channels=4;break; + case A52_2F2R: mode="2f+2r";channels=4;break; + case A52_3F2R: mode="3f+2r";channels=5;break; + case A52_CHANNEL1: mode="channel1"; channels=2; break; + case A52_CHANNEL2: mode="channel2"; channels=2; break; + case A52_DOLBY: mode="dolby"; channels=2; break; + } + mp_msg(MSGT_DECAUDIO,MSGL_INFO,"AC3: %d.%d (%s%s) %d Hz %3.1f kbit/s\n", + channels, (flags&A52_LFE)?1:0, + mode, (flags&A52_LFE)?"+lfe":"", + sample_rate, bit_rate*0.001f); + return (flags&A52_LFE) ? (channels+1) : channels; +} + int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen); @@ -519,7 +545,11 @@ case AFM_A52: { mp_msg(MSGT_DECAUDIO,MSGL_ERR,"A52 sync failed\n"); driver=0;break; } - sh_audio->channels=audio_output_channels; + // 'a52 cannot upmix' hotfix: + sh_audio->channels=a52_printinfo(sh_audio); + if(audio_output_channels<sh_audio->channels) + sh_audio->channels=audio_output_channels; + break; } case AFM_HWAC3: { |