]> git.sesse.net Git - vlc/commitdiff
Use float for pf_volume_set volume
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 18 Jul 2011 19:58:13 +0000 (22:58 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 18 Jul 2011 19:58:55 +0000 (22:58 +0300)
include/vlc_aout.h
modules/audio_output/amem.c
modules/audio_output/pulse.c
modules/audio_output/waveout.c
src/audio_output/intf.c

index a11acfb714b08fc145c8297625c926aaaf1ff89b..5e8af527b5493eac97e665a1b799a212b5c94428 100644 (file)
@@ -184,7 +184,7 @@ typedef struct aout_output_t
     struct aout_sys_t *     p_sys;
     void (*pf_play)( aout_instance_t * );
     void (* pf_pause)( aout_instance_t *, bool, mtime_t );
-    int (* pf_volume_set )( aout_instance_t *, audio_volume_t, bool );
+    int (* pf_volume_set )( aout_instance_t *, float, bool );
     int                     i_nb_samples;
 } aout_output_t;
 
index b03d54c0edd7021096b96001c7e062bd67490d5e..60e6977abfe82be14857ad4911e0b9d0038588af 100644 (file)
@@ -25,7 +25,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_aout.h>
-#include <vlc_aout_intf.h>
 
 static int Open (vlc_object_t *);
 static void Close (vlc_object_t *);
@@ -73,12 +72,11 @@ static void Play (aout_instance_t *aout)
     }
 }
 
-static int VolumeSet (aout_instance_t *aout, audio_volume_t ivol, bool mute)
+static int VolumeSet (aout_instance_t *aout, float vol, bool mute)
 {
     aout_sys_t *sys = aout->output.p_sys;
-    float fvol = ivol / (float)AOUT_VOLUME_DEFAULT;
 
-    return sys->set_volume (sys->opaque, fvol, mute) ? -1 : 0;
+    return sys->set_volume (sys->opaque, vol, mute) ? -1 : 0;
 }
 
 typedef int (*vlc_audio_format_cb) (void **, char *, unsigned *, unsigned *);
index 66df05211ec2184be00d2cc1ed1b6a24cb7e02bc..13494cbdfffd3e75d681c405835d74a631dd41ac 100644 (file)
@@ -28,7 +28,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_aout.h>
-#include <vlc_aout_intf.h>
 #include <vlc_cpu.h>
 
 #include <pulse/pulseaudio.h>
@@ -317,13 +316,13 @@ static void Pause(aout_instance_t *aout, bool b_paused, mtime_t i_date)
     (void) i_date;
 }
 
-static int VolumeSet(aout_instance_t *aout, audio_volume_t vol, bool mute)
+static int VolumeSet(aout_instance_t *aout, float vol, bool mute)
 {
     aout_sys_t *sys = aout->output.p_sys;
     pa_operation *op;
 
     uint32_t idx = pa_stream_get_index(sys->stream);
-    pa_volume_t volume = pa_sw_volume_from_linear(vol / (float)AOUT_VOLUME_DEFAULT);
+    pa_volume_t volume = pa_sw_volume_from_linear(vol);
     pa_cvolume cvolume;
 
     /* TODO: do not ruin the channel balance (if set outside VLC) */
index 4ec2c8b6f2031c1fbeb2b84bee195f2cd7e739f1..4e26e975b86f74b9737f591af1f7f3cb454dcb9d 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_aout.h>
-#include <vlc_aout_intf.h>
 #include <vlc_charset.h>                        /* FromLocaleDup, LocaleFree */
 #include <vlc_atomic.h>
 
@@ -63,7 +62,7 @@ static int PlayWaveOut   ( aout_instance_t *, HWAVEOUT, WAVEHDR *,
 static void CALLBACK WaveOutCallback ( HWAVEOUT, UINT, DWORD, DWORD, DWORD );
 static void* WaveOutThread( void * );
 
-static int VolumeSet( aout_instance_t *, audio_volume_t, bool );
+static int VolumeSet( aout_instance_t *, float, bool );
 
 static int WaveOutClearDoneBuffers(aout_sys_t *p_sys);
 
@@ -999,14 +998,13 @@ static void* WaveOutThread( void *data )
     return NULL;
 }
 
-static int VolumeSet( aout_instance_t * p_aout, audio_volume_t i_volume,
-                      bool mute )
+static int VolumeSet( aout_instance_t * p_aout, float volume, bool mute )
 {
     if( mute )
-        i_volume = AOUT_VOLUME_MIN;
+        volume = 0.;
 
-    unsigned long i_waveout_vol = i_volume * 0xFFFF * 2 / AOUT_VOLUME_MAX;
-    i_waveout_vol |= (i_waveout_vol << 16);
+    unsigned long i_waveout_vol = volume * 0x7FFF;
+    i_waveout_vol = (i_waveout_vol << 16) | (i_waveout_vol & 0xFFFF);
 
 #ifdef UNDER_CE
     waveOutSetVolume( 0, i_waveout_vol );
index c188f71cb274c43dbdc761039a5a66693cd5fa3b..590c2e8240469ddd6bb67f5fd9e023447878da60 100644 (file)
@@ -86,10 +86,12 @@ static int commitVolume (vlc_object_t *obj, aout_instance_t *aout,
 
     if (aout != NULL)
     {
+        float vol = volume / (float)AOUT_VOLUME_DEFAULT;
+
         aout_lock (aout);
 #warning FIXME: wrong test. Need to check that aout_output is ready.
         if (aout->p_mixer != NULL)
-            ret = aout->output.pf_volume_set (aout, volume, mute);
+            ret = aout->output.pf_volume_set (aout, vol, mute);
         aout_unlock (aout);
 
         if (ret == 0)
@@ -241,11 +243,9 @@ int aout_SetMute (vlc_object_t *obj, audio_volume_t *volp, bool mute)
  * The next functions are not supposed to be called by the interface, but
  * are placeholders for software-only scaling.
  */
-static int aout_VolumeSoftSet (aout_instance_t *aout, audio_volume_t volume,
-                               bool mute)
+static int aout_VolumeSoftSet (aout_instance_t *aout, float volume, bool mute)
 {
-    float f = mute ? 0. : (volume / (float)AOUT_VOLUME_DEFAULT);
-    aout->mixer_multiplier = f;
+    aout->mixer_multiplier = mute ? 0. : volume;
     return 0;
 }
 
@@ -264,8 +264,7 @@ void aout_VolumeSoftInit (aout_instance_t *aout)
  * The next functions are not supposed to be called by the interface, but
  * are placeholders for unsupported scaling.
  */
-static int aout_VolumeNoneSet (aout_instance_t *aout, audio_volume_t volume,
-                               bool mute)
+static int aout_VolumeNoneSet (aout_instance_t *aout, float volume, bool mute)
 {
     (void)aout; (void)volume; (void)mute;
     return -1;