diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-04-04 14:12:01 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-04-19 10:29:40 +1000 |
| commit | 7a54ff0df9c18b662e5bdc11ac2e26ff052cfa4d (patch) | |
| tree | a2f456c3c6e41faef168fb39f310df74ac46f4af /src/audio/audio_decoder.cpp | |
| parent | 40a9734b04c48339cfdf6ed9043aa3f6f0dda62d (diff) | |
| download | tangara-fw-7a54ff0df9c18b662e5bdc11ac2e26ff052cfa4d.tar.gz | |
WIP track down new pipeline memory issues
Diffstat (limited to 'src/audio/audio_decoder.cpp')
| -rw-r--r-- | src/audio/audio_decoder.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp index b829f959..faaadb3e 100644 --- a/src/audio/audio_decoder.cpp +++ b/src/audio/audio_decoder.cpp @@ -66,20 +66,13 @@ auto AudioDecoder::ProcessStreamInfo(const StreamInfo& info) -> bool { auto AudioDecoder::Process(const std::vector<InputStream>& inputs, OutputStream* output) -> void { - // We don't really expect multiple inputs, so just pick the first that - // contains data. If none of them contain data, then we can still flush - // pending samples. - auto input = std::find_if( - inputs.begin(), inputs.end(), - [](const InputStream& s) { return s.data().size_bytes() > 0; }); - if (input == inputs.end()) { - input = inputs.begin(); - } - + auto input = inputs.begin(); const StreamInfo& info = input->info(); - if (std::holds_alternative<std::monostate>(info.format)) { + if (std::holds_alternative<std::monostate>(info.format) || info.bytes_in_stream == 0) { + output->prepare({}); return; } + if (!current_input_format_ || *current_input_format_ != info.format) { // The input stream has changed! Immediately throw everything away and // start from scratch. @@ -133,7 +126,8 @@ auto AudioDecoder::Process(const std::vector<InputStream>& inputs, } } - input->consume(current_codec_->GetInputPosition()); + ESP_LOGI(kTag, "decoded %u bytes", current_codec_->GetInputPosition() - 1); + input->consume(current_codec_->GetInputPosition() - 1); } } // namespace audio |
