static void _aac_afh_get_taginfo(const struct mp4 *mp4, struct taginfo *tags)
{
- mp4_meta_get_artist(mp4, &tags->artist);
- mp4_meta_get_title(mp4, &tags->title);
- mp4_meta_get_date(mp4, &tags->year);
- mp4_meta_get_album(mp4, &tags->album);
- mp4_meta_get_comment(mp4, &tags->comment);
+ tags->artist = mp4_meta_get_artist(mp4);
+ tags->title = mp4_meta_get_title(mp4);
+ tags->year = mp4_meta_get_date(mp4);
+ tags->album = mp4_meta_get_album(mp4);
+ tags->comment = mp4_meta_get_comment(mp4);
}
/*
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,
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 free_tags;
- 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"))
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(&cb, &metadata))
- goto free_tags;
+ if (!mp4_meta_update(mp4, metadata))
+ goto close;
ret = 1;
-free_tags:
- for (; i > 0; i--) {
- free(metadata.tags[i - 1].item);
- free(metadata.tags[i - 1].value);
- }
- free(metadata.tags);
close:
mp4_close(mp4);
return ret;