From 86515d34200fa2a387e48b117eed9b02cabde30d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 5 Mar 2023 14:06:11 +0100 Subject: [PATCH] Fix error when padding is needed in 3D encodes (#2476). --- src/lib/player.cc | 7 ++++++- test/threed_test.cc | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/lib/player.cc b/src/lib/player.cc index 018571fe2..abcefcab5 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -770,7 +770,12 @@ Player::pass () } case BLACK: LOG_DEBUG_PLAYER ("Emit black for gap at %1", to_string(_black.position())); - emit_video (black_player_video_frame(Eyes::BOTH), _black.position()); + if (film->three_d()) { + emit_video(black_player_video_frame(Eyes::LEFT), _black.position()); + emit_video(black_player_video_frame(Eyes::RIGHT), _black.position()); + } else { + emit_video(black_player_video_frame(Eyes::BOTH), _black.position()); + } _black.set_position (_black.position() + one_video_frame()); break; case SILENT: diff --git a/test/threed_test.cc b/test/threed_test.cc index a2e116f9a..87ddd25ae 100644 --- a/test/threed_test.cc +++ b/test/threed_test.cc @@ -339,3 +339,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); +} -- 2.30.2