From 5045f8558eaa5db1ebc407556ba274775f9c00c7 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Tue, 15 Sep 2015 10:08:24 -0700 Subject: [PATCH 1/2] Fix incorrect scale factor for converting int16_t to/from float --- libraries/audio/src/AudioFilterBank.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/AudioFilterBank.h b/libraries/audio/src/AudioFilterBank.h index 4ea5a3568a..b99e1ca774 100644 --- a/libraries/audio/src/AudioFilterBank.h +++ b/libraries/audio/src/AudioFilterBank.h @@ -125,7 +125,7 @@ public: return; } - const int scale = (2 << ((8 * sizeof(int16_t)) - 1)); + const int scale = (1 << ((8 * sizeof(int16_t)) - 1)); // de-interleave and convert int16_t to float32 (normalized to -1. ... 1.) for (uint32_t i = 0; i < frameCount; ++i) { From ffe3fcf4cea8fa88bc172a64ce5b219ae09de774 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Tue, 15 Sep 2015 10:18:53 -0700 Subject: [PATCH 2/2] Replace repeated division with multiply by inverse --- libraries/audio/src/AudioFilterBank.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/AudioFilterBank.h b/libraries/audio/src/AudioFilterBank.h index b99e1ca774..64ea5396e1 100644 --- a/libraries/audio/src/AudioFilterBank.h +++ b/libraries/audio/src/AudioFilterBank.h @@ -130,7 +130,7 @@ public: // de-interleave and convert int16_t to float32 (normalized to -1. ... 1.) for (uint32_t i = 0; i < frameCount; ++i) { for (uint32_t j = 0; j < _channelCount; ++j) { - _buffer[j][i] = ((float)(*in++)) / scale; + _buffer[j][i] = ((float)(*in++)) * (1.0f / scale); } }