diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-12-08 22:02:04 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-12-08 23:23:54 +0100 |
| commit | 3239ce7c2cde98a6d70777f7e408b356a5f01a94 (patch) | |
| tree | aaeae92e72a4a7903b003779e63e4bf5e00d173e /src/lib | |
| parent | 7dc07e0a608c1b41ad63e24edfa8a92836f5be99 (diff) | |
Factor out empty_text_asset() method.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/reel_writer.cc | 70 | ||||
| -rw-r--r-- | src/lib/reel_writer.h | 1 |
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; |
