#include <vector>
#include "bmusb/bmusb.h"
+#include "alsa_output.h"
#include "ebu_r128_proc.h"
#include "h264encode.h"
#include "httpd.h"
locut_cutoff_hz = cutoff_hz;
}
+ float get_limiter_threshold_dbfs()
+ {
+ return limiter_threshold_dbfs;
+ }
+
+ float get_compressor_threshold_dbfs()
+ {
+ return compressor_threshold_dbfs;
+ }
+
+ void set_limiter_threshold_dbfs(float threshold_dbfs)
+ {
+ limiter_threshold_dbfs = threshold_dbfs;
+ }
+
+ void set_compressor_threshold_dbfs(float threshold_dbfs)
+ {
+ compressor_threshold_dbfs = threshold_dbfs;
+ }
+
+ void set_limiter_enabled(bool enabled)
+ {
+ limiter_enabled = enabled;
+ }
+
+ void set_compressor_enabled(bool enabled)
+ {
+ compressor_enabled = enabled;
+ }
+
void reset_meters();
private:
StereoCompressor level_compressor;
float last_gain_staging_db = 0.0f;
+ static constexpr float ref_level_dbfs = -14.0f;
+
StereoCompressor limiter;
+ std::atomic<float> limiter_threshold_dbfs{ref_level_dbfs + 4.0f}; // 4 dB.
+ std::atomic<bool> limiter_enabled{true};
StereoCompressor compressor;
+ std::atomic<float> compressor_threshold_dbfs{ref_level_dbfs - 12.0f}; // -12 dB.
+ std::atomic<bool> compressor_enabled{true};
+
+ std::unique_ptr<ALSAOutput> alsa;
};
extern Mixer *global_mixer;