diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-06-23 15:09:30 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-06-23 15:09:30 +0100 |
| commit | 9824173a79ce723068296b3a44499101408c24f2 (patch) | |
| tree | 35d679a7bb8c008c74ec965eb04d767eefe20629 /src/lib/playlist.cc | |
| parent | d72aed1f6cfd2f3fcb2d8f0026ded1a6d30c6cb7 (diff) | |
Attempts to simplify black-filling logic in Player.
Diffstat (limited to 'src/lib/playlist.cc')
| -rw-r--r-- | src/lib/playlist.cc | 28 |
1 files changed, 27 insertions, 1 deletions
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<Content> 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<Content> +Playlist::next_audio_content (DCPTime time) const +{ + shared_ptr<Content> next; + DCPTime next_position; + BOOST_FOREACH (shared_ptr<Content> i, _content) { + if (!i->audio) { + continue; + } + if (i->position() >= time && (!next || i->position() < next_position)) { + next = i; + next_position = i->position(); + } + } + + return next; +} + pair<double, double> Playlist::speed_up_range (int dcp_video_frame_rate) const { |
