Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / analyse_audio_job.cc
index b45af646d24f664a371711470157c04ca9c56e95..525ac6c911d9940fb0eb09ece3c2a344cda3d7b0 100644 (file)
@@ -26,6 +26,7 @@
 #include "player.h"
 #include "playlist.h"
 #include <boost/foreach.hpp>
+#include <iostream>
 
 #include "i18n.h"
 
@@ -72,8 +73,13 @@ AnalyseAudioJob::run ()
 {
        shared_ptr<Player> player (new Player (_film, _playlist));
        player->set_ignore_video ();
+       player->set_fast ();
+       player->set_play_referenced ();
 
-       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;
@@ -90,9 +96,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()));
                }
        }