diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-08-17 03:40:36 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-08-17 03:40:36 +0200 |
commit | 82082148821d5ebe05fea12fd57d68b31740e04b (patch) | |
tree | 41ce317387ad06463087e3c36ce7a497d8298153 | |
parent | 01e4b61a910afdd21f860fadbe98075735c2bf51 (diff) |
volume: add pa_cvolume_merge() call
-rw-r--r-- | src/map-file | 1 | ||||
-rw-r--r-- | src/pulse/volume.c | 18 | ||||
-rw-r--r-- | src/pulse/volume.h | 5 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file index c6c8acca2..4f20c48f4 100644 --- a/src/map-file +++ b/src/map-file @@ -130,6 +130,7 @@ pa_cvolume_get_position; pa_cvolume_init; pa_cvolume_max; pa_cvolume_max_mask; +pa_cvolume_merge; pa_cvolume_remap; pa_cvolume_scale; pa_cvolume_scale_mask; diff --git a/src/pulse/volume.c b/src/pulse/volume.c index c23f360b2..e816d679c 100644 --- a/src/pulse/volume.c +++ b/src/pulse/volume.c @@ -815,3 +815,21 @@ pa_volume_t pa_cvolume_get_position( return v; } + +pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) { + unsigned i; + + pa_assert(dest); + pa_assert(a); + pa_assert(b); + + pa_return_val_if_fail(pa_cvolume_valid(a), NULL); + pa_return_val_if_fail(pa_cvolume_valid(b), NULL); + + for (i = 0; i < a->channels && i < b->channels; i++) + dest->values[i] = PA_MAX(a->values[i], b->values[i]); + + dest->channels = (uint8_t) i; + + return dest; +} diff --git a/src/pulse/volume.h b/src/pulse/volume.h index 05b7ebb40..14692b8d7 100644 --- a/src/pulse/volume.h +++ b/src/pulse/volume.h @@ -326,6 +326,11 @@ pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, p * position by calling pa_channel_map_has_position(). \since 0.9.16 */ pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) PA_GCC_PURE; +/** This goes through all channels in a and b and sets the + * corresponding channel in dest to the greater volume of both. a, b + * and dest may point to the same structure. \since 0.9.16 */ +pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b); + PA_C_DECL_END #endif |