Factor out empty_text_asset() method.
authorCarl Hetherington <cth@carlh.net>
Tue, 8 Dec 2020 21:02:04 +0000 (22:02 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 8 Dec 2020 22:23:54 +0000 (23:23 +0100)
src/lib/reel_writer.cc
src/lib/reel_writer.h

index 8e437052624499318620e9e272d9bfad5cce017b..8ced98a114e81c4feede52fe24e89ef35b240ad0 100644 (file)
@@ -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) {
index 6237c2943fdacd5b23f99906f7a4327185d48413..08b85a78520c6f7326c3827ff6f0661f89a3250f 100644 (file)
@@ -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;