mp3: when ID3 tags are not found, search APE tags

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26048 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Yoshihisa Uchida 2010-05-15 10:20:06 +00:00
parent 77ec4b301b
commit fecf90fda9
5 changed files with 14 additions and 6 deletions

View file

@ -171,12 +171,12 @@ usb_keymaps.c
gui/usb_screen.c gui/usb_screen.c
#endif #endif
metadata.c metadata.c
metadata/ape.c
metadata/id3tags.c metadata/id3tags.c
metadata/metadata_common.c
metadata/mp3.c metadata/mp3.c
#if CONFIG_CODEC == SWCODEC #if CONFIG_CODEC == SWCODEC
metadata/metadata_common.c
metadata/aiff.c metadata/aiff.c
metadata/ape.c
metadata/asf.c metadata/asf.c
metadata/adx.c metadata/adx.c
metadata/flac.c metadata/flac.c

View file

@ -45,9 +45,7 @@
#include "metadata.h" #include "metadata.h"
#include "mp3data.h" #include "mp3data.h"
#if CONFIG_CODEC == SWCODEC
#include "metadata_common.h" #include "metadata_common.h"
#endif
#include "metadata_parsers.h" #include "metadata_parsers.h"
static unsigned long unsync(unsigned long b0, static unsigned long unsync(unsigned long b0,

View file

@ -28,7 +28,9 @@
#include "metadata.h" #include "metadata.h"
#include "metadata_common.h" #include "metadata_common.h"
#include "metadata_parsers.h" #include "metadata_parsers.h"
#if CONFIG_CODEC == SWCODEC
#include "replaygain.h" #include "replaygain.h"
#endif
#include "misc.h" #include "misc.h"
/* Skip an ID3v2 tag if it can be found. We assume the tag is located at the /* Skip an ID3v2 tag if it can be found. We assume the tag is located at the
@ -250,7 +252,7 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3,
char* buf, long buf_remaining, enum tagtype type) char* buf, long buf_remaining, enum tagtype type)
{ {
long len = 0; long len = 0;
char** p; char** p = NULL;
if ((((strcasecmp(name, "track") == 0) && (type == TAGTYPE_APE))) if ((((strcasecmp(name, "track") == 0) && (type == TAGTYPE_APE)))
|| ((strcasecmp(name, "tracknumber") == 0) && (type == TAGTYPE_VORBIS))) || ((strcasecmp(name, "tracknumber") == 0) && (type == TAGTYPE_VORBIS)))
@ -331,11 +333,13 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3,
{ {
p = &(id3->mb_track_id); p = &(id3->mb_track_id);
} }
#if CONFIG_CODEC == SWCODEC
else else
{ {
len = parse_replaygain(name, value, id3, buf, buf_remaining); len = parse_replaygain(name, value, id3, buf, buf_remaining);
p = NULL; p = NULL;
} }
#endif
if (p) if (p)
{ {

View file

@ -190,7 +190,11 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename)
/* only seek to end of file if no id3v2 tags were found */ /* only seek to end of file if no id3v2 tags were found */
if (!entry->id3v2len) { if (!entry->id3v2len) {
setid3v1title(fd, entry); if (!setid3v1title(fd, entry))
{
/* when ID3 tags are not found, search APE tags */
read_ape_tags(fd, entry);
}
} }
if(!entry->length || (entry->filesize < 8 )) if(!entry->length || (entry->filesize < 8 ))

View file

@ -15,7 +15,9 @@ database.c
../../firmware/logf.c ../../firmware/logf.c
../../uisimulator/common/io.c ../../uisimulator/common/io.c
#if CONFIG_CODEC != SWCODEC #if CONFIG_CODEC != SWCODEC
../../apps/metadata/ape.c
../../apps/metadata/id3tags.c ../../apps/metadata/id3tags.c
../../apps/metadata/metadata_common.c
../../apps/metadata/mp3.c ../../apps/metadata/mp3.c
#endif #endif
/* Caution. metadata files do not add!! */ /* Caution. metadata files do not add!! */