From cfa822570e6f2d2d09fe1c36a81b224ded07c6b6 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 5 Jul 2020 22:10:03 +0200 Subject: [PATCH] Improve butler error reporting during export. --- src/lib/butler.cc | 8 +++++++- src/lib/butler.h | 4 +++- src/lib/ffmpeg_encoder.cc | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/butler.cc b/src/lib/butler.cc index 20180330e..595d98809 100644 --- a/src/lib/butler.cc +++ b/src/lib/butler.cc @@ -238,7 +238,13 @@ Butler::get_video (bool blocking, Error* e) if (_video.empty()) { if (e) { - *e = NONE; + if (_died) { + *e = DIED; + } else if (_finished) { + *e = FINISHED; + } else { + *e = NONE; + } } return make_pair(shared_ptr(), DCPTime()); } diff --git a/src/lib/butler.h b/src/lib/butler.h index ce3c9ae48..6263d6143 100644 --- a/src/lib/butler.h +++ b/src/lib/butler.h @@ -51,7 +51,9 @@ public: enum Error { NONE, - AGAIN + AGAIN, + DIED, + FINISHED }; std::pair, dcpomatic::DCPTime> get_video (bool blocking, Error* e = 0); diff --git a/src/lib/ffmpeg_encoder.cc b/src/lib/ffmpeg_encoder.cc index ee49a0646..15e27e633 100644 --- a/src/lib/ffmpeg_encoder.cc +++ b/src/lib/ffmpeg_encoder.cc @@ -166,6 +166,7 @@ FFmpegEncoder::go () for (int j = 0; j < gets_per_frame; ++j) { Butler::Error e; pair, DCPTime> v = _butler->get_video (true, &e); + _butler->rethrow (); if (!v.first) { throw ProgrammingError(__FILE__, __LINE__, String::compose("butler returned no video; error was %1", static_cast(e))); } -- 2.30.2