aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcm_volume.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcm_volume.c')
-rw-r--r--src/pcm_volume.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/pcm_volume.c b/src/pcm_volume.c
index f732060b2..de4bda6c9 100644
--- a/src/pcm_volume.c
+++ b/src/pcm_volume.c
@@ -132,6 +132,16 @@ pcm_volume_change_32(int32_t *buffer, const int32_t *end, int volume)
}
}
+static void
+pcm_volume_change_float(float *buffer, const float *end, float volume)
+{
+ while (buffer < end) {
+ float sample = *buffer;
+ sample *= volume;
+ *buffer++ = sample;
+ }
+}
+
bool
pcm_volume(void *buffer, size_t length,
enum sample_format format,
@@ -169,8 +179,9 @@ pcm_volume(void *buffer, size_t length,
return true;
case SAMPLE_FORMAT_FLOAT:
- /* XXX */
- return false;
+ pcm_volume_change_float(buffer, end,
+ pcm_volume_to_float(volume));
+ return true;
}
/* unreachable */