projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Split audio; builds.
[dcpomatic.git]
/
src
/
lib
/
audio_decoder_stream.cc
diff --git
a/src/lib/audio_decoder_stream.cc
b/src/lib/audio_decoder_stream.cc
index 36274b502692e3d95bbd76e7a8162d7968a287b3..7037d9f47c21eb6a99bd8eb0fbbcc52df9bdaf24 100644
(file)
--- a/
src/lib/audio_decoder_stream.cc
+++ b/
src/lib/audio_decoder_stream.cc
@@
-25,6
+25,8
@@
#include "util.h"
#include "film.h"
#include "log.h"
#include "util.h"
#include "film.h"
#include "log.h"
+#include "audio_content.h"
+#include "compose.hpp"
#include <iostream>
#include "i18n.h"
#include <iostream>
#include "i18n.h"
@@
-37,13
+39,14
@@
using std::max;
using boost::optional;
using boost::shared_ptr;
using boost::optional;
using boost::shared_ptr;
-AudioDecoderStream::AudioDecoderStream (shared_ptr<const AudioContent> content, AudioStreamPtr stream, AudioDecoder* decoder)
+AudioDecoderStream::AudioDecoderStream (shared_ptr<const AudioContent> content, AudioStreamPtr stream, AudioDecoder* decoder
, shared_ptr<Log> log
)
: _content (content)
, _stream (stream)
, _decoder (decoder)
: _content (content)
, _stream (stream)
, _decoder (decoder)
+ , _log (log)
{
{
- if (content->resampled_audio_frame_rate() != _stream->frame_rate()) {
- _resampler.reset (new Resampler (_stream->frame_rate(), content->resampled_audio_frame_rate(), _stream->channels ()));
+ if (content->resampled_audio_frame_rate() != _stream->frame_rate()
&& _stream->channels() > 0
) {
+ _resampler.reset (new Resampler (_stream->frame_rate(), content->resampled_audio_frame_rate(), _stream->channels ()
, decoder->fast ()
));
}
reset_decoded ();
}
reset_decoded ();
@@
-60,7
+63,7
@@
AudioDecoderStream::get (Frame frame, Frame length, bool accurate)
{
shared_ptr<ContentAudio> dec;
{
shared_ptr<ContentAudio> dec;
- _
content->film()->log()->log (String::compose ("ADS has request for %1 %2", frame, length), Log
::TYPE_DEBUG_DECODE);
+ _
log->log (String::compose ("-> ADS has request for %1 %2", frame, length), LogEntry
::TYPE_DEBUG_DECODE);
Frame const end = frame + length - 1;
Frame const end = frame + length - 1;
@@
-85,15
+88,20
@@
AudioDecoderStream::get (Frame frame, Frame length, bool accurate)
/* Keep stuffing data into _decoded until we have enough data, or the subclass does not want to give us any more */
while (
(_decoded.frame > frame || (_decoded.frame + _decoded.audio->frames()) < end) &&
/* Keep stuffing data into _decoded until we have enough data, or the subclass does not want to give us any more */
while (
(_decoded.frame > frame || (_decoded.frame + _decoded.audio->frames()) < end) &&
- !_decoder->pass ()
+ !_decoder->pass (
Decoder::PASS_REASON_AUDIO, accurate
)
)
{}
decoded_offset = frame - _decoded.frame;
)
{}
decoded_offset = frame - _decoded.frame;
+
+ _log->log (
+ String::compose ("Accurate ADS::get has offset %1 from request %2 and available %3", decoded_offset, frame, _decoded.frame),
+ LogEntry::TYPE_DEBUG_DECODE
+ );
} else {
while (
_decoded.audio->frames() < length &&
} else {
while (
_decoded.audio->frames() < length &&
- !_decoder->pass ()
+ !_decoder->pass (
Decoder::PASS_REASON_AUDIO, accurate
)
)
{}
)
{}
@@
-134,7
+142,7
@@
AudioDecoderStream::get (Frame frame, Frame length, bool accurate)
void
AudioDecoderStream::audio (shared_ptr<const AudioBuffers> data, ContentTime time)
{
void
AudioDecoderStream::audio (shared_ptr<const AudioBuffers> data, ContentTime time)
{
- _
content->film()->log()->log (String::compose ("ADS receives %1 %2", time, data->frames ()), Log
::TYPE_DEBUG_DECODE);
+ _
log->log (String::compose ("ADS receives %1 %2", time, data->frames ()), LogEntry
::TYPE_DEBUG_DECODE);
if (_resampler) {
data = _resampler->run (data);
if (_resampler) {
data = _resampler->run (data);