Basel Sayeh <basel.sa...@hotmail.com> 于2023年1月7日周六 08:22写道: > > V6: > - Removed the const for filename in "hls_delete_file" to > fix compilation warnings > > - Removed the unnecessary calls to ff_format_io_close > this patch introduced in hls_delete_file and in > dashenc_delete_file > > V1-V5: > hls_delete_file and dashenc_delete_file functions open a > new HTTP connection regardless of the http_persistent value, > So change their behaviour to keep http connections open > if http_persistent is set > > > Signed-off-by: Basel Sayeh <basel.sa...@hotmail.com> > --- > libavformat/hlsenc.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index a86fc8907f..39df9becc7 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -252,6 +252,7 @@ typedef struct HLSContext { > int http_persistent; > AVIOContext *m3u8_out; > AVIOContext *sub_m3u8_out; > + AVIOContext *http_delete; > int64_t timeout; > int ignore_io_errors; > char *headers; > @@ -565,19 +566,22 @@ static void reflush_dynbuf(VariantStream *vs, int > *range_length) > #endif > > static int hls_delete_file(HLSContext *hls, AVFormatContext *avf, > - const char *path, const char *proto) > + char *path, const char *proto) > { > if (hls->method || (proto && !av_strcasecmp(proto, "http"))) { > AVDictionary *opt = NULL; > - AVIOContext *out = NULL; > int ret; > + > set_http_options(avf, &opt, hls); > av_dict_set(&opt, "method", "DELETE", 0); > - ret = avf->io_open(avf, &out, path, AVIO_FLAG_WRITE, &opt); > + > + ret = hlsenc_io_open(avf, &hls->http_delete, path, &opt); > av_dict_free(&opt); > if (ret < 0) > return hls->ignore_io_errors ? 1 : ret; > - ff_format_io_close(avf, &out); > + > + //Nothing to write > + hlsenc_io_close(avf, &hls->http_delete, path); > } else if (unlink(path) < 0) { > av_log(hls, AV_LOG_ERROR, "failed to delete old segment %s: %s\n", > path, strerror(errno)); > @@ -662,7 +666,7 @@ static int hls_delete_old_segments(AVFormatContext *s, > HLSContext *hls, > } > > proto = avio_find_protocol_name(s->url); > - if (ret = hls_delete_file(hls, vs->avf, path.str, proto)) > + if (ret = hls_delete_file(hls, s, path.str, proto)) > goto fail; > > if ((segment->sub_filename[0] != '\0')) { > @@ -679,7 +683,7 @@ static int hls_delete_old_segments(AVFormatContext *s, > HLSContext *hls, > goto fail; > } > > - if (ret = hls_delete_file(hls, vs->vtt_avf, path.str, proto)) > + if (ret = hls_delete_file(hls, s, path.str, proto)) > goto fail; > } > av_bprint_clear(&path); > @@ -2707,6 +2711,7 @@ static void hls_deinit(AVFormatContext *s) > > ff_format_io_close(s, &hls->m3u8_out); > ff_format_io_close(s, &hls->sub_m3u8_out); > + ff_format_io_close(s, &hls->http_delete); > av_freep(&hls->key_basename); > av_freep(&hls->var_streams); > av_freep(&hls->cc_streams); > -- > 2.30.2 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Patchset pushed Thanks Steven _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".