#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>
using std::make_shared;
using std::shared_ptr;
using std::string;
+using std::vector;
/** Create a Content object from an XML node.
std::shared_ptr<Content> content;
if (type == "FFmpeg") {
- /* SndfileContent is now handled by the FFmpeg code rather than by
- separate libsndfile-based code.
- */
content = make_shared<FFmpegContent>(node, version, notes);
} else if (type == "Image") {
content = make_shared<ImageContent>(node, version);
"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
)
);
* @param path File or directory.
* @return Content objects.
*/
-list<shared_ptr<Content>>
+vector<shared_ptr<Content>>
content_factory (boost::filesystem::path path)
{
- list<shared_ptr<Content>> content;
+ 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;
}
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;
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()));
}
}
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 ();
}