From f9d0bc389d3f36263fb7a3b54d2263878a8ea7fb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 21 Sep 2016 00:14:21 +0100 Subject: Trim referred-to DCPs correctly using CPL entry point / duration. --- src/lib/player.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/lib/player.cc b/src/lib/player.cc index 1506436e1..c17cdfdc0 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -739,8 +739,17 @@ Player::get_reel_assets () int64_t offset = 0; BOOST_FOREACH (shared_ptr k, decoder->reels()) { + + DCPOMATIC_ASSERT (j->video_frame_rate ()); + double const cfr = j->video_frame_rate().get(); + Frame const trim_start = j->trim_start().frames_round (cfr); + Frame const trim_end = j->trim_end().frames_round (cfr); + DCPTime const from = i->position() + DCPTime::from_frames (offset, _film->video_frame_rate()); if (j->reference_video ()) { + DCPOMATIC_ASSERT (k->main_picture ()); + k->main_picture()->set_entry_point (trim_start); + k->main_picture()->set_duration (k->main_picture()->intrinsic_duration() - trim_start - trim_end); a.push_back ( ReferencedReelAsset ( k->main_picture (), @@ -750,6 +759,9 @@ Player::get_reel_assets () } if (j->reference_audio ()) { + DCPOMATIC_ASSERT (k->main_sound ()); + k->main_sound()->set_entry_point (trim_start); + k->main_sound()->set_duration (k->main_sound()->intrinsic_duration() - trim_start - trim_end); a.push_back ( ReferencedReelAsset ( k->main_sound (), @@ -760,6 +772,8 @@ Player::get_reel_assets () if (j->reference_subtitle ()) { DCPOMATIC_ASSERT (k->main_subtitle ()); + k->main_subtitle()->set_entry_point (trim_start); + k->main_subtitle()->set_duration (k->main_subtitle()->intrinsic_duration() - trim_start - trim_end); a.push_back ( ReferencedReelAsset ( k->main_subtitle (), -- cgit v1.2.3