summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-11-20 22:51:15 +0100
committerCarl Hetherington <cth@carlh.net>2020-11-20 22:51:15 +0100
commitd330522cb1a0504e5f85c2346344e04916c68a4f (patch)
tree65f711f94bbb7752610b0f740e115005692927f7 /src
parent8837c451db6d87faf4bf23b16297f7b4e05ddbbe (diff)
Always add FFOC and LFOC markers (#1805).
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc14
-rw-r--r--src/lib/film.h6
-rw-r--r--src/lib/reel_writer.cc7
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;
}