Emit no audio from DCPs if none is mapped
[dcpomatic.git] / test / threed_test.cc
index a2e116f9a7aa1802d396cfe05665e0b9665107e1..78d74add4f29da42bc292dac8afeda997a207512 100644 (file)
@@ -135,7 +135,13 @@ BOOST_AUTO_TEST_CASE (threed_test4)
        R->set_trim_end (dcpomatic::ContentTime::from_seconds(22));
 
        film->set_three_d (true);
-       make_and_verify_dcp (film, {dcp::VerificationNote::Code::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D});
+       make_and_verify_dcp(
+               film,
+               {dcp::VerificationNote::Code::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D},
+               true,
+               /* XXX: Clairmeta error about invalid edit rate 24 for 4K 3D */
+               false
+               );
 }
 
 
@@ -168,6 +174,7 @@ BOOST_AUTO_TEST_CASE (threed_test6)
        film->examine_and_add_content (L);
        auto R = make_shared<FFmpegContent>("test/data/3dR.mp4");
        film->examine_and_add_content (R);
+       film->set_audio_channels(16);
        BOOST_REQUIRE (!wait_for_jobs());
 
        L->video->set_frame_type (VideoFrameType::THREE_D_LEFT);
@@ -318,7 +325,7 @@ BOOST_AUTO_TEST_CASE(threed_passthrough_test, * boost::unit_test::depends_on("th
 
        std::vector<directory_entry> matches;
        std::copy_if(recursive_directory_iterator(*input_dcp), recursive_directory_iterator(), std::back_inserter(matches), [](directory_entry const& entry) {
-               return boost::algorithm::starts_with(entry.path().leaf().string(), "j2c");
+               return boost::algorithm::starts_with(entry.path().filename().string(), "j2c");
        });
 
        BOOST_REQUIRE_EQUAL(matches.size(), 1U);
@@ -339,3 +346,22 @@ BOOST_AUTO_TEST_CASE(threed_passthrough_test, * boost::unit_test::depends_on("th
        }
 }
 
+/* #2476 was a writer error when 3D picture padding is needed */
+BOOST_AUTO_TEST_CASE(threed_test_when_padding_needed)
+{
+       auto left = content_factory("test/data/flat_red.png").front();
+       auto right = content_factory("test/data/flat_red.png").front();
+       auto sound = content_factory("test/data/sine_440.wav").front();
+       auto film = new_test_film2("threed_test_when_padding_needed", { left, right, sound });
+
+       left->video->set_frame_type(VideoFrameType::THREE_D_LEFT);
+       left->set_position(film, dcpomatic::DCPTime());
+       left->video->set_length(23);
+       right->video->set_frame_type(VideoFrameType::THREE_D_RIGHT);
+       right->set_position(film, dcpomatic::DCPTime());
+       right->video->set_frame_type(VideoFrameType::THREE_D_RIGHT);
+       right->video->set_length(23);
+       film->set_three_d(true);
+
+       make_and_verify_dcp(film);
+}