arduino-audio-tools
Loading...
Searching...
No Matches
MetaData.h
Go to the documentation of this file.
1#pragma once
2#include <stdlib.h>
3#include "AudioToolsConfig.h"
8#include "MetaDataICY.h"
9#include "MetaDataID3.h"
10
17namespace audio_tools {
18
28 public:
29
30 MetaDataOutput() = default;
33
35 end();
36 if (meta!=nullptr) delete meta;
37 }
38
40 virtual void setCallback(void (*fn)(MetaDataType info, const char* str, int len)) {
41 TRACED();
42 callback = fn;
43 }
44
46 virtual void begin(AbstractURLStream &url) {
47 TRACED();
49 int metaInt = icySetup.setup(url);
50 icySetup.executeCallback(callback);
51 begin(metaInt);
52 }
53
55 virtual void begin(int iceMetaint=0) {
56 LOGD("%s: %d", LOG_METHOD, iceMetaint);
57 if (callback!=nullptr){
58 if (meta == nullptr) {
59#if defined(USE_URL_ARDUINO)
60 meta = (iceMetaint > 0) ? new MetaDataICY() : (AbstractMetaData *) new MetaDataID3();
61#else
62 meta = new MetaDataID3();
63#endif
64 }
67 meta->begin();
68 } else {
69 LOGI("callback not defined -> not Metadata processing")
70 }
71 }
72
73 virtual void end() {
74 if (callback!=nullptr && meta != nullptr) {
75 TRACED();
76 meta->end();
77 }
78 }
79
81 virtual size_t write(const uint8_t *data, size_t len){
82 LOGD("%s: %d", LOG_METHOD, (int)len);
83
84 if (callback!=nullptr){
85 if (meta!=nullptr){
86 //CHECK_MEMORY();
87 if (meta->write(data, len)!=len){
88 LOGE("Did not write all data");
89 }
90 //CHECK_MEMORY();
91 } else {
92 LOGW("meta is null");
93 }
94 }
95 return len;
96 }
97
98 virtual size_t write(uint8_t c) {
99 LOGE("Not Supported");
100 return 0;
101 }
102
103 protected:
105 void (*callback)(MetaDataType info, const char* str, int len)=nullptr;
106
107};
108
109
110}
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define LOG_METHOD
Definition AudioToolsConfig.h:64
Common Metadata methods.
Definition AbstractMetaData.h:34
virtual void setIcyMetaInt(int value)
Definition AbstractMetaData.h:47
virtual size_t write(const uint8_t *data, size_t len)=0
virtual void setCallback(void(*fn)(MetaDataType info, const char *str, int len))=0
Abstract Base class for all URLStream implementations.
Definition AbstractURLStream.h:17
Abstract Audio Ouptut class.
Definition AudioOutput.h:25
virtual bool begin()
Definition AudioOutput.h:78
Resolve icy-metaint from HttpRequest and execute metadata callbacks.
Definition MetaDataICY.h:278
int setup(AbstractURLStream &url)
Definition MetaDataICY.h:282
Icecast/Shoutcast Metadata Handling. Metadata class which splits the data into audio and metadata....
Definition MetaDataICY.h:28
Simple ID3 Meta Data Parser which supports ID3 V1 and V2 and implements the Stream interface....
Definition MetaDataID3.h:569
ID3 and Icecast/Shoutcast metadata output support. Just write the audio data to an object of this cla...
Definition MetaData.h:27
~MetaDataOutput()
Definition MetaData.h:34
virtual void begin(AbstractURLStream &url)
Starts the processing - iceMetaint is determined from the HttpRequest.
Definition MetaData.h:46
void(* callback)(MetaDataType info, const char *str, int len)
Definition MetaData.h:105
virtual size_t write(const uint8_t *data, size_t len)
Provide tha audio data to the API to parse for Meta Data.
Definition MetaData.h:81
virtual void begin(int iceMetaint=0)
Starts the processing - if iceMetaint is defined we use icecast.
Definition MetaData.h:55
virtual void setCallback(void(*fn)(MetaDataType info, const char *str, int len))
Defines the callback.
Definition MetaData.h:40
AbstractMetaData * meta
Definition MetaData.h:104
virtual size_t write(uint8_t c)
Definition MetaData.h:98
MetaDataOutput & operator=(MetaDataOutput const &)=delete
virtual void end()
Definition MetaData.h:73
MetaDataOutput(MetaDataOutput const &)=delete
MetaDataType
Type of meta info.
Definition AbstractMetaData.h:11
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512