From 933224aae82fa8500b29584866a868d4fc0497c9 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 3 Oct 2016 23:42:39 +0100 Subject: Don't let hint generation throw an exception in the presence of old audio analysis files. --- ChangeLog | 2 ++ src/lib/hints.cc | 42 ++++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index d19da4149..64a781e82 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2016-10-03 Carl Hetherington + * Fix crash on make DCP if there are old audio analysis files. + * Updated zh_CN translation from 刘汉源. 2016-10-03 Carl Hetherington diff --git a/src/lib/hints.cc b/src/lib/hints.cc index b410252bd..219b5139c 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -135,30 +135,36 @@ get_hints (shared_ptr film) boost::filesystem::path path = film->audio_analysis_path (film->playlist ()); if (boost::filesystem::exists (path)) { - shared_ptr an (new AudioAnalysis (path)); + try { + shared_ptr an (new AudioAnalysis (path)); - string ch; + string ch; - vector sample_peak = an->sample_peak (); - vector true_peak = an->true_peak (); + vector sample_peak = an->sample_peak (); + vector true_peak = an->true_peak (); - for (size_t i = 0; i < sample_peak.size(); ++i) { - float const peak = max (sample_peak[i].peak, true_peak.empty() ? 0 : true_peak[i]); - float const peak_dB = 20 * log10 (peak) + an->gain_correction (film->playlist ()); - if (peak_dB > -3) { - ch += dcp::raw_convert (short_audio_channel_name (i)) + ", "; + for (size_t i = 0; i < sample_peak.size(); ++i) { + float const peak = max (sample_peak[i].peak, true_peak.empty() ? 0 : true_peak[i]); + float const peak_dB = 20 * log10 (peak) + an->gain_correction (film->playlist ()); + if (peak_dB > -3) { + ch += dcp::raw_convert (short_audio_channel_name (i)) + ", "; + } } - } - ch = ch.substr (0, ch.length() - 2); + ch = ch.substr (0, ch.length() - 2); - if (!ch.empty ()) { - hints.push_back ( - String::compose ( - _("Your audio level is very high (on %1). You should reduce the gain of your audio content."), - ch - ) - ); + if (!ch.empty ()) { + hints.push_back ( + String::compose ( + _("Your audio level is very high (on %1). You should reduce the gain of your audio content."), + ch + ) + ); + } + } catch (OldFormatError& e) { + /* The audio analysis is too old to load in; just skip this hint as if + it had never been run. + */ } } -- cgit v1.2.3