#include "audio_mixer.h"
#include <assert.h>
-#include <endian.h>
#include <bmusb/bmusb.h>
-#include <stdio.h>
#include <endian.h>
-#include <cmath>
-#include <limits>
-#ifdef __SSE__
+#include <math.h>
+#ifdef __SSE2__
#include <immintrin.h>
#endif
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <algorithm>
+#include <chrono>
+#include <cmath>
+#include <cstddef>
+#include <limits>
+#include <utility>
#include "db.h"
#include "flags.h"
-#include "mixer.h"
#include "state.pb.h"
#include "timebase.h"
limiter(OUTPUT_FREQUENCY),
correlation(OUTPUT_FREQUENCY)
{
- global_audio_mixer = this;
-
for (unsigned bus_index = 0; bus_index < MAX_BUSES; ++bus_index) {
locut[bus_index].init(FILTER_HPF, 2);
eq[bus_index][EQ_BAND_BASS].init(FILTER_LOW_SHELF, 1);
}
set_limiter_enabled(global_flags.limiter_enabled);
set_final_makeup_gain_auto(global_flags.final_makeup_gain_auto);
- alsa_pool.init();
if (!global_flags.input_mapping_filename.empty()) {
current_mapping_mode = MappingMode::MULTICHANNEL;
// hlen=16 is pretty low quality, but we use quite a bit of CPU otherwise,
// and there's a limit to how important the peak meter is.
peak_resampler.setup(OUTPUT_FREQUENCY, OUTPUT_FREQUENCY * 4, /*num_channels=*/2, /*hlen=*/16, /*frel=*/1.0);
+
+ global_audio_mixer = this;
+ alsa_pool.init();
}
void AudioMixer::reset_resampler(DeviceSpec device_spec)
// (half-time of 30 seconds).
double target_loudness_factor, alpha;
double loudness_lu = r128.loudness_M() - ref_level_lufs;
- double current_makeup_lu = to_db(final_makeup_gain);
target_loudness_factor = final_makeup_gain * from_db(-loudness_lu);
- // If we're outside +/- 5 LU uncorrected, we don't count it as
+ // If we're outside +/- 5 LU (after correction), we don't count it as
// a normal signal (probably silence) and don't change the
// correction factor; just apply what we already have.
- if (fabs(loudness_lu - current_makeup_lu) >= 5.0 || !final_makeup_gain_auto) {
+ if (fabs(loudness_lu) >= 5.0 || !final_makeup_gain_auto) {
alpha = 0.0;
} else {
// Formula adapted from