[FFmpeg-devel] [PATCH 03/10] avformat/hls: extract free_playlist method
Zhao Zhili
quinkblack at foxmail.com
Tue Apr 12 11:15:15 EEST 2022
---
libavformat/hls.c | 43 ++++++++++++++++++++++++-------------------
1 file changed, 24 insertions(+), 19 deletions(-)
diff --git a/libavformat/hls.c b/libavformat/hls.c
index e249810bce..ecb6237d2e 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -253,30 +253,35 @@ static void free_init_section_list(struct playlist *pls)
pls->n_init_sections = 0;
}
+static void free_playlist(HLSContext *c, struct playlist *pls)
+{
+ free_segment_list(pls);
+ free_init_section_list(pls);
+ av_freep(&pls->main_streams);
+ av_freep(&pls->renditions);
+ av_freep(&pls->id3_buf);
+ av_dict_free(&pls->id3_initial);
+ ff_id3v2_free_extra_meta(&pls->id3_deferred_extra);
+ av_freep(&pls->init_sec_buf);
+ av_packet_free(&pls->pkt);
+ av_freep(&pls->pb.pub.buffer);
+ ff_format_io_close(c->ctx, &pls->input);
+ pls->input_read_done = 0;
+ ff_format_io_close(c->ctx, &pls->input_next);
+ pls->input_next_requested = 0;
+ if (pls->ctx) {
+ pls->ctx->pb = NULL;
+ avformat_close_input(&pls->ctx);
+ }
+ av_free(pls);
+}
+
static void free_playlist_list(HLSContext *c)
{
int i;
for (i = 0; i < c->n_playlists; i++) {
struct playlist *pls = c->playlists[i];
- free_segment_list(pls);
- free_init_section_list(pls);
- av_freep(&pls->main_streams);
- av_freep(&pls->renditions);
- av_freep(&pls->id3_buf);
- av_dict_free(&pls->id3_initial);
- ff_id3v2_free_extra_meta(&pls->id3_deferred_extra);
- av_freep(&pls->init_sec_buf);
- av_packet_free(&pls->pkt);
- av_freep(&pls->pb.pub.buffer);
- ff_format_io_close(c->ctx, &pls->input);
- pls->input_read_done = 0;
- ff_format_io_close(c->ctx, &pls->input_next);
- pls->input_next_requested = 0;
- if (pls->ctx) {
- pls->ctx->pb = NULL;
- avformat_close_input(&pls->ctx);
- }
- av_free(pls);
+ free_playlist(c, pls);
}
av_freep(&c->playlists);
c->n_playlists = 0;
--
2.31.1
More information about the ffmpeg-devel
mailing list