diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-11-20 00:53:20 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-11-20 23:47:03 +0100 |
| commit | 4347d97b703cfddcd322051092ccfcd5b5a6b941 (patch) | |
| tree | 30ee949b1cbf6cf6300c736c4e6663ffbe832616 /src/lib | |
| parent | bea1b9f9c77c721afd15bab392a86343f8d6b83a (diff) | |
Subtitle language handling tweaks; write multiple subtitle languages
to SMPTE extended metadata.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/reel_writer.cc | 10 | ||||
| -rw-r--r-- | src/lib/subtitle_encoder.cc | 4 | ||||
| -rw-r--r-- | src/lib/writer.cc | 5 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index c4df58fe7..345bcdeb3 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -597,7 +597,11 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr } reel->add (reel_sound_asset); - maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period); + shared_ptr<dcp::ReelSubtitleAsset> subtitle = maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period); + if (subtitle && !_film->subtitle_languages().empty()) { + subtitle->set_language (_film->subtitle_languages().front()); + } + for (map<DCPTextTrack, shared_ptr<dcp::SubtitleAsset> >::const_iterator i = _closed_caption_assets.begin(); i != _closed_caption_assets.end(); ++i) { shared_ptr<dcp::ReelClosedCaptionAsset> a = maybe_add_text<dcp::ReelClosedCaptionAsset> ( i->second, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period @@ -703,9 +707,9 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track, s->set_content_title_text (_film->name ()); s->set_metadata (mxf_metadata()); if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) { - s->set_language (lang.front().to_string()); + s->set_language (lang.front()); } else { - s->set_language (track->language); + 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); diff --git a/src/lib/subtitle_encoder.cc b/src/lib/subtitle_encoder.cc index 5e76f5e73..61c4dc3ae 100644 --- a/src/lib/subtitle_encoder.cc +++ b/src/lib/subtitle_encoder.cc @@ -141,9 +141,9 @@ SubtitleEncoder::text (PlayerText subs, TextType type, optional<DCPTextTrack> tr shared_ptr<dcp::SMPTESubtitleAsset> s (new dcp::SMPTESubtitleAsset()); s->set_content_title_text (_film->name()); if (!lang.empty()) { - s->set_language (lang.front().to_string()); + s->set_language (lang.front()); } else { - s->set_language (track->language); + 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); diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 79e5ad73b..a9700f4f5 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -620,6 +620,11 @@ Writer::finish () cpl->set_main_picture_stored_area (_film->frame_size()); cpl->set_main_picture_active_area (_film->active_area()); + vector<dcp::LanguageTag> sl = _film->subtitle_languages(); + if (sl.size() > 1) { + cpl->set_additional_subtitle_languages(std::vector<dcp::LanguageTag>(sl.begin() + 1, sl.end())); + } + shared_ptr<const dcp::CertificateChain> signer; signer = Config::instance()->signer_chain (); /* We did check earlier, but check again here to be on the safe side */ |
