aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2010-06-30 21:19:30 +0200
committerMax Kellermann <max@duempel.org>2010-06-30 21:19:30 +0200
commitcfcd84655c5988716229d3f8e8e30949cb1708ac (patch)
tree8708aeb7974854aa6edc4ba5273c026b11c55678
parent5092eaf1ccf7785c70d21a814f44a4b9437f63c0 (diff)
downloadmpd-cfcd84655c5988716229d3f8e8e30949cb1708ac.tar.gz
mpd-cfcd84655c5988716229d3f8e8e30949cb1708ac.tar.xz
mpd-cfcd84655c5988716229d3f8e8e30949cb1708ac.zip
decoder/mp4ff: use tag_table.h to parse tag names
Convert if/else/else/... to a loop.
-rw-r--r--src/decoder/mp4ff_plugin.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/decoder/mp4ff_plugin.c b/src/decoder/mp4ff_plugin.c
index cf9382904..a330763ca 100644
--- a/src/decoder/mp4ff_plugin.c
+++ b/src/decoder/mp4ff_plugin.c
@@ -19,6 +19,7 @@
#include "../decoder_api.h"
#include "config.h"
+#include "tag_table.h"
#include <glib.h>
@@ -339,6 +340,17 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream)
mp4ff_close(mp4fh);
}
+static const char *const mp4ff_tag_names[TAG_NUM_OF_ITEM_TYPES] = {
+ [TAG_ITEM_TITLE] = "title",
+ [TAG_ITEM_ARTIST] = "artist",
+ [TAG_ITEM_ALBUM] = "album",
+ [TAG_ITEM_TRACK] = "track",
+ [TAG_ITEM_DISC] = "disc",
+ [TAG_ITEM_GENRE] = "genre",
+ [TAG_ITEM_DATE] = "date",
+ [TAG_ITEM_COMPOSER] = "writer",
+};
+
static struct tag *
mp4_tag_dup(const char *file)
{
@@ -394,24 +406,9 @@ mp4_tag_dup(const char *file)
mp4ff_meta_get_by_index(mp4fh, i, &item, &value);
- if (0 == g_ascii_strcasecmp("artist", item)) {
- tag_add_item(ret, TAG_ITEM_ARTIST, value);
- } else if (0 == g_ascii_strcasecmp("title", item)) {
- tag_add_item(ret, TAG_ITEM_TITLE, value);
- } else if (0 == g_ascii_strcasecmp("album", item)) {
- tag_add_item(ret, TAG_ITEM_ALBUM, value);
- } else if (0 == g_ascii_strcasecmp("track", item)) {
- tag_add_item(ret, TAG_ITEM_TRACK, value);
- } else if (0 == g_ascii_strcasecmp("disc", item)) {
- /* Is that the correct id? */
- tag_add_item(ret, TAG_ITEM_DISC, value);
- } else if (0 == g_ascii_strcasecmp("genre", item)) {
- tag_add_item(ret, TAG_ITEM_GENRE, value);
- } else if (0 == g_ascii_strcasecmp("date", item)) {
- tag_add_item(ret, TAG_ITEM_DATE, value);
- } else if (0 == g_ascii_strcasecmp("writer", item)) {
- tag_add_item(ret, TAG_ITEM_COMPOSER, value);
- }
+ enum tag_type type = tag_table_lookup(mp4ff_tag_names, item);
+ if (type != TAG_NUM_OF_ITEM_TYPES)
+ tag_add_item(ret, type, value);
free(item);
free(value);