From 26b44df454396b8f2e027d0617ad79a45e22db9c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 3 Jul 2025 13:28:57 +0200 Subject: Failing test --- test/threed_test.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) 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( + 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 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); +} + -- cgit v1.2.3