diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-11-16 21:42:31 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-11-16 21:42:31 +0000 |
| commit | 40532d61ea4909b3f8b12dd7024de217dbdfec6d (patch) | |
| tree | 4ea11f4a29a1a0fc41489eef4665a8df4c5ffa02 /src/lib/transcoder.cc | |
| parent | 1eb73c1d864125e209d78b992ba2c6e278e42b74 (diff) | |
Various external audio fixes.
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; } } |
