summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-09-21 00:14:21 +0100
committerCarl Hetherington <cth@carlh.net>2016-09-21 00:14:21 +0100
commitf9d0bc389d3f36263fb7a3b54d2263878a8ea7fb (patch)
treeab921eabd4b9bc520d71a226c79a54c11a3aa343 /src/lib
parentb9f0e5f6ca2e57980f94f2e16f814b289411e9e3 (diff)
Trim referred-to DCPs correctly using CPL entry point / duration.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc14
1 files changed, 14 insertions, 0 deletions
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<dcp::Reel> 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 (),