vlc/vlc-2.0 | branch: master | Jean-Baptiste Kempf <[email protected]> | Wed Jun 27 02:39:33 2012 +0200| [40d9fefb620525ed2b96043d4dac1767cd1d6523] | committer: Jean-Baptiste Kempf
Revert "DirectSound: apply volume attenuation with DirectSound" This reverts commit 999a7af728544436952c0fa6f99ae2c3249cca44. > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=40d9fefb620525ed2b96043d4dac1767cd1d6523 --- modules/audio_output/directx.c | 43 ++-------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/modules/audio_output/directx.c b/modules/audio_output/directx.c index df3f04c..6945ce8 100644 --- a/modules/audio_output/directx.c +++ b/modules/audio_output/directx.c @@ -29,8 +29,6 @@ # include "config.h" #endif -#include <math.h> - #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_aout.h> @@ -75,7 +73,6 @@ struct aout_sys_t LPDIRECTSOUNDBUFFER p_dsbuffer; /* the sound buffer we use (direct sound * takes care of mixing all the * secondary buffers into the primary) */ - LONG volume; notification_thread_t notif; /* DirectSoundThread id */ @@ -96,7 +93,6 @@ struct aout_sys_t static int OpenAudio ( vlc_object_t * ); static void CloseAudio ( vlc_object_t * ); static void Play ( audio_output_t *, block_t * ); -static int VolumeSet ( audio_output_t *, float, bool ); /* local functions */ static void Probe ( audio_output_t * ); @@ -232,7 +228,6 @@ static int OpenAudio( vlc_object_t *p_this ) } aout_PacketInit( p_aout, &p_aout->sys->packet, A52_FRAME_NB ); - p_aout->sys->volume = -1; aout_VolumeNoneInit( p_aout ); } else @@ -287,7 +282,7 @@ static int OpenAudio( vlc_object_t *p_this ) /* Calculate the frame size in bytes */ aout_FormatPrepare( &p_aout->format ); aout_PacketInit( p_aout, &p_aout->sys->packet, FRAME_SIZE ); - aout_VolumeHardInit( p_aout, VolumeSet, true ); + aout_VolumeSoftInit( p_aout ); } /* Now we need to setup our DirectSound play notification structure */ @@ -575,34 +570,6 @@ static void Play( audio_output_t *p_aout, block_t *p_buffer ) } /***************************************************************************** - * VolumeSet: change audio device volume - *****************************************************************************/ -static int VolumeSet( audio_output_t *p_aout, float vol, bool mute ) -{ - aout_sys_t *sys = p_aout->sys; - - /* Convert UI volume to linear factor (cube) */ - vol = vol * vol * vol; - - /* millibels from linear amplification */ - LONG mb = lroundf(2000.f * log10f(vol)); - - /* Clamp to allowed DirectSound range */ - static_assert( DSBVOLUME_MIN < DSBVOLUME_MAX, "DSBVOLUME_* confused" ); - if( mb >= DSBVOLUME_MAX ) - mb = DSBVOLUME_MAX; - if( mb <= DSBVOLUME_MIN ) - mb = DSBVOLUME_MIN; - - InterlockedExchange(&sys->volume, mute ? DSBVOLUME_MIN : mb); - - /* Convert back to UI volume */ - vol = cbrtf(powf(10.f, ((float)mb) / -2000.f)); - aout_VolumeHardSet( p_aout, vol, mute ); - return 0; -} - -/***************************************************************************** * CloseAudio: close the audio device *****************************************************************************/ static void CloseAudio( vlc_object_t *p_this ) @@ -825,8 +792,7 @@ static int CreateDSBuffer( audio_output_t *p_aout, int i_format, memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); dsbdesc.dwSize = sizeof(DSBUFFERDESC); dsbdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2/* Better position accuracy */ - | DSBCAPS_GLOBALFOCUS /* Allows background playing */ - | DSBCAPS_CTRLVOLUME; /* Allows volume control */ + | DSBCAPS_GLOBALFOCUS; /* Allows background playing */ /* Only use the new WAVE_FORMAT_EXTENSIBLE format for multichannel audio */ if( i_nb_channels <= 2 ) @@ -1065,11 +1031,6 @@ static void* DirectSoundThread( void *data ) mtime_t mtime = mdate(); int i; - /* Update volume if required */ - LONG volume = InterlockedExchange( &p_aout->sys->volume, -1 ); - if( unlikely(volume != -1) ) - IDirectSoundBuffer_SetVolume( p_aout->sys->p_dsbuffer, volume ); - /* * Fill in as much audio data as we can in our circular buffer */ _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
