summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-07-03 13:28:57 +0200
committerCarl Hetherington <cth@carlh.net>2025-07-03 13:28:57 +0200
commit26b44df454396b8f2e027d0617ad79a45e22db9c (patch)
treeb001ebddb4dcebbfb923a31388404d37299c11aa
parent596e36a8e023670a3b069f0f49185ee1917e4d37 (diff)
Failing test
-rw-r--r--test/threed_test.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/threed_test.cc b/test/threed_test.cc
index e2a27e8d5..467f82a46 100644
--- a/test/threed_test.cc
+++ b/test/threed_test.cc
@@ -353,3 +353,32 @@ BOOST_AUTO_TEST_CASE(threed_test_when_padding_needed)
make_and_verify_dcp(film);
}
+
+
+/* #3056 was a crash with no video coming out of the player */
+BOOST_AUTO_TEST_CASE(threed_test_crash_with_only_one_eye)
+{
+ auto left = content_factory(TestPaths::private_data() / "arrietty_JP-EN.mkv")[0];
+ auto film = new_test_film("threed_test_crash_with_only_one_eye", { left });
+
+ film->set_three_d(true);
+ left->video->set_frame_type(VideoFrameType::THREE_D_LEFT);
+
+ Player player(film, Image::Alignment::COMPACT, false);
+ int const audio_channels = 2;
+ auto butler = std::make_shared<Butler>(
+ film, player, AudioMapping(), audio_channels, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true, false, Butler::Audio::ENABLED
+ );
+
+ int const audio_frames = 1920;
+ std::vector<float> audio(audio_frames * audio_channels);
+
+ butler->seek(dcpomatic::DCPTime(), true);
+ Butler::Error error;
+ for (auto i = 0; i < 960; ++i) {
+ butler->get_video(Butler::Behaviour::BLOCKING, &error);
+ butler->get_audio(Butler::Behaviour::BLOCKING, audio.data(), audio_frames);
+ }
+ BOOST_REQUIRE(error.code == Butler::Error::Code::NONE);
+}
+