if (!val || !*val)
return 0;
fr = id3_frame_new(id);
- PARA_DEBUG_LOG("frame desc: %s, %d fields\n", fr->description, fr->nfields);
+ PARA_DEBUG_LOG("frame desc: %s, %u fields\n", fr->description, fr->nfields);
/* Frame 0 contains the encoding. We always use UTF-8. */
field = id3_frame_field(fr, 0);
if (v2_tag) {
PARA_NOTICE_LOG("replacing id3v2 tag\n");
old_v2size = v2_tag->paddedsize;
- } else if (!v1_tag) {
- PARA_NOTICE_LOG("no id3 tags found, adding id3v2 tag\n");
+ } else {
+ PARA_NOTICE_LOG("adding id3v2 tag\n");
v2_tag = id3_tag_new();
assert(v2_tag);
}
- if (v2_tag) {
- /*
- * Turn off all options to avoid creating an extended header.
- * id321 does not understand it.
- */
- id3_tag_options(v2_tag, ~0U, 0);
- ret = replace_tags(v2_tag, tags);
- if (ret < 0)
- goto out;
- new_v2size = id3_tag_render(v2_tag, NULL);
- v2_buffer = para_malloc(new_v2size);
- id3_tag_render(v2_tag, v2_buffer);
- PARA_INFO_LOG("writing v2 tag (%lu bytes)\n", new_v2size);
- ret = write_all(fd, (char *)v2_buffer, new_v2size);
- free(v2_buffer);
- if (ret < 0)
- goto out;
- }
+ /*
+ * Turn off all options to avoid creating an extended header. id321
+ * does not understand it.
+ */
+ id3_tag_options(v2_tag, ~0U, 0);
+ ret = replace_tags(v2_tag, tags);
+ if (ret < 0)
+ goto out;
+ new_v2size = id3_tag_render(v2_tag, NULL);
+ v2_buffer = para_malloc(new_v2size);
+ id3_tag_render(v2_tag, v2_buffer);
+ PARA_INFO_LOG("writing v2 tag (%lu bytes)\n", new_v2size);
+ ret = write_all(fd, (char *)v2_buffer, new_v2size);
+ free(v2_buffer);
+ if (ret < 0)
+ goto out;
data_sz = mapsize - old_v2size;
if (v1_tag && data_sz >= 128)
data_sz -= 128;
tv_divide(afhi->chunks_total, &total_time, &afhi->chunk_tv);
PARA_DEBUG_LOG("%" PRIu32 "chunks, each %lums\n", afhi->chunks_total,
tv2ms(&afhi->chunk_tv));
+ set_max_chunk_size(afhi);
ret = mp3_get_id3(map, numbytes, fd, &afhi->tags);
afhi->techinfo = make_message("%cbr, %s, %s tags", vbr? 'v' : 'c',
header_mode(&header), tag_versions[ret]);
return 1;
err_out:
- PARA_ERROR_LOG("%s\n", para_strerror(-ret));
free(afhi->chunk_table);
return ret;
}
return 1;
}
-static const char* mp3_suffixes[] = {"mp3", NULL};
+static const char * const mp3_suffixes[] = {"mp3", NULL};
/**
* the init function of the mp3 audio format handler
*
* \param afh pointer to the struct to initialize
*/
-void mp3_init(struct audio_format_handler *afh)
+void mp3_afh_init(struct audio_format_handler *afh)
{
afh->get_file_info = mp3_get_file_info;
afh->suffixes = mp3_suffixes;