summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-12-08 22:02:04 +0100
committerCarl Hetherington <cth@carlh.net>2020-12-08 23:23:54 +0100
commit3239ce7c2cde98a6d70777f7e408b356a5f01a94 (patch)
treeaaeae92e72a4a7903b003779e63e4bf5e00d173e /src/lib
parent7dc07e0a608c1b41ad63e24edfa8a92836f5be99 (diff)
Factor out empty_text_asset() method.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/reel_writer.cc70
-rw-r--r--src/lib/reel_writer.h1
2 files changed, 42 insertions, 29 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index 8e4370526..8ced98a11 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -728,6 +728,46 @@ ReelWriter::write (shared_ptr<const AudioBuffers> audio)
_sound_asset_writer->write (audio->data(), audio->frames());
}
+
+shared_ptr<dcp::SubtitleAsset>
+ReelWriter::empty_text_asset (TextType type, optional<DCPTextTrack> track) const
+{
+ shared_ptr<dcp::SubtitleAsset> asset;
+
+ vector<dcp::LanguageTag> lang = film()->subtitle_languages();
+ if (film()->interop()) {
+ shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset ());
+ s->set_movie_title (film()->name());
+ if (type == TEXT_OPEN_SUBTITLE) {
+ s->set_language (lang.empty() ? "Unknown" : lang.front().to_string());
+ } else if (!track->language.empty()) {
+ s->set_language (track->language);
+ }
+ s->set_reel_number (raw_convert<string> (_reel_index + 1));
+ asset = s;
+ } else {
+ shared_ptr<dcp::SMPTESubtitleAsset> s (new dcp::SMPTESubtitleAsset ());
+ s->set_content_title_text (film()->name());
+ s->set_metadata (mxf_metadata());
+ if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) {
+ s->set_language (lang.front());
+ } else if (track && !track->language.empty()) {
+ s->set_language (dcp::LanguageTag(track->language));
+ }
+ s->set_edit_rate (dcp::Fraction (film()->video_frame_rate(), 1));
+ s->set_reel_number (_reel_index + 1);
+ s->set_time_code_rate (film()->video_frame_rate());
+ s->set_start_time (dcp::Time ());
+ if (film()->encrypted()) {
+ s->set_key (film()->key());
+ }
+ asset = s;
+ }
+
+ return asset;
+}
+
+
void
ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track, DCPTimePeriod period)
{
@@ -746,35 +786,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track,
}
if (!asset) {
- vector<dcp::LanguageTag> lang = film()->subtitle_languages();
- if (film()->interop()) {
- shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset ());
- s->set_movie_title (film()->name());
- if (type == TEXT_OPEN_SUBTITLE) {
- s->set_language (lang.empty() ? "Unknown" : lang.front().to_string());
- } else if (!track->language.empty()) {
- s->set_language (track->language);
- }
- s->set_reel_number (raw_convert<string> (_reel_index + 1));
- asset = s;
- } else {
- shared_ptr<dcp::SMPTESubtitleAsset> s (new dcp::SMPTESubtitleAsset ());
- s->set_content_title_text (film()->name());
- s->set_metadata (mxf_metadata());
- if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) {
- s->set_language (lang.front());
- } else if (track && !track->language.empty()) {
- s->set_language (dcp::LanguageTag(track->language));
- }
- s->set_edit_rate (dcp::Fraction (film()->video_frame_rate(), 1));
- s->set_reel_number (_reel_index + 1);
- s->set_time_code_rate (film()->video_frame_rate());
- s->set_start_time (dcp::Time ());
- if (film()->encrypted()) {
- s->set_key (film()->key());
- }
- asset = s;
- }
+ asset = empty_text_asset (type, track);
}
switch (type) {
diff --git a/src/lib/reel_writer.h b/src/lib/reel_writer.h
index 6237c2943..08b85a785 100644
--- a/src/lib/reel_writer.h
+++ b/src/lib/reel_writer.h
@@ -101,6 +101,7 @@ private:
long frame_info_position (Frame frame, Eyes eyes) const;
Frame check_existing_picture_asset (boost::filesystem::path asset);
bool existing_picture_frame_ok (FILE* asset_file, boost::shared_ptr<InfoFileHandle> info_file, Frame frame) const;
+ boost::shared_ptr<dcp::SubtitleAsset> empty_text_asset (TextType type, boost::optional<DCPTextTrack> track) const;
boost::shared_ptr<dcp::ReelPictureAsset> create_reel_picture (boost::shared_ptr<dcp::Reel> reel, std::list<ReferencedReelAsset> const & refs) const;
void create_reel_sound (boost::shared_ptr<dcp::Reel> reel, std::list<ReferencedReelAsset> const & refs) const;