diff options
author | wm4 <wm4@mplayer2.org> | 2012-01-17 07:58:57 +0100 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2012-04-11 03:56:30 +0300 |
commit | 086d0381f0395d753ec3c995bf89542a4ca74599 (patch) | |
tree | a67d0b9fbaa5b78cbde73a88255ea041d4921a65 | |
parent | fc8db0ca8890661ba049e3e9882163a64f54b8d7 (diff) | |
download | mpv-086d0381f0395d753ec3c995bf89542a4ca74599.tar.bz2 mpv-086d0381f0395d753ec3c995bf89542a4ca74599.tar.xz |
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.
-rw-r--r-- | libao2/ao_coreaudio.c | 6 |
1 files changed, 5 insertions, 1 deletions
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); |