summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/sink-input.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-03-20 13:50:26 +0100
committerLennart Poettering <lennart@poettering.net>2009-03-20 13:50:26 +0100
commita998038ee26f86054d0e314fcfe589169ce97ea7 (patch)
treed304171f5cb96630831d90decf6effc9aa435f48 /src/pulsecore/sink-input.c
parentbd3154a861d7ed0c68c687dcaa214a181ffb9f9d (diff)
introduce pa_sink_input_get_relative_volume()
Diffstat (limited to 'src/pulsecore/sink-input.c')
-rw-r--r--src/pulsecore/sink-input.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 53e727bb..ae2c6f54 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -924,6 +924,28 @@ const pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i) {
}
/* Called from main context */
+pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) {
+ pa_sink_input_assert_ref(i);
+ pa_assert(v);
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+
+ *v = i->virtual_volume;
+
+ /* This always returns a relative volume, even in flat volume mode */
+
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
+ pa_cvolume sv;
+
+ sv = *pa_sink_get_volume(i->sink, FALSE);
+
+ pa_sw_cvolume_divide(v, v,
+ pa_cvolume_remap(&sv, &i->sink->channel_map, &i->channel_map));
+ }
+
+ return v;
+}
+
+/* Called from main context */
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
pa_assert(i);
pa_sink_input_assert_ref(i);