summaryrefslogtreecommitdiffstats
path: root/src/pulse/volume.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-05-13 15:20:45 +0200
committerLennart Poettering <lennart@poettering.net>2009-05-13 15:20:45 +0200
commit905c8004a0b77ad4303f64b1dc8b1b29e3795a63 (patch)
tree0efe2de08eb6cab82dbc0b5e6234a4f2bdfb913b /src/pulse/volume.c
parent28069ef0f74089ae18cefbe7e97d2b920d7ba0cc (diff)
volume: introduce pa_cvolume_{get|set}_position()
Diffstat (limited to 'src/pulse/volume.c')
-rw-r--r--src/pulse/volume.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 6848771e..a9622e78 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -685,3 +685,49 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
return v;
}
+
+pa_cvolume* pa_cvolume_set_position(
+ pa_cvolume *cv,
+ const pa_channel_map *map,
+ pa_channel_position_t t,
+ pa_volume_t v) {
+
+ unsigned c;
+ pa_bool_t good = FALSE;
+
+ pa_assert(cv);
+ pa_assert(map);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL);
+ pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL);
+
+ for (c = 0; c < map->channels; c++)
+ if (map->map[c] == t) {
+ cv->values[c] = v;
+ good = TRUE;
+ }
+
+ return good ? cv : NULL;
+}
+
+pa_volume_t pa_cvolume_get_position(
+ pa_cvolume *cv,
+ const pa_channel_map *map,
+ pa_channel_position_t t) {
+
+ unsigned c;
+ pa_volume_t v = PA_VOLUME_MUTED;
+
+ pa_assert(cv);
+ pa_assert(map);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), PA_VOLUME_MUTED);
+ pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, PA_VOLUME_MUTED);
+
+ for (c = 0; c < map->channels; c++)
+ if (map->map[c] == t)
+ if (cv->values[c] > v)
+ v = cv->values[c];
+
+ return v;
+}