Calculate makeup gain to maintain target level.
183 {
184
185 float inputAvg = 0.0f;
186 float outputAvg = 0.0f;
187
188 for (size i = 0; i <
mConfig.numBands; ++i) {
189 inputAvg += inputBins[i];
190 outputAvg += outputBins[i];
191 }
192
193 inputAvg /=
static_cast<float>(
mConfig.numBands);
194 outputAvg /=
static_cast<float>(
mConfig.numBands);
195
196
197 if (outputAvg < 0.001f) {
198 return 1.0f;
199 }
200
201
202
203 float targetLevel = inputAvg *
mConfig.makeupGainTarget;
204 float makeupGain = targetLevel / outputAvg;
205
206
207 if (makeupGain < 0.1f) {
208 makeupGain = 0.1f;
209 }
210 if (makeupGain > 10.0f) {
211 makeupGain = 10.0f;
212 }
213
214 return makeupGain;
215}
SpectralEqualizerConfig mConfig