diff options
author | Robert Kukla <roolku@rockbox.org> | 2007-03-02 21:49:42 +0000 |
---|---|---|
committer | Robert Kukla <roolku@rockbox.org> | 2007-03-02 21:49:42 +0000 |
commit | 79a2a936a289ed7dc6e997b6f8fdd53d45a48b57 (patch) | |
tree | 32c00625190da49f11a0a274bed4f3bb7a6f118d /firmware | |
parent | 2187e815e20d8127df077ef02886867ff8dcaed4 (diff) | |
download | rockbox-79a2a936a289ed7dc6e997b6f8fdd53d45a48b57.tar.gz rockbox-79a2a936a289ed7dc6e997b6f8fdd53d45a48b57.zip |
remove numerical genre and use genre_string consistently:
- fix spurious display of "blues" genre for missing genre tag
- simplify code/use less code
- numerical->string conversion only once instead of at every use
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12552 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/id3.h | 3 | ||||
-rw-r--r-- | firmware/id3.c | 23 |
2 files changed, 8 insertions, 18 deletions
diff --git a/firmware/export/id3.h b/firmware/export/id3.h index 367854fdd1..d3d5dd35ce 100644 --- a/firmware/export/id3.h +++ b/firmware/export/id3.h | |||
@@ -153,7 +153,6 @@ struct mp3entry { | |||
153 | int layer; | 153 | int layer; |
154 | int year; | 154 | int year; |
155 | unsigned char id3version; | 155 | unsigned char id3version; |
156 | unsigned char genre; | ||
157 | unsigned int codectype; | 156 | unsigned int codectype; |
158 | unsigned int bitrate; | 157 | unsigned int bitrate; |
159 | unsigned long frequency; | 158 | unsigned long frequency; |
@@ -228,7 +227,7 @@ enum { | |||
228 | 227 | ||
229 | bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool v1first); | 228 | bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool v1first); |
230 | bool mp3info(struct mp3entry *entry, const char *filename, bool v1first); | 229 | bool mp3info(struct mp3entry *entry, const char *filename, bool v1first); |
231 | char* id3_get_genre(const struct mp3entry* id3); | 230 | char* id3_get_num_genre(const unsigned int genre_num); |
232 | char* id3_get_codec(const struct mp3entry* id3); | 231 | char* id3_get_codec(const struct mp3entry* id3); |
233 | int getid3v2len(int fd); | 232 | int getid3v2len(int fd); |
234 | void adjust_mp3entry(struct mp3entry *entry, void *dest, void *orig); | 233 | void adjust_mp3entry(struct mp3entry *entry, void *dest, void *orig); |
diff --git a/firmware/id3.c b/firmware/id3.c index ac9397a209..88bc399b71 100644 --- a/firmware/id3.c +++ b/firmware/id3.c | |||
@@ -179,13 +179,10 @@ static const char* const genres[] = { | |||
179 | "Synthpop" | 179 | "Synthpop" |
180 | }; | 180 | }; |
181 | 181 | ||
182 | char* id3_get_genre(const struct mp3entry* id3) | 182 | char* id3_get_num_genre(const unsigned int genre_num) |
183 | { | 183 | { |
184 | if( id3->genre_string ) | 184 | if (genre_num < sizeof(genres)/sizeof(char*)) |
185 | return id3->genre_string ; | 185 | return (char*)genres[genre_num]; |
186 | |||
187 | if (id3->genre < sizeof(genres)/sizeof(char*)) | ||
188 | return (char*)genres[id3->genre]; | ||
189 | return NULL; | 186 | return NULL; |
190 | } | 187 | } |
191 | 188 | ||
@@ -364,23 +361,19 @@ static int parsegenre( struct mp3entry* entry, char* tag, int bufferpos ) | |||
364 | 361 | ||
365 | /* Is it a number? */ | 362 | /* Is it a number? */ |
366 | if(isdigit(tag[0])) { | 363 | if(isdigit(tag[0])) { |
367 | entry->genre = atoi( tag ); | 364 | entry->genre_string = id3_get_num_genre(atoi( tag )); |
368 | entry->genre_string = 0; | ||
369 | return tag - entry->id3v2buf; | 365 | return tag - entry->id3v2buf; |
370 | } else { | 366 | } else { |
371 | entry->genre_string = tag; | 367 | entry->genre_string = tag; |
372 | entry->genre = 0xff; | ||
373 | return bufferpos; | 368 | return bufferpos; |
374 | } | 369 | } |
375 | } else { | 370 | } else { |
376 | if( tag[0] == '(' && tag[1] != '(' ) { | 371 | if( tag[0] == '(' && tag[1] != '(' ) { |
377 | entry->genre = atoi( tag + 1 ); | 372 | entry->genre_string = id3_get_num_genre(atoi( tag + 1 )); |
378 | entry->genre_string = 0; | ||
379 | return tag - entry->id3v2buf; | 373 | return tag - entry->id3v2buf; |
380 | } | 374 | } |
381 | else { | 375 | else { |
382 | entry->genre_string = tag; | 376 | entry->genre_string = tag; |
383 | entry->genre = 0xff; | ||
384 | return bufferpos; | 377 | return bufferpos; |
385 | } | 378 | } |
386 | } | 379 | } |
@@ -616,7 +609,7 @@ static bool setid3v1title(int fd, struct mp3entry *entry) | |||
616 | 609 | ||
617 | case 6: | 610 | case 6: |
618 | /* genre */ | 611 | /* genre */ |
619 | entry->genre = ptr[0]; | 612 | entry->genre_string = id3_get_num_genre(ptr[0]); |
620 | break; | 613 | break; |
621 | } | 614 | } |
622 | } | 615 | } |
@@ -695,8 +688,7 @@ static void setid3v2title(int fd, struct mp3entry *entry) | |||
695 | } | 688 | } |
696 | entry->id3version = version; | 689 | entry->id3version = version; |
697 | entry->tracknum = entry->year = 0; | 690 | entry->tracknum = entry->year = 0; |
698 | entry->genre = 0xff; | 691 | entry->title = entry->artist = entry->album = NULL; /* FIXME incomplete */ |
699 | entry->title = entry->artist = entry->album = NULL; | ||
700 | 692 | ||
701 | global_flags = header[5]; | 693 | global_flags = header[5]; |
702 | 694 | ||
@@ -1117,7 +1109,6 @@ bool get_mp3_metadata(int fd, struct mp3entry *entry, const char *filename, bool | |||
1117 | entry->filesize = filesize(fd); | 1109 | entry->filesize = filesize(fd); |
1118 | entry->id3v2len = getid3v2len(fd); | 1110 | entry->id3v2len = getid3v2len(fd); |
1119 | entry->tracknum = 0; | 1111 | entry->tracknum = 0; |
1120 | entry->genre = 0xff; | ||
1121 | 1112 | ||
1122 | if(v1first) | 1113 | if(v1first) |
1123 | v1found = setid3v1title(fd, entry); | 1114 | v1found = setid3v1title(fd, entry); |