Index: apps/metadata/mp4.c =================================================================== --- apps/metadata/mp4.c (revision 13681) +++ apps/metadata/mp4.c (working copy) @@ -36,6 +36,7 @@ #define MP4_alac MP4_ID('a', 'l', 'a', 'c') #define MP4_calb MP4_ID(0xa9, 'a', 'l', 'b') #define MP4_cART MP4_ID(0xa9, 'A', 'R', 'T') +#define MP4_aART MP4_ID('a', 'A', 'R', 'T') #define MP4_cnam MP4_ID(0xa9, 'n', 'a', 'm') #define MP4_cwrt MP4_ID(0xa9, 'w', 'r', 't') #define MP4_esds MP4_ID('e', 's', 'd', 's') @@ -367,6 +368,11 @@ &id3->artist); break; + case MP4_aART: + read_mp4_tag_string(fd, size, &buffer, &buffer_left, + &id3->albumartist); + break; + case MP4_calb: read_mp4_tag_string(fd, size, &buffer, &buffer_left, &id3->album); @@ -472,6 +478,11 @@ } while ((size_left > 0) && (errno == 0)); + if (!id3->albumartist && id3->artist) + { + id3->albumartist = id3->artist; + } + return true; } Index: apps/metadata/vorbis.c =================================================================== --- apps/metadata/vorbis.c (revision 13681) +++ apps/metadata/vorbis.c (working copy) @@ -105,6 +105,11 @@ buf_remaining -= len; } + if (!id3->albumartist && id3->artist) + { + id3->albumartist = id3->artist; + } + /* Skip to the end of the block */ if (tag_remaining) { Index: apps/metadata/ape.c =================================================================== --- apps/metadata/ape.c (revision 13681) +++ apps/metadata/ape.c (working copy) @@ -126,6 +126,10 @@ } } } + if (!id3->albumartist && id3->artist) + { + id3->albumartist = id3->artist; + } } return true; Index: firmware/id3.c =================================================================== --- firmware/id3.c (revision 13681) +++ firmware/id3.c (working copy) @@ -1127,6 +1127,11 @@ setid3v1title(fd, entry); } + if (!entry->albumartist && entry->artist) + { + entry->albumartist = entry->artist; + } + if(!entry->length || (entry->filesize < 8 )) /* no song length or less than 8 bytes is hereby considered to be an invalid mp3 and won't be played by us! */