From 4e31e00b63117f36df6b8ed4850e7ad6264e3da7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 27 Jan 2009 00:47:07 +0100 Subject: implement pa_cvolume_scale() --- src/pulse/volume.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/pulse/volume.c') diff --git a/src/pulse/volume.c b/src/pulse/volume.c index 10a44daf..2c977845 100644 --- a/src/pulse/volume.c +++ b/src/pulse/volume.c @@ -500,3 +500,22 @@ pa_cvolume* pa_cvolume_set_balance(const pa_channel_map *map, pa_cvolume *v, flo return v; } + +pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) { + unsigned c; + pa_volume_t t = 0; + + pa_assert(c); + + for (c = 0; c < v->channels; c++) + if (v->values[c] > t) + t = v->values[c]; + + if (t <= 0) + return pa_cvolume_set(v, v->channels, max); + + for (c = 0; c < v->channels; c++) + v->values[c] = (pa_volume_t) (((uint64_t) v->values[c] * (uint64_t) max) / (uint64_t) t); + + return v; +} -- cgit