X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdcp_content.cc;h=fa6ec383f8ccae10bde9e6990dda77345948fc5c;hb=c269ebfdae53a2f5c5e9acc6f6588ebb47eeac9d;hp=156a1a2052a28e1d6c02556e43d605a50071dc10;hpb=e0255a64d22440d718e5512f34a4f21f0d37a21b;p=dcpomatic.git diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index 156a1a205..fa6ec383f 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -56,7 +56,7 @@ using std::string; using std::vector; using boost::scoped_ptr; using boost::optional; -using boost::function; +using std::function; using std::dynamic_pointer_cast; #if BOOST_VERSION >= 106100 using namespace boost::placeholders; @@ -186,10 +186,7 @@ DCPContent::read_directory (boost::filesystem::path p) if (!have_metadata) { throw DCPError ("No ASSETMAP or ASSETMAP.xml file found: is this a DCP?"); } else { - throw DCPError ( - "This looks like a DCP-o-matic project folder, which cannot be added to a different project. " - "Choose the DCP directory inside the DCP-o-matic project folder if that's what you want to import." - ); + throw ProjectFolderError (); } } @@ -264,15 +261,18 @@ DCPContent::examine (shared_ptr film, shared_ptr job) atmos->set_length (examiner->atmos_length()); } - list > new_text; - for (int i = 0; i < static_cast(TextType::COUNT); ++i) { - for (int j = 0; j < examiner->text_count(static_cast(i)); ++j) { - auto c = make_shared(this, static_cast(i), static_cast(i)); - if (i == static_cast(TextType::CLOSED_CAPTION)) { - c->set_dcp_track (examiner->dcp_text_track(j)); - } - new_text.push_back (c); - } + list> new_text; + + for (int i = 0; i < examiner->text_count(TextType::OPEN_SUBTITLE); ++i) { + auto c = make_shared(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE); + c->set_language (examiner->open_subtitle_language()); + new_text.push_back (c); + } + + for (int i = 0; i < examiner->text_count(TextType::CLOSED_CAPTION); ++i) { + auto c = make_shared(this, TextType::CLOSED_CAPTION, TextType::CLOSED_CAPTION); + c->set_dcp_track (examiner->dcp_text_track(i)); + new_text.push_back (c); } { @@ -288,7 +288,7 @@ DCPContent::examine (shared_ptr film, shared_ptr job) _cpl = examiner->cpl (); _reel_lengths = examiner->reel_lengths (); for (auto const& i: examiner->markers()) { - _markers[i.first] = ContentTime(i.second.as_editable_units(DCPTime::HZ)); + _markers[i.first] = ContentTime(i.second.as_editable_units_ceil(DCPTime::HZ)); } _ratings = examiner->ratings (); _content_versions = examiner->content_versions (); @@ -740,7 +740,7 @@ DCPContent::can_reference_text (shared_ptr film, TextType type, stri return false; } else if (i->main_subtitle()->entry_point().get_value_or(0) != 0) { /// TRANSLATORS: this string will follow "Cannot reference this DCP: " - why_not = _("one if its subtitle reels has a non-zero entry point so it must be re-written."); + why_not = _("one of its subtitle reels has a non-zero entry point so it must be re-written."); return false; } } @@ -753,7 +753,7 @@ DCPContent::can_reference_text (shared_ptr film, TextType type, stri for (auto j: i->closed_captions()) { if (j->entry_point().get_value_or(0) != 0) { /// TRANSLATORS: this string will follow "Cannot reference this DCP: " - why_not = _("one if its closed caption has a non-zero entry point so it must be re-written."); + why_not = _("one of its closed caption has a non-zero entry point so it must be re-written."); return false; } }