[vlc-commits] Revert "DirectSound: apply volume attenuation with DirectSound"

Jean-Baptiste Kempf git at videolan.org
Wed Jun 27 00:40:07 CEST 2012


vlc/vlc-2.0 | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | 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
          */



More information about the vlc-commits mailing list