summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-12-16 11:18:50 +0000
committerCarl Hetherington <cth@carlh.net>2016-12-16 11:18:50 +0000
commitd0d4cc8626eebd75a75f5b98cf8396786e8456c0 (patch)
tree35934e1be8b015bd008c4a5dea1eeb3f56485901 /src/lib
parent729fb3e47d4fb6b766bafdaf88ae7dd6b88ab196 (diff)
Fix referencing of assets with non-zero entry points (#1021).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 69306e381..57bb0c3ee 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -745,41 +745,36 @@ Player::get_reel_assets ()
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);
+ int const ffr = _film->video_frame_rate ();
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);
+ shared_ptr<dcp::ReelAsset> ra = k->main_picture ();
+ DCPOMATIC_ASSERT (ra);
+ ra->set_entry_point (ra->entry_point() + trim_start);
+ ra->set_duration (ra->duration() - trim_start - trim_end);
a.push_back (
- ReferencedReelAsset (
- k->main_picture (),
- DCPTimePeriod (from, from + DCPTime::from_frames (k->main_picture()->duration(), _film->video_frame_rate()))
- )
+ ReferencedReelAsset (ra, DCPTimePeriod (from, from + DCPTime::from_frames (ra->duration(), ffr)))
);
}
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);
+ shared_ptr<dcp::ReelAsset> ra = k->main_sound ();
+ DCPOMATIC_ASSERT (ra);
+ ra->set_entry_point (ra->entry_point() + trim_start);
+ ra->set_duration (ra->duration() - trim_start - trim_end);
a.push_back (
- ReferencedReelAsset (
- k->main_sound (),
- DCPTimePeriod (from, from + DCPTime::from_frames (k->main_sound()->duration(), _film->video_frame_rate()))
- )
+ ReferencedReelAsset (ra, DCPTimePeriod (from, from + DCPTime::from_frames (ra->duration(), ffr)))
);
}
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);
+ shared_ptr<dcp::ReelAsset> ra = k->main_subtitle ();
+ DCPOMATIC_ASSERT (ra);
+ ra->set_entry_point (ra->entry_point() + trim_start);
+ ra->set_duration (ra->duration() - trim_start - trim_end);
a.push_back (
- ReferencedReelAsset (
- k->main_subtitle (),
- DCPTimePeriod (from, from + DCPTime::from_frames (k->main_subtitle()->duration(), _film->video_frame_rate()))
- )
+ ReferencedReelAsset (ra, DCPTimePeriod (from, from + DCPTime::from_frames (ra->duration(), ffr)))
);
}