diff --git a/avserver.c b/avserver.c index e4d353b559..89e0e6da1d 100644 --- a/avserver.c +++ b/avserver.c @@ -2736,7 +2736,7 @@ static int http_receive_data(HTTPContext *c) /* Now we have the actual streams */ if (s->nb_streams != feed->nb_streams) { - av_close_input_stream(s); + av_close_input_file(s); av_free(pb); http_log("Feed '%s' stream number does not match registered feed\n", c->stream->feed_filename); @@ -2749,7 +2749,7 @@ static int http_receive_data(HTTPContext *c) avcodec_copy_context(fst->codec, st->codec); } - av_close_input_stream(s); + av_close_input_file(s); av_free(pb); } c->buffer_ptr = c->buffer; diff --git a/libavformat/anm.c b/libavformat/anm.c index 00a36abebe..7ceb2d8918 100644 --- a/libavformat/anm.c +++ b/libavformat/anm.c @@ -137,16 +137,16 @@ static int read_header(AVFormatContext *s, st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); if (!st->codec->extradata) { ret = AVERROR(ENOMEM); - goto close_and_return; + goto fail; } ret = avio_read(pb, st->codec->extradata, st->codec->extradata_size); if (ret < 0) - goto close_and_return; + goto fail; /* read page table */ ret = avio_seek(pb, anm->page_table_offset, SEEK_SET); if (ret < 0) - goto close_and_return; + goto fail; for (i = 0; i < MAX_PAGES; i++) { Page *p = &anm->pt[i]; @@ -159,7 +159,7 @@ static int read_header(AVFormatContext *s, anm->page = find_record(anm, 0); if (anm->page < 0) { ret = anm->page; - goto close_and_return; + goto fail; } anm->record = -1; @@ -169,8 +169,7 @@ invalid: av_log_ask_for_sample(s, NULL); ret = AVERROR_INVALIDDATA; -close_and_return: - av_close_input_stream(s); +fail: return ret; } diff --git a/libavformat/avformat.h b/libavformat/avformat.h index faef47483d..548bc186fb 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1560,11 +1560,15 @@ int av_read_play(AVFormatContext *s); */ int av_read_pause(AVFormatContext *s); +#if FF_API_FORMAT_PARAMETERS /** * Free a AVFormatContext allocated by av_open_input_stream. * @param s context to free + * @deprecated use av_close_input_file() */ +attribute_deprecated void av_close_input_stream(AVFormatContext *s); +#endif /** * Close a media file (but not its codecs). diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 37ffae9f66..0d25e3f254 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -368,7 +368,7 @@ static void mpegts_close_filter(MpegTSContext *ts, MpegTSFilter *filter) PESContext *pes = filter->u.pes_filter.opaque; av_freep(&pes->buffer); /* referenced private data will be freed later in - * av_close_input_stream */ + * av_close_input_file */ if (!((PESContext *)filter->u.pes_filter.opaque)->st) { av_freep(&filter->u.pes_filter.opaque); } diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index b63f9f68cf..52821545ff 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -580,7 +580,7 @@ void ff_rtsp_close_streams(AVFormatContext *s) } av_free(rt->rtsp_streams); if (rt->asf_ctx) { - av_close_input_stream (rt->asf_ctx); + av_close_input_file(rt->asf_ctx); rt->asf_ctx = NULL; } av_free(rt->p); diff --git a/libavformat/utils.c b/libavformat/utils.c index 8b749ad7fc..8a76cb815e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2632,6 +2632,7 @@ int av_read_pause(AVFormatContext *s) return AVERROR(ENOSYS); } +#if FF_API_FORMAT_PARAMETERS void av_close_input_stream(AVFormatContext *s) { flush_packet_queue(s); @@ -2639,6 +2640,7 @@ void av_close_input_stream(AVFormatContext *s) s->iformat->read_close(s); avformat_free_context(s); } +#endif void avformat_free_context(AVFormatContext *s) { @@ -2686,7 +2688,10 @@ void av_close_input_file(AVFormatContext *s) { AVIOContext *pb = (s->iformat->flags & AVFMT_NOFILE) || (s->flags & AVFMT_FLAG_CUSTOM_IO) ? NULL : s->pb; - av_close_input_stream(s); + flush_packet_queue(s); + if (s->iformat->read_close) + s->iformat->read_close(s); + avformat_free_context(s); if (pb) avio_close(pb); }