Logging improvements to allow prettier displays in the server GUI.
[dcpomatic.git] / src / lib / analyse_audio_job.cc
index c863c6c68529366bb6403b0b2222cf662fc95cff..525ac6c911d9940fb0eb09ece3c2a344cda3d7b0 100644 (file)
@@ -26,6 +26,7 @@
 #include "player.h"
 #include "playlist.h"
 #include <boost/foreach.hpp>
+#include <iostream>
 
 #include "i18n.h"
 
@@ -73,8 +74,12 @@ 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;
@@ -91,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()));
                }
        }