diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/player.cc | 33 | ||||
| -rw-r--r-- | src/lib/player.h | 1 |
2 files changed, 16 insertions, 18 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index 1f5639f68..081174acc 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -650,16 +650,7 @@ Player::video (weak_ptr<Piece> wp, ContentVideo video) ) ); - optional<PositionImage> subtitles = subtitles_for_frame (time); - if (subtitles) { - _last_video->set_subtitle (subtitles.get ()); - } - - Video (_last_video, time); - - _last_video_time = time + one_video_frame (); - - _active_subtitles.clear_before (time); + emit_video (_last_video, time); } void @@ -950,21 +941,27 @@ Player::fill_video (DCPTimePeriod period) BOOST_FOREACH (DCPTimePeriod i, subtract(period, _no_video)) { for (DCPTime j = i.from; j < i.to; j += one_video_frame()) { if (_playlist->video_content_at(j) && _last_video) { - Video (shared_ptr<PlayerVideo> (new PlayerVideo (*_last_video)), j); + emit_video (shared_ptr<PlayerVideo> (new PlayerVideo (*_last_video)), j); } else { - shared_ptr<PlayerVideo> black = black_player_video_frame (); - optional<PositionImage> subtitles = subtitles_for_frame (j); - if (subtitles) { - black->set_subtitle (subtitles.get ()); - } - Video (black, j); + emit_video (black_player_video_frame(), j); } - _last_video_time = j; } } } void +Player::emit_video (shared_ptr<PlayerVideo> pv, DCPTime time) +{ + optional<PositionImage> subtitles = subtitles_for_frame (time); + if (subtitles) { + pv->set_subtitle (subtitles.get ()); + } + Video (pv, time); + _last_video_time = time + one_video_frame(); + _active_subtitles.clear_before (time); +} + +void Player::fill_audio (DCPTimePeriod period) { BOOST_FOREACH (DCPTimePeriod i, subtract(period, _no_audio)) { diff --git a/src/lib/player.h b/src/lib/player.h index 760b54a60..ea792d4da 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -118,6 +118,7 @@ private: boost::shared_ptr<const AudioBuffers> audio, DCPTime time, DCPTime discard_to ) const; boost::optional<PositionImage> subtitles_for_frame (DCPTime time) const; + void emit_video (boost::shared_ptr<PlayerVideo> pv, DCPTime time); boost::shared_ptr<const Film> _film; boost::shared_ptr<const Playlist> _playlist; |
