diff options
Diffstat (limited to 'src/pcm_volume.c')
-rw-r--r-- | src/pcm_volume.c | 15 |
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 */ |