From c9d6036eaf3cff693d3661167f84b29be4e4e3ae Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 11 Oct 2021 10:51:43 +0200 Subject: [PATCH] Don't throw an error when the Butler says it is finished (#2097). --- src/lib/ffmpeg_encoder.cc | 15 +++++++++------ test/ffmpeg_encoder_test.cc | 13 ++++++++++++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/lib/ffmpeg_encoder.cc b/src/lib/ffmpeg_encoder.cc index e3a37677b..f8309048c 100644 --- a/src/lib/ffmpeg_encoder.cc +++ b/src/lib/ffmpeg_encoder.cc @@ -178,12 +178,15 @@ FFmpegEncoder::go () Butler::Error e; auto v = _butler->get_video (true, &e); _butler->rethrow (); - if (!v.first) { - throw DecodeError(String::compose("Error during decoding: %1", e.summary())); - } - auto fe = encoder->get (v.first->eyes()); - if (fe) { - fe->video(v.first, v.second - reel->from); + if (v.first) { + auto fe = encoder->get (v.first->eyes()); + if (fe) { + fe->video(v.first, v.second - reel->from); + } + } else { + if (e.code != Butler::Error::Code::FINISHED) { + throw DecodeError(String::compose("Error during decoding: %1", e.summary())); + } } } diff --git a/test/ffmpeg_encoder_test.cc b/test/ffmpeg_encoder_test.cc index d0bce0356..3d6276fcb 100644 --- a/test/ffmpeg_encoder_test.cc +++ b/test/ffmpeg_encoder_test.cc @@ -40,7 +40,6 @@ using std::string; using std::shared_ptr; using std::make_shared; -using boost::optional; using namespace dcpomatic; @@ -455,3 +454,15 @@ BOOST_AUTO_TEST_CASE (ffmpeg_encoder_h264_with_reels) check ("build/test/ffmpeg_encoder_h264_with_reels_reel2.mov"); } + +/** Regression test for "Error during decoding: Butler finished" (#2097) */ +BOOST_AUTO_TEST_CASE (ffmpeg_encoder_prores_regression_1) +{ + auto content = content_factory(TestPaths::private_data() / "arrietty_JP-EN.mkv").front(); + auto film = new_test_film2 ("ffmpeg_encoder_prores_regression_1", { content }); + + auto job = make_shared(film); + FFmpegEncoder encoder (film, job, "build/test/ffmpeg_encoder_prores_regression_1.mov", ExportFormat::PRORES, false, true, false, 23); + encoder.go (); +} + -- 2.30.2