]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - aac_afh.c
mp4: Introduce mp4_get_meta().
[paraslash.git] / aac_afh.c
index 84aeaa85e6a07bf37033856587eb2f8600cedf01..1522b5f0f7e1c8502439fd31b7884f246ef9079c 100644 (file)
--- a/aac_afh.c
+++ b/aac_afh.c
@@ -221,8 +221,7 @@ static int aac_afh_rewrite_tags(const char *map, size_t mapsize,
                struct taginfo *tags, int fd, __a_unused const char *filename)
 {
        int ret, i;
-       int32_t rv;
-       struct mp4_metadata metadata;
+       struct mp4_metadata *metadata;
        struct mp4 *mp4;
        struct mp4_callback cb = {
                .read = aac_afh_meta_read_cb,
@@ -242,22 +241,12 @@ static int aac_afh_rewrite_tags(const char *map, size_t mapsize,
        mp4 = mp4_open_meta(&cb);
        if (!mp4)
                return -E_MP4_OPEN;
-
-       ret = -E_MP4_META_READ;
-       rv = mp4_meta_get_num_items(mp4);
-       if (rv < 0)
-               goto close;
-       metadata.count = rv;
-       PARA_NOTICE_LOG("%d metadata item(s) found\n", rv);
-
-       metadata.tags = para_malloc((metadata.count + 5) * sizeof(struct mp4_tag));
-       for (i = 0; i < metadata.count; i++) {
-               struct mp4_tag *tag = metadata.tags + i;
-
-               ret = -E_MP4_META_READ;
-               if (!mp4_meta_get_by_index(mp4, i, &tag->item, &tag->value))
-                       goto close;
-               PARA_INFO_LOG("found: %s: %s\n", tag->item, tag->value);
+       metadata = mp4_get_meta(mp4);
+       PARA_NOTICE_LOG("%u metadata item(s) found\n", metadata->count);
+       metadata->tags = para_realloc(metadata->tags,
+               (metadata->count + 5) * sizeof(struct mp4_tag));
+       for (i = 0; i < metadata->count; i++) {
+               struct mp4_tag *tag = metadata->tags + i;
                if (!strcmp(tag->item, "artist"))
                        replace_tag(tag, tags->artist, &found_artist);
                else if (!strcmp(tag->item, "title"))
@@ -270,17 +259,17 @@ static int aac_afh_rewrite_tags(const char *map, size_t mapsize,
                        replace_tag(tag, tags->comment, &found_comment);
        }
        if (!found_artist)
-               add_tag(&metadata, "artist", tags->artist);
+               add_tag(metadata, "artist", tags->artist);
        if (!found_title)
-               add_tag(&metadata, "title", tags->title);
+               add_tag(metadata, "title", tags->title);
        if (!found_album)
-               add_tag(&metadata, "album", tags->album);
+               add_tag(metadata, "album", tags->album);
        if (!found_year)
-               add_tag(&metadata, "date", tags->year);
+               add_tag(metadata, "date", tags->year);
        if (!found_comment)
-               add_tag(&metadata, "comment", tags->comment);
+               add_tag(metadata, "comment", tags->comment);
        ret = -E_MP4_META_WRITE;
-       if (!mp4_meta_update(mp4, &metadata))
+       if (!mp4_meta_update(mp4, metadata))
                goto close;
        ret = 1;
 close: