From: Carl Hetherington Date: Wed, 14 Apr 2021 10:40:01 +0000 (+0200) Subject: Ignore parameters in PKL type strings when checking them. X-Git-Tag: v1.8.0~46 X-Git-Url: https://main.carlh.net/gitweb/?p=libdcp.git;a=commitdiff_plain;h=1ffc787c6318815592e8d81c4878488eb6183ca4 Ignore parameters in PKL type strings when checking them. --- diff --git a/src/dcp.cc b/src/dcp.cc index c72bef63..cea79ba4 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -221,7 +221,16 @@ DCP::read (vector* notes, bool ignore_incorrect_picture_m continue; } - if (*pkl_type == CPL::static_pkl_type(*_standard) || *pkl_type == InteropSubtitleAsset::static_pkl_type(*_standard)) { + auto remove_parameters = [](string const& n) { + return n.substr(0, n.find(";")); + }; + + /* Remove any optional parameters (after ;) */ + pkl_type = pkl_type->substr(0, pkl_type->find(";")); + + if ( + pkl_type == remove_parameters(CPL::static_pkl_type(*_standard)) || + pkl_type == remove_parameters(InteropSubtitleAsset::static_pkl_type(*_standard))) { auto p = new xmlpp::DomParser; try { p->parse_file (path.string()); @@ -246,14 +255,14 @@ DCP::read (vector* notes, bool ignore_incorrect_picture_m other_assets.push_back (make_shared(path)); } } else if ( - *pkl_type == PictureAsset::static_pkl_type(*_standard) || - *pkl_type == SoundAsset::static_pkl_type(*_standard) || - *pkl_type == AtmosAsset::static_pkl_type(*_standard) || - *pkl_type == SMPTESubtitleAsset::static_pkl_type(*_standard) + *pkl_type == remove_parameters(PictureAsset::static_pkl_type(*_standard)) || + *pkl_type == remove_parameters(SoundAsset::static_pkl_type(*_standard)) || + *pkl_type == remove_parameters(AtmosAsset::static_pkl_type(*_standard)) || + *pkl_type == remove_parameters(SMPTESubtitleAsset::static_pkl_type(*_standard)) ) { other_assets.push_back (asset_factory(path, ignore_incorrect_picture_mxf_type)); - } else if (*pkl_type == FontAsset::static_pkl_type(*_standard)) { + } else if (*pkl_type == remove_parameters(FontAsset::static_pkl_type(*_standard))) { other_assets.push_back (make_shared(i.first, path)); } else if (*pkl_type == "image/png") { /* It's an Interop PNG subtitle; let it go */