diff options
Diffstat (limited to 'src/lib/transcoder.cc')
| -rw-r--r-- | src/lib/transcoder.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc index d54022bbc..2ee96790a 100644 --- a/src/lib/transcoder.cc +++ b/src/lib/transcoder.cc @@ -38,6 +38,7 @@ #include "audio_decoder.h" using std::string; +using std::cout; using boost::shared_ptr; using boost::dynamic_pointer_cast; @@ -88,15 +89,21 @@ Transcoder::go () { _encoder->process_begin (); try { + bool done[2] = { false, false }; + while (1) { - bool const v = _decoders.first->pass (); + if (!done[0]) { + done[0] = _decoders.first->pass (); + _decoders.first->set_progress (); + } - bool a = true; - if (dynamic_pointer_cast<Decoder> (_decoders.second) != dynamic_pointer_cast<Decoder> (_decoders.first)) { - a = _decoders.second->pass (); + if (!done[1] && dynamic_pointer_cast<Decoder> (_decoders.second) != dynamic_pointer_cast<Decoder> (_decoders.first)) { + done[1] = _decoders.second->pass (); + } else { + done[1] = true; } - if (v && a) { + if (done[0] && done[1]) { break; } } |
