diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-06 16:43:52 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-06 16:43:52 +0000 |
| commit | 85783f27f40ff6b60bf8e3348dc566e89323e8d0 (patch) | |
| tree | 0847e18cef0130dd026df38f721b13167ec21134 /src/lib | |
| parent | f9819a16d40403af3da08263ee6bb3b5a99d650f (diff) | |
Add gain variable to accumulate_channel.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/audio_buffers.cc | 8 | ||||
| -rw-r--r-- | src/lib/audio_buffers.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/audio_buffers.cc b/src/lib/audio_buffers.cc index e80142b8e..a1c9b81ac 100644 --- a/src/lib/audio_buffers.cc +++ b/src/lib/audio_buffers.cc @@ -210,9 +210,11 @@ AudioBuffers::move (int from, int to, int frames) } } -/** Add data from from `from', `from_channel' to our channel `to_channel' */ +/** Add data from from `from', `from_channel' to our channel `to_channel'. + * @param gain Linear gain to apply to the data before it is added. + */ void -AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, int to_channel) +AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, int to_channel, float gain) { int const N = frames (); assert (from->frames() == N); @@ -222,7 +224,7 @@ AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, i float* d = _data[to_channel]; for (int i = 0; i < N; ++i) { - *d++ += *s++; + *d++ += (*s++) * gain; } } diff --git a/src/lib/audio_buffers.h b/src/lib/audio_buffers.h index 75bc686f8..c9030dbfa 100644 --- a/src/lib/audio_buffers.h +++ b/src/lib/audio_buffers.h @@ -61,7 +61,7 @@ public: void copy_from (AudioBuffers const * from, int frames_to_copy, int read_offset, int write_offset); void move (int from, int to, int frames); - void accumulate_channel (AudioBuffers const *, int, int); + void accumulate_channel (AudioBuffers const *, int, int, float gain = 1); void accumulate_frames (AudioBuffers const *, int read_offset, int write_offset, int frames); private: |
