diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 7c4d447ddc..399b0743ce 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -2029,16 +2029,20 @@ static int mpegts_read_packet(AVFormatContext *s, return ret; } -static int mpegts_read_close(AVFormatContext *s) +static void mpegts_free(MpegTSContext *ts) { - MpegTSContext *ts = s->priv_data; int i; clear_programs(ts); for(i=0;ipids[i]) mpegts_close_filter(ts, ts->pids[i]); +} +static int mpegts_read_close(AVFormatContext *s) +{ + MpegTSContext *ts = s->priv_data; + mpegts_free(ts); return 0; } @@ -2150,10 +2154,7 @@ int ff_mpegts_parse_packet(MpegTSContext *ts, AVPacket *pkt, void ff_mpegts_parse_close(MpegTSContext *ts) { - int i; - - for(i=0;ipids[i]); + mpegts_free(ts); av_free(ts); }