3#include "AudioTools/AudioCodecs/AudioCodecsBase.h"
4#include "AudioTools/CoreAudio/AudioBasic/StrView.h"
5#include "AudioTools/CoreAudio/AudioMetaData/MimeDetector.h"
6#include "AudioTools/CoreAudio/AudioOutput.h"
7#include "AudioTools/CoreAudio/BaseStream.h"
49 virtual void end() = 0;
111 virtual operator bool() = 0;
146 virtual const char*
mime() = 0;
158 virtual size_t readBytes(uint8_t* data,
size_t len) = 0;
162 if (this->info != newInfo) {
163 this->info = newInfo;
164 notifyAudioChange(info);
199 int copySize = DEFAULT_BUFFER_SIZE) {
203 if (copySize > 0)
resize(copySize);
216 if (
p_input ==
nullptr)
return false;
266 bool rc = written > 0;
267 LOGI(
"copy: %s", rc ?
"success" :
"failure");
303 if (
p_input ==
nullptr)
return 0;
304 return p_input->readBytes(data, len);
365 LOGE(
"No output defined");
433 if (
mime !=
nullptr) {
437 LOGE(
"Decoder mime() returned nullptr - cannot add decoder");
451 if (
mime !=
nullptr) {
456 LOGE(
"Decoder mime() returned nullptr - cannot add decoder");
476 int bufferSize = DEFAULT_BUFFER_SIZE) {
477 if (
mime !=
nullptr) {
486 LOGE(
"MIME type is nullptr - cannot add AudioDecoder");
496 virtual operator bool()
override {
512 if (
p_input ==
nullptr)
return false;
545 if (
mime ==
nullptr) {
546 LOGE(
"mime is null");
566 for (
int j = 0; j <
decoders.size(); j++) {
571 LOGI(
"Using Decoder %s for %s", toStr(info.
mime), toStr(
mime));
735 const char* toStr(
const char* str){
736 return str ==
nullptr ?
"" : str;
771 const char*
mime =
nullptr;
779 LOGI(
"mime from source: %s", toStr(
mime));
794 if (bytesRead == 0)
return false;
800 LOGI(
"mime from detector: %s", toStr(
mime));
805 if (
mime !=
nullptr) {
809 LOGE(
"The decoder could not be selected for %s", toStr(
mime));
814 LOGE(
"Could not determine mime type");
835 if (
p_input ==
nullptr)
return 0;
836 return p_input->readBytes(data, len);
936 size_t write(
const uint8_t* data,
size_t len)
override {
939 size_t result =
queue.write((uint8_t*)data, len);
961 operator bool()
override {
return active; }