]> git.sesse.net Git - nageru/commitdiff
Add some exported metrics for the EBU R128 measurements.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 8 Jun 2017 22:32:08 +0000 (00:32 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 8 Jun 2017 22:32:08 +0000 (00:32 +0200)
Makefile
audio_mixer.cpp
audio_mixer.h

index 968b731c6ae522add32f9c347c91c05b0dee646a..a8f35f6fe2d6afe0c47338d21e07aca171c94260 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@ endif
 OBJS += ffmpeg_capture.o
 
 # Benchmark program.
-BM_OBJS = benchmark_audio_mixer.o $(AUDIO_MIXER_OBJS) flags.o
+BM_OBJS = benchmark_audio_mixer.o $(AUDIO_MIXER_OBJS) flags.o metrics.o
 
 %.o: %.cpp
        $(CXX) -MMD -MP $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $<
index 6a08f2167d62a434a1b31a7af160ff61a6378b3d..0cd8b712f903beba4b4430b40ef811aa1acf8ee2 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "db.h"
 #include "flags.h"
+#include "metrics.h"
 #include "state.pb.h"
 #include "timebase.h"
 
@@ -212,6 +213,14 @@ AudioMixer::AudioMixer(unsigned num_cards)
                        current_mapping_mode = MappingMode::MULTICHANNEL;
                }
        }
+
+       global_metrics.register_double_metric("audio_loudness_short_lufs", &metric_audio_loudness_short_lufs);
+       global_metrics.register_double_metric("audio_loudness_integrated_lufs", &metric_audio_loudness_integrated_lufs);
+       global_metrics.register_double_metric("audio_loudness_range_low_lufs", &metric_audio_loudness_range_low_lufs);
+       global_metrics.register_double_metric("audio_loudness_range_high_lufs", &metric_audio_loudness_range_high_lufs);
+       global_metrics.register_double_metric("audio_peak_dbfs", &metric_audio_peak_dbfs);
+       global_metrics.register_double_metric("audio_final_makeup_gain_db", &metric_audio_final_makeup_gain_db);
+       global_metrics.register_double_metric("audio_correlation", &metric_audio_correlation);
 }
 
 void AudioMixer::reset_resampler(DeviceSpec device_spec)
@@ -827,6 +836,14 @@ void AudioMixer::send_audio_level_callback()
        double loudness_range_low = r128.range_min();
        double loudness_range_high = r128.range_max();
 
+       metric_audio_loudness_short_lufs = loudness_s;
+       metric_audio_loudness_integrated_lufs = loudness_i;
+       metric_audio_loudness_range_low_lufs = loudness_range_low;
+       metric_audio_loudness_range_high_lufs = loudness_range_high;
+       metric_audio_peak_dbfs = to_db(peak);
+       metric_audio_final_makeup_gain_db = to_db(final_makeup_gain);
+       metric_audio_correlation = correlation.get_correlation();
+
        vector<BusLevel> bus_levels;
        bus_levels.resize(input_mapping.buses.size());
        {
index 8d4f15c7f2020b399fb726f4ce5b025ac22d65fb..afebea471b7809cd7e51e11b583a413193159c2a 100644 (file)
@@ -385,6 +385,15 @@ private:
        CorrelationMeasurer correlation;  // Under audio_measure_mutex.
        Resampler peak_resampler;  // Under audio_measure_mutex.
        std::atomic<float> peak{0.0f};
+
+       // Metrics.
+       std::atomic<double> metric_audio_loudness_short_lufs{0.0 / 0.0};
+       std::atomic<double> metric_audio_loudness_integrated_lufs{0.0 / 0.0};
+       std::atomic<double> metric_audio_loudness_range_low_lufs{0.0 / 0.0};
+       std::atomic<double> metric_audio_loudness_range_high_lufs{0.0 / 0.0};
+       std::atomic<double> metric_audio_peak_dbfs{0.0 / 0.0};
+       std::atomic<double> metric_audio_final_makeup_gain_db{0.0};
+       std::atomic<double> metric_audio_correlation{0.0};
 };
 
 extern AudioMixer *global_audio_mixer;