30 lines
644 B
C
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;
|
|
}
|