summaryrefslogtreecommitdiff
path: root/src/lib/reel_writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-03-17 01:27:02 +0000
committerCarl Hetherington <cth@carlh.net>2019-05-10 23:43:42 +0100
commit2596b1db2fff8a9cc56be97099442dc791692882 (patch)
tree519faf7567e5d19276067ee244ad21ee24ac5c9e /src/lib/reel_writer.cc
parent8c365af343a15bee11af53fc6bc16487b83260d1 (diff)
Basics of marker writing (part of #782).
Diffstat (limited to 'src/lib/reel_writer.cc')
-rw-r--r--src/lib/reel_writer.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index 3b9e413a2..9be4ce571 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -39,6 +39,7 @@
#include <dcp/reel_sound_asset.h>
#include <dcp/reel_subtitle_asset.h>
#include <dcp/reel_closed_caption_asset.h>
+#include <dcp/reel_markers_asset.h>
#include <dcp/dcp.h>
#include <dcp/cpl.h>
#include <dcp/certificate_chain.h>
@@ -514,6 +515,25 @@ 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) {
+ if (_period.contains(i->second)) {
+ reel_markers[i->first] = i->second;
+ }
+ }
+
+ if (!reel_markers.empty ()) {
+ shared_ptr<dcp::ReelMarkersAsset> ma (new dcp::ReelMarkersAsset(dcp::Fraction(_film->video_frame_rate(), 1), 0));
+ for (map<dcp::Marker, DCPTime>::const_iterator i = reel_markers.begin(); i != reel_markers.end(); ++i) {
+ int h, m, s, f;
+ DCPTime relative = i->second - _period.from;
+ relative.split (_film->video_frame_rate(), h, m, s, f);
+ ma->set (i->first, dcp::Time(h, m, s, f, _film->video_frame_rate()));
+ }
+ reel->add (ma);
+ }
+
return reel;
}