From patchwork Wed Feb 15 15:45:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 2562 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp2022420vsb; Wed, 15 Feb 2017 07:46:28 -0800 (PST) X-Received: by 10.28.60.66 with SMTP id j63mr8748084wma.74.1487173588803; Wed, 15 Feb 2017 07:46:28 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 39si5544180wrv.83.2017.02.15.07.46.28; Wed, 15 Feb 2017 07:46:28 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E7251689A38; Wed, 15 Feb 2017 17:46:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbg202.qq.com (smtpbg202.qq.com [184.105.206.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 315F7689A13 for ; Wed, 15 Feb 2017 17:46:11 +0200 (EET) X-QQ-mid: bizesmtp15t1487173552twsd1jj0 Received: from localhost (unknown [47.90.47.25]) by esmtp4.qq.com (ESMTP) with id ; Wed, 15 Feb 2017 23:45:50 +0800 (CST) X-QQ-SSF: 01100000002000F0F820000A0000000 X-QQ-FEAT: A/E2aCcFPUw9r5rj6zzzaDXDoMwPCp1oQsmMrhMh5zZRWox/4vPds6LR9yA9g 7xmZaVzMr0G92NwRHZugyBwyAfIXIoxT1A6I2bEBktRAAPq7q9jTxlJsYIq9lZlVnMt21qA GOccDVTvl6bVQ+gJXBP0CtliphVvs+hr/uT8AjMfqkY1n/DCD8vY0dvCdBQXmtlkGu4iZNi 9CwBY5UDK7bQrT9V2FcbBVszXE2+67cZhpAKQxbwhXiwGg+pFvhiZqvU5YMHac/thv35rIM CSmQ== X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Wed, 15 Feb 2017 23:45:49 +0800 Message-Id: <20170215154549.13637-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty X-QQ-SENDSIZE: 520 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH] avformat/hlsenc: set default http method to PUT when method is null X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" When the http method is not set, the method will use POST for ts, PUT for m3u8, it is not unify, now set it unify. This ticket id: 5315 Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 930e94b..c2c47c3 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -251,6 +251,7 @@ static int hls_delete_old_segments(HLSContext *hls) { char *path = NULL; AVDictionary *options = NULL; AVIOContext *out = NULL; + const char *proto = NULL; segment = hls->segments; while (segment) { @@ -300,7 +301,8 @@ static int hls_delete_old_segments(HLSContext *hls) { av_strlcat(path, segment->filename, path_size); } - if (hls->method) { + proto = avio_find_protocol_name(hls->basename); + if (hls->method || (proto && !av_strcasecmp(proto, "http"))) { av_dict_set(&options, "method", "DELETE", 0); if ((ret = hls->avf->io_open(hls->avf, &out, path, AVIO_FLAG_WRITE, &options)) < 0) goto fail; @@ -321,7 +323,7 @@ static int hls_delete_old_segments(HLSContext *hls) { av_strlcpy(sub_path, dirname, sub_path_size); av_strlcat(sub_path, segment->sub_filename, sub_path_size); - if (hls->method) { + if (hls->method || (proto && !av_strcasecmp(proto, "http"))) { av_dict_set(&options, "method", "DELETE", 0); if ((ret = hls->avf->io_open(hls->avf, &out, sub_path, AVIO_FLAG_WRITE, &options)) < 0) { av_free(sub_path); @@ -665,8 +667,14 @@ static void hls_free_segments(HLSSegment *p) static void set_http_options(AVDictionary **options, HLSContext *c) { - if (c->method) + const char *proto = avio_find_protocol_name(c->basename); + + if (c->method) { av_dict_set(options, "method", c->method, 0); + } else if (proto && !av_strcasecmp(proto, "http")) { + av_log(c, AV_LOG_WARNING, "You forget set http method, hls muxer auto set default method to PUT\n"); + av_dict_set(options, "method", "PUT", 0); + } } static void write_m3u8_head_block(HLSContext *hls, AVIOContext *out, int version,