summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/gwps-common.c6
-rw-r--r--apps/lang/deutsch.lang28
-rw-r--r--apps/lang/english.lang28
-rw-r--r--apps/metadata.c16
-rw-r--r--apps/screens.c30
-rw-r--r--apps/tagcache.c26
-rw-r--r--apps/tagcache.h8
-rw-r--r--apps/tagtree.c3
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);