for (int j = 0; j < gets_per_frame; ++j) {
Butler::Error e;
- auto v = _butler->get_video (true, &e);
+ auto v = _butler->get_video (Butler::Behaviour::BLOCKING, &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()));
+ }
}
}
waker.nudge ();
- _butler->get_audio (interleaved, audio_frames);
+ _butler->get_audio (Butler::Behaviour::BLOCKING, interleaved, audio_frames);
/* XXX: inefficient; butler interleaves and we deinterleave again */
float* p = interleaved;
for (int j = 0; j < audio_frames; ++j) {