]> code.delx.au - pulseaudio/commitdiff
volume: add pa_cvolume_merge() call
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Aug 2009 01:40:36 +0000 (03:40 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Aug 2009 01:40:36 +0000 (03:40 +0200)
src/map-file
src/pulse/volume.c
src/pulse/volume.h

index c6c8acca2fc6a4515b35a9c070dbad1ae845fa1d..4f20c48f4b4ab4aba9d4f37497c57c6a68791b1a 100644 (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;
index c23f360b2e2df651e57c4f8f502d240105998ca9..e816d679cfe7fed9a19e7cf65bdbd08cf03eb593 100644 (file)
@@ -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;
+}
index 05b7ebb404678a05fdaa18d2f8681e4b1e5e84ce..14692b8d7d7f9043778d61a3d955d84dab1e9498 100644 (file)
@@ -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