|
|
@@ -640,26 +640,28 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
level = AV_LOG_ERROR; |
|
|
|
av_log(s, level, "Discarding ID3 tags because more suitable tags were found.\n"); |
|
|
|
av_dict_free(&s->internal->id3v2_meta); |
|
|
|
if (s->error_recognition & AV_EF_EXPLODE) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
if (s->error_recognition & AV_EF_EXPLODE) { |
|
|
|
ret = AVERROR_INVALIDDATA; |
|
|
|
goto close; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (id3v2_extra_meta) { |
|
|
|
if (!strcmp(s->iformat->name, "mp3") || !strcmp(s->iformat->name, "aac") || |
|
|
|
!strcmp(s->iformat->name, "tta")) { |
|
|
|
if ((ret = ff_id3v2_parse_apic(s, &id3v2_extra_meta)) < 0) |
|
|
|
goto fail; |
|
|
|
goto close; |
|
|
|
if ((ret = ff_id3v2_parse_chapters(s, &id3v2_extra_meta)) < 0) |
|
|
|
goto fail; |
|
|
|
goto close; |
|
|
|
if ((ret = ff_id3v2_parse_priv(s, &id3v2_extra_meta)) < 0) |
|
|
|
goto fail; |
|
|
|
goto close; |
|
|
|
} else |
|
|
|
av_log(s, AV_LOG_DEBUG, "demuxer does not support additional id3 data, skipping\n"); |
|
|
|
} |
|
|
|
ff_id3v2_free_extra_meta(&id3v2_extra_meta); |
|
|
|
|
|
|
|
if ((ret = avformat_queue_attached_pictures(s)) < 0) |
|
|
|
goto fail; |
|
|
|
goto close; |
|
|
|
|
|
|
|
if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->pb && !s->internal->data_offset) |
|
|
|
s->internal->data_offset = avio_tell(s->pb); |
|
|
@@ -678,6 +680,9 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
*ps = s; |
|
|
|
return 0; |
|
|
|
|
|
|
|
close: |
|
|
|
if (s->iformat->read_close) |
|
|
|
s->iformat->read_close(s); |
|
|
|
fail: |
|
|
|
ff_id3v2_free_extra_meta(&id3v2_extra_meta); |
|
|
|
av_dict_free(&tmp); |
|
|
|