From 086d0381f0395d753ec3c995bf89542a4ca74599 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 17 Jan 2012 07:58:57 +0100 Subject: [PATCH] ao_coreaudio: fix partial volume control If digital pass-through is used, this supported setting the volume (just mute, actually), but not getting the volume. This will probably lead to a stuck mute state in the mplayer frontend. Make the code respond to volume queries even if digital pass-through is used. --- libao2/ao_coreaudio.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c index 50e943e9ac..d1a93c85e2 100644 --- a/libao2/ao_coreaudio.c +++ b/libao2/ao_coreaudio.c @@ -169,7 +169,11 @@ Float32 vol; control_vol = (ao_control_vol_t*)arg; if (ao->b_digital) { // Digital output has no volume adjust. - return CONTROL_FALSE; + int vol = ao->b_muted ? 0 : 100; + *control_vol = (ao_control_vol_t) { + .left = vol, .right = vol, + }; + return CONTROL_TRUE; } err = AudioUnitGetParameter(ao->theOutputUnit, kHALOutputParam_Volume, kAudioUnitScope_Global, 0, &vol);