Fix the build for older macOS.
[dcpomatic.git] / src / lib / ffmpeg_encoder.cc
index dd773168aab2620a14a89e692d12610b552afb22..81ea3a9dd89f56b0c1fff44cbe9241b3c57f2427 100644 (file)
@@ -176,14 +176,17 @@ FFmpegEncoder::go ()
 
                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()));
+                               }
                        }
                }
 
@@ -201,7 +204,7 @@ FFmpegEncoder::go ()
 
                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) {