vlc | branch: master | David Fuhrmann <[email protected]> | Thu Apr 25 20:32:25 2013 +0200| [673a01e1dd2333bfda50bc809584b5768aafe96a] | committer: David Fuhrmann
auhal: fix handling and reporting of volume and mute Especially in the case that volume-save was set to false... This adapts to behaviour of the other aout modules. fixes #8501 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=673a01e1dd2333bfda50bc809584b5768aafe96a --- modules/audio_output/auhal.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c index 2b63590..d4964ed 100644 --- a/modules/audio_output/auhal.c +++ b/modules/audio_output/auhal.c @@ -112,6 +112,9 @@ struct aout_sys_t CFArrayRef device_list; + float f_volume; + bool b_mute; + vlc_mutex_t lock; vlc_cond_t cond; }; @@ -198,8 +201,10 @@ static int Open(vlc_object_t *obj) RebuildDeviceList(p_aout); /* remember the volume */ - aout_VolumeReport(p_aout, var_InheritInteger(p_aout, "auhal-volume") / (float)AOUT_VOLUME_DEFAULT); - MuteSet(p_aout, var_InheritBool(p_aout, "mute")); + p_sys->f_volume = var_InheritInteger(p_aout, "auhal-volume") / (float)AOUT_VOLUME_DEFAULT; + aout_VolumeReport(p_aout, p_sys->f_volume); + p_sys->b_mute = var_InheritBool(p_aout, "mute"); + aout_MuteReport(p_aout, p_sys->b_mute); SwitchAudioDevice(p_aout, config_GetPsz(p_aout, "auhal-audio-device")); @@ -690,14 +695,8 @@ static int StartAnalog(audio_output_t *p_aout, audio_sample_format_t *fmt) p_sys->b_got_first_sample = false; /* Set volume for output unit */ - float volume = var_InheritInteger(p_aout, "auhal-volume") / (float)AOUT_VOLUME_DEFAULT; - volume = volume * volume * volume; - verify_noerr(AudioUnitSetParameter(p_sys->au_unit, - kHALOutputParam_Volume, - kAudioUnitScope_Global, - 0, - volume, - 0)); + VolumeSet(p_aout, p_sys->f_volume); + MuteSet(p_aout, p_sys->b_mute); return true; } @@ -1139,6 +1138,7 @@ static int VolumeSet(audio_output_t * p_aout, float volume) if(p_sys->b_digital) return VLC_EGENERIC; + p_sys->f_volume = volume; aout_VolumeReport(p_aout, volume); /* Set volume for output unit */ @@ -1163,12 +1163,12 @@ static int MuteSet(audio_output_t * p_aout, bool mute) if(p_sys->b_digital) return VLC_EGENERIC; + p_sys->b_mute = mute; aout_MuteReport(p_aout, mute); float volume = .0; - if (!mute) - volume = var_InheritInteger(p_aout, "auhal-volume") / (float)AOUT_VOLUME_DEFAULT; + volume = p_sys->f_volume; ostatus = AudioUnitSetParameter(p_sys->au_unit, kHALOutputParam_Volume, _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
