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