summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-07-04 16:34:13 +0100
committerCarl Hetherington <cth@carlh.net>2014-07-04 16:34:13 +0100
commit1555c48eda3def5f7ece413a47f0c7ff94dd70dd (patch)
treeb76430372b6807f9d3341a1c70bb64e41472182c /src/lib/writer.cc
parent9655db97eae5a6137a45ad809dbf42528dc74408 (diff)
Make XML subtitle work at the very minimal level.
Diffstat (limited to 'src/lib/writer.cc')
-rw-r--r--src/lib/writer.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 04eac854c..b1dbca0e0 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -27,6 +27,7 @@
#include <dcp/reel_mono_picture_asset.h>
#include <dcp/reel_stereo_picture_asset.h>
#include <dcp/reel_sound_asset.h>
+#include <dcp/reel_subtitle_asset.h>
#include <dcp/dcp.h>
#include <dcp/cpl.h>
#include "writer.h"
@@ -452,6 +453,12 @@ Writer::finish ()
reel->add (shared_ptr<dcp::ReelSoundAsset> (new dcp::ReelSoundAsset (_sound_mxf, 0)));
dcp.add (_sound_mxf);
}
+
+ if (_subtitle_content) {
+ _subtitle_content->write_xml (_film->dir (_film->dcp_name ()) / _film->subtitle_xml_filename ());
+ reel->add (shared_ptr<dcp::ReelSubtitleAsset> (new dcp::ReelSubtitleAsset (_subtitle_content, 0)));
+ dcp.add (_subtitle_content);
+ }
cpl->add (reel);
@@ -571,6 +578,20 @@ Writer::can_fake_write (int frame) const
return (frame != 0 && frame < _first_nonexistant_frame);
}
+void
+Writer::write (PlayerSubtitles subs)
+{
+ if (!_subtitle_content) {
+ _subtitle_content.reset (
+ new dcp::SubtitleContent (dcp::Fraction (_film->video_frame_rate(), 1), _film->name(), _film->isdcf_metadata().subtitle_language)
+ );
+ }
+
+ for (list<dcp::SubtitleString>::const_iterator i = subs.text.begin(); i != subs.text.end(); ++i) {
+ _subtitle_content->add (*i);
+ }
+}
+
bool
operator< (QueueItem const & a, QueueItem const & b)
{