summaryrefslogtreecommitdiff
path: root/src/lib/gain.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-11-14 20:04:15 +0000
committerCarl Hetherington <cth@carlh.net>2012-11-14 20:04:15 +0000
commit05c37b9bb09f7bfa4c2ec8ea6b3fa4a83d0fec20 (patch)
treefa7a3e408c2eb66b070864694b6af7e0787e508f /src/lib/gain.cc
parent5161626c3c28ba528511a8b211286a5e81a0f02a (diff)
Tests pass again.
Diffstat (limited to 'src/lib/gain.cc')
-rw-r--r--src/lib/gain.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/lib/gain.cc b/src/lib/gain.cc
new file mode 100644
index 000000000..80d3b7c72
--- /dev/null
+++ b/src/lib/gain.cc
@@ -0,0 +1,26 @@
+#include "gain.h"
+
+using boost::shared_ptr;
+
+/** @param gain gain in dB */
+Gain::Gain (Log* log, float gain)
+ : AudioProcessor (log)
+ , _gain (gain)
+{
+
+}
+
+void
+Gain::process_audio (shared_ptr<AudioBuffers> b)
+{
+ if (_gain != 0) {
+ float const linear_gain = pow (10, _gain / 20);
+ for (int i = 0; i < b->channels(); ++i) {
+ for (int j = 0; j < b->frames(); ++j) {
+ b->data(i)[j] *= linear_gain;
+ }
+ }
+ }
+
+ Audio (b);
+}