7#ifndef AUDIOTOOLS_METADATA_ICY_ASCII_ONLY
8#define AUDIOTOOLS_METADATA_ICY_ASCII_ONLY true
29 enum Status { ProcessData, ProcessMetaData, SetupSize };
52 int bufferLen = 1024) {
73 for (
size_t j = 0;
j < len;
j++) {
116 LOGI(
"Unexpected metaDataLen -> processed as data");
119 LOGI(
"Metadata found");
129 case ProcessMetaData:
134 LOGI(
"Metadata ended")
178 for (
int j = 0;
j < l;
j++) {
182 LOGD(
"Invalid UTF-8 continuation byte: 0x%02X at pos %d",
ch,
j);
189 if (
ch !=
'\n' &&
ch !=
'\r' &&
ch !=
'\t' &&
ch != 0 && (
ch < 32 ||
ch == 127)) {
190 LOGD(
"Non-printable ASCII character: 0x%02X at pos %d",
ch,
j);
194 if (
ch >= 0xc2 &&
ch <= 0xdf)
196 else if (
ch >= 0xe0 &&
ch <= 0xef)
198 else if (
ch >= 0xf0 &&
ch <= 0xf4)
201 LOGD(
"Invalid UTF-8 lead byte: 0x%02X at pos %d",
ch,
j);
205 LOGD(
"Non-ASCII character not allowed: 0x%02X at pos %d",
ch,
j);
211 LOGD(
"Incomplete UTF-8 sequence at end of string");
233 int start = meta.
indexOf(
"StreamTitle=");
238 if (start >= 0 &&
end > start) {
249 LOGW(
"Unexpected Data: corrupted metadata block rejected (len=%d)", len);
289 LOGE(
"icy-metaint not defined");
301 if (callback ==
nullptr) {
302 LOGW(
"callback not defined")
304 if (
p_url ==
nullptr) {
305 LOGW(
"http not defined")
308 if (callback !=
nullptr &&
p_url !=
nullptr) {
316 if (!
descr.isEmpty()) {
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30