summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-07-05 22:10:03 +0200
committerCarl Hetherington <cth@carlh.net>2020-07-05 22:10:03 +0200
commitcfa822570e6f2d2d09fe1c36a81b224ded07c6b6 (patch)
treea20fe3a6daca45e960808c25eb2599a9c9d13219
parentf20ec58b5fa6b5ffd49f0af6865290a775077e73 (diff)
Improve butler error reporting during export.v2.15.88
-rw-r--r--src/lib/butler.cc8
-rw-r--r--src/lib/butler.h4
-rw-r--r--src/lib/ffmpeg_encoder.cc1
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<PlayerVideo>(), 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<boost::shared_ptr<PlayerVideo>, 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<shared_ptr<PlayerVideo>, 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<int>(e)));
}