X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Faudio_decoder_stream.cc;h=fdcebbc9f0648a24a22cc8770a56c1bf52e512b6;hb=67ca663154688920d619d8ac0f0b6bf71d7c4862;hp=f1d9839f81950777512c1ddf53db0f44fcaf8d43;hpb=bdbfd6b08856a445446bfd845f1c43109d184250;p=dcpomatic.git diff --git a/src/lib/audio_decoder_stream.cc b/src/lib/audio_decoder_stream.cc index f1d9839f8..fdcebbc9f 100644 --- a/src/lib/audio_decoder_stream.cc +++ b/src/lib/audio_decoder_stream.cc @@ -23,6 +23,8 @@ #include "audio_decoder.h" #include "resampler.h" #include "util.h" +#include "film.h" +#include "log.h" #include #include "i18n.h" @@ -58,8 +60,10 @@ AudioDecoderStream::get (Frame frame, Frame length, bool accurate) { shared_ptr dec; + _content->film()->log()->log (String::compose ("ADS has request for %1 %2", frame, length), Log::TYPE_DEBUG_DECODE); + Frame const end = frame + length - 1; - + if (frame < _decoded.frame || end > (_decoded.frame + length * 4)) { /* Either we have no decoded data, or what we do have is a long way from what we want: seek */ seek (ContentTime::from_frames (frame, _content->resampled_audio_frame_rate()), accurate); @@ -69,7 +73,7 @@ AudioDecoderStream::get (Frame frame, Frame length, bool accurate) (to be set up shortly) */ Frame decoded_offset = 0; - + /* Now enough pass() calls will either: * (a) give us what we want, or * (b) hit the end of the decoder. @@ -84,7 +88,7 @@ AudioDecoderStream::get (Frame frame, Frame length, bool accurate) !_decoder->pass () ) {} - + decoded_offset = frame - _decoded.frame; } else { while ( @@ -92,7 +96,7 @@ AudioDecoderStream::get (Frame frame, Frame length, bool accurate) !_decoder->pass () ) {} - + /* Use decoded_offset of 0, as we don't really care what frames we return */ } @@ -130,6 +134,8 @@ AudioDecoderStream::get (Frame frame, Frame length, bool accurate) void AudioDecoderStream::audio (shared_ptr data, ContentTime time) { + _content->film()->log()->log (String::compose ("ADS receives %1 %2", time, data->frames ()), Log::TYPE_DEBUG_DECODE); + if (_resampler) { data = _resampler->run (data); } @@ -183,7 +189,7 @@ AudioDecoderStream::add (shared_ptr data) */ return; } - + /* Resize _decoded to fit the new data */ int new_size = 0; if (_decoded.audio->frames() == 0) { @@ -194,7 +200,7 @@ AudioDecoderStream::add (shared_ptr data) /* Otherwise we need to extend _decoded to include the new stuff */ new_size = _position.get() + data->frames() - _decoded.frame; } - + _decoded.audio->ensure_size (new_size); _decoded.audio->set_frames (new_size);