Note that newer libsub version is required.
[dcpomatic.git] / src / lib / content_factory.cc
index 135f3fe5f5bb1da82dfbdfb16b908475b18b16f6..dfa1ba55e4d4795ebdc66e23408390ec7c1b7814 100644 (file)
@@ -40,6 +40,7 @@
 #include "log.h"
 #include "compose.hpp"
 #include <libcxml/cxml.h>
+#include <dcp/filesystem.h>
 #include <dcp/smpte_subtitle_asset.h>
 #include <boost/algorithm/string.hpp>
 
@@ -81,7 +82,8 @@ content_factory (cxml::ConstNodePtr node, int version, list<string>& notes)
                                "Stream", 0,
                                node->number_child<int> ("AudioFrameRate"),
                                node->number_child<Frame> ("AudioLength"),
-                               AudioMapping (node->node_child ("AudioMapping"), version)
+                               AudioMapping(node->node_child("AudioMapping"), version),
+                               16
                                )
                        );
 
@@ -110,11 +112,11 @@ content_factory (boost::filesystem::path path)
 {
        vector<shared_ptr<Content>> 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;
                }
 
@@ -123,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;
@@ -153,7 +155,7 @@ content_factory (boost::filesystem::path path)
                if (image_files > 0 && sound_files == 0)  {
                        content.push_back (make_shared<ImageContent>(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<FFmpegContent>(i.path()));
                        }
                }
@@ -167,11 +169,11 @@ content_factory (boost::filesystem::path path)
 
                if (valid_image_file (path)) {
                        single = make_shared<ImageContent>(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<StringTextFileContent>(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 ();
                        }