diff --git a/apps/SOURCES b/apps/SOURCES index 143d9d50ea..0408c32583 100644 --- a/apps/SOURCES +++ b/apps/SOURCES @@ -172,6 +172,7 @@ metadata/wavpack.c metadata/a52.c metadata/asap.c metadata/rm.c +metadata/nsf.c #endif #ifdef HAVE_TAGCACHE tagcache.c diff --git a/apps/metadata.c b/apps/metadata.c index 400ce6f469..56ab6c16e6 100644 --- a/apps/metadata.c +++ b/apps/metadata.c @@ -215,10 +215,6 @@ bool mp3info(struct mp3entry *entry, const char *filename) */ bool get_metadata(struct mp3entry* id3, int fd, const char* trackname) { -#if CONFIG_CODEC == SWCODEC - unsigned char* buf; -#endif - /* Clear the mp3entry to avoid having bogus pointers appear */ memset(id3, 0, sizeof(struct mp3entry)); @@ -356,15 +352,11 @@ bool get_metadata(struct mp3entry* id3, int fd, const char* trackname) break; case AFMT_NSF: - buf = (unsigned char *)id3->path; - if ((lseek(fd, 0, SEEK_SET) < 0) || ((read(fd, buf, 8)) < 8)) + if (!get_nsf_metadata(fd, id3)) { - DEBUGF("lseek or read failed\n"); + DEBUGF("get_nsf_metadata error\n"); return false; } - id3->vbr = false; - id3->filesize = filesize(fd); - if (memcmp(buf,"NESM",4) && memcmp(buf,"NSFE",4)) return false; break; case AFMT_AIFF: diff --git a/apps/metadata/metadata_parsers.h b/apps/metadata/metadata_parsers.h index 0464071777..20a71c90b9 100644 --- a/apps/metadata/metadata_parsers.h +++ b/apps/metadata/metadata_parsers.h @@ -39,3 +39,5 @@ bool get_a52_metadata(int fd, struct mp3entry* id3); bool get_asf_metadata(int fd, struct mp3entry* id3); bool get_asap_metadata(int fd, struct mp3entry* id3); bool get_rm_metadata(int fd, struct mp3entry* id3); +bool get_nsf_metadata(int fd, struct mp3entry* id3); + diff --git a/docs/CREDITS b/docs/CREDITS index 3a7cc84d4e..bd92cae474 100644 --- a/docs/CREDITS +++ b/docs/CREDITS @@ -489,6 +489,7 @@ Rosso Maltese Amaury Pouly Laurent Papier Johannes Boy +Jason Yu The libmad team The wavpack team