diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/butler.cc | 8 | ||||
| -rw-r--r-- | src/lib/butler.h | 4 | ||||
| -rw-r--r-- | 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<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))); } |
