X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplaylist.cc;h=3609f9eb3df59d46caf04149f46de1a5faf4aa43;hb=9824173a79ce723068296b3a44499101408c24f2;hp=d37f287837110a283b8ee56003d58011853fb1f3;hpb=b37249ba5db6bd08fdfe340cec923130ee4cc7b9;p=dcpomatic.git diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index d37f28783..3609f9eb3 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -24,6 +24,7 @@ #include "ffmpeg_decoder.h" #include "ffmpeg_content.h" #include "image_decoder.h" +#include "audio_content.h" #include "content_factory.h" #include "dcp_content.h" #include "job.h" @@ -559,7 +560,14 @@ bool Playlist::audio_content_at (DCPTime time) const { BOOST_FOREACH (shared_ptr i, _content) { - if (i->audio && i->position() <= time && time < i->end()) { + if (!i->audio) { + continue; + } + DCPTime end = i->end (); + if (i->audio->delay() < 0) { + end += DCPTime::from_seconds (i->audio->delay() / 1000.0); + } + if (i->position() <= time && time < end) { return true; } } @@ -567,6 +575,24 @@ Playlist::audio_content_at (DCPTime time) const return false; } +shared_ptr +Playlist::next_audio_content (DCPTime time) const +{ + shared_ptr next; + DCPTime next_position; + BOOST_FOREACH (shared_ptr i, _content) { + if (!i->audio) { + continue; + } + if (i->position() >= time && (!next || i->position() < next_position)) { + next = i; + next_position = i->position(); + } + } + + return next; +} + pair Playlist::speed_up_range (int dcp_video_frame_rate) const {