diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-08-18 23:19:22 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-08-18 23:19:22 +0100 |
| commit | 75518e16a2c35400ac641975c74ff72b404cef69 (patch) | |
| tree | c9baedfcbc728aacb5d748faa91f1c4ef3c58239 /src/lib/audio_buffers.cc | |
| parent | 88ea433b3fa1c09b94ffc94b48e164a40ede9cfa (diff) | |
Try to make audio gain work again.
Diffstat (limited to 'src/lib/audio_buffers.cc')
| -rw-r--r-- | src/lib/audio_buffers.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/audio_buffers.cc b/src/lib/audio_buffers.cc index a15288a3b..e80142b8e 100644 --- a/src/lib/audio_buffers.cc +++ b/src/lib/audio_buffers.cc @@ -19,6 +19,7 @@ #include <cassert> #include <cstring> +#include <cmath> #include <stdexcept> #include "audio_buffers.h" @@ -260,3 +261,15 @@ AudioBuffers::accumulate_frames (AudioBuffers const * from, int read_offset, int } } +/** @param dB gain in dB */ +void +AudioBuffers::apply_gain (float dB) +{ + float const linear = pow (10, dB / 20); + + for (int i = 0; i < _channels; ++i) { + for (int j = 0; j < _frames; ++j) { + _data[i][j] *= linear; + } + } +} |
