Mute pass-through, if volume is 0.

This commit is contained in:
Johns 2012-04-27 12:31:40 +02:00
parent 6dd7c2680a
commit 5456164dce

View File

@ -848,16 +848,17 @@ static int AlsaPlayRingbuffer(void)
if (!avail) { // full or buffer empty if (!avail) { // full or buffer empty
break; break;
} }
if (AudioSoftVolume && !AudioRing[AudioRingRead].UseAc3) { // muting ac3, can produce disturbance
if (AudioMute || (AudioSoftVolume && !AudioRing[AudioRingRead].UseAc3)) {
// FIXME: quick&dirty cast // FIXME: quick&dirty cast
AudioSoftAmplifier((int16_t *) p, avail); AudioSoftAmplifier((int16_t *) p, avail);
// FIXME: if not all are written, we double amplify them // FIXME: if not all are written, we double amplify them
} }
frames = snd_pcm_bytes_to_frames(AlsaPCMHandle, avail); frames = snd_pcm_bytes_to_frames(AlsaPCMHandle, avail);
#ifdef DEBUG
if (avail != snd_pcm_frames_to_bytes(AlsaPCMHandle, frames)) { if (avail != snd_pcm_frames_to_bytes(AlsaPCMHandle, frames)) {
Error(_("audio/alsa: bytes lost -> out of sync\n")); Error(_("audio/alsa: bytes lost -> out of sync\n"));
} }
#ifdef DEBUG
#endif #endif
for (;;) { for (;;) {
@ -3586,7 +3587,7 @@ void AudioEnqueue(const void *samples, int count)
return; // no setup yet return; // no setup yet
} }
if (AudioRing[AudioRingWrite].UseAc3) { if (AudioRing[AudioRingWrite].UseAc3) {
buffer = (void*)samples; buffer = (void *)samples;
} else { } else {
// //
// Convert / resample input to hardware format // Convert / resample input to hardware format
@ -3897,6 +3898,7 @@ int64_t AudioGetClock(void)
void AudioSetVolume(int volume) void AudioSetVolume(int volume)
{ {
AudioVolume = volume; AudioVolume = volume;
AudioMute = !volume;
#ifdef USE_AUDIORING #ifdef USE_AUDIORING
// reduce loudness for stereo output // reduce loudness for stereo output
if (AudioStereoDescent && AudioRing[AudioRingRead].InChannels == 2 if (AudioStereoDescent && AudioRing[AudioRingRead].InChannels == 2