]> code.delx.au - pulseaudio/commitdiff
volume: introduce pa_cvolume_{inc|dec}()
authorLennart Poettering <lennart@poettering.net>
Wed, 19 Aug 2009 00:32:36 +0000 (02:32 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 19 Aug 2009 00:32:36 +0000 (02:32 +0200)
src/map-file
src/pulse/volume.c
src/pulse/volume.h

index d6122a4ab9585e7ac9e0b56d27dd6fe13c7cb086..95b2803abf1c8aee6c3fb6e38324f7e30607bba1 100644 (file)
@@ -123,10 +123,12 @@ pa_cvolume_avg_mask;
 pa_cvolume_channels_equal_to;
 pa_cvolume_compatible;
 pa_cvolume_compatible_with_channel_map;
+pa_cvolume_dec;
 pa_cvolume_equal;
 pa_cvolume_get_balance;
 pa_cvolume_get_fade;
 pa_cvolume_get_position;
+pa_cvolume_inc;
 pa_cvolume_init;
 pa_cvolume_max;
 pa_cvolume_max_mask;
index 3dcf3157f61ec6cd4919fc1aeb777fa717159129..234c3f72862d5f6aad754eacfe5aad3a8b2ca8bc 100644 (file)
@@ -876,3 +876,37 @@ pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvo
 
     return dest;
 }
+
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {
+    pa_volume_t m;
+
+    pa_assert(v);
+
+    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+
+    m = pa_cvolume_max(v);
+
+    if (m >= PA_VOLUME_MAX - inc)
+        m = PA_VOLUME_MAX;
+    else
+        m += inc;
+
+    return pa_cvolume_scale(v, m);
+}
+
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
+    pa_volume_t m;
+
+    pa_assert(v);
+
+    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+
+    m = pa_cvolume_max(v);
+
+    if (m <= PA_VOLUME_MUTED + dec)
+        m = PA_VOLUME_MUTED;
+    else
+        m -= dec;
+
+    return pa_cvolume_scale(v, m);
+}
index 349ca49f411c9c1440e05b36d59a6a93d0cfe4b7..543b0af161ad0babf1dc72a61455e38babad8ec4 100644 (file)
@@ -345,6 +345,14 @@ pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, p
  * 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);
 
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc);
+
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec);
+
 PA_C_DECL_END
 
 #endif