3#include "AudioToolsConfig.h"
4#include "AudioLogger.h"
5#include "AudioTools/CoreAudio/AudioBasic/Collections/Vector.h"
6#include "AudioTools/CoreAudio/AudioTypes.h"
7#include "AudioTools/CoreAudio/BaseStream.h"
8#include "AudioTools/CoreAudio/AudioOutput.h"
31 notifyAudioChange(from);
37 Print *p_print = &out_stream;
44 Print *p_print = &out_stream;
50 virtual void setOutput(
Print &out_stream)
override { p_print = &out_stream; }
54 virtual bool begin(
AudioInfo info)
override {
58 bool begin()
override {
return true; }
59 void end()
override {}
70 LOGE(
"not implemented");
75 Print *p_print =
nullptr;
87 bool isResultPCM()
override {
return true; }
103 virtual const char *
mime() = 0;
114 virtual void setBlockSize(
int blockSize) = 0;
119 virtual int blockSize() = 0;
137 virtual bool begin() {
return true; }
138 virtual void end() {}
147 virtual operator bool() {
return false; }
148 virtual int readStream(Stream &in) {
return 0; };
151 virtual size_t write(
const uint8_t *data,
size_t len) {
152 memset((
void *)data, 0, len);
156 virtual const char *
mime() {
return nullptr; }
179 Print *p_print = &out_stream;
186 Print *p_print = &out_stream;
200 virtual operator bool() = 0;
215 virtual size_t readBytes(uint8_t *data,
size_t len) = 0;
216 Print *p_print =
nullptr;
217 Stream *p_input =
nullptr;
229 int copySize = DEFAULT_BUFFER_SIZE) {
230 p_decoder = &decoder;
231 if (copySize > 0)
resize(copySize);
234 bool begin()
override {
return p_input !=
nullptr && p_decoder->begin(); }
237 void end()
override { p_decoder->end(); }
248 virtual operator bool()
override {
return *p_decoder; }
252 int read = readBytes(&buffer[0], buffer.size());
254 if (read > 0) written = p_decoder->write(&buffer[0], read);
259 void resize(
int bufferSize) { buffer.resize(bufferSize); }
265 size_t readBytes(uint8_t *data,
size_t len)
override {
266 if (p_input ==
nullptr)
return 0;
267 return p_input->readBytes(data, len);