44 virtual const char*
mime() = 0;
104 for (
int j = 0;
j <
checks.size();
j++) {
106 if (mime_str.equals(
l_check.mime)) {
129 return start[0] == 0xFF &&
130 (start[1] == 0xF0 || start[1] == 0xF1 || start[1] == 0xF9);
135 if (
memcmp(start + 4,
"ftypM4A", 7) == 0) {
146 if (aac.
isValid(start + pos, len - pos)) {
153 return memcmp(start,
"ID3", 3) == 0 ||
154 (start[0] == 0xFF && ((start[1] & 0xE0) == 0xE0));
159 return mp3.
isValid(start, len);
163 if (
memcmp(start,
"RIFF", 4) != 0)
return false;
165 header.
write(start, len);
166 if (!header.
parse())
return false;
174 return memcmp(start,
"RIFF", 4) == 0;
178 return memcmp(start,
"OggS", 4) == 0;
182 if (len < 4)
return false;
185 if (
memcmp(start,
"fLaC", 4) == 0) {
194 if (len >= 32 &&
memcmp(start,
"OggS", 4) == 0) {
197 for (
size_t i = 4; i < len - 4 && i < 64; i++) {
198 if (
memcmp(start + i,
"FLAC", 4) == 0) {
202 if (i < len - 5 && start[i] == 0x7F &&
203 memcmp(start + i + 1,
"FLAC", 4) == 0) {
226 if (len >= 32 &&
memcmp(start,
"OggS", 4) == 0) {
229 for (
size_t i = 4; i < len - 8 && i < 80; i++) {
230 if (
memcmp(start + i,
"OpusHead", 8) == 0) {
253 if (len >= 32 &&
memcmp(start,
"OggS", 4) == 0) {
256 for (
size_t i = 4; i < len - 7 && i < 80; i++) {
257 if (start[i] == 0x01 &&
memcmp(start + i + 1,
"vorbis", 6) == 0) {
268 if (len < 189)
return start[0] == 0x47;
270 return start[0] == 0x47 && start[188] == 0x47;
275 return memcmp(start,
"PSID", 4) == 0 ||
memcmp(start,
"RSID", 4) == 0;
279 if (len < 12)
return false;
282 if (
memcmp(header,
"ID3", 3) == 0)
return false;
285 if (
memcmp(header + 4,
"mdat", 4) != 0)
return true;
288 if (
memcmp(header + 4,
"ftyp", 4) != 0)
return false;
291 if (
memcmp(header + 8,
"M4A ", 4) == 0 ||
292 memcmp(header + 8,
"mp42", 4) == 0 ||
293 memcmp(header + 8,
"isom", 4) == 0)
305 for (
auto& check :
checks) {
307 check.is_active = active;
308 LOGI(
"MimeDetector for %s: %s", check.mime,
309 check.is_active ?
"active" :
"inactive");
353 for (
int j = 0;
j <
checks.size();
j++) {
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28