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 {}
69 Print *p_print =
nullptr;
81 bool isResultPCM()
override {
return true; }
97 virtual const char *
mime() = 0;
108 virtual void setBlockSize(
int blockSize) = 0;
113 virtual int blockSize() = 0;
131 virtual bool begin() {
return true; }
132 virtual void end() {}
141 virtual operator bool() {
return false; }
142 virtual int readStream(Stream &in) {
return 0; };
145 virtual size_t write(
const uint8_t *data,
size_t len) {
146 memset((
void *)data, 0, len);
150 virtual const char *
mime() {
return nullptr; }
173 Print *p_print = &out_stream;
180 Print *p_print = &out_stream;
194 virtual operator bool() = 0;
200 virtual size_t readBytes(uint8_t *data,
size_t len) = 0;
201 Print *p_print =
nullptr;
202 Stream *p_input =
nullptr;
214 int copySize = DEFAULT_BUFFER_SIZE) {
215 p_decoder = &decoder;
216 if (copySize > 0)
resize(copySize);
219 bool begin()
override {
return p_input !=
nullptr && p_decoder->begin(); }
222 void end()
override { p_decoder->end(); }
233 virtual operator bool() {
return *p_decoder; }
237 int read = readBytes(&buffer[0], buffer.size());
239 if (read > 0) written = p_decoder->write(&buffer[0], read);
244 void resize(
int bufferSize) { buffer.resize(bufferSize); }
250 size_t readBytes(uint8_t *data,
size_t len)
override {
251 if (p_input ==
nullptr)
return 0;
252 return p_input->readBytes(data, len);