diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/gwps-common.c | 6 | ||||
-rw-r--r-- | apps/lang/deutsch.lang | 28 | ||||
-rw-r--r-- | apps/lang/english.lang | 28 | ||||
-rw-r--r-- | apps/metadata.c | 16 | ||||
-rw-r--r-- | apps/screens.c | 30 | ||||
-rw-r--r-- | apps/tagcache.c | 26 | ||||
-rw-r--r-- | apps/tagcache.h | 8 | ||||
-rw-r--r-- | apps/tagtree.c | 3 |
8 files changed, 124 insertions, 21 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 41edc0002b..53b12238e4 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -504,6 +504,12 @@ static char* get_tag(struct wps_data* wps_data, case 'c': /* ID3 Composer */ return id3->composer; + case 'C': /* ID3 Comment */ + return id3->comment; + + case 'A': /* ID3 Albumartist */ + return id3->albumartist; + case 'y': /* year */ if( id3->year_string ) return id3->year_string; diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang index 4ae438f64d..70f8f91f8c 100644 --- a/apps/lang/deutsch.lang +++ b/apps/lang/deutsch.lang @@ -5392,6 +5392,20 @@ </voice> </phrase> <phrase> + id: LANG_ID3_ALBUMARTIST + desc: in tag viewer + user: + <source> + *: "[Album Artist]" + </source> + <dest> + *: "[Album-KÃ?nstler]" + </dest> + <voice> + *: "" + </voice> +</phrase> +<phrase> id: LANG_ID3_TRACKNUM desc: in tag viewer user: @@ -5406,6 +5420,20 @@ </voice> </phrase> <phrase> + id: LANG_ID3_COMMENT + desc: in tag viewer + user: + <source> + *: "[Comment]" + </source> + <dest> + *: "[Kommentar]" + </dest> + <voice> + *: "" + </voice> +</phrase> +<phrase> id: LANG_ID3_GENRE desc: in tag viewer user: diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 66f906052c..6590e109a9 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -5459,6 +5459,20 @@ </voice> </phrase> <phrase> + id: LANG_ID3_ALBUMARTIST + desc: in tag viewer + user: + <source> + *: "[Album Artist]" + </source> + <dest> + *: "[Album Artist]" + </dest> + <voice> + *: "" + </voice> +</phrase> +<phrase> id: LANG_ID3_TRACKNUM desc: in tag viewer user: @@ -5473,6 +5487,20 @@ </voice> </phrase> <phrase> + id: LANG_ID3_COMMENT + desc: in tag viewer + user: + <source> + *: "[Comment]" + </source> + <dest> + *: "[Comment]" + </dest> + <voice> + *: "" + </voice> +</phrase> +<phrase> id: LANG_ID3_GENRE desc: in tag viewer user: diff --git a/apps/metadata.c b/apps/metadata.c index 3f2c496671..f5e5d1ba67 100644 --- a/apps/metadata.c +++ b/apps/metadata.c @@ -303,6 +303,22 @@ static long parse_tag(const char* name, char* value, struct mp3entry* id3, { p = &(id3->composer); } + else if (strcasecmp(name, "comment") == 0) + { + p = &(id3->comment); + } + else if (strcasecmp(name, "albumartist") == 0) + { + p = &(id3->albumartist); + } + else if (strcasecmp(name, "album artist") == 0) + { + p = &(id3->albumartist); + } + else if (strcasecmp(name, "ensemble") == 0) + { + p = &(id3->albumartist); + } else { len = parse_replaygain(name, value, id3, buf, buf_remaining); diff --git a/apps/screens.c b/apps/screens.c index d1929c2c8c..631ce80343 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -1142,7 +1142,9 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) LANG_ID3_TITLE, LANG_ID3_ARTIST, LANG_ID3_ALBUM, + LANG_ID3_ALBUMARTIST, LANG_ID3_TRACKNUM, + LANG_ID3_COMMENT, LANG_ID3_GENRE, LANG_ID3_YEAR, LANG_ID3_LENGTH, @@ -1172,7 +1174,10 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) case 2:/*LANG_ID3_ALBUM*/ info=id3->album; break; - case 3:/*LANG_ID3_TRACKNUM*/ + case 3:/*LANG_ID3_ALBUMARTIST*/ + info=id3->albumartist; + break; + case 4:/*LANG_ID3_TRACKNUM*/ if (id3->track_string) info = id3->track_string; else if (id3->tracknum) @@ -1181,10 +1186,13 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) info = buffer; } break; - case 4:/*LANG_ID3_GENRE*/ + case 5:/*LANG_ID3_COMMENT*/ + info=id3->comment; + break; + case 6:/*LANG_ID3_GENRE*/ info = id3_get_genre(id3); break; - case 5:/*LANG_ID3_YEAR*/ + case 7:/*LANG_ID3_YEAR*/ if (id3->year_string) info = id3->year_string; else if (id3->year) @@ -1193,34 +1201,34 @@ static char * id3_get_info(int selected_item, void* data, char *buffer) info = buffer; } break; - case 6:/*LANG_ID3_LENGTH*/ + case 8:/*LANG_ID3_LENGTH*/ gui_wps_format_time(buffer, MAX_PATH, id3->length); info=buffer; break; - case 7:/*LANG_ID3_PLAYLIST*/ + case 9:/*LANG_ID3_PLAYLIST*/ snprintf(buffer, MAX_PATH, "%d/%d", playlist_get_display_index(), playlist_amount()); info=buffer; break; - case 8:/*LANG_ID3_BITRATE*/ + case 10:/*LANG_ID3_BITRATE*/ snprintf(buffer, MAX_PATH, "%d kbps%s", id3->bitrate, id3->vbr ? str(LANG_ID3_VBR) : (const unsigned char*) ""); info=buffer; break; - case 9:/*LANG_ID3_FRECUENCY*/ + case 11:/*LANG_ID3_FRECUENCY*/ snprintf(buffer, MAX_PATH, "%ld Hz", id3->frequency); info=buffer; break; #if CONFIG_CODEC == SWCODEC - case 10:/*LANG_ID3_TRACK_GAIN*/ + case 12:/*LANG_ID3_TRACK_GAIN*/ info=id3->track_gain_string; break; - case 11:/*LANG_ID3_ALBUM_GAIN*/ + case 13:/*LANG_ID3_ALBUM_GAIN*/ info=id3->album_gain_string; break; - case 12:/*LANG_ID3_PATH*/ + case 14:/*LANG_ID3_PATH*/ #else - case 10:/*LANG_ID3_PATH*/ + case 12:/*LANG_ID3_PATH*/ #endif info=id3->path; break; diff --git a/apps/tagcache.c b/apps/tagcache.c index f6c4ad334c..57bde77cf9 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c @@ -102,18 +102,22 @@ static long tempbuf_left; /* Buffer space left. */ static long tempbuf_pos; /* Tags we want to get sorted (loaded to the tempbuf). */ -static const int sorted_tags[] = { tag_artist, tag_album, tag_genre, tag_composer, tag_title }; +static const int sorted_tags[] = { tag_artist, tag_album, tag_genre, + tag_composer, tag_comment, tag_albumartist, tag_title }; /* Uniqued tags (we can use these tags with filters and conditional clauses). */ -static const int unique_tags[] = { tag_artist, tag_album, tag_genre, tag_composer }; +static const int unique_tags[] = { tag_artist, tag_album, tag_genre, + tag_composer, tag_comment, tag_albumartist }; /* Numeric tags (we can use these tags with conditional clauses). */ -static const int numeric_tags[] = { tag_year, tag_tracknumber, tag_length, tag_bitrate, - tag_playcount, tag_playtime, tag_lastplayed, tag_virt_autoscore }; +static const int numeric_tags[] = { tag_year, tag_tracknumber, tag_length, + tag_bitrate, tag_playcount, tag_playtime, tag_lastplayed, + tag_virt_autoscore }; +/* String presentation of the tags defined in tagcache.h. Must be in correct order! */ static const char *tags_str[] = { "artist", "album", "genre", "title", - "filename", "composer", "year", "tracknumber", "bitrate", "length", - "playcount", "playtime", "lastplayed" }; + "filename", "composer", "comment", "albumartist", "year", "tracknumber", + "bitrate", "length", "playcount", "playtime", "lastplayed" }; /* Status information of the tagcache. */ static struct tagcache_stat tc_stat; @@ -1393,6 +1397,8 @@ bool tagcache_fill_tags(struct mp3entry *id3, const char *filename) id3->album = get_tag(entry, tag_album)->tag_data; id3->genre_string = get_tag(entry, tag_genre)->tag_data; id3->composer = get_tag(entry, tag_composer)->tag_data; + id3->comment = get_tag(entry, tag_comment)->tag_data; + id3->albumartist = get_tag(entry, tag_albumartist)->tag_data; id3->year = get_tag_numeric(entry, tag_year); id3->tracknum = get_tag_numeric(entry, tag_tracknumber); id3->bitrate = get_tag_numeric(entry, tag_bitrate); @@ -1550,6 +1556,8 @@ static void add_tagcache(char *path) ADD_TAG(entry, tag_album, &track.id3.album); ADD_TAG(entry, tag_genre, &genrestr); ADD_TAG(entry, tag_composer, &track.id3.composer); + ADD_TAG(entry, tag_comment, &track.id3.comment); + ADD_TAG(entry, tag_albumartist, &track.id3.albumartist); entry.data_length = offset; /* Write the header */ @@ -1562,6 +1570,8 @@ static void add_tagcache(char *path) write_item(track.id3.album); write_item(genrestr); write_item(track.id3.composer); + write_item(track.id3.comment); + write_item(track.id3.albumartist); total_entry_count++; } @@ -2882,6 +2892,10 @@ bool tagcache_create_changelog(struct tagcache_search *tcs) if (! (idx.flag & FLAG_DIRTYNUM) ) continue; + /* Skip deleted entries too. */ + if (idx.flag & FLAG_DELETED) + continue; + /* Now retrieve all tags. */ for (j = 0; j < TAG_COUNT; j++) { diff --git a/apps/tagcache.h b/apps/tagcache.h index 4194851aab..503da8c1eb 100644 --- a/apps/tagcache.h +++ b/apps/tagcache.h @@ -23,12 +23,12 @@ #include "id3.h" enum tag_type { tag_artist = 0, tag_album, tag_genre, tag_title, - tag_filename, tag_composer, tag_year, tag_tracknumber, - tag_bitrate, tag_length, tag_playcount, tag_playtime, tag_lastplayed, + tag_filename, tag_composer, tag_comment, tag_albumartist, tag_year, tag_tracknumber, + tag_bitrate, tag_length, tag_playcount, tag_playtime, tag_lastplayed, /* Virtual tags */ tag_virt_autoscore }; -#define TAG_COUNT 13 +#define TAG_COUNT 15 /* Maximum length of a single tag. */ #define TAG_MAXLEN (MAX_PATH*2) @@ -40,7 +40,7 @@ enum tag_type { tag_artist = 0, tag_album, tag_genre, tag_title, #define IDX_BUF_DEPTH 64 /* Tag Cache Header version 'TCHxx'. Increment when changing internal structures. */ -#define TAGCACHE_MAGIC 0x54434806 +#define TAGCACHE_MAGIC 0x54434807 /* How much to allocate extra space for ramcache. */ #define TAGCACHE_RESERVE 32768 diff --git a/apps/tagtree.c b/apps/tagtree.c index d5d70ac206..885ff3ecfc 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -195,6 +195,9 @@ static int get_tag(int *tag) MATCH(tag, buf, "artist", tag_artist); MATCH(tag, buf, "bitrate", tag_bitrate); MATCH(tag, buf, "composer", tag_composer); + MATCH(tag, buf, "comment", tag_comment); + MATCH(tag, buf, "albumartist", tag_albumartist); + MATCH(tag, buf, "ensemble", tag_albumartist); MATCH(tag, buf, "genre", tag_genre); MATCH(tag, buf, "length", tag_length); MATCH(tag, buf, "title", tag_title); |