+2016-12-21 Carl Hetherington <cth@carlh.net>
+
+ * Make "Add folder..." to accept a directory of WAV files (#942).
+
2016-12-19 Carl Hetherington <cth@carlh.net>
* Updated zh_CN translation from Rov (若文).
return content;
}
- /* Guess if this is a DCP or a set of images: read the first ten filenames and if they
- are all valid image files we assume it is a set of images.
+ /* Guess if this is a DCP, a set of images or a set of sound files: read the first ten filenames
+ and if they are all valid image/sound files we assume it is not a DCP.
*/
bool is_dcp = false;
+ 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) {
continue;
}
- if (!valid_image_file (i->path())) {
+ if (!valid_image_file (i->path()) && !valid_sound_file (i->path())) {
/* We have a normal file which isn't an image; assume we are looking
at a DCP.
*/
is_dcp = true;
}
+ if (valid_image_file (i->path ())) {
+ ++image_files;
+ }
+
+ if (valid_sound_file (i->path ())) {
+ ++sound_files;
+ }
+
++read;
}
if (is_dcp) {
content.push_back (shared_ptr<Content> (new DCPContent (film, path)));
- } else {
+ } else if (image_files > 0) {
content.push_back (shared_ptr<Content> (new ImageContent (film, path)));
+ } else {
+ for (boost::filesystem::directory_iterator i(path); i != boost::filesystem::directory_iterator(); ++i) {
+ content.push_back (shared_ptr<FFmpegContent> (new FFmpegContent (film, i->path())));
+ }
}
} else {
);
}
+bool
+valid_sound_file (boost::filesystem::path f)
+{
+ if (boost::starts_with (f.leaf().string(), "._")) {
+ return false;
+ }
+
+ string ext = f.extension().string();
+ transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
+ return (ext == ".wav" || ext == ".mp3" || ext == ".aif" || ext == ".aiff");
+}
+
bool
valid_j2k_file (boost::filesystem::path f)
{
extern std::string audio_channel_name (int);
extern std::string short_audio_channel_name (int);
extern bool valid_image_file (boost::filesystem::path);
+extern bool valid_sound_file (boost::filesystem::path);
extern bool valid_j2k_file (boost::filesystem::path);
#ifdef DCPOMATIC_WINDOWS
extern boost::filesystem::path mo_path ();