summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/bv20_test.cc95
m---------test/data0
-rw-r--r--test/recover_test.cc6
-rw-r--r--test/wscript1
4 files changed, 99 insertions, 3 deletions
diff --git a/test/bv20_test.cc b/test/bv20_test.cc
new file mode 100644
index 000000000..5530a05d0
--- /dev/null
+++ b/test/bv20_test.cc
@@ -0,0 +1,95 @@
+/*
+ Copyright (C) 2023 Carl Hetherington <cth@carlh.net>
+
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ DCP-o-matic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include "lib/content_factory.h"
+#include "lib/film.h"
+#include "test.h"
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
+#include <asdcp/Metadata.h>
+LIBDCP_ENABLE_WARNINGS
+#include <dcp/sound_asset.h>
+#include <dcp/util.h>
+#include <boost/test/unit_test.hpp>
+
+
+using std::shared_ptr;
+
+
+bool
+has_cpl_mca_subdescriptors(shared_ptr<const Film> film)
+{
+ auto cpl = dcp::file_to_string(find_file(film->dir(film->dcp_name()), "cpl_"));
+ return cpl.find("MCASubDescriptors") != std::string::npos;
+}
+
+
+bool
+has_mxf_mca_subdescriptors(shared_ptr<const Film> film)
+{
+ /* One day hopefully libdcp will read these descriptors and we can find out from the SoundAsset
+ * whether they exist.
+ */
+
+ ASDCP::PCM::MXFReader reader;
+ auto r = reader.OpenRead(find_file(film->dir(film->dcp_name()), "pcm_").string());
+ BOOST_REQUIRE(!ASDCP_FAILURE(r));
+
+ ASDCP::MXF::WaveAudioDescriptor* essence_descriptor = nullptr;
+ auto const rr = reader.OP1aHeader().GetMDObjectByType(
+ dcp::asdcp_smpte_dict->ul(ASDCP::MDD_WaveAudioDescriptor),
+ reinterpret_cast<ASDCP::MXF::InterchangeObject**>(&essence_descriptor)
+ );
+
+ if (!KM_SUCCESS(rr)) {
+ return false;
+ }
+
+ return essence_descriptor->SubDescriptors.size() > 0;
+}
+
+
+BOOST_AUTO_TEST_CASE(bv21_extensions_used_when_not_limited)
+{
+ auto picture = content_factory("test/data/flat_red.png");
+ auto sound = content_factory("test/data/sine_440.wav");
+ auto film = new_test_film2("bv21_extensions_used_when_not_limited", { picture.front(), sound.front() });
+
+ make_and_verify_dcp(film);
+
+ BOOST_CHECK(has_cpl_mca_subdescriptors(film));
+ BOOST_CHECK(has_mxf_mca_subdescriptors(film));
+}
+
+
+BOOST_AUTO_TEST_CASE(bv21_extensions_not_used_when_limited)
+{
+ auto picture = content_factory("test/data/flat_red.png");
+ auto sound = content_factory("test/data/sine_440.wav");
+ auto film = new_test_film2("bv21_extensions_not_used_when_limited", { picture.front(), sound.front () });
+ film->set_limit_to_smpte_bv20(true);
+
+ make_and_verify_dcp(film);
+
+ BOOST_CHECK(!has_cpl_mca_subdescriptors(film));
+ BOOST_CHECK(!has_mxf_mca_subdescriptors(film));
+}
+
diff --git a/test/data b/test/data
-Subproject aede894d8bf60f18915bf6f7046af05d9bfe585
+Subproject 1bda4d6e0a3fd9c455166aa9a6b70ac348bc83d
diff --git a/test/recover_test.cc b/test/recover_test.cc
index 0288da188..9508adca7 100644
--- a/test/recover_test.cc
+++ b/test/recover_test.cc
@@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE (recover_test_2d)
dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE
});
- boost::filesystem::path const video = "build/test/recover_test_2d/video/185_2K_02543352c540f4b083bff3f1e309d4a9_24_100000000_P_S_0_1200000.mxf";
+ boost::filesystem::path const video = "build/test/recover_test_2d/video/185_2K_02543352c540f4b083bff3f1e309d4a9_24_100000000_P_S_L21_0_1200000.mxf";
boost::filesystem::copy_file (
video,
"build/test/recover_test_2d/original.mxf"
@@ -108,7 +108,7 @@ BOOST_AUTO_TEST_CASE (recover_test_3d, * boost::unit_test::depends_on("recover_t
make_and_verify_dcp (film, { dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE, dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE });
- boost::filesystem::path const video = "build/test/recover_test_3d/video/185_2K_70e6661af92ae94458784c16a21a9748_24_100000000_P_S_3D_0_96000.mxf";
+ boost::filesystem::path const video = "build/test/recover_test_3d/video/185_2K_70e6661af92ae94458784c16a21a9748_24_100000000_P_S_L21_3D_0_96000.mxf";
boost::filesystem::copy_file (
video,
@@ -144,7 +144,7 @@ BOOST_AUTO_TEST_CASE (recover_test_2d_encrypted, * boost::unit_test::depends_on(
make_and_verify_dcp (film, { dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE, dcp::VerificationNote::Code::MISSING_FFMC_IN_FEATURE });
boost::filesystem::path const video =
- "build/test/recover_test_2d_encrypted/video/185_2K_02543352c540f4b083bff3f1e309d4a9_24_100000000_Eeafcb91c9f5472edf01f3a2404c57258_S_0_1200000.mxf";
+ "build/test/recover_test_2d_encrypted/video/185_2K_02543352c540f4b083bff3f1e309d4a9_24_100000000_Eeafcb91c9f5472edf01f3a2404c57258_S_L21_0_1200000.mxf";
boost::filesystem::copy_file (
video,
diff --git a/test/wscript b/test/wscript
index 949f69019..6c85def54 100644
--- a/test/wscript
+++ b/test/wscript
@@ -57,6 +57,7 @@ def build(bld):
audio_processor_delay_test.cc
audio_ring_buffers_test.cc
butler_test.cc
+ bv20_test.cc
cinema_sound_processor_test.cc
client_server_test.cc
closed_caption_test.cc