mdeutils/mauplay/id3.c
2025-11-24 20:04:55 +09:00

30 lines
644 B
C

#include "mauplay.h"
unsigned char* id3_findimage(const char* path, size_t* size) {
size_t fsz;
unsigned char* buffer = MDEID3GetTag(path, "APIC", &fsz);
unsigned char* d = NULL;
int i;
for(i = 1; i < fsz; i++) {
if(buffer[i] == 0) break;
}
i++;
/* XXX: 0 is technically Other - am not sure if this should be done... */
if(buffer[i] == 0 || buffer[i] == 3) {
int count = (buffer[0] == 1 || buffer[0] == 2) ? 2 : 1;
i++;
for(; i < fsz; i++) {
if(buffer[i] == 0) count--;
if(count == 0) break;
}
i++;
d = malloc(fsz - i);
memcpy(d, buffer + i, fsz - i);
*size = fsz - i;
}
free(buffer);
return d;
}