From: Steinar H. Gunderson Date: Thu, 8 Jun 2017 22:32:08 +0000 (+0200) Subject: Add some exported metrics for the EBU R128 measurements. X-Git-Tag: 1.6.1~74 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=bc8e214a1e9f6d27055914901b660b6c9269d636 Add some exported metrics for the EBU R128 measurements. --- diff --git a/Makefile b/Makefile index 968b731..a8f35f6 100644 --- 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 $< diff --git a/audio_mixer.cpp b/audio_mixer.cpp index 6a08f21..0cd8b71 100644 --- a/audio_mixer.cpp +++ b/audio_mixer.cpp @@ -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 bus_levels; bus_levels.resize(input_mapping.buses.size()); { diff --git a/audio_mixer.h b/audio_mixer.h index 8d4f15c..afebea4 100644 --- a/audio_mixer.h +++ b/audio_mixer.h @@ -385,6 +385,15 @@ private: CorrelationMeasurer correlation; // Under audio_measure_mutex. Resampler peak_resampler; // Under audio_measure_mutex. std::atomic peak{0.0f}; + + // Metrics. + std::atomic metric_audio_loudness_short_lufs{0.0 / 0.0}; + std::atomic metric_audio_loudness_integrated_lufs{0.0 / 0.0}; + std::atomic metric_audio_loudness_range_low_lufs{0.0 / 0.0}; + std::atomic metric_audio_loudness_range_high_lufs{0.0 / 0.0}; + std::atomic metric_audio_peak_dbfs{0.0 / 0.0}; + std::atomic metric_audio_final_makeup_gain_db{0.0}; + std::atomic metric_audio_correlation{0.0}; }; extern AudioMixer *global_audio_mixer;