diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-09-08 01:10:38 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-09-14 10:21:14 +0100 |
| commit | d22e839b94af048bdeaba61e427bcd2f07b4a3ee (patch) | |
| tree | 18f37e00d1a5a64c0426588fa530bcffb14e66a3 /src/lib/analyse_audio_job.cc | |
| parent | 4704d088ae03ab2b5f73ceed577fd84935ad0640 (diff) | |
Fix analysis of audio when the subject is later in the playlist than
some other long piece of content. Small optimisation to AudioBuffers
to extend size logarithmically.
Diffstat (limited to 'src/lib/analyse_audio_job.cc')
| -rw-r--r-- | src/lib/analyse_audio_job.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc index c863c6c68..6c142f5cf 100644 --- a/src/lib/analyse_audio_job.cc +++ b/src/lib/analyse_audio_job.cc @@ -74,7 +74,10 @@ AnalyseAudioJob::run () player->set_ignore_video (); player->set_fast (); - int64_t const len = _playlist->length().frames_round (_film->audio_frame_rate()); + DCPTime const start = _playlist->start().get_value_or (DCPTime ()); + DCPTime const length = _playlist->length (); + + Frame const len = DCPTime (length - start).frames_round (_film->audio_frame_rate()); _samples_per_point = max (int64_t (1), len / _num_points); delete[] _current; @@ -91,9 +94,9 @@ AnalyseAudioJob::run () if (has_any_audio) { _done = 0; DCPTime const block = DCPTime::from_seconds (1.0 / 8); - for (DCPTime t; t < _film->length(); t += block) { + for (DCPTime t = start; t < length; t += block) { analyse (player->get_audio (t, block, false)); - set_progress (t.seconds() / _film->length().seconds()); + set_progress ((t.seconds() - start.seconds()) / (length.seconds() - start.seconds())); } } |
