diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-10-15 22:26:47 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-10-16 10:12:09 +0200 |
| commit | 0e896f9f37db001f34c876ed5fc50e874f96ae09 (patch) | |
| tree | 29e97f6e86204885fa1a1e55f2726e878313296c /src/lib | |
| parent | b5d3e588919ba89e4dca9cf302b3b29cda5f136c (diff) | |
Use an enum instead of a bool to specify blocking/non-blocking.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/butler.cc | 6 | ||||
| -rw-r--r-- | src/lib/butler.h | 7 | ||||
| -rw-r--r-- | src/lib/ffmpeg_encoder.cc | 2 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/butler.cc b/src/lib/butler.cc index 6f7349b5f..f19e1e080 100644 --- a/src/lib/butler.cc +++ b/src/lib/butler.cc @@ -238,12 +238,12 @@ try } -/** @param blocking true if we should block until video is available. If blocking is false +/** @param behaviour BLOCKING if we should block until video is available. If behaviour is NON_BLOCKING * and no video is immediately available the method will return a 0 PlayerVideo and the error AGAIN. * @param e if non-0 this is filled with an error code (if an error occurs) or is untouched if no error occurs. */ pair<shared_ptr<PlayerVideo>, DCPTime> -Butler::get_video (bool blocking, Error* e) +Butler::get_video (Behaviour behaviour, Error* e) { boost::mutex::scoped_lock lm (_mutex); @@ -260,7 +260,7 @@ Butler::get_video (bool blocking, Error* e) } }; - if (_video.empty() && (_finished || _died || (_suspended && !blocking))) { + if (_video.empty() && (_finished || _died || (_suspended && behaviour == Behaviour::NON_BLOCKING))) { setup_error (e, Error::Code::AGAIN); return make_pair(shared_ptr<PlayerVideo>(), DCPTime()); } diff --git a/src/lib/butler.h b/src/lib/butler.h index 498af8d86..529b7383d 100644 --- a/src/lib/butler.h +++ b/src/lib/butler.h @@ -72,7 +72,12 @@ public: std::string summary () const; }; - std::pair<std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime> get_video (bool blocking, Error* e = 0); + enum class Behaviour { + BLOCKING, + NON_BLOCKING + }; + + std::pair<std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime> get_video (Behaviour behaviour, Error* e = nullptr); boost::optional<dcpomatic::DCPTime> get_audio (float* out, Frame frames); boost::optional<TextRingBuffers::Data> get_closed_caption (); diff --git a/src/lib/ffmpeg_encoder.cc b/src/lib/ffmpeg_encoder.cc index 5db3e31a6..e1081f518 100644 --- a/src/lib/ffmpeg_encoder.cc +++ b/src/lib/ffmpeg_encoder.cc @@ -176,7 +176,7 @@ 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) { auto fe = encoder->get (v.first->eyes()); |
