summaryrefslogtreecommitdiff
path: root/src/lib/analyse_audio_job.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-09-08 01:10:38 +0100
committerCarl Hetherington <cth@carlh.net>2015-09-14 10:21:14 +0100
commitd22e839b94af048bdeaba61e427bcd2f07b4a3ee (patch)
tree18f37e00d1a5a64c0426588fa530bcffb14e66a3 /src/lib/analyse_audio_job.cc
parent4704d088ae03ab2b5f73ceed577fd84935ad0640 (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.cc9
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()));
}
}