|
|
|
@ -175,10 +175,8 @@ static int aa_read_header(AVFormatContext *s) |
|
|
|
|
|
|
|
|
|
/* decoder setup */ |
|
|
|
|
st = avformat_new_stream(s, NULL); |
|
|
|
|
if (!st) { |
|
|
|
|
av_freep(&c->tea_ctx); |
|
|
|
|
if (!st) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
} |
|
|
|
|
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; |
|
|
|
|
if (!strcmp(codec_name, "mp332")) { |
|
|
|
|
st->codecpar->codec_id = AV_CODEC_ID_MP3; |
|
|
|
@ -230,11 +228,9 @@ static int aa_read_header(AVFormatContext *s) |
|
|
|
|
avio_skip(pb, 4 + chapter_size); |
|
|
|
|
if (!avpriv_new_chapter(s, chapter_idx, st->time_base, |
|
|
|
|
chapter_pos * TIMEPREC, |
|
|
|
|
(chapter_pos + chapter_size) * TIMEPREC, NULL)) { |
|
|
|
|
av_freep(&c->tea_ctx); |
|
|
|
|
(chapter_pos + chapter_size) * TIMEPREC, NULL)) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
st->duration = (largest_size - CHAPTER_HEADER_SIZE * s->nb_chapters) * TIMEPREC; |
|
|
|
|
|
|
|
|
@ -418,4 +414,5 @@ const AVInputFormat ff_aa_demuxer = { |
|
|
|
|
.read_seek = aa_read_seek, |
|
|
|
|
.read_close = aa_read_close, |
|
|
|
|
.flags = AVFMT_NO_BYTE_SEEK | AVFMT_NOGENSEARCH, |
|
|
|
|
.flags_internal = FF_FMT_INIT_CLEANUP, |
|
|
|
|
}; |
|
|
|
|