#include "player.h"
#include "playlist.h"
#include <boost/foreach.hpp>
+#include <iostream>
#include "i18n.h"
{
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;
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()));
}
}
int const frames = b->frames ();
int const channels = b->channels ();
- for (int i = 0; i < frames; ++i) {
- for (int j = 0; j < channels; ++j) {
- float s = b->data(j)[i];
+ for (int j = 0; j < channels; ++j) {
+ float* data = b->data(j);
+ for (int i = 0; i < frames; ++i) {
+ float s = data[i];
float as = fabsf (s);
if (as < 10e-7) {
/* SafeStringStream can't serialise and recover inf or -inf, so prevent such
_overall_peak_frame = _done + i;
}
- if ((_done % _samples_per_point) == 0) {
+ if (((_done + i) % _samples_per_point) == 0) {
_current[j][AudioPoint::RMS] = sqrt (_current[j][AudioPoint::RMS] / _samples_per_point);
_analysis->add_point (j, _current[j]);
_current[j] = AudioPoint ();
}
}
-
- ++_done;
}
+
+ _done += frames;
}