diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-12-16 11:18:50 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-12-16 11:18:50 +0000 |
| commit | d0d4cc8626eebd75a75f5b98cf8396786e8456c0 (patch) | |
| tree | 35934e1be8b015bd008c4a5dea1eeb3f56485901 /src/lib | |
| parent | 729fb3e47d4fb6b766bafdaf88ae7dd6b88ab196 (diff) | |
Fix referencing of assets with non-zero entry points (#1021).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/player.cc | 37 |
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))) ); } |
