Emit no audio from DCPs if none is mapped
[dcpomatic.git] / src / wx / content_view.cc
index f4c9aca9d62009a186b3ae3747de012438084c89..b9fe7ce005a8dde13de020dffa0920317e96d84f 100644 (file)
@@ -28,7 +28,9 @@
 #include "lib/dcpomatic_assert.h"
 #include "lib/examine_content_job.h"
 #include "lib/job_manager.h"
+#include "lib/util.h"
 #include <dcp/exceptions.h>
+#include <dcp/filesystem.h>
 #include <dcp/warnings.h>
 #include <boost/filesystem.hpp>
 #include <boost/optional.hpp>
@@ -80,7 +82,7 @@ ContentView::update ()
        DeleteAllItems ();
        _content.clear ();
        auto dir = Config::instance()->player_content_directory();
-       if (!dir || !boost::filesystem::is_directory(*dir)) {
+       if (!dir || !dcp::filesystem::is_directory(*dir)) {
                dir = home_directory ();
        }
 
@@ -94,10 +96,13 @@ ContentView::update ()
                        progress.Pulse ();
 
                        shared_ptr<Content> content;
-                       if (is_directory(i) && (is_regular_file(i / "ASSETMAP") || is_regular_file(i / "ASSETMAP.xml"))) {
-                               content.reset (new DCPContent(i));
-                       } else if (i.path().extension() == ".mp4" || i.path().extension() == ".ecinema") {
-                               content = content_factory(i).front();
+                       if (is_directory(i) && contains_assetmap(i)) {
+                               content = make_shared<DCPContent>(i);
+                       } else if (i.path().extension() == ".mp4") {
+                               auto all_content = content_factory(i);
+                               if (!all_content.empty()) {
+                                       content = all_content[0];
+                               }
                        }
 
                        if (content) {
@@ -152,7 +157,7 @@ ContentView::add (shared_ptr<Content> content)
        if (dcp && dcp->content_kind()) {
                it.SetId(N);
                it.SetColumn(1);
-               it.SetText(std_to_wx(dcp::content_kind_to_string(*dcp->content_kind())));
+               it.SetText(std_to_wx(dcp->content_kind()->name()));
                SetItem(it);
        }