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;
#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 *);
}
}
-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 *);
#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>
(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) */
#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>
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);
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 );
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)
* 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;
}
* 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;