summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-04-12 18:35:49 +0100
committerCarl Hetherington <cth@carlh.net>2015-04-12 18:35:49 +0100
commitaa8843ee88691dfafa32079d80b94fbdb936f7a0 (patch)
tree922322736e0d81eb6a874d658228c2e8166ae4c3
parentfed92cb518dcd7449ccae2f8b7fb5984b71fc594 (diff)
Fix ISDCF name test and add check to see if a mapped channel is included in the DCP.
-rw-r--r--src/lib/film.cc5
-rw-r--r--test/isdcf_name_test.cc53
2 files changed, 50 insertions, 8 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 3aed4d965..297193f83 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -641,6 +641,11 @@ Film::isdcf_name (bool if_created_now) const
int non_lfe = 0;
int lfe = 0;
for (list<dcp::Channel>::const_iterator i = mapped.begin(); i != mapped.end(); ++i) {
+ if (static_cast<int> (*i) >= audio_channels()) {
+ /* This channel is mapped but is not included in the DCP */
+ continue;
+ }
+
if ((*i) == dcp::LFE) {
++lfe;
} else {
diff --git a/test/isdcf_name_test.cc b/test/isdcf_name_test.cc
index c2ea833bd..5f6ccc5e1 100644
--- a/test/isdcf_name_test.cc
+++ b/test/isdcf_name_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@
#include "lib/ratio.h"
#include "lib/dcp_content_type.h"
#include "lib/image_content.h"
+#include "lib/sndfile_content.h"
#include "test.h"
using std::cout;
@@ -48,7 +49,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
m.package_type = "OV";
film->set_isdcf_metadata (m);
film->set_interop (true);
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilm_FTR-1_F_EN-XX_UK-PG_51_2K_ST_20140704_FA_IOP_OV");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilm_FTR-1_F_EN-XX_UK-PG_2K_ST_20140704_FA_IOP_OV");
/* Test a long name and some different data */
@@ -68,7 +69,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
m.package_type = "VF";
film->set_isdcf_metadata (m);
film->set_interop (false);
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_S_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_S_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
/* Test interior aspect ratio: shouldn't be shown with trailers */
@@ -77,17 +78,17 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
wait_for_jobs ();
content->set_scale (VideoContentScale (Ratio::from_id ("133")));
film->set_container (Ratio::from_id ("185"));
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_F_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_F_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
/* But should be shown for anything else */
film->set_dcp_content_type (DCPContentType::from_isdcf_name ("XSN"));
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2_F-133_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
/* Test 3D */
film->set_three_d (true);
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-3D_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE-3D_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-3D_F-133_DE-FR_US-R_4K_DI_20140704_PP_SMPTE-3D_VF");
/* Test content type modifiers */
@@ -100,7 +101,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
m.mastered_luminance = "4fl";
film->set_isdcf_metadata (m);
film->set_video_frame_rate (48);
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4fl-48_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4fl-48_F-133_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
/* Test a name which is already in camelCase */
@@ -114,12 +115,48 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test)
film->set_isdcf_metadata (m);
film->set_video_frame_rate (24);
film->set_name ("IKnowCamels");
- BOOST_CHECK_EQUAL (film->isdcf_name(false), "IKnowCamels_XSN-2_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "IKnowCamels_XSN-2_F-133_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
/* And one in capitals */
film->set_name ("LIKE SHOUTING");
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_4K_DI_20140704_PP_SMPTE_VF");
+
+ /* Test audio channel markup */
+
+ film->set_audio_channels (6);
+ shared_ptr<SndfileContent> sound (new SndfileContent (film, "test/data/sine_440.wav"));
+ film->examine_and_add_content (sound);
+ wait_for_jobs ();
BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_10_4K_DI_20140704_PP_SMPTE_VF");
+
+ AudioMapping mapping = sound->audio_mapping ();
+
+ mapping.set (0, dcp::LEFT, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_20_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::RIGHT, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_30_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::LFE, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_31_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::LS, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_41_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::RS, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_51_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::CHANNEL_7, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_51_4K_DI_20140704_PP_SMPTE_VF");
+ film->set_audio_channels (8);
+ mapping.set (0, dcp::CHANNEL_7, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_61_4K_DI_20140704_PP_SMPTE_VF");
+ mapping.set (0, dcp::CHANNEL_8, 1.0);
+ sound->set_audio_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-FR_US-R_71_4K_DI_20140704_PP_SMPTE_VF");
}