avformat/aadec: Simplify cleanup after read_header failure

by setting the FF_FMT_INIT_CLEANUP flag.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
pull/359/head
Andreas Rheinhardt 5 years ago
parent f7fb09cb00
commit b09b166829
  1. 9
      libavformat/aadec.c

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

Loading…
Cancel
Save