Make DCP text track language properly optional and ignore bad values on imported...
[dcpomatic.git] / src / lib / subtitle_encoder.cc
index cc42f1204e78c860b21e0ba623b494def2ed3124..66957270fe91d0d6d2cbef7e11dd4223842931b8 100644 (file)
 
 #include "i18n.h"
 
-using std::string;
 using std::make_pair;
+using std::make_shared;
 using std::pair;
-using std::vector;
 using std::shared_ptr;
+using std::string;
+using std::vector;
 using boost::optional;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
@@ -128,28 +129,28 @@ SubtitleEncoder::go ()
 void
 SubtitleEncoder::text (PlayerText subs, TextType type, optional<DCPTextTrack> track, dcpomatic::DCPTimePeriod period)
 {
-       if (type != TEXT_OPEN_SUBTITLE) {
+       if (type != TextType::OPEN_SUBTITLE) {
                return;
        }
 
        if (!_assets[_reel_index].first) {
                shared_ptr<dcp::SubtitleAsset> asset;
-               vector<dcp::LanguageTag> lang = _film->subtitle_languages ();
+               auto lang = _film->subtitle_languages ();
                if (_film->interop ()) {
-                       shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset());
+                       auto s = make_shared<dcp::InteropSubtitleAsset>();
                        s->set_movie_title (_film->name());
-                       if (!lang.empty()) {
-                               s->set_language (lang.front().to_string());
+                       if (lang.first) {
+                               s->set_language (lang.first->to_string());
                        }
                        s->set_reel_number (raw_convert<string>(_reel_index + 1));
                        _assets[_reel_index].first = s;
                } else {
-                       shared_ptr<dcp::SMPTESubtitleAsset> s (new dcp::SMPTESubtitleAsset());
+                       auto s = make_shared<dcp::SMPTESubtitleAsset>();
                        s->set_content_title_text (_film->name());
-                       if (!lang.empty()) {
-                               s->set_language (lang.front());
-                       } else if (!track->language.empty()) {
-                               s->set_language (dcp::LanguageTag(track->language));
+                       if (lang.first) {
+                               s->set_language (*lang.first);
+                       } else if (track->language) {
+                               s->set_language (track->language.get());
                        }
                        s->set_edit_rate (dcp::Fraction (_film->video_frame_rate(), 1));
                        s->set_reel_number (_reel_index + 1);