summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-08-17 03:40:36 +0200
committerLennart Poettering <lennart@poettering.net>2009-08-17 03:40:36 +0200
commit82082148821d5ebe05fea12fd57d68b31740e04b (patch)
tree41ce317387ad06463087e3c36ce7a497d8298153 /src
parent01e4b61a910afdd21f860fadbe98075735c2bf51 (diff)
volume: add pa_cvolume_merge() call
Diffstat (limited to 'src')
-rw-r--r--src/map-file1
-rw-r--r--src/pulse/volume.c18
-rw-r--r--src/pulse/volume.h5
3 files changed, 24 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file
index c6c8acca..4f20c48f 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 c23f360b..e816d679 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 05b7ebb4..14692b8d 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