Emit no audio from DCPs if none is mapped
[dcpomatic.git] / src / lib / copy_dcp_details_to_film.cc
index a269fae97de1abc5cf1409308bfad9e32a7889eb..f6ca08638ee32aca807e6e80be8f1e9cb4db9834 100644 (file)
@@ -36,7 +36,7 @@ using std::vector;
 
 
 void
-copy_dcp_details_to_film (shared_ptr<const DCPContent> dcp, shared_ptr<Film> film)
+copy_dcp_settings_to_film(shared_ptr<const DCPContent> dcp, shared_ptr<Film> film)
 {
        auto name = dcp->name ();
        name = name.substr (0, name.find("_"));
@@ -51,7 +51,9 @@ copy_dcp_details_to_film (shared_ptr<const DCPContent> dcp, shared_ptr<Film> fil
        film->set_three_d (dcp->three_d());
 
        if (dcp->video) {
-               film->set_container (Ratio::nearest_from_ratio(dcp->video->size().ratio()));
+               if (auto size = dcp->video->size()) {
+                       film->set_container(Ratio::nearest_from_ratio(size->ratio()));
+               }
                film->set_resolution (dcp->resolution());
                DCPOMATIC_ASSERT (dcp->video_frame_rate());
                film->set_video_frame_rate (*dcp->video_frame_rate());
@@ -61,12 +63,17 @@ copy_dcp_details_to_film (shared_ptr<const DCPContent> dcp, shared_ptr<Film> fil
                film->set_audio_channels (dcp->audio->stream()->channels());
        }
 
+       film->set_ratings (dcp->ratings());
+       film->set_content_versions (dcp->content_versions());
+}
+
+
+void
+copy_dcp_markers_to_film(shared_ptr<const DCPContent> dcp, shared_ptr<Film> film)
+{
        film->clear_markers ();
        for (auto const& i: dcp->markers()) {
-               film->set_marker (i.first, dcpomatic::DCPTime(i.second.get()));
+               film->set_marker(i.first, dcpomatic::DCPTime(i.second.get()));
        }
-
-       film->set_ratings (dcp->ratings());
-       film->set_content_versions (dcp->content_versions());
 }