vlc/vlc-2.0 | branch: master | Jon Stacey <[email protected]> | Mon Mar 5 00:54:35 2012 -0600| [b55752f36696ef03dcda026c42274749cc305807] | committer: Felix Paul Kühne
coreaudio_lag_fix.patch Signed-off-by: Felix Paul Kühne <[email protected]> (cherry picked from commit 93a0d5ab5b51d369c20f933f379ad4934daeb7bf) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=b55752f36696ef03dcda026c42274749cc305807 --- modules/audio_output/auhal.c | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c index 0e2c4b2..f7b4eb6 100644 --- a/modules/audio_output/auhal.c +++ b/modules/audio_output/auhal.c @@ -119,6 +119,8 @@ static OSStatus StreamListener ( AudioObjectID, UInt32, const AudioObje static int AudioDeviceCallback ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ); +static int VolumeSet ( audio_output_t *, float, bool ); + /***************************************************************************** * Module descriptor @@ -557,7 +559,7 @@ static int OpenAnalog( audio_output_t *p_aout ) /* Do the last VLC aout setups */ aout_FormatPrepare( &p_aout->format ); aout_PacketInit( p_aout, &p_sys->packet, FRAMESIZE ); - aout_VolumeSoftInit( p_aout ); + aout_VolumeHardInit (p_aout, VolumeSet); /* set the IOproc callback */ input.inputProc = (AURenderCallback) RenderCallbackAnalog; @@ -1448,3 +1450,27 @@ static int AudioDeviceCallback( vlc_object_t *p_this, const char *psz_variable, return aout_ChannelsRestart( p_this, psz_variable, old_val, new_val, param ); } + +/***************************************************************************** + * VolumeSet: Implements pf_volume_set(). Update the CoreAudio AU volume immediately. + *****************************************************************************/ +static int VolumeSet( audio_output_t * p_aout, float volume, bool mute ) +{ + struct aout_sys_t *p_sys = p_aout->sys; + OSStatus ostatus; + + if( mute ) + volume = 0.0; + else + volume = volume * volume * volume; // cubic mapping from output.c + + /* Set volume for output unit */ + ostatus = AudioUnitSetParameter( p_sys->au_unit, + kHALOutputParam_Volume, + kAudioUnitScope_Global, + 0, + volume, + 0 ); + + return ostatus; +} _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
