Skip to content

Commit 212996f

Browse files
committed
MetaDataFilterDecoder correction
1 parent e7686e0 commit 212996f

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

src/AudioTools/AudioCodecs/CodecMP3Helix.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#pragma once
22

33
#include "AudioTools/AudioCodecs/AudioCodecsBase.h"
4-
#include "AudioTools/CoreAudio/AudioMetaData/MetaDataFilter.h"
54
#include "MP3DecoderHelix.h"
65

76
namespace audio_tools {

src/AudioTools/CoreAudio/AudioMetaData/MetaData.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "AudioTools/CoreAudio/AudioTypes.h"
55
#include "AudioTools/CoreAudio/AudioStreams.h"
66
#include "AudioTools/CoreAudio/AudioHttp/HttpRequest.h"
7+
#include "AudioTools/CoreAudio/AudioMetaData/MetaDataFilter.h"
78
#include "MetaDataICY.h"
89
#include "MetaDataID3.h"
910

src/AudioTools/CoreAudio/AudioMetaData/MetaDataFilter.h

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class MetaDataFilter : public AudioOutput {
4242

4343
/// Writes the data to the decoder
4444
size_t write(const uint8_t *data, size_t len) override {
45-
TRACEI();
45+
LOGI("write: %u", len);
4646
size_t result = len;
4747
// prevent npe
4848
if ((p_out == nullptr && p_writer == nullptr) || (data == nullptr) ||
@@ -74,9 +74,16 @@ class MetaDataFilter : public AudioOutput {
7474
}
7575

7676
// write partial data
77-
if (tmp.available() > 0) {
78-
if (p_out) p_out->write(tmp.data(), tmp.available());
79-
if (p_writer) p_writer->write(tmp.data(), tmp.available());
77+
size_t to_write = tmp.available();
78+
if (to_write > 0) {
79+
LOGI("output: %d", to_write);
80+
size_t written = 0;
81+
if (p_out) written = p_out->write(tmp.data(), to_write);
82+
if (p_writer) written = p_writer->write(tmp.data(), to_write);
83+
assert(to_write == to_write);
84+
metadata_range.clear();
85+
} else {
86+
LOGI("output ignored");
8087
}
8188

8289
// reset for next run
@@ -186,6 +193,7 @@ class MetaDataFilterDecoder : public AudioDecoder {
186193
bool begin() override {
187194
is_active = true;
188195
filter.begin();
196+
p_decoder->begin();
189197
return AudioDecoder::begin();
190198
}
191199

@@ -199,6 +207,19 @@ class MetaDataFilterDecoder : public AudioDecoder {
199207
return filter.write(data, len);
200208
}
201209

210+
void setOutput(AudioStream &out_stream) override {
211+
p_decoder->setOutput(out_stream);
212+
}
213+
214+
virtual void setOutput(AudioOutput &out_stream) override {
215+
p_decoder->setOutput(out_stream);
216+
}
217+
218+
/// Defines where the decoded result is written to
219+
virtual void setOutput(Print &out_stream) override {
220+
p_decoder->setOutput(out_stream);
221+
}
222+
202223
operator bool() override { return p_print != nullptr && is_active; }
203224

204225
protected:

0 commit comments

Comments
 (0)