X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fcontent_factory.cc;h=dfa1ba55e4d4795ebdc66e23408390ec7c1b7814;hb=ff12ccdde76c54d3b9e69799a63750db9edf0023;hp=b64c1b9a3d6f383fed236e6e79cf4f8622d86f29;hpb=c7916079e06d985121842962b9736a6673e22dfe;p=dcpomatic.git diff --git a/src/lib/content_factory.cc b/src/lib/content_factory.cc index b64c1b9a3..dfa1ba55e 100644 --- a/src/lib/content_factory.cc +++ b/src/lib/content_factory.cc @@ -40,6 +40,7 @@ #include "log.h" #include "compose.hpp" #include +#include #include #include @@ -50,6 +51,7 @@ using std::list; using std::make_shared; using std::shared_ptr; using std::string; +using std::vector; /** Create a Content object from an XML node. @@ -66,9 +68,6 @@ content_factory (cxml::ConstNodePtr node, int version, list& notes) std::shared_ptr content; if (type == "FFmpeg") { - /* SndfileContent is now handled by the FFmpeg code rather than by - separate libsndfile-based code. - */ content = make_shared(node, version, notes); } else if (type == "Image") { content = make_shared(node, version); @@ -83,7 +82,8 @@ content_factory (cxml::ConstNodePtr node, int version, list& notes) "Stream", 0, node->number_child ("AudioFrameRate"), node->number_child ("AudioLength"), - AudioMapping (node->node_child ("AudioMapping"), version) + AudioMapping(node->node_child("AudioMapping"), version), + 16 ) ); @@ -107,16 +107,16 @@ content_factory (cxml::ConstNodePtr node, int version, list& notes) * @param path File or directory. * @return Content objects. */ -list> +vector> content_factory (boost::filesystem::path path) { - list> content; + vector> content; - if (boost::filesystem::is_directory (path)) { + if (dcp::filesystem::is_directory(path)) { LOG_GENERAL ("Look in directory %1", path); - if (boost::filesystem::is_empty (path)) { + if (dcp::filesystem::is_empty(path)) { return content; } @@ -125,17 +125,17 @@ content_factory (boost::filesystem::path path) int image_files = 0; int sound_files = 0; int read = 0; - for (boost::filesystem::directory_iterator i(path); i != boost::filesystem::directory_iterator() && read < 10; ++i) { + for (dcp::filesystem::directory_iterator i(path); i != dcp::filesystem::directory_iterator() && read < 10; ++i) { LOG_GENERAL ("Checking file %1", i->path()); - if (boost::starts_with (i->path().leaf().string(), ".")) { + if (boost::starts_with(i->path().filename().string(), ".")) { /* We ignore hidden files */ LOG_GENERAL ("Ignored %1 (starts with .)", i->path()); continue; } - if (!boost::filesystem::is_regular_file(i->path())) { + if (!dcp::filesystem::is_regular_file(i->path())) { /* Ignore things which aren't files (probably directories) */ LOG_GENERAL ("Ignored %1 (not a regular file)", i->path()); continue; @@ -155,7 +155,7 @@ content_factory (boost::filesystem::path path) if (image_files > 0 && sound_files == 0) { content.push_back (make_shared(path)); } else if (image_files == 0 && sound_files > 0) { - for (auto i: boost::filesystem::directory_iterator(path)) { + for (auto i: dcp::filesystem::directory_iterator(path)) { content.push_back (make_shared(i.path())); } } @@ -169,11 +169,11 @@ content_factory (boost::filesystem::path path) if (valid_image_file (path)) { single = make_shared(path); - } else if (ext == ".srt" || ext == ".ssa" || ext == ".ass" || ext == ".stl") { + } else if (ext == ".srt" || ext == ".ssa" || ext == ".ass" || ext == ".stl" || ext == ".vtt") { single = make_shared(path); } else if (ext == ".xml") { cxml::Document doc; - doc.read_file (path); + doc.read_file(dcp::filesystem::fix_long_path(path)); if (doc.root_name() == "DCinemaSecurityMessage") { throw KDMAsContentError (); }