X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Foggdec.c;h=30583c495dc27b271c77c8a94a6e763c1d22db1b;hb=db1ba2213f70ad958ba4ec961042ea5a9e52fc9f;hp=c3291cfbd418b2ef86a0702d21f2ebcee16a1bcb;hpb=8d0b2aae71f01904e4a7ac0e8795592da5a0bd89;p=ffmpeg diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index c3291cfbd41..30583c495dc 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -57,7 +57,6 @@ static const struct ogg_codec * const ogg_codecs[] = { }; static int64_t ogg_calc_pts(AVFormatContext *s, int idx, int64_t *dts); -static int ogg_read_close(AVFormatContext *s); //FIXME We could avoid some structure duplication static int ogg_save(AVFormatContext *s) @@ -599,6 +598,23 @@ static int ogg_get_length(AVFormatContext *s) return 0; } +static int ogg_read_close(AVFormatContext *s) +{ + struct ogg *ogg = s->priv_data; + int i; + + for (i = 0; i < ogg->nstreams; i++) { + av_free(ogg->streams[i].buf); + if (ogg->streams[i].codec && + ogg->streams[i].codec->cleanup) { + ogg->streams[i].codec->cleanup(s, i); + } + av_free(ogg->streams[i].private); + } + av_free(ogg->streams); + return 0; +} + static int ogg_read_header(AVFormatContext *s) { struct ogg *ogg = s->priv_data; @@ -722,19 +738,6 @@ retry: return psize; } -static int ogg_read_close(AVFormatContext *s) -{ - struct ogg *ogg = s->priv_data; - int i; - - for (i = 0; i < ogg->nstreams; i++) { - av_free(ogg->streams[i].buf); - av_free(ogg->streams[i].private); - } - av_free(ogg->streams); - return 0; -} - static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index, int64_t *pos_arg, int64_t pos_limit) {