summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-05-18 22:16:17 +0100
committerCarl Hetherington <cth@carlh.net>2017-05-18 22:16:17 +0100
commit381d25804a8f5113bd84d3e51c8ba84545b9d405 (patch)
tree742098d60dd1a8c62660c80d92a995badb0108df /src
parentb7c62e0f7e43ae6b60ebc92b14286fb10df676be (diff)
Fix audio fill in the presence of audio delay.
Diffstat (limited to 'src')
-rw-r--r--src/lib/player.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 1d78dbcdf..f0633151d 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -519,7 +519,7 @@ Player::pass ()
BOOST_FOREACH (shared_ptr<Piece> i, _pieces) {
if (!i->done) {
- DCPTime const t = i->content->position() + DCPTime (i->decoder->position(), i->frc);
+ DCPTime const t = content_time_to_dcp (i, i->decoder->position());
if (!earliest || t < earliest_content) {
earliest_content = t;
earliest = i;
@@ -561,8 +561,13 @@ Player::pass ()
audio_fill_from = _last_audio_time;
}
- if (audio_fill_from && audio_fill_from < fill_towards) {
- DCPTimePeriod period (*audio_fill_from, fill_towards);
+ DCPTime audio_fill_towards = fill_towards;
+ if (earliest && earliest->content->audio) {
+ audio_fill_towards += DCPTime::from_seconds (earliest->content->audio->delay() / 1000.0);
+ }
+
+ if (audio_fill_from && audio_fill_from < audio_fill_towards) {
+ DCPTimePeriod period (*audio_fill_from, audio_fill_towards);
if (period.duration() > one_video_frame()) {
period.to = period.from + one_video_frame();
}