diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-11-20 22:51:15 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-11-20 22:51:15 +0100 |
| commit | d330522cb1a0504e5f85c2346344e04916c68a4f (patch) | |
| tree | 65f711f94bbb7752610b0f740e115005692927f7 /src/lib | |
| parent | 8837c451db6d87faf4bf23b16297f7b4e05ddbbe (diff) | |
Always add FFOC and LFOC markers (#1805).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 14 | ||||
| -rw-r--r-- | src/lib/film.h | 6 | ||||
| -rw-r--r-- | src/lib/reel_writer.cc | 7 |
3 files changed, 23 insertions, 4 deletions
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<dcp::Marker, dcpomatic::DCPTime> Markers; + boost::optional<dcpomatic::DCPTime> marker (dcp::Marker type) const; - std::map<dcp::Marker, dcpomatic::DCPTime> 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<void (ChangeType, Property)> 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<ReferencedReelAsset> const & refs, list<shared_ptr a->set_language (i->first.language); } - map<dcp::Marker, DCPTime> markers = _film->markers (); - map<dcp::Marker, DCPTime> reel_markers; - for (map<dcp::Marker, DCPTime>::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; } |
