From d330522cb1a0504e5f85c2346344e04916c68a4f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 20 Nov 2020 22:51:15 +0100 Subject: Always add FFOC and LFOC markers (#1805). --- src/lib/film.cc | 14 ++++++++++++++ src/lib/film.h | 6 +++++- src/lib/reel_writer.cc | 7 ++++--- 3 files changed, 23 insertions(+), 4 deletions(-) (limited to 'src/lib') diff --git a/src/lib/film.cc b/src/lib/film.cc index 87037f51f..3d822c5ea 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -2062,3 +2062,17 @@ InfoFileHandle::~InfoFileHandle () { fclose (_handle); } + + +/** Add FFOC and LFOC markers to a list if they are not already there */ +void +Film::add_ffoc_lfoc (Markers& markers) const +{ + if (markers.find(dcp::Marker::FFOC) == markers.end()) { + markers[dcp::Marker::FFOC] = dcpomatic::DCPTime(0); + } + + if (markers.find(dcp::Marker::LFOC) == markers.end()) { + markers[dcp::Marker::LFOC] = length() - DCPTime::from_frames(1, video_frame_rate()); + } +} diff --git a/src/lib/film.h b/src/lib/film.h index 887433bea..4854d2ae7 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -327,8 +327,10 @@ public: return _reencode_j2k; } + typedef std::map Markers; + boost::optional marker (dcp::Marker type) const; - std::map markers () const { + Markers markers () const { return _markers; } @@ -418,6 +420,8 @@ public: void set_distributor (std::string d); void set_luminance (dcp::Luminance l); + void add_ffoc_lfoc (Markers& markers) const; + /** Emitted when some property has of the Film is about to change or has changed */ mutable boost::signals2::signal Change; diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index 7ed79d818..0ea4d1563 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -606,9 +606,10 @@ ReelWriter::create_reel (list const & refs, listset_language (i->first.language); } - map markers = _film->markers (); - map reel_markers; - for (map::const_iterator i = markers.begin(); i != markers.end(); ++i) { + Film::Markers markers = _film->markers (); + _film->add_ffoc_lfoc (markers); + Film::Markers reel_markers; + for (Film::Markers::const_iterator i = markers.begin(); i != markers.end(); ++i) { if (_period.contains(i->second)) { reel_markers[i->first] = i->second; } -- cgit v1.2.3