diff options
Diffstat (limited to 'src/decoder')
-rw-r--r-- | src/decoder/mp4ff_plugin.c | 33 |
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); |