diff options
author | Dan Everton <dan@iocaine.org> | 2007-08-03 10:00:42 +0000 |
---|---|---|
committer | Dan Everton <dan@iocaine.org> | 2007-08-03 10:00:42 +0000 |
commit | f4a61f0c4a999790f07d061352100ac6310a38f6 (patch) | |
tree | 0cf03d0a08f5b5de7318ed5db948fd41c5196cca /apps | |
parent | 1fbf847eedd90b6f3e40decd64e1094d7a7dc383 (diff) | |
download | rockbox-f4a61f0c4a999790f07d061352100ac6310a38f6.tar.gz rockbox-f4a61f0c4a999790f07d061352100ac6310a38f6.zip |
Add support for parsing the disc number tag from metadata and use of it in the database. Patch originally from FS#4961 with some minor tweaks by me.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14154 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/gwps-common.c | 9 | ||||
-rw-r--r-- | apps/gui/gwps.h | 1 | ||||
-rw-r--r-- | apps/gui/wps_debug.c | 4 | ||||
-rw-r--r-- | apps/gui/wps_parser.c | 2 | ||||
-rw-r--r-- | apps/lang/english.lang | 14 | ||||
-rw-r--r-- | apps/metadata/metadata_common.c | 5 | ||||
-rw-r--r-- | apps/metadata/mp4.c | 10 | ||||
-rw-r--r-- | apps/screens.c | 34 | ||||
-rw-r--r-- | apps/tagcache.c | 8 | ||||
-rw-r--r-- | apps/tagcache.h | 6 | ||||
-rw-r--r-- | apps/tagnavi.config | 1 | ||||
-rw-r--r-- | apps/tagtree.c | 1 |
12 files changed, 77 insertions, 18 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 2c5238b972..9dddff3ea2 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c | |||
@@ -876,6 +876,15 @@ static char *get_token_value(struct gui_wps *gwps, | |||
876 | case WPS_TOKEN_METADATA_GENRE: | 876 | case WPS_TOKEN_METADATA_GENRE: |
877 | return id3->genre_string; | 877 | return id3->genre_string; |
878 | 878 | ||
879 | case WPS_TOKEN_METADATA_DISC_NUMBER: | ||
880 | if (id3->disc_string) | ||
881 | return id3->disc_string; | ||
882 | if (id3->discnum) { | ||
883 | snprintf(buf, buf_size, "%d", id3->discnum); | ||
884 | return buf; | ||
885 | } | ||
886 | return NULL; | ||
887 | |||
879 | case WPS_TOKEN_METADATA_TRACK_NUMBER: | 888 | case WPS_TOKEN_METADATA_TRACK_NUMBER: |
880 | if (id3->track_string) | 889 | if (id3->track_string) |
881 | return id3->track_string; | 890 | return id3->track_string; |
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h index 371b2b0399..b02b87f2c9 100644 --- a/apps/gui/gwps.h +++ b/apps/gui/gwps.h | |||
@@ -193,6 +193,7 @@ enum wps_token_type { | |||
193 | WPS_TOKEN_METADATA_ALBUM_ARTIST, | 193 | WPS_TOKEN_METADATA_ALBUM_ARTIST, |
194 | WPS_TOKEN_METADATA_ALBUM, | 194 | WPS_TOKEN_METADATA_ALBUM, |
195 | WPS_TOKEN_METADATA_GENRE, | 195 | WPS_TOKEN_METADATA_GENRE, |
196 | WPS_TOKEN_METADATA_DISC_NUMBER, | ||
196 | WPS_TOKEN_METADATA_TRACK_NUMBER, | 197 | WPS_TOKEN_METADATA_TRACK_NUMBER, |
197 | WPS_TOKEN_METADATA_TRACK_TITLE, | 198 | WPS_TOKEN_METADATA_TRACK_TITLE, |
198 | WPS_TOKEN_METADATA_VERSION, | 199 | WPS_TOKEN_METADATA_VERSION, |
diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c index 0f40a57801..50ffcce119 100644 --- a/apps/gui/wps_debug.c +++ b/apps/gui/wps_debug.c | |||
@@ -294,6 +294,10 @@ static void dump_wps_tokens(struct wps_data *data) | |||
294 | next_str(next)); | 294 | next_str(next)); |
295 | break; | 295 | break; |
296 | 296 | ||
297 | case WPS_TOKEN_METADATA_DISC_NUMBER: | ||
298 | snprintf(buf, sizeof(buf), "%strack disc", next_str(next)); | ||
299 | break; | ||
300 | |||
297 | case WPS_TOKEN_METADATA_TRACK_NUMBER: | 301 | case WPS_TOKEN_METADATA_TRACK_NUMBER: |
298 | snprintf(buf, sizeof(buf), "%strack number", | 302 | snprintf(buf, sizeof(buf), "%strack number", |
299 | next_str(next)); | 303 | next_str(next)); |
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c index 86b74129f2..d66e47dfe7 100644 --- a/apps/gui/wps_parser.c +++ b/apps/gui/wps_parser.c | |||
@@ -201,6 +201,7 @@ static const struct wps_tag all_tags[] = { | |||
201 | { WPS_TOKEN_METADATA_ALBUM, "id", WPS_REFRESH_STATIC, NULL }, | 201 | { WPS_TOKEN_METADATA_ALBUM, "id", WPS_REFRESH_STATIC, NULL }, |
202 | { WPS_TOKEN_METADATA_ALBUM_ARTIST, "iA", WPS_REFRESH_STATIC, NULL }, | 202 | { WPS_TOKEN_METADATA_ALBUM_ARTIST, "iA", WPS_REFRESH_STATIC, NULL }, |
203 | { WPS_TOKEN_METADATA_GENRE, "ig", WPS_REFRESH_STATIC, NULL }, | 203 | { WPS_TOKEN_METADATA_GENRE, "ig", WPS_REFRESH_STATIC, NULL }, |
204 | { WPS_TOKEN_METADATA_DISC_NUMBER, "ik", WPS_REFRESH_STATIC, NULL }, | ||
204 | { WPS_TOKEN_METADATA_TRACK_NUMBER, "in", WPS_REFRESH_STATIC, NULL }, | 205 | { WPS_TOKEN_METADATA_TRACK_NUMBER, "in", WPS_REFRESH_STATIC, NULL }, |
205 | { WPS_TOKEN_METADATA_TRACK_TITLE, "it", WPS_REFRESH_STATIC, NULL }, | 206 | { WPS_TOKEN_METADATA_TRACK_TITLE, "it", WPS_REFRESH_STATIC, NULL }, |
206 | { WPS_TOKEN_METADATA_VERSION, "iv", WPS_REFRESH_STATIC, NULL }, | 207 | { WPS_TOKEN_METADATA_VERSION, "iv", WPS_REFRESH_STATIC, NULL }, |
@@ -213,6 +214,7 @@ static const struct wps_tag all_tags[] = { | |||
213 | { WPS_TOKEN_METADATA_ALBUM, "Id", WPS_REFRESH_DYNAMIC, NULL }, | 214 | { WPS_TOKEN_METADATA_ALBUM, "Id", WPS_REFRESH_DYNAMIC, NULL }, |
214 | { WPS_TOKEN_METADATA_ALBUM_ARTIST, "IA", WPS_REFRESH_DYNAMIC, NULL }, | 215 | { WPS_TOKEN_METADATA_ALBUM_ARTIST, "IA", WPS_REFRESH_DYNAMIC, NULL }, |
215 | { WPS_TOKEN_METADATA_GENRE, "Ig", WPS_REFRESH_DYNAMIC, NULL }, | 216 | { WPS_TOKEN_METADATA_GENRE, "Ig", WPS_REFRESH_DYNAMIC, NULL }, |
217 | { WPS_TOKEN_METADATA_DISC_NUMBER, "Ik", WPS_REFRESH_DYNAMIC, NULL }, | ||
216 | { WPS_TOKEN_METADATA_TRACK_NUMBER, "In", WPS_REFRESH_DYNAMIC, NULL }, | 218 | { WPS_TOKEN_METADATA_TRACK_NUMBER, "In", WPS_REFRESH_DYNAMIC, NULL }, |
217 | { WPS_TOKEN_METADATA_TRACK_TITLE, "It", WPS_REFRESH_DYNAMIC, NULL }, | 219 | { WPS_TOKEN_METADATA_TRACK_TITLE, "It", WPS_REFRESH_DYNAMIC, NULL }, |
218 | { WPS_TOKEN_METADATA_VERSION, "Iv", WPS_REFRESH_DYNAMIC, NULL }, | 220 | { WPS_TOKEN_METADATA_VERSION, "Iv", WPS_REFRESH_DYNAMIC, NULL }, |
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 2dcb7bc4ef..dcace6db8c 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -11054,3 +11054,17 @@ | |||
11054 | *: "Can't write to recording directory" | 11054 | *: "Can't write to recording directory" |
11055 | </voice> | 11055 | </voice> |
11056 | </phrase> | 11056 | </phrase> |
11057 | <phrase> | ||
11058 | id: LANG_ID3_DISCNUM | ||
11059 | desc: in tag viewer | ||
11060 | user: | ||
11061 | <source> | ||
11062 | *: "[Discnum]" | ||
11063 | </source> | ||
11064 | <dest> | ||
11065 | *: "[Discnum]" | ||
11066 | </dest> | ||
11067 | <voice> | ||
11068 | *: "" | ||
11069 | </voice> | ||
11070 | </phrase> \ No newline at end of file | ||
diff --git a/apps/metadata/metadata_common.c b/apps/metadata/metadata_common.c index d81d9f71d3..d1a1087188 100644 --- a/apps/metadata/metadata_common.c +++ b/apps/metadata/metadata_common.c | |||
@@ -224,6 +224,11 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3, | |||
224 | id3->tracknum = atoi(value); | 224 | id3->tracknum = atoi(value); |
225 | p = &(id3->track_string); | 225 | p = &(id3->track_string); |
226 | } | 226 | } |
227 | else if (strcasecmp(name, "discnumber") == 0 || strcasecmp(name, "disc") == 0) | ||
228 | { | ||
229 | id3->discnum = atoi(value); | ||
230 | p = &(id3->disc_string); | ||
231 | } | ||
227 | else if (((strcasecmp(name, "year") == 0) && (type == TAGTYPE_APE)) | 232 | else if (((strcasecmp(name, "year") == 0) && (type == TAGTYPE_APE)) |
228 | || ((strcasecmp(name, "date") == 0) && (type == TAGTYPE_VORBIS))) | 233 | || ((strcasecmp(name, "date") == 0) && (type == TAGTYPE_VORBIS))) |
229 | { | 234 | { |
diff --git a/apps/metadata/mp4.c b/apps/metadata/mp4.c index 591d020373..3293007870 100644 --- a/apps/metadata/mp4.c +++ b/apps/metadata/mp4.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #define MP4_cwrt MP4_ID(0xa9, 'w', 'r', 't') | 43 | #define MP4_cwrt MP4_ID(0xa9, 'w', 'r', 't') |
44 | #define MP4_ccmt MP4_ID(0xa9, 'c', 'm', 't') | 44 | #define MP4_ccmt MP4_ID(0xa9, 'c', 'm', 't') |
45 | #define MP4_cday MP4_ID(0xa9, 'd', 'a', 'y') | 45 | #define MP4_cday MP4_ID(0xa9, 'd', 'a', 'y') |
46 | #define MP4_disk MP4_ID('d', 'i', 's', 'k') | ||
46 | #define MP4_esds MP4_ID('e', 's', 'd', 's') | 47 | #define MP4_esds MP4_ID('e', 's', 'd', 's') |
47 | #define MP4_ftyp MP4_ID('f', 't', 'y', 'p') | 48 | #define MP4_ftyp MP4_ID('f', 't', 'y', 'p') |
48 | #define MP4_gnre MP4_ID('g', 'n', 'r', 'e') | 49 | #define MP4_gnre MP4_ID('g', 'n', 'r', 'e') |
@@ -422,6 +423,15 @@ static bool read_mp4_tags(int fd, struct mp3entry* id3, | |||
422 | &id3->genre_string); | 423 | &id3->genre_string); |
423 | break; | 424 | break; |
424 | 425 | ||
426 | case MP4_disk: | ||
427 | { | ||
428 | unsigned short n[2]; | ||
429 | |||
430 | read_mp4_tag(fd, size, (char*) &n, sizeof(n)); | ||
431 | id3->disknum = betoh16(n[1]); | ||
432 | } | ||
433 | break; | ||
434 | |||
425 | case MP4_trkn: | 435 | case MP4_trkn: |
426 | { | 436 | { |
427 | unsigned short n[2]; | 437 | unsigned short n[2]; |
diff --git a/apps/screens.c b/apps/screens.c index d88eb1167b..b2436f00f1 100644 --- a/apps/screens.c +++ b/apps/screens.c | |||
@@ -1151,6 +1151,7 @@ static const int id3_headers[]= | |||
1151 | LANG_ID3_ARTIST, | 1151 | LANG_ID3_ARTIST, |
1152 | LANG_ID3_ALBUM, | 1152 | LANG_ID3_ALBUM, |
1153 | LANG_ID3_ALBUMARTIST, | 1153 | LANG_ID3_ALBUMARTIST, |
1154 | LANG_ID3_DISCNUM, | ||
1154 | LANG_ID3_TRACKNUM, | 1155 | LANG_ID3_TRACKNUM, |
1155 | LANG_ID3_COMMENT, | 1156 | LANG_ID3_COMMENT, |
1156 | LANG_ID3_GENRE, | 1157 | LANG_ID3_GENRE, |
@@ -1192,7 +1193,16 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) | |||
1192 | case 3:/*LANG_ID3_ALBUMARTIST*/ | 1193 | case 3:/*LANG_ID3_ALBUMARTIST*/ |
1193 | info=id3->albumartist; | 1194 | info=id3->albumartist; |
1194 | break; | 1195 | break; |
1195 | case 4:/*LANG_ID3_TRACKNUM*/ | 1196 | case 4:/*LANG_ID3_DISCNUM*/ |
1197 | if (id3->disc_string) | ||
1198 | info = id3->disc_string; | ||
1199 | else if (id3->discnum) | ||
1200 | { | ||
1201 | snprintf(buffer, MAX_PATH, "%d", id3->discnum); | ||
1202 | info = buffer; | ||
1203 | } | ||
1204 | break; | ||
1205 | case 5:/*LANG_ID3_TRACKNUM*/ | ||
1196 | if (id3->track_string) | 1206 | if (id3->track_string) |
1197 | info = id3->track_string; | 1207 | info = id3->track_string; |
1198 | else if (id3->tracknum) | 1208 | else if (id3->tracknum) |
@@ -1201,13 +1211,13 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) | |||
1201 | info = buffer; | 1211 | info = buffer; |
1202 | } | 1212 | } |
1203 | break; | 1213 | break; |
1204 | case 5:/*LANG_ID3_COMMENT*/ | 1214 | case 6:/*LANG_ID3_COMMENT*/ |
1205 | info=id3->comment; | 1215 | info=id3->comment; |
1206 | break; | 1216 | break; |
1207 | case 6:/*LANG_ID3_GENRE*/ | 1217 | case 7:/*LANG_ID3_GENRE*/ |
1208 | info = id3->genre_string; | 1218 | info = id3->genre_string; |
1209 | break; | 1219 | break; |
1210 | case 7:/*LANG_ID3_YEAR*/ | 1220 | case 8:/*LANG_ID3_YEAR*/ |
1211 | if (id3->year_string) | 1221 | if (id3->year_string) |
1212 | info = id3->year_string; | 1222 | info = id3->year_string; |
1213 | else if (id3->year) | 1223 | else if (id3->year) |
@@ -1216,34 +1226,34 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) | |||
1216 | info = buffer; | 1226 | info = buffer; |
1217 | } | 1227 | } |
1218 | break; | 1228 | break; |
1219 | case 8:/*LANG_ID3_LENGTH*/ | 1229 | case 9:/*LANG_ID3_LENGTH*/ |
1220 | format_time(buffer, MAX_PATH, id3->length); | 1230 | format_time(buffer, MAX_PATH, id3->length); |
1221 | info=buffer; | 1231 | info=buffer; |
1222 | break; | 1232 | break; |
1223 | case 9:/*LANG_ID3_PLAYLIST*/ | 1233 | case 10:/*LANG_ID3_PLAYLIST*/ |
1224 | snprintf(buffer, MAX_PATH, "%d/%d", playlist_get_display_index(), | 1234 | snprintf(buffer, MAX_PATH, "%d/%d", playlist_get_display_index(), |
1225 | playlist_amount()); | 1235 | playlist_amount()); |
1226 | info=buffer; | 1236 | info=buffer; |
1227 | break; | 1237 | break; |
1228 | case 10:/*LANG_ID3_BITRATE*/ | 1238 | case 11:/*LANG_ID3_BITRATE*/ |
1229 | snprintf(buffer, MAX_PATH, "%d kbps%s", id3->bitrate, | 1239 | snprintf(buffer, MAX_PATH, "%d kbps%s", id3->bitrate, |
1230 | id3->vbr ? str(LANG_ID3_VBR) : (const unsigned char*) ""); | 1240 | id3->vbr ? str(LANG_ID3_VBR) : (const unsigned char*) ""); |
1231 | info=buffer; | 1241 | info=buffer; |
1232 | break; | 1242 | break; |
1233 | case 11:/*LANG_ID3_FREQUENCY*/ | 1243 | case 12:/*LANG_ID3_FREQUENCY*/ |
1234 | snprintf(buffer, MAX_PATH, "%ld Hz", id3->frequency); | 1244 | snprintf(buffer, MAX_PATH, "%ld Hz", id3->frequency); |
1235 | info=buffer; | 1245 | info=buffer; |
1236 | break; | 1246 | break; |
1237 | #if CONFIG_CODEC == SWCODEC | 1247 | #if CONFIG_CODEC == SWCODEC |
1238 | case 12:/*LANG_ID3_TRACK_GAIN*/ | 1248 | case 13:/*LANG_ID3_TRACK_GAIN*/ |
1239 | info=id3->track_gain_string; | 1249 | info=id3->track_gain_string; |
1240 | break; | 1250 | break; |
1241 | case 13:/*LANG_ID3_ALBUM_GAIN*/ | 1251 | case 14:/*LANG_ID3_ALBUM_GAIN*/ |
1242 | info=id3->album_gain_string; | 1252 | info=id3->album_gain_string; |
1243 | break; | 1253 | break; |
1244 | case 14:/*LANG_ID3_PATH*/ | 1254 | case 15:/*LANG_ID3_PATH*/ |
1245 | #else | 1255 | #else |
1246 | case 12:/*LANG_ID3_PATH*/ | 1256 | case 13:/*LANG_ID3_PATH*/ |
1247 | #endif | 1257 | #endif |
1248 | info=id3->path; | 1258 | info=id3->path; |
1249 | break; | 1259 | break; |
diff --git a/apps/tagcache.c b/apps/tagcache.c index 6d738bc5fb..da51e0c4e9 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c | |||
@@ -115,7 +115,7 @@ static const int unique_tags[] = { tag_artist, tag_album, tag_genre, | |||
115 | tag_composer, tag_comment, tag_albumartist }; | 115 | tag_composer, tag_comment, tag_albumartist }; |
116 | 116 | ||
117 | /* Numeric tags (we can use these tags with conditional clauses). */ | 117 | /* Numeric tags (we can use these tags with conditional clauses). */ |
118 | static const int numeric_tags[] = { tag_year, tag_tracknumber, tag_length, | 118 | static const int numeric_tags[] = { tag_year, tag_discnumber, tag_tracknumber, tag_length, |
119 | tag_bitrate, tag_playcount, tag_rating, tag_playtime, tag_lastplayed, tag_commitid, | 119 | tag_bitrate, tag_playcount, tag_rating, tag_playtime, tag_lastplayed, tag_commitid, |
120 | tag_virt_length_min, tag_virt_length_sec, | 120 | tag_virt_length_min, tag_virt_length_sec, |
121 | tag_virt_playtime_min, tag_virt_playtime_sec, | 121 | tag_virt_playtime_min, tag_virt_playtime_sec, |
@@ -123,7 +123,7 @@ static const int numeric_tags[] = { tag_year, tag_tracknumber, tag_length, | |||
123 | 123 | ||
124 | /* String presentation of the tags defined in tagcache.h. Must be in correct order! */ | 124 | /* String presentation of the tags defined in tagcache.h. Must be in correct order! */ |
125 | static const char *tags_str[] = { "artist", "album", "genre", "title", | 125 | static const char *tags_str[] = { "artist", "album", "genre", "title", |
126 | "filename", "composer", "comment", "albumartist", "year", "tracknumber", | 126 | "filename", "composer", "comment", "albumartist", "year", "discnumber", "tracknumber", |
127 | "bitrate", "length", "playcount", "rating", "playtime", "lastplayed", "commitid" }; | 127 | "bitrate", "length", "playcount", "rating", "playtime", "lastplayed", "commitid" }; |
128 | 128 | ||
129 | /* Status information of the tagcache. */ | 129 | /* Status information of the tagcache. */ |
@@ -188,7 +188,7 @@ struct master_header { | |||
188 | 188 | ||
189 | /* For the endianess correction */ | 189 | /* For the endianess correction */ |
190 | static const char *tagfile_entry_ec = "ss"; | 190 | static const char *tagfile_entry_ec = "ss"; |
191 | static const char *index_entry_ec = "llllllllllllllllll"; /* (1 + TAG_COUNT) * l */ | 191 | static const char *index_entry_ec = "lllllllllllllllllll"; /* (1 + TAG_COUNT) * l */ |
192 | static const char *tagcache_header_ec = "lll"; | 192 | static const char *tagcache_header_ec = "lll"; |
193 | static const char *master_header_ec = "llllll"; | 193 | static const char *master_header_ec = "llllll"; |
194 | 194 | ||
@@ -1556,6 +1556,7 @@ bool tagcache_fill_tags(struct mp3entry *id3, const char *filename) | |||
1556 | id3->score = get_tag_numeric(entry, tag_virt_autoscore) / 10; | 1556 | id3->score = get_tag_numeric(entry, tag_virt_autoscore) / 10; |
1557 | id3->year = get_tag_numeric(entry, tag_year); | 1557 | id3->year = get_tag_numeric(entry, tag_year); |
1558 | 1558 | ||
1559 | id3->discnum = get_tag_numeric(entry, tag_discnumber); | ||
1559 | id3->tracknum = get_tag_numeric(entry, tag_tracknumber); | 1560 | id3->tracknum = get_tag_numeric(entry, tag_tracknumber); |
1560 | id3->bitrate = get_tag_numeric(entry, tag_bitrate); | 1561 | id3->bitrate = get_tag_numeric(entry, tag_bitrate); |
1561 | if (id3->bitrate == 0) | 1562 | if (id3->bitrate == 0) |
@@ -1699,6 +1700,7 @@ static void add_tagcache(char *path) | |||
1699 | 1700 | ||
1700 | /* Numeric tags */ | 1701 | /* Numeric tags */ |
1701 | entry.tag_offset[tag_year] = track.id3.year; | 1702 | entry.tag_offset[tag_year] = track.id3.year; |
1703 | entry.tag_offset[tag_discnumber] = track.id3.discnum; | ||
1702 | entry.tag_offset[tag_tracknumber] = track.id3.tracknum; | 1704 | entry.tag_offset[tag_tracknumber] = track.id3.tracknum; |
1703 | entry.tag_offset[tag_length] = track.id3.length; | 1705 | entry.tag_offset[tag_length] = track.id3.length; |
1704 | entry.tag_offset[tag_bitrate] = track.id3.bitrate; | 1706 | entry.tag_offset[tag_bitrate] = track.id3.bitrate; |
diff --git a/apps/tagcache.h b/apps/tagcache.h index 3d80c6975f..ada624783a 100644 --- a/apps/tagcache.h +++ b/apps/tagcache.h | |||
@@ -24,14 +24,14 @@ | |||
24 | 24 | ||
25 | enum tag_type { tag_artist = 0, tag_album, tag_genre, tag_title, | 25 | enum tag_type { tag_artist = 0, tag_album, tag_genre, tag_title, |
26 | tag_filename, tag_composer, tag_comment, tag_albumartist, tag_year, | 26 | tag_filename, tag_composer, tag_comment, tag_albumartist, tag_year, |
27 | tag_tracknumber, tag_bitrate, tag_length, tag_playcount, tag_rating, | 27 | tag_discnumber, tag_tracknumber, tag_bitrate, tag_length, tag_playcount, tag_rating, |
28 | tag_playtime, tag_lastplayed, tag_commitid, | 28 | tag_playtime, tag_lastplayed, tag_commitid, |
29 | /* Virtual tags */ | 29 | /* Virtual tags */ |
30 | tag_virt_length_min, tag_virt_length_sec, | 30 | tag_virt_length_min, tag_virt_length_sec, |
31 | tag_virt_playtime_min, tag_virt_playtime_sec, | 31 | tag_virt_playtime_min, tag_virt_playtime_sec, |
32 | tag_virt_entryage, tag_virt_autoscore }; | 32 | tag_virt_entryage, tag_virt_autoscore }; |
33 | 33 | ||
34 | #define TAG_COUNT 17 | 34 | #define TAG_COUNT 18 |
35 | 35 | ||
36 | /* Maximum length of a single tag. */ | 36 | /* Maximum length of a single tag. */ |
37 | #define TAG_MAXLEN (MAX_PATH*2) | 37 | #define TAG_MAXLEN (MAX_PATH*2) |
@@ -43,7 +43,7 @@ enum tag_type { tag_artist = 0, tag_album, tag_genre, tag_title, | |||
43 | #define IDX_BUF_DEPTH 64 | 43 | #define IDX_BUF_DEPTH 64 |
44 | 44 | ||
45 | /* Tag Cache Header version 'TCHxx'. Increment when changing internal structures. */ | 45 | /* Tag Cache Header version 'TCHxx'. Increment when changing internal structures. */ |
46 | #define TAGCACHE_MAGIC 0x54434809 | 46 | #define TAGCACHE_MAGIC 0x5443480A |
47 | 47 | ||
48 | /* How much to allocate extra space for ramcache. */ | 48 | /* How much to allocate extra space for ramcache. */ |
49 | #define TAGCACHE_RESERVE 32768 | 49 | #define TAGCACHE_RESERVE 32768 |
diff --git a/apps/tagnavi.config b/apps/tagnavi.config index 2c5675f5b7..2a98a7f93b 100644 --- a/apps/tagnavi.config +++ b/apps/tagnavi.config | |||
@@ -6,6 +6,7 @@ | |||
6 | # get overwritten automatically. | 6 | # get overwritten automatically. |
7 | 7 | ||
8 | # Basic format declarations | 8 | # Basic format declarations |
9 | %format "fmt_title" "%d.%02d. %s" discnum tracknum title ? discnum > "0" | ||
9 | %format "fmt_title" "%02d. %s - %02d:%02d" tracknum title Lm Ls ? tracknum > "0" | 10 | %format "fmt_title" "%02d. %s - %02d:%02d" tracknum title Lm Ls ? tracknum > "0" |
10 | %format "fmt_title" "%s - %02d:%02d" title Lm Ls | 11 | %format "fmt_title" "%s - %02d:%02d" title Lm Ls |
11 | %format "fmt_mostplayed" "%2d|%3d %s (%s)" playcount autoscore title artist %sort = "inverse" %limit = "100" | 12 | %format "fmt_mostplayed" "%2d|%3d %s (%s)" playcount autoscore title artist %sort = "inverse" %limit = "100" |
diff --git a/apps/tagtree.c b/apps/tagtree.c index 271f30ffa8..06150c1f26 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c | |||
@@ -209,6 +209,7 @@ static int get_tag(int *tag) | |||
209 | MATCH(tag, buf, "title", tag_title); | 209 | MATCH(tag, buf, "title", tag_title); |
210 | MATCH(tag, buf, "filename", tag_filename); | 210 | MATCH(tag, buf, "filename", tag_filename); |
211 | MATCH(tag, buf, "tracknum", tag_tracknumber); | 211 | MATCH(tag, buf, "tracknum", tag_tracknumber); |
212 | MATCH(tag, buf, "discnum", tag_discnumber); | ||
212 | MATCH(tag, buf, "year", tag_year); | 213 | MATCH(tag, buf, "year", tag_year); |
213 | MATCH(tag, buf, "playcount", tag_playcount); | 214 | MATCH(tag, buf, "playcount", tag_playcount); |
214 | MATCH(tag, buf, "rating", tag_rating); | 215 | MATCH(tag, buf, "rating", tag_rating); |