X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdecoder.cc;h=0901f73b020027cc733ab325c2085f494db65d45;hb=1f8b45c7fd49714628009f5ed2161fbaa2b4d729;hp=4e136d619e075b3d49f52e147365ded667cd3d15;hpb=d2926ea8574330b9c7f4efa4241843cf052652b8;p=dcpomatic.git diff --git a/src/lib/decoder.cc b/src/lib/decoder.cc index 4e136d619..0901f73b0 100644 --- a/src/lib/decoder.cc +++ b/src/lib/decoder.cc @@ -21,7 +21,6 @@ * @brief Parent class for decoders of content. */ -#include "film.h" #include "decoder.h" #include "decoded.h" @@ -30,16 +29,22 @@ using std::cout; using boost::shared_ptr; -/** @param f Film. - * @param o Decode options. +/** @param o Decode options. */ -Decoder::Decoder (shared_ptr f) - : _film (f) - , _done (false) +Decoder::Decoder () + : _done (false) { } +struct DecodedSorter +{ + bool operator() (shared_ptr a, shared_ptr b) + { + return a->dcp_time < b->dcp_time; + } +}; + shared_ptr Decoder::peek () { @@ -47,10 +52,11 @@ Decoder::peek () _done = pass (); } - if (_done) { + if (_done && _pending.empty ()) { return shared_ptr (); } + _pending.sort (DecodedSorter ()); return _pending.front (); }