#ifndef _MP3_H #define _MP3_H #include #include #include "AudioFileSourceICYStream.h" #include "AudioFileSourceBuffer.h" #include "AudioGeneratorMP3.h" #include "AudioOutputI2S.h" void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string); void StatusCallback(void *cbData, int code, const char *string); extern char titleStr[]; class MP3 { public: MP3(); bool begin(void); const char *URL="http://streaming.shoutcast.com/80sPlanet?lang=en-US"; //const char *URL="http://swr-swr1-bw.cast.addradio.de/swr/swr1/bw/mp3/64/stream.mp3"; void stop(void); void start(void); bool playing = false; private: AudioGeneratorMP3 *mp3; AudioFileSourceICYStream *file; AudioFileSourceBuffer *buff; AudioOutputI2S *out; TaskHandle_t audioTaskHandle; void mp3_decoder_task(void*); static void cTaskWrapper(void*); static constexpr int preallocateBufferSize = 5*1024; static constexpr int preallocateCodecSize = 29192; // MP3 codec max mem needed void *preallocateBuffer = NULL; void *preallocateCodec = NULL; int lastms = 0; }; #endif /* _MP3_H */