diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-10-03 23:42:39 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-10-03 23:42:39 +0100 |
| commit | 933224aae82fa8500b29584866a868d4fc0497c9 (patch) | |
| tree | a9af3ce9c997fd1b23114fcaa446e4f27a279fff | |
| parent | 36492186c9a968e861ac4fea9ea056b81ae40f9a (diff) | |
Don't let hint generation throw an exception in the presence of old audio analysis files.
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | src/lib/hints.cc | 42 |
2 files changed, 26 insertions, 18 deletions
@@ -1,5 +1,7 @@ 2016-10-03 Carl Hetherington <cth@carlh.net> + * Fix crash on make DCP if there are old audio analysis files. + * Updated zh_CN translation from 刘汉源. 2016-10-03 Carl Hetherington <cth@carlh.net> 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<const Film> film) boost::filesystem::path path = film->audio_analysis_path (film->playlist ()); if (boost::filesystem::exists (path)) { - shared_ptr<AudioAnalysis> an (new AudioAnalysis (path)); + try { + shared_ptr<AudioAnalysis> an (new AudioAnalysis (path)); - string ch; + string ch; - vector<AudioAnalysis::PeakTime> sample_peak = an->sample_peak (); - vector<float> true_peak = an->true_peak (); + vector<AudioAnalysis::PeakTime> sample_peak = an->sample_peak (); + vector<float> 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<string> (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<string> (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. + */ } } |
