@@ -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