]> git.sesse.net Git - nageru/blobdiff - audio_mixer.cpp
Make the compression meters work.
[nageru] / audio_mixer.cpp
index 40470f3a18e70c5d43e158303f89e84960d6018e..8d09ad3bfa9a279f5d74af38613503ce835311e8 100644 (file)
@@ -557,9 +557,17 @@ void AudioMixer::send_audio_level_callback()
 
        vector<BusLevel> bus_levels;
        bus_levels.resize(input_mapping.buses.size());
-       for (unsigned bus_index = 0; bus_index < bus_r128.size(); ++bus_index) {
-               bus_levels[bus_index].loudness_lufs = bus_r128[bus_index]->loudness_S();
-               bus_levels[bus_index].gain_staging_db = gain_staging_db[bus_index];
+       {
+               lock_guard<mutex> lock(compressor_mutex);
+               for (unsigned bus_index = 0; bus_index < bus_r128.size(); ++bus_index) {
+                       bus_levels[bus_index].loudness_lufs = bus_r128[bus_index]->loudness_S();
+                       bus_levels[bus_index].gain_staging_db = gain_staging_db[bus_index];
+                       if (compressor_enabled[bus_index]) {
+                               bus_levels[bus_index].compressor_attenuation_db = -to_db(compressor[bus_index]->get_attenuation());
+                       } else {
+                               bus_levels[bus_index].compressor_attenuation_db = 0.0;
+                       }
+               }
        }
 
        audio_level_callback(loudness_s, to_db(peak), bus_levels,