Commit 0e3ef9ca authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Use float for pf_volume_set volume

parent ce90ea7f
...@@ -184,7 +184,7 @@ typedef struct aout_output_t ...@@ -184,7 +184,7 @@ typedef struct aout_output_t
struct aout_sys_t * p_sys; struct aout_sys_t * p_sys;
void (*pf_play)( aout_instance_t * ); void (*pf_play)( aout_instance_t * );
void (* pf_pause)( aout_instance_t *, bool, mtime_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; int i_nb_samples;
} aout_output_t; } aout_output_t;
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_aout.h> #include <vlc_aout.h>
#include <vlc_aout_intf.h>
static int Open (vlc_object_t *); static int Open (vlc_object_t *);
static void Close (vlc_object_t *); static void Close (vlc_object_t *);
...@@ -73,12 +72,11 @@ static void Play (aout_instance_t *aout) ...@@ -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; 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 *); typedef int (*vlc_audio_format_cb) (void **, char *, unsigned *, unsigned *);
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_aout.h> #include <vlc_aout.h>
#include <vlc_aout_intf.h>
#include <vlc_cpu.h> #include <vlc_cpu.h>
#include <pulse/pulseaudio.h> #include <pulse/pulseaudio.h>
...@@ -317,13 +316,13 @@ static void Pause(aout_instance_t *aout, bool b_paused, mtime_t i_date) ...@@ -317,13 +316,13 @@ static void Pause(aout_instance_t *aout, bool b_paused, mtime_t i_date)
(void) 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; aout_sys_t *sys = aout->output.p_sys;
pa_operation *op; pa_operation *op;
uint32_t idx = pa_stream_get_index(sys->stream); 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; pa_cvolume cvolume;
/* TODO: do not ruin the channel balance (if set outside VLC) */ /* TODO: do not ruin the channel balance (if set outside VLC) */
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_aout.h> #include <vlc_aout.h>
#include <vlc_aout_intf.h>
#include <vlc_charset.h> /* FromLocaleDup, LocaleFree */ #include <vlc_charset.h> /* FromLocaleDup, LocaleFree */
#include <vlc_atomic.h> #include <vlc_atomic.h>
...@@ -63,7 +62,7 @@ static int PlayWaveOut ( aout_instance_t *, HWAVEOUT, WAVEHDR *, ...@@ -63,7 +62,7 @@ static int PlayWaveOut ( aout_instance_t *, HWAVEOUT, WAVEHDR *,
static void CALLBACK WaveOutCallback ( HWAVEOUT, UINT, DWORD, DWORD, DWORD ); static void CALLBACK WaveOutCallback ( HWAVEOUT, UINT, DWORD, DWORD, DWORD );
static void* WaveOutThread( void * ); 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); static int WaveOutClearDoneBuffers(aout_sys_t *p_sys);
...@@ -999,14 +998,13 @@ static void* WaveOutThread( void *data ) ...@@ -999,14 +998,13 @@ static void* WaveOutThread( void *data )
return NULL; return NULL;
} }
static int VolumeSet( aout_instance_t * p_aout, audio_volume_t i_volume, static int VolumeSet( aout_instance_t * p_aout, float volume, bool mute )
bool mute )
{ {
if( mute ) if( mute )
i_volume = AOUT_VOLUME_MIN; volume = 0.;
unsigned long i_waveout_vol = i_volume * 0xFFFF * 2 / AOUT_VOLUME_MAX; unsigned long i_waveout_vol = volume * 0x7FFF;
i_waveout_vol |= (i_waveout_vol << 16); i_waveout_vol = (i_waveout_vol << 16) | (i_waveout_vol & 0xFFFF);
#ifdef UNDER_CE #ifdef UNDER_CE
waveOutSetVolume( 0, i_waveout_vol ); waveOutSetVolume( 0, i_waveout_vol );
......
...@@ -86,10 +86,12 @@ static int commitVolume (vlc_object_t *obj, aout_instance_t *aout, ...@@ -86,10 +86,12 @@ static int commitVolume (vlc_object_t *obj, aout_instance_t *aout,
if (aout != NULL) if (aout != NULL)
{ {
float vol = volume / (float)AOUT_VOLUME_DEFAULT;
aout_lock (aout); aout_lock (aout);
#warning FIXME: wrong test. Need to check that aout_output is ready. #warning FIXME: wrong test. Need to check that aout_output is ready.
if (aout->p_mixer != NULL) 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); aout_unlock (aout);
if (ret == 0) if (ret == 0)
...@@ -241,11 +243,9 @@ int aout_SetMute (vlc_object_t *obj, audio_volume_t *volp, bool mute) ...@@ -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 * The next functions are not supposed to be called by the interface, but
* are placeholders for software-only scaling. * are placeholders for software-only scaling.
*/ */
static int aout_VolumeSoftSet (aout_instance_t *aout, audio_volume_t volume, static int aout_VolumeSoftSet (aout_instance_t *aout, float volume, bool mute)
bool mute)
{ {
float f = mute ? 0. : (volume / (float)AOUT_VOLUME_DEFAULT); aout->mixer_multiplier = mute ? 0. : volume;
aout->mixer_multiplier = f;
return 0; return 0;
} }
...@@ -264,8 +264,7 @@ void aout_VolumeSoftInit (aout_instance_t *aout) ...@@ -264,8 +264,7 @@ void aout_VolumeSoftInit (aout_instance_t *aout)
* The next functions are not supposed to be called by the interface, but * The next functions are not supposed to be called by the interface, but
* are placeholders for unsupported scaling. * are placeholders for unsupported scaling.
*/ */
static int aout_VolumeNoneSet (aout_instance_t *aout, audio_volume_t volume, static int aout_VolumeNoneSet (aout_instance_t *aout, float volume, bool mute)
bool mute)
{ {
(void)aout; (void)volume; (void)mute; (void)aout; (void)volume; (void)mute;
return -1; return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment