diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-03-19 21:37:19 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-03-26 14:03:24 +0000 |
| commit | be33fc16eefc1d826f6b5611392f4f0614e01c1a (patch) | |
| tree | 5556b3cbcfa8d5566692fcd87e42182aba93b455 /src/lib | |
| parent | 3bc51f795afed3c7e5747207112b4d50e6537226 (diff) | |
Update for libdcp API changes.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/dcp_decoder.cc | 26 | ||||
| -rw-r--r-- | src/lib/reel_writer.cc | 18 |
2 files changed, 26 insertions, 18 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc index 85dd28006..8608a0fde 100644 --- a/src/lib/dcp_decoder.cc +++ b/src/lib/dcp_decoder.cc @@ -122,7 +122,7 @@ DCPDecoder::pass () pass_texts (_next, picture_asset->size()); if ((_mono_reader || _stereo_reader) && (_decode_referenced || !_dcp_content->reference_video())) { - int64_t const entry_point = (*_reel)->main_picture()->entry_point (); + int64_t const entry_point = (*_reel)->main_picture()->entry_point().get_value_or(0); if (_mono_reader) { video->emit ( film(), @@ -168,7 +168,7 @@ DCPDecoder::pass () } if (_sound_reader && (_decode_referenced || !_dcp_content->reference_audio())) { - int64_t const entry_point = (*_reel)->main_sound()->entry_point (); + int64_t const entry_point = (*_reel)->main_sound()->entry_point().get_value_or(0); shared_ptr<const dcp::SoundFrame> sf = _sound_reader->get_frame (entry_point + frame); uint8_t const * from = sf->data (); @@ -208,7 +208,7 @@ DCPDecoder::pass_texts (ContentTime next, dcp::Size size) next, (*_reel)->main_subtitle()->asset(), _dcp_content->reference_text(TEXT_OPEN_SUBTITLE), - (*_reel)->main_subtitle()->entry_point(), + (*_reel)->main_subtitle()->entry_point().get_value_or(0), *decoder, size ); @@ -217,7 +217,7 @@ DCPDecoder::pass_texts (ContentTime next, dcp::Size size) BOOST_FOREACH (shared_ptr<dcp::ReelClosedCaptionAsset> i, (*_reel)->closed_captions()) { DCPOMATIC_ASSERT (decoder != text.end ()); pass_texts ( - next, i->asset(), _dcp_content->reference_text(TEXT_CLOSED_CAPTION), i->entry_point(), *decoder, size + next, i->asset(), _dcp_content->reference_text(TEXT_CLOSED_CAPTION), i->entry_point().get_value_or(0), *decoder, size ); ++decoder; } @@ -294,7 +294,7 @@ DCPDecoder::pass_texts ( void DCPDecoder::next_reel () { - _offset += (*_reel)->main_picture()->duration(); + _offset += (*_reel)->main_picture()->actual_duration(); ++_reel; get_readers (); } @@ -357,8 +357,12 @@ DCPDecoder::seek (ContentTime t, bool accurate) /* Seek to pre-roll position */ - while (_reel != _reels.end() && pre >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate(film()))) { - ContentTime rd = ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate(film())); + while ( + _reel != _reels.end() && + pre >= ContentTime::from_frames ((*_reel)->main_picture()->actual_duration(), _dcp_content->active_video_frame_rate(film())) + ) { + + ContentTime rd = ContentTime::from_frames ((*_reel)->main_picture()->actual_duration(), _dcp_content->active_video_frame_rate(film())); pre -= rd; t -= rd; next_reel (); @@ -374,8 +378,12 @@ DCPDecoder::seek (ContentTime t, bool accurate) /* Seek to correct position */ - while (_reel != _reels.end() && t >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate(film()))) { - t -= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate(film())); + while ( + _reel != _reels.end() && + t >= ContentTime::from_frames ((*_reel)->main_picture()->actual_duration(), _dcp_content->active_video_frame_rate(film())) + ) { + + t -= ContentTime::from_frames ((*_reel)->main_picture()->actual_duration(), _dcp_content->active_video_frame_rate(film())); next_reel (); } diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index a21e0c4a3..9703e97cc 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -408,10 +408,10 @@ maybe_add_text ( } if (reel_asset) { - if (reel_asset->duration() != period_duration) { + if (reel_asset->actual_duration() != period_duration) { throw ProgrammingError ( __FILE__, __LINE__, - String::compose ("%1 vs %2", reel_asset->duration(), period_duration) + String::compose ("%1 vs %2", reel_asset->actual_duration(), period_duration) ); } reel->add (reel_asset); @@ -460,7 +460,7 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr if (reel_picture_asset->duration() != period_duration) { throw ProgrammingError ( __FILE__, __LINE__, - String::compose ("%1 vs %2", reel_picture_asset->duration(), period_duration) + String::compose ("%1 vs %2", reel_picture_asset->actual_duration(), period_duration) ); } reel->add (reel_picture_asset); @@ -490,26 +490,26 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr } DCPOMATIC_ASSERT (reel_sound_asset); - if (reel_sound_asset->duration() != period_duration) { + if (reel_sound_asset->actual_duration() != period_duration) { LOG_ERROR ( "Reel sound asset has length %1 but reel period is %2", - reel_sound_asset->duration(), + reel_sound_asset->actual_duration(), period_duration ); - if (reel_sound_asset->duration() != period_duration) { + if (reel_sound_asset->actual_duration() != period_duration) { throw ProgrammingError ( __FILE__, __LINE__, - String::compose ("%1 vs %2", reel_sound_asset->duration(), period_duration) + String::compose ("%1 vs %2", reel_sound_asset->actual_duration(), period_duration) ); } } reel->add (reel_sound_asset); - maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->duration(), reel, refs, fonts, _film, _period); + maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period); for (map<DCPTextTrack, shared_ptr<dcp::SubtitleAsset> >::const_iterator i = _closed_caption_assets.begin(); i != _closed_caption_assets.end(); ++i) { shared_ptr<dcp::ReelClosedCaptionAsset> a = maybe_add_text<dcp::ReelClosedCaptionAsset> ( - i->second, reel_picture_asset->duration(), reel, refs, fonts, _film, _period + i->second, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period ); a->set_annotation_text (i->first.name); a->set_language (i->first.language); |
