- 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"))
- replace_tag(tag, tags->title, &found_title);
- else if (!strcmp(tag->item, "album"))
- replace_tag(tag, tags->album, &found_album);
- else if (!strcmp(tag->item, "date"))
- replace_tag(tag, tags->year, &found_year);
- else if (!strcmp(tag->item, "comment"))
- replace_tag(tag, tags->comment, &found_comment);
- }
- if (!found_artist)
- add_tag(metadata, "artist", tags->artist);
- if (!found_title)
- add_tag(metadata, "title", tags->title);
- if (!found_album)
- add_tag(metadata, "album", tags->album);
- if (!found_year)
- add_tag(metadata, "date", tags->year);
- if (!found_comment)
- add_tag(metadata, "comment", tags->comment);
- ret = -E_MP4_META_WRITE;
- if (!mp4_meta_update(mp4, metadata))
- goto close;
- ret = 1;
-close:
+ replace_or_add_tag("artist", tags->artist, metadata);
+ replace_or_add_tag("title", tags->title, metadata);
+ replace_or_add_tag("album", tags->album, metadata);
+ replace_or_add_tag("date", tags->year, metadata);
+ replace_or_add_tag("comment", tags->comment, metadata);
+ ret = mp4_update_meta(mp4);