+2019-01-08 Carl Hetherington <cth@carlh.net>
+
+ * Fix failure to re-analyse audio when the channel map changes (#1257).
+
2019-01-06 Carl Hetherington <cth@carlh.net>
* Disable subtitle view/font buttons with FFmpeg content (#1236).
AnalyseAudioJob::AnalyseAudioJob (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist, bool from_zero)
: Job (film)
, _playlist (playlist)
+ , _path (film->audio_analysis_path(playlist))
, _from_zero (from_zero)
, _done (0)
, _samples_per_point (1)
_analysis->set_samples_per_point (_samples_per_point);
_analysis->set_sample_rate (_film->audio_frame_rate ());
- _analysis->write (_film->audio_analysis_path (_playlist));
+ _analysis->write (_path);
set_progress (1);
set_state (FINISHED_OK);
std::string json_name () const;
void run ();
- boost::shared_ptr<const Playlist> playlist () const {
- return _playlist;
+ boost::filesystem::path path () const {
+ return _path;
}
private:
void analyse (boost::shared_ptr<const AudioBuffers>, DCPTime time);
boost::shared_ptr<const Playlist> _playlist;
+ /** playlist's audio analysis path when the job was created */
+ boost::filesystem::path _path;
DCPTime _start;
bool _from_zero;
BOOST_FOREACH (shared_ptr<Job> i, _jobs) {
shared_ptr<AnalyseAudioJob> a = dynamic_pointer_cast<AnalyseAudioJob> (i);
- if (a && a->playlist () == playlist) {
+ if (a && a->path() == film->audio_analysis_path(playlist)) {
i->when_finished (connection, ready);
return;
}
if (!boost::filesystem::exists (path)) {
_plot->set_analysis (shared_ptr<AudioAnalysis> ());
_analysis.reset ();
+
+ BOOST_FOREACH (shared_ptr<Job> i, JobManager::instance()->get()) {
+ if (dynamic_pointer_cast<AnalyseAudioJob>(i)) {
+ i->cancel ();
+ }
+ }
+
JobManager::instance()->analyse_audio (
film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind (&AudioDialog::analysis_finished, this)
);