summaryrefslogtreecommitdiffstats
path: root/libao2/ao_pulse.c
diff options
context:
space:
mode:
Diffstat (limited to 'libao2/ao_pulse.c')
-rw-r--r--libao2/ao_pulse.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/libao2/ao_pulse.c b/libao2/ao_pulse.c
index 0b1f22ff8d..1d2ebc5281 100644
--- a/libao2/ao_pulse.c
+++ b/libao2/ao_pulse.c
@@ -32,8 +32,10 @@
#include "audio_out.h"
#include "input/input.h"
-#define PULSE_CLIENT_NAME "mplayer2"
+#define PULSE_CLIENT_NAME "mpv"
+#define VOL_PA2MP(v) ((v) * 100 / PA_VOLUME_UI_MAX)
+#define VOL_MP2PA(v) ((v) * PA_VOLUME_UI_MAX / 100)
struct priv {
// PulseAudio playback stream object
@@ -184,6 +186,8 @@ static int init(struct ao *ao, char *params)
struct priv *priv = talloc_zero(ao, struct priv);
ao->priv = priv;
+ ao->per_application_mixer = true;
+
if (params) {
devarg = strdup(params);
sink = strchr(devarg, ':');
@@ -471,10 +475,10 @@ static int control(struct ao *ao, enum aocontrol cmd, void *arg)
ao_control_vol_t *vol = arg;
if (priv->pi.volume.channels != 2)
vol->left = vol->right =
- pa_cvolume_avg(&priv->pi.volume) * 100 / PA_VOLUME_NORM;
+ VOL_PA2MP(pa_cvolume_avg(&priv->pi.volume));
else {
- vol->left = priv->pi.volume.values[0] * 100 / PA_VOLUME_NORM;
- vol->right = priv->pi.volume.values[1] * 100 / PA_VOLUME_NORM;
+ vol->left = VOL_PA2MP(priv->pi.volume.values[0]);
+ vol->right = VOL_PA2MP(priv->pi.volume.values[1]);
}
} else if (cmd == AOCONTROL_GET_MUTE) {
bool *mute = arg;
@@ -495,11 +499,10 @@ static int control(struct ao *ao, enum aocontrol cmd, void *arg)
pa_cvolume_reset(&volume, ao->channels);
if (volume.channels != 2)
- pa_cvolume_set(&volume, volume.channels,
- vol->left * PA_VOLUME_NORM / 100);
+ pa_cvolume_set(&volume, volume.channels, VOL_MP2PA(vol->left));
else {
- volume.values[0] = vol->left * PA_VOLUME_NORM / 100;
- volume.values[1] = vol->right * PA_VOLUME_NORM / 100;
+ volume.values[0] = VOL_MP2PA(vol->left);
+ volume.values[1] = VOL_MP2PA(vol->right);
}
o = pa_context_set_sink_input_volume(priv->context, stream_index,
&volume, NULL, NULL);