From 3239ce7c2cde98a6d70777f7e408b356a5f01a94 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 8 Dec 2020 22:02:04 +0100 Subject: Factor out empty_text_asset() method. --- src/lib/reel_writer.cc | 70 +++++++++++++++++++++++++++++--------------------- src/lib/reel_writer.h | 1 + 2 files changed, 42 insertions(+), 29 deletions(-) (limited to 'src/lib') 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 audio) _sound_asset_writer->write (audio->data(), audio->frames()); } + +shared_ptr +ReelWriter::empty_text_asset (TextType type, optional track) const +{ + shared_ptr asset; + + vector lang = film()->subtitle_languages(); + if (film()->interop()) { + shared_ptr 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 (_reel_index + 1)); + asset = s; + } else { + shared_ptr 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 track, DCPTimePeriod period) { @@ -746,35 +786,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional track, } if (!asset) { - vector lang = film()->subtitle_languages(); - if (film()->interop()) { - shared_ptr 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 (_reel_index + 1)); - asset = s; - } else { - shared_ptr 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 info_file, Frame frame) const; + boost::shared_ptr empty_text_asset (TextType type, boost::optional track) const; boost::shared_ptr create_reel_picture (boost::shared_ptr reel, std::list const & refs) const; void create_reel_sound (boost::shared_ptr reel, std::list const & refs) const; -- cgit v1.2.3