You can now also play MP3s streamed from the internet. (Very rough & wonky code. More or less proof-of-concept right now.)

This commit is contained in:
2019-11-20 06:13:15 +01:00
parent 94489618ca
commit b989784fb9
5 changed files with 96 additions and 6 deletions

View File

@ -3,19 +3,21 @@
#include <Arduino.h>
#include <SD.h>
#include "config.h"
#include <HTTPClient.h>
class DataSource {
private:
public:
DataSource() {};
~DataSource() {};
virtual ~DataSource() {};
virtual size_t read(uint8_t* buf, size_t len) = 0;
virtual uint8_t read() = 0;
virtual size_t position() = 0;
virtual void seek(size_t position) = 0;
virtual size_t size() = 0;
virtual void close() = 0;
virtual void skip_id3_tag();
virtual void skip_id3_tag() {};
virtual bool usable() = 0;
};
class SDDataSource : public DataSource {
@ -31,4 +33,23 @@ public:
size_t size();
void close();
void skip_id3_tag();
bool usable();
};
class HTTPSDataSource : public DataSource {
private:
WiFiClient* _stream = NULL;
HTTPClient* _http = NULL;
uint32_t _length;
uint32_t _position;
public:
HTTPSDataSource(String url, uint32_t offset=0);
~HTTPSDataSource();
size_t read(uint8_t* buf, size_t len);
uint8_t read();
size_t position();
void seek(size_t position);
size_t size();
void close();
bool usable();
};

View File

@ -11,7 +11,7 @@ private:
bool _shuffled = false;
std::vector<String> _files;
public:
Playlist(String path);
Playlist(String path, bool is_url=false);
void start();
bool has_track_next();
bool has_track_prev();