- goto out;
- afhi->chunk_table[0] = ret;
- for (i = 1; i<= afhi->chunks_total; i++)
- afhi->chunk_table[i] += ret;
- afhi->channels = channels;
- afhi->frequency = rate;
- ret = (afhi->chunk_table[afhi->chunks_total] - afhi->chunk_table[0]) * 8; /* bits */
- ret += (channels * afhi->seconds_total * 500); /* avoid rounding error */
- afhi->bitrate = ret / (channels * afhi->seconds_total * 1000);
+ return ret;
+ lseek(fd, 0, SEEK_SET);
+
+ mp4 = mp4_open_meta(&cb);
+ if (!mp4)
+ return -E_MP4_OPEN;
+ 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->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;