From patchwork Fri Feb 28 09:53:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17952 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 989EB44AE64 for ; Fri, 28 Feb 2020 11:53:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6BEDD68B294; Fri, 28 Feb 2020 11:53:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D52768B1D0 for ; Fri, 28 Feb 2020 11:53:32 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id y17so2222469wrn.6 for ; Fri, 28 Feb 2020 01:53:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=joBqUW/F4wvK9kgftetxQQGIJ7bQROeSEgV2fC3XH7Y=; b=jhChxhN1kDxBEJEYGyeNKgK+4cVqNzx9Lcd8PwhZSjbd8Gkfj7aXI8QcY/MebOwhhU QvvzHJjqF3DkyS03VlsSaGhRiJ0VehPiZpQLsQLT3HcJjB55TWW2Ga1GL3O+tXvUj9UE Vm9O3e4VN8AL7o3Ps0RRmkIw81CHsmTmQ/6kvsZhf1xqIIFd+j8noENY20tTrN4lUeWL AbpL3sCUwiNb6U2Aca4MnDIBqOa3IyTurtV1Ix8227OA41hDz9gAcxjBoAl+bEf44Jy6 cxg61ydCdxxJLUsSIKnfnJ+D3iBm7xIoYErcOY1KwNzSHHBB2hglxf9exLml+GURMjJ/ /d6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=joBqUW/F4wvK9kgftetxQQGIJ7bQROeSEgV2fC3XH7Y=; b=laja2012QzjTA8Ncv1rhQWoqiYeQIVtniUU/jq0Gfzo1xbYMMdkivIlYL1Eq2r9Fv1 fych+0aRF8Qp9DFiKN+S3F3Ky0ARZZkqS745BR6Nbkrmyj4c0e1mqztt3YuY4ReOGS7f /T7x83u8UA8sGWU0vpdSAaFYYGzsRMOXPY/nn8qlOKOdbUMxuWplNoOS43tjAR9qXLvg e04tmZtRvRGA6cLcpM08CbqiBiB1i1cQcxSc/9uaFFVUCwiiz/y1pkk/xfBuQ8cwibgo KLZ2LUuzXU36rszs5Ye8iqJ9ODpshoQf7qE2gu4kQhRp6dp1I2rTaCjm+wOTHI09O+yK UvKg== X-Gm-Message-State: APjAAAXfPClf9GeMHYAsysOp5dwwZq0TbTGO1rsE9K3NegRDkBUsANop +rxm/qVGy0OwTXbPGLnhYf6dKbKf X-Google-Smtp-Source: APXvYqy1KyYDaRmWvdMwzoPc9afuwNL8shwqb3LSCu/OZfybs8+RWv/F3raPPY2eaW0xNi94+4SdLg== X-Received: by 2002:adf:f1cb:: with SMTP id z11mr3941185wro.375.1582883611365; Fri, 28 Feb 2020 01:53:31 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:30 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:15 +0100 Message-Id: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/7] avformat/hlsenc: Avoid setting unused variables 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Several variables which are only used when the HLS_SINGLE_FILE flag is unset have been set even when this flag is set. This has been changed. Signed-off-by: Andreas Rheinhardt --- Now not moving variables into a smaller scope. libavformat/hlsenc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index f6dd894343..51cbfba151 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2332,11 +2332,6 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) } } - if (oc->url[0]) { - proto = avio_find_protocol_name(oc->url); - use_temp_file = proto && !strcmp(proto, "file") && (hls->flags & HLS_TEMP_FILE); - } - if (hls->flags & HLS_SINGLE_FILE) { ret = flush_dynbuf(vs, &range_length); av_freep(&vs->temp_buffer); @@ -2345,6 +2340,12 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) } vs->size = range_length; } else { + if (oc->url[0]) { + proto = avio_find_protocol_name(oc->url); + use_temp_file = proto && !strcmp(proto, "file") + && (hls->flags & HLS_TEMP_FILE); + } + if ((hls->max_seg_size > 0 && (vs->size >= hls->max_seg_size)) || !byterange_mode) { AVDictionary *options = NULL; char *filename = NULL; @@ -2394,10 +2395,9 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) av_freep(&vs->temp_buffer); av_freep(&filename); } - } - if (use_temp_file && !(hls->flags & HLS_SINGLE_FILE)) { - hls_rename_temp_file(s, oc); + if (use_temp_file) + hls_rename_temp_file(s, oc); } old_filename = av_strdup(oc->url); From patchwork Fri Feb 28 09:53:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17953 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A20D544AE64 for ; Fri, 28 Feb 2020 11:53:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8629C68B4BE; Fri, 28 Feb 2020 11:53:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9804F68B294 for ; Fri, 28 Feb 2020 11:53:52 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id v4so2202116wrs.8 for ; Fri, 28 Feb 2020 01:53:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UM3C/Gvi478yDiaVGOBundZzY/RdB8X805LmpKwIPZc=; b=sUEi/baEzhi303VAqPDx/rFlfq8hHl4FHpMUM0Lv0PP2CA+ODx5KCIt60QjpdwZ8TB 1OOGA78h02yKRG5HfKeqvcat/F0h6th2bLqshZjNEArq4hAT/KMx9triUi3WtsNsfAFv gycmxm6z8U0W6C+jQl9A85OBxcYtQGiM4tc4z2tGpQ4QVkKAlLpCAL/z8Ku47b3j5QAi mbVKErbAUaFq3Q7aLkkmljs6m2R1jbEUQ3kMQaIX3qDCgqeDdBna73CqchTLZH/UH3As OA2U56HbJbCbJNR4cEPMM0oxnw5Ju0gt8zXeYAhZ3JBaxmD1PZMSER4qLSX+ETw4EeyY 8WkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UM3C/Gvi478yDiaVGOBundZzY/RdB8X805LmpKwIPZc=; b=nhw8j8Qk/4u6Z+kMpMZSQTOBt7PSSQt5VJjrhKqpUnhBUOHcLm9hl1IeWCFj6paCpV 7U2gHmOYmNjY964xwCaTbE/qCKnhHxcpUnUtqdTNgGGBwluHtIWBGN8KBXkxjgpIAnDa o/wEF7RUBCYQfjirezC5NGcSkdMnY/+08hTQIEznMgcQkwRzWpMDJ2d8EX1Mz2NzvYh4 iLHg5rXL4MDUZlx2KjMDRDRuCqh5SQhvpQkmNbPIGn3U0tYp0PKo3ghgVBtERwAmya3Q yxzwOpKBhP9PBmYgD2wfNfTxfyb2/yrcn6JUXGnCBWdPcoHoDqzhvEjGKsWmyQ6kEgCW PQZQ== X-Gm-Message-State: APjAAAUSD6OAJdse6FULgOxGduhqfbrW0AdRkFhDLoZI+oNF6N74zauI /fsjl5FZiO3g1pmf0+rAdDNR/N48 X-Google-Smtp-Source: APXvYqzwJTHcb3uZXPO1Nr5R0b4C5TA+5WKA+0tse6P2Ngb4bCw08CyuZj6quqhPmwXb2xn+SmpVdw== X-Received: by 2002:adf:f60b:: with SMTP id t11mr4077513wrp.344.1582883631723; Fri, 28 Feb 2020 01:53:51 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:51 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:16 +0100 Message-Id: <20200228095321.7222-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/7] avformat/hlsenc: Add deinit function 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This fixes memleaks in instances such as: a) When an allocation fails at one of the two places in hls_init() where the error is returned immediately without goto fail first. b) When an error happens when writing the header. c) When an allocation fails at one of the three places in hls_write_trailer() where the error is returned immediately without goto fail first. d) When one decides not to write the trailer at all (e.g. because of errors when writing packets). Furthermore, it removes code duplication and allows to return immediately, without goto fail first. Signed-off-by: Andreas Rheinhardt --- libavformat/hlsenc.c | 47 ++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 51cbfba151..a281c379f0 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2472,8 +2472,9 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) return ret; } -static void hls_free_variant_streams(struct HLSContext *hls) +static void hls_deinit(AVFormatContext *s) { + HLSContext *hls = s->priv_data; int i = 0; AVFormatContext *vtt_oc = NULL; VariantStream *vs = NULL; @@ -2503,6 +2504,20 @@ static void hls_free_variant_streams(struct HLSContext *hls) av_freep(&vs->baseurl); av_freep(&vs->varname); } + + for (i = 0; i < hls->nb_ccstreams; i++) { + ClosedCaptionsStream *ccs = &hls->cc_streams[i]; + av_freep(&ccs->ccgroup); + av_freep(&ccs->instreamid); + av_freep(&ccs->language); + } + + ff_format_io_close(s, &hls->m3u8_out); + ff_format_io_close(s, &hls->sub_m3u8_out); + av_freep(&hls->key_basename); + av_freep(&hls->var_streams); + av_freep(&hls->cc_streams); + av_freep(&hls->master_m3u8_url); } static int hls_write_trailer(struct AVFormatContext *s) @@ -2635,21 +2650,6 @@ failed: av_free(old_filename); } - hls_free_variant_streams(hls); - - for (i = 0; i < hls->nb_ccstreams; i++) { - ClosedCaptionsStream *ccs = &hls->cc_streams[i]; - av_freep(&ccs->ccgroup); - av_freep(&ccs->instreamid); - av_freep(&ccs->language); - } - - ff_format_io_close(s, &hls->m3u8_out); - ff_format_io_close(s, &hls->sub_m3u8_out); - av_freep(&hls->key_basename); - av_freep(&hls->var_streams); - av_freep(&hls->cc_streams); - av_freep(&hls->master_m3u8_url); return 0; } @@ -2948,20 +2948,6 @@ static int hls_init(AVFormatContext *s) } fail: - if (ret < 0) { - hls_free_variant_streams(hls); - for (i = 0; i < hls->nb_ccstreams; i++) { - ClosedCaptionsStream *ccs = &hls->cc_streams[i]; - av_freep(&ccs->ccgroup); - av_freep(&ccs->instreamid); - av_freep(&ccs->language); - } - av_freep(&hls->key_basename); - av_freep(&hls->var_streams); - av_freep(&hls->cc_streams); - av_freep(&hls->master_m3u8_url); - } - return ret; } @@ -3057,5 +3043,6 @@ AVOutputFormat ff_hls_muxer = { .write_header = hls_write_header, .write_packet = hls_write_packet, .write_trailer = hls_write_trailer, + .deinit = hls_deinit, .priv_class = &hls_class, }; From patchwork Fri Feb 28 09:53:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17954 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id CF26244AE64 for ; Fri, 28 Feb 2020 11:54:00 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B708B68B4FA; Fri, 28 Feb 2020 11:54:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 83A0868B494 for ; Fri, 28 Feb 2020 11:53:53 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id n64so1173820wme.3 for ; Fri, 28 Feb 2020 01:53:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=A6yc+mckwVTyLgcwjxdSlQbly/g7y71lHYdMZ2deFA8=; b=AeiTVR3tAYRSI/6g1hqI34bwrGm+oD6BRGzfqbrAuyaC/N0oevObLzUHM/pIVQoUOb G9C2pV1y3IIo8sLPrwhzeVelBWzWYXvAsdq/N+jypkFrHJycmdIyQ638Orh21x8Yfqnf UhRRDdF7+w+mUHOmqI+/m3n4h2mHu5IjVrfDd1Cj8y1r+vf0DpmEZlMsbgX+3mbDwhic xvjhdQ9DrhDckGcvRTw24uokVsDHSkfg66f88FAGJmvUzk2dx/QLBuvYkc2dUm4SN1mT 4gj32CTivp/nMck+V1YHA6Bzr4cTex14ioaE+7V3pYWSg1Ww6sBnua7fh7XvHSH/pbjx dllQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=A6yc+mckwVTyLgcwjxdSlQbly/g7y71lHYdMZ2deFA8=; b=b1m5pOIc/wZJzY8e2iQrSDDnP2qJgd1xevXwNVtWR8lUXYJ0rqsFpgmcGacZxUY9rg jzzBMG6D3nFtsPU2XGl3DtbpvW3IMtvwzkrAJcadOGoIsAzM+NK4AmgYK7wFgV0DccCP Tgf2Ci/ALGRz59kCbMJUiFgG9US9L8wtrjo9W0BPwen7/Dbfkc4SnRtzBV24XGezvh2U ym2P5Df8o3CfRwgO84JtMqW04UiYj06hmMIX0N6yRzjSOgOrWfzSg9ex1igGOPX6E5jD szdJk3Dtq21loQakMmmGKCUzuYY0iFXqhZm3zKYtt+YYRs7DC8HdLDQOaEtjqVswJ/nn Jqlg== X-Gm-Message-State: APjAAAXRnjLXbE6IFmkPUXyDE0bKcq79zXr6J1Tt78kusIxwrUd/eP9l SyStaBfv9F/lUgvt2AiC43Ai0eZS X-Google-Smtp-Source: APXvYqy5mTwhv1hPX4dejEmjlTyvJ8XxwUHGCu534qfhJyoJk+kLNi+i3mxnP2bIITVP3Io1BlBV7Q== X-Received: by 2002:a1c:3b09:: with SMTP id i9mr3970107wma.31.1582883632601; Fri, 28 Feb 2020 01:53:52 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:52 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:17 +0100 Message-Id: <20200228095321.7222-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/7] avformat/hlsenc: Check some unchecked allocations 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavformat/hlsenc.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index a281c379f0..18f40ff3ed 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1610,6 +1610,8 @@ static int hls_start(AVFormatContext *s, VariantStream *vs) if (c->use_localtime_mkdir) { const char *dir; char *fn_copy = av_strdup(oc->url); + if (!fn_copy) + return AVERROR(ENOMEM); dir = av_dirname(fn_copy); if (ff_mkdir_p(dir) == -1 && errno != EEXIST) { av_log(oc, AV_LOG_ERROR, "Could not create directory %s with use_localtime_mkdir\n", dir); @@ -1770,6 +1772,8 @@ static int validate_name(int nb_vs, const char *fn) } fn_dup = av_strdup(fn); + if (!fn_dup) + return AVERROR(ENOMEM); filename = av_basename(fn); subdir_name = av_dirname(fn_dup); @@ -2139,6 +2143,8 @@ static int update_master_pl_info(AVFormatContext *s) int ret = 0; fn1 = av_strdup(s->url); + if (!fn1) + return AVERROR(ENOMEM); dir = av_dirname(fn1); /** @@ -2147,6 +2153,10 @@ static int update_master_pl_info(AVFormatContext *s) */ if (dir && av_stristr(av_basename(dir), "%v")) { fn2 = av_strdup(dir); + if (!fn2) { + ret = AVERROR(ENOMEM); + goto fail; + } dir = av_dirname(fn2); } @@ -2854,7 +2864,8 @@ static int hls_init(AVFormatContext *s) if (hls->nb_varstreams > 1) { if (av_stristr(vs->fmp4_init_filename, "%v")) { av_freep(&vs->fmp4_init_filename); - format_name(hls->fmp4_init_filename, &vs->fmp4_init_filename, i, vs->varname); + ret = format_name(hls->fmp4_init_filename, + &vs->fmp4_init_filename, i, vs->varname); } else { ret = append_postfix(vs->fmp4_init_filename, fmp4_init_filename_len, i); } From patchwork Fri Feb 28 09:53:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17957 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a05:6214:1865:0:0:0:0 with SMTP id eh5csp1913051qvb; Fri, 28 Feb 2020 01:54:17 -0800 (PST) X-Google-Smtp-Source: APXvYqwbqbnZBIcWKCLWutcWTre3LRUdj8JE4CzHmQELnQsMxU4gsnrrYIVS1wVyr3l5JfNyLVY8 X-Received: by 2002:a05:6402:1ac4:: with SMTP id ba4mr3402890edb.201.1582883657639; Fri, 28 Feb 2020 01:54:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582883657; cv=none; d=google.com; s=arc-20160816; b=g7xBCdWWSeq2u6+sqig0U1uZhU4dYIIHWSFplFh9qOBq5XRTasuOY1X+bUHU1JE8cW Fr4AHqrNgkyPrxY18TRY0wg+NMCaehaUIuxVDn3eqkEJrC1UaW3mT6sJnEqQiirya/cE mrVonQ+doser44gkMXKjJg56q9QRkWxbALYLAcOoKZrthNCNfY6VcNebycs0HOdWuD2b 34Tzc33nJDJ5hWlFoLYRLpZeJSCyRBQkqdihHNGDg4+ZFhW6cTSx/1aFjRwqz6MhzoNF Y+JV4tH+IvjI4dYmE29mO17bN5UURtmgsY8oviDZIpbBFI8MqCxzhqsEaB31CwKfwqhR OYPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=ajg4gio/XRZFsyR3l0eY6cjYGNnPy8HMqLV5ITMxEtg=; b=ACe4UagrkA161pFf1H8sSjGB+N0qiyoK6662+v898rvTDxmN1of9PDwGwv7zJd7/uk 08QQ2k/X/tZ8r0QgLlBn20dPbz9G41D/wUKYVhY1EpWlwnPEFzt/6iRqqw+U3W0qUU4y CeFvlNi/KT/pMJhWOzQGuyT09gLOMzKT3LK5KILFwfM9MmaC9tB3LfFZYCO4XakqBGzX vfs733rvDHXUjeeTQ4qJCdC9OifJIhDjHIm4vM8CpNMBXC/8MPZkNzwbWtRatbjyfKdZ Smpg0pM6ZdYcBt/u6JiXHtSfnD6VktcNS6AxgMKwulwfoYbA8tx3dRWC5ohUv2P33yKR yGDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=RgDua0w8; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y22si1497948edw.131.2020.02.28.01.54.17; Fri, 28 Feb 2020 01:54:17 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=RgDua0w8; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F27E468B52F; Fri, 28 Feb 2020 11:54:01 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2646768B4D4 for ; Fri, 28 Feb 2020 11:53:54 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id z12so2501048wmi.4 for ; Fri, 28 Feb 2020 01:53:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=n+167G0dZVVpGkVO7eBuEsPP0NZmPnmWmoEIKX6r+YU=; b=RgDua0w8ae6r3MyJ3ftLe5xcIO8gyCa54iXarfyCpZKTgujMjWB+ZeT8QhYeNTQHIx d/NApxXyjr1WTS43geGeMBacPvqknfv1498+6ELeQALAf2Tgmkmo7l3DgkLb1QYKApeO G4EWsmVfzW5yzcP7Bn+oUz0GhqbTC7NKei/W+PjbHnQVaGHVnLaobQjWMGgy9ARx65PT ooMDXziV0ZTvOYuCQVvJQdMEndLEbjTP+pncg4mLzYCYongzTUoS6K56wLTbUVxHOO7t 31QDacf3qHQMcjOSy4whNFBQx3wbcF+n+MSmKGDpnr2rdI5c6658wGxIBvWWGkWAhPR2 LxVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n+167G0dZVVpGkVO7eBuEsPP0NZmPnmWmoEIKX6r+YU=; b=mBK1CG/N9ATLexADFtCDy8+pgkYSqQgQ+70rVsGZAV+v2Z2lHJLGZPRPb6tDx9Saoa jjBEarCt+NR5TAdfbdPoKlyTpbeaVGk/ROAwWGBEYDDjt526BwFOTJE7tYEQ63Z60Utd p4++OJqZErFJg2CqkrXlOrZnb0jj2PNqhMAqG71stvrEEVH0gaRgRRuD6KVGdnurJz2+ fdcs5CCML92JpwIsUw/wqZ8RnRQXxmy2MTtaEuMZe70VF50IOhykfyHUPN+ifdNHBxHO 7OrYk3EMPFGEMlIlH2c8T5W49vHL04a9LARJun1CppKkMZ2w7dBRWyDlW/Pc8xR6WKJN WwyQ== X-Gm-Message-State: APjAAAWUzPw2Q5FAhKxnS/MZP2P5p493WyC9jxBgdMSOFIJ/HTz7S6Wz CSUviFUvU7sQMAhONAFk8VAWUTfM X-Received: by 2002:a1c:ac46:: with SMTP id v67mr3896164wme.153.1582883633390; Fri, 28 Feb 2020 01:53:53 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:52 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:18 +0100 Message-Id: <20200228095321.7222-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 4/7] avformat/hlsenc: Unconditionally free some strings 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: m/T6tWyoWIRU Content-Length: 2140 hls_init() would at first allocate the vtt_basename string, then allocate the vtt_m3u8_name string followed by several operations that may fail and then open the subtitles' output context. Yet upon freeing, these strings were only freed when the subtitles' output context existed, ensuring that they leak if something goes wrong between their allocation and the opening of the subtitles' output context. So drop the check for whether this output context exists. Signed-off-by: Andreas Rheinhardt --- libavformat/hlsenc.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 18f40ff3ed..4628ea15c7 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2496,12 +2496,10 @@ static void hls_deinit(AVFormatContext *s) av_freep(&vs->basename); av_freep(&vs->base_output_dirname); av_freep(&vs->fmp4_init_filename); - if (vtt_oc) { - av_freep(&vs->vtt_basename); - av_freep(&vs->vtt_m3u8_name); - avformat_free_context(vtt_oc); - } + av_freep(&vs->vtt_basename); + av_freep(&vs->vtt_m3u8_name); + avformat_free_context(vtt_oc); avformat_free_context(vs->avf); hls_free_segments(vs->segments); From patchwork Fri Feb 28 09:53:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17960 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a05:6214:1865:0:0:0:0 with SMTP id eh5csp1913155qvb; Fri, 28 Feb 2020 01:54:27 -0800 (PST) X-Google-Smtp-Source: APXvYqx989ElESotZiQ5x+gwsnx9wyY5vTtaSIDXtsMynKmTh6BUtfwRdgfo/jByP/vzG7J2mldg X-Received: by 2002:a50:f10a:: with SMTP id w10mr591134edl.326.1582883667824; Fri, 28 Feb 2020 01:54:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582883667; cv=none; d=google.com; s=arc-20160816; b=KJZiFfN0JtbqUcaBNnb5ciDOfJfl7xEdIKwUmO/8D7gzdaFb+HyoIPiaYqxc2Az4ji 7zYo42mCTnFmlSS4YR8DOSGaosnc0f7+pj2nmsAHJn4ZN49wj7mPLVnbKNdZwEmAvDEm Ywo3gL079AWUdpH+97dByj8Qj08Szs6XaIYn7BlvEqPSyVKfauTjhsOGtn59Lui4MT64 0wn0XsnVXl8ZmCfiNq8Wwb/qf4Jm1L26NDCP5gZCgKHugevmMHaM/jtWZ3YTKz4P0dcE GURbR1zBTAlMqIszLpjdlLAhDlV4VSA9woP2HjxU+dfHPFGHGdWYx+KkxjOZc4FSp87H MGGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=TqqJqlW0WrxZHgwkX0F9hXy0FAzhcBXQRwK6Yy81XhU=; b=umztyThYeoJ7pL81wm5Mgi9HyW4J/u/vyQQmkZuRyG8e4QgqDGnWDrwftqL5JS3eJt x60dNmJptvH/VXAoWBxhKPfu1tag2k6Vo/5jTYWRcfLNRDoHi7SqTuYA7VzD4nys3bez dF503nWgAUfY8q4ivK+73XchIu5wcZzvdiocViPS0S+2obqxI68/4U1MAe8iSDUiBYVS qZHCnVYO9yz73UuDd9gewUrjUMuV90nwrsV2xSS0U/tfPbmH2hJwO28DHaawhg4H8OvJ UOaKJ/3E9i+YxH6+GAatPJaZD8eUWoJVVxqzuWfub3s9hGq4LyT7Y1J/TYzj2gThDueI ddxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=pXkf25KK; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c25si1533689eja.307.2020.02.28.01.54.27; Fri, 28 Feb 2020 01:54:27 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=pXkf25KK; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D2A0468B560; Fri, 28 Feb 2020 11:54:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0971568B4B0 for ; Fri, 28 Feb 2020 11:53:55 +0200 (EET) Received: by mail-wm1-f68.google.com with SMTP id d138so898408wmd.5 for ; Fri, 28 Feb 2020 01:53:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L2vbMezDCNzVTWSuqNCdh32rMIusvEXGN5Z2dRhyrEA=; b=pXkf25KK4Nb3i4D/WhkYz0Lxx6JlzQgy1cbSaupeiVNP9JX3gbjtdnAuJGaJTkyN+l C3lDaQkRiI50pWMnZKbroLg9UthblEQPB0ZaHQHtv0T4go4rt3+oY1BgtX7btqM7opwG VcJxEuk16Nsk8hzidRdh3Z4q1vl7AsTCAZGLJSFpElCxft8SLFU9602wn/cIL0dZnsGs 3+wFxN1QVY2ULFaZW1strgQq4J0V7wMvGE6jsuF9iSy1JJlGFZ0ZIKHtbqvqXgKLKpAu qa7IgegyDlhgq97yMYnKYfURFHN8fSkKDDQEaGlbzS3IzlfS4gqnR7xZNh+uxuKEr+u9 Ej0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=L2vbMezDCNzVTWSuqNCdh32rMIusvEXGN5Z2dRhyrEA=; b=XoRZtV2UXdpymDkBXT5A05PU+iOwuWvo153PzjZX/4BmxS4SajI4AXvzABehwuYUFO Od001JO9rzFVCHbLTcaHAB6JQG4fZhCssEe20j5auRvLG9ve1kgrUJAauXh8sY7keAuw 2PmJP9XJOkS5XemOapG9Cbr7paA+QIIKmsvUHvgOBy/siU5tzTqoH3KKBA7zZXDKJmoC 6biSZpl+pbE/52lzZxmm2RDlR/M5NypzBCJt2HIcw08O7XyU4SfPiwFhDqZBTiKOmtMf RZbThulkdRNS8936h1WpAQkaG2rVior31YbXIJzEwuEh6LBvZnm3lwdApxJoSuu2fYlb 1Yxg== X-Gm-Message-State: APjAAAWqOGb3xd0sjb+I4lkVHJXXdk6HM3J5dYzFT/j56BDMOCHy7Pes XrhHoHiqmb9q6kYefu1dAgsqntyh X-Received: by 2002:a05:600c:218a:: with SMTP id e10mr4016628wme.6.1582883634230; Fri, 28 Feb 2020 01:53:54 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:53 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:19 +0100 Message-Id: <20200228095321.7222-5-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 5/7] avformat/hlsenc: Localize initialization of subtitle streams 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: pzwTTTNh20Mx Content-Length: 2071 Before this commit, the checks were unnecessarily scattered. Signed-off-by: Andreas Rheinhardt --- Now not moving variables into a smaller scope. libavformat/hlsenc.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 4628ea15c7..e3a310dbc1 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2798,13 +2798,6 @@ static int hls_init(AVFormatContext *s) goto fail; } - if (vs->has_subtitle) { - vs->vtt_oformat = av_guess_format("webvtt", NULL, NULL); - if (!vs->vtt_oformat) { - ret = AVERROR_MUXER_NOT_FOUND; - goto fail; - } - } if (hls->segment_filename) { ret = format_name(hls->segment_filename, &vs->basename, i, vs->varname); if (ret < 0) @@ -2899,6 +2892,9 @@ static int hls_init(AVFormatContext *s) goto fail; if (vs->has_subtitle) { + vs->vtt_oformat = av_guess_format("webvtt", NULL, NULL); + if (!vs->vtt_oformat) + return AVERROR_MUXER_NOT_FOUND; if (hls->flags & HLS_SINGLE_FILE) vtt_pattern = ".vtt"; From patchwork Fri Feb 28 09:53:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17959 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a05:6214:1865:0:0:0:0 with SMTP id eh5csp1913253qvb; Fri, 28 Feb 2020 01:54:37 -0800 (PST) X-Google-Smtp-Source: APXvYqx/IuVIWREbSCVbBpQW7VVkSVWJ0a7kmuHifExfcVxR5r3K4rZZnpycBSsPM0RmbH5JyCo7 X-Received: by 2002:a50:ed0a:: with SMTP id j10mr3328086eds.215.1582883676939; Fri, 28 Feb 2020 01:54:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582883676; cv=none; d=google.com; s=arc-20160816; b=CBld4R42b6ZffHtXvxMCkKY6KqSQtp59IgBq7cjPFpuS7URkaZquRIfe6y4CIA12Qg lIUdMG0TS+5JntonmJLWEZjqS9N+608t3mHmk8y6vXqUfhsqmL1VZAhUQ1sMQyYH+djU WsMTllPu80vCBPJ4Vw7uIKLsHPGmetpkGU+iMpuqwM0O4WK1ze+piEWaVKxuqX5q9Rxb vOB5d2HD9U8SfTGiluJAgiUqaAzA5tDNTL1B4MlUXIhb4Go+tUZqiXFwO2sdzLvZ6bre Pp43w3n1JyeSIIs+KIiSncBf2xoPcAzxhzf45wtPCoCwpv1gsQA8h3E5yxDTfUINisc2 JUWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=UEkpDZpjUPxNVpxUBLlfqxi6Rl1aLXTalCuIs9W45Ws=; b=up49ZyjD9Jt6AJOEea5C33xnYvlCfj2cvNPnh//1PSa/JwO5WTWbPRZR6Yl1S8GtwO ipTZLWcW39G7LzY8KeBaigrYVOCXIuwH8kKJOIWZHG6ssDlnlFfZdVsgx+xfrfwJy0WO Jp550RAHJ3aeaHmBrj1rxxMlFgTE6QRxVb4quKm/0ZU7UdhDfQiern7ZdpjCd+CYJUum M4HIOfj2CGqJ+f4g+i+0sAckJEgb+8FdG153sZa/1ngt3PWicWcre0AqPpnNDVhc/rlG xL+Q4kixDrw4CdG38QcggDao5R4U7GeZeT8w3n9pDlalQpsvnMoijtcGmStd7wzbexyD LnYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ew9Fr6yQ; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t12si1558456edr.504.2020.02.28.01.54.36; Fri, 28 Feb 2020 01:54:36 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ew9Fr6yQ; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C8A1668B581; Fri, 28 Feb 2020 11:54:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3071768B4E6 for ; Fri, 28 Feb 2020 11:53:56 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id j16so2241464wrt.3 for ; Fri, 28 Feb 2020 01:53:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KZggaLlVRmQ/aa46ut8YhKc9nnVcAFFxr/2WCttZpUM=; b=ew9Fr6yQy4v1N7UK2nJ6qhVPsosmhmS7nck8Lhr1acuXe4H0KcLSmqWfr7CmH7Ya9r yQRAywu+HkaspS6QBeccEvfNXkZYG4JZ9+wzaTc2ccRgRCdEzhPOob5HAp0FP/64QwxV WI1CRJRaKpVwLT+CqOhCjirEl83QYqJAS2kZTRHKzG652AcEP4HthO7JfIFFXoRhJ2K+ F0mOq2Q/N1r6EM25/QJOCF0h4IxSYgg2XIS/61dUgb/3SrAOmozvk2SZMVbI6vsWp9xq qNlGYCQApaHW+Yw8KpbRAnIY1nRKwwdldLAfYLq4Ob3fjpbnS5feZlQ1oRhif8yP4esq wj4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KZggaLlVRmQ/aa46ut8YhKc9nnVcAFFxr/2WCttZpUM=; b=erRXi+TJTTAJhY3LdrhlEIBCOtKByk/52TkxqFze2YVelwORYhGpUOe/HGjOVSO9oR gP2j1wqvqJr3pjVYGqs6j6nAOfUbG+JcZZs4PKiBueeQUMDbenpQbUI6C0hVRzBYuviY wXwhrxN/wG7DgTqexCVMcjcLWXhu8KbeQ+JjgvJ72zPqSktL8ZVH8t+bZWpZw0CLT90D tlk45Ly5Atve8IH8RmbGsSNT9pdAjLVmSvNBzCGiS8TlzuNOkad2V1bmn1lLYNV6FNi2 6w4sPQhvnNfGBXB+e0vKkQiFt7KFq0S0xyQxfAYzjZTkvVGKFle8xGlsLXLCMcrxphOv UobQ== X-Gm-Message-State: APjAAAWvFAwOnYPevBaW+dbbnb1NbmGw4lYG0N2si3j2WDX6NAa+YcG9 GRe1X8m8C2mPtGMOLLeyi7v+Ki1Z X-Received: by 2002:a5d:568f:: with SMTP id f15mr4157009wrv.202.1582883635451; Fri, 28 Feb 2020 01:53:55 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:54 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:20 +0100 Message-Id: <20200228095321.7222-6-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 6/7] avformat/hlsenc: Factor check out of loop 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jN4h9EyK8m/o Content-Length: 2708 The check will be true at most once anyway. Signed-off-by: Andreas Rheinhardt --- libavformat/hlsenc.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index e3a310dbc1..317b1a6f5e 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2749,6 +2749,15 @@ static int hls_init(AVFormatContext *s) } hls->recording_time = (hls->init_time ? hls->init_time : hls->time) * AV_TIME_BASE; + + if (hls->flags & HLS_SPLIT_BY_TIME && hls->flags & HLS_INDEPENDENT_SEGMENTS) { + // Independent segments cannot be guaranteed when splitting by time + hls->flags &= ~HLS_INDEPENDENT_SEGMENTS; + av_log(s, AV_LOG_WARNING, + "'split_by_time' and 'independent_segments' cannot be enabled together. " + "Disabling 'independent_segments' flag\n"); + } + for (i = 0; i < hls->nb_varstreams; i++) { vs = &hls->var_streams[i]; @@ -2761,14 +2770,6 @@ static int hls_init(AVFormatContext *s) vs->end_pts = AV_NOPTS_VALUE; vs->current_segment_final_filename_fmt[0] = '\0'; - if (hls->flags & HLS_SPLIT_BY_TIME && hls->flags & HLS_INDEPENDENT_SEGMENTS) { - // Independent segments cannot be guaranteed when splitting by time - hls->flags &= ~HLS_INDEPENDENT_SEGMENTS; - av_log(s, AV_LOG_WARNING, - "'split_by_time' and 'independent_segments' cannot be enabled together. " - "Disabling 'independent_segments' flag\n"); - } - if (hls->flags & HLS_PROGRAM_DATE_TIME) { time_t now0; time(&now0); From patchwork Fri Feb 28 09:53:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17955 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0903A44AE64 for ; Fri, 28 Feb 2020 11:54:07 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E228C68B4F6; Fri, 28 Feb 2020 11:54:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0999068B4EA for ; Fri, 28 Feb 2020 11:53:58 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id e10so775324wrr.10 for ; Fri, 28 Feb 2020 01:53:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ll1rykWDr7cl98JHLpqleQX8pjKgYAYf0YwgpZKX79g=; b=kfFX8YcP/KC1WYQp+2Y3jXfhWLUVmVgzu6Rt78RixBm7z7MJH4oR2q63MixGYrD2jG wzeP3gEbhWIIgyAUqjH5NoSbmrZfmcaDmU3jcsIQLJAUCWRlfdLXy79XBM3T3A+O2UTe zj7Ip4+yoJcFxYY8XRVn1Hz304zlNFVSAwIgZh4EUw1xXv79zTJBJIZUgBp8fHzJ0EU2 2mQpfl5nueXX/EuAEa3yhB61OaXL3RIATJMLLCmoDEvIrH3jgCGi2jhL2CTt2odz0XlE +wyEsgKPUfn1Iei36755JJktUuI+7n2ljyT3MzDM5IhE+im9IDPOLEIY0iHhqMl8ey8d 7Pdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ll1rykWDr7cl98JHLpqleQX8pjKgYAYf0YwgpZKX79g=; b=iImh86hJ6CVWjhj85eWr5slNpZBU7w/D49UPzivfgcmVglqeEJyAucCAVQSCFMn91t QeGzQRIxxyBHewrfsf+R6DVoO/QSISLfyPHwQ0rtNA5s2HQ6Ho72jwSN0oHdHVHZ46uZ vYOfQhQdlvjDiNbmn7JaID160duSYCngILEqhH2G7qPTr3zcpLRmLabGfuCghfVRtq3t g1lSQTft6Hmfao6NbO5GNhgxukk+9rvFkKnAYMCrtjqlF/WdsFC4ytiFvT8bmJq3GmVE eHo+4oYBRHvTA0/7EIwPqOejq3ktovuApt4Dr/ChldRxm66lJlMubB69NQsJdPjptReN 3Emg== X-Gm-Message-State: APjAAAVau9SwSbNHt8Tm6s+Aqsr1yhEXEiz1l1wak56sVsXqs59d5FuG iRtVVahrtkZw6B8DvwkKtr1Cv5qj X-Google-Smtp-Source: APXvYqzNwvLdUp9foLz1n2KLqBfyi5Q5rPrG3tOtckrQqaOXEvzZOfrqQv407T/u1j+KPj6C2jr3lA== X-Received: by 2002:a5d:4443:: with SMTP id x3mr3949213wrr.379.1582883636953; Fri, 28 Feb 2020 01:53:56 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id c8sm1453360wru.7.2020.02.28.01.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2020 01:53:56 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Feb 2020 10:53:21 +0100 Message-Id: <20200228095321.7222-7-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> References: <20200228095321.7222-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 7/7] avformat/hlsenc: Cosmetics 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Mainly includes reindentation and returning directly (i.e. without a goto fail when possible). Signed-off-by: Andreas Rheinhardt --- Now keeping the scope of variables alone. libavformat/hlsenc.c | 129 +++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 77 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 317b1a6f5e..d8ab8ca8c7 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1634,7 +1634,7 @@ static int hls_start(AVFormatContext *s, VariantStream *vs) } ff_format_set_url(oc, filename); } - if ( vs->vtt_basename) { + if (vs->vtt_basename) { char *filename = NULL; if (replace_int_data_in_filename(&filename, #if FF_API_HLS_WRAP @@ -1766,10 +1766,8 @@ static int validate_name(int nb_vs, const char *fn) char *fn_dup = NULL; int ret = 0; - if (!fn) { - ret = AVERROR(EINVAL); - goto fail; - } + if (!fn) + return AVERROR(EINVAL); fn_dup = av_strdup(fn); if (!fn_dup) @@ -1803,14 +1801,12 @@ static int format_name(const char *buf, char **s, int index, const char *varname int ret = 0; orig_buf_dup = av_strdup(buf); - if (!orig_buf_dup) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!orig_buf_dup) + return AVERROR(ENOMEM); if (!av_stristr(buf, "%v")) { *s = orig_buf_dup; - return ret; + return 0; } if (!varname) { @@ -2117,16 +2113,14 @@ static int update_variant_stream_info(AVFormatContext *s) hls->var_streams[0].nb_streams = s->nb_streams; hls->var_streams[0].streams = av_mallocz(sizeof(AVStream *) * hls->var_streams[0].nb_streams); - if (!hls->var_streams[0].streams) { + if (!hls->var_streams[0].streams) return AVERROR(ENOMEM); - } //by default, the first available ccgroup is mapped to the variant stream if (hls->nb_ccstreams) { hls->var_streams[0].ccgroup = av_strdup(hls->cc_streams[0].ccgroup); - if (!hls->var_streams[0].ccgroup) { + if (!hls->var_streams[0].ccgroup) return AVERROR(ENOMEM); - } } for (i = 0; i < s->nb_streams; i++) @@ -2486,12 +2480,10 @@ static void hls_deinit(AVFormatContext *s) { HLSContext *hls = s->priv_data; int i = 0; - AVFormatContext *vtt_oc = NULL; VariantStream *vs = NULL; for (i = 0; i < hls->nb_varstreams; i++) { vs = &hls->var_streams[i]; - vtt_oc = vs->vtt_avf; av_freep(&vs->basename); av_freep(&vs->base_output_dirname); @@ -2499,7 +2491,7 @@ static void hls_deinit(AVFormatContext *s) av_freep(&vs->vtt_basename); av_freep(&vs->vtt_m3u8_name); - avformat_free_context(vtt_oc); + avformat_free_context(vs->vtt_avf); avformat_free_context(vs->avf); hls_free_segments(vs->segments); @@ -2515,6 +2507,7 @@ static void hls_deinit(AVFormatContext *s) for (i = 0; i < hls->nb_ccstreams; i++) { ClosedCaptionsStream *ccs = &hls->cc_streams[i]; + av_freep(&ccs->ccgroup); av_freep(&ccs->instreamid); av_freep(&ccs->language); @@ -2565,7 +2558,7 @@ static int hls_write_trailer(struct AVFormatContext *s) return AVERROR(ENOMEM); } - if ( hls->segment_type == SEGMENT_TYPE_FMP4) { + if (hls->segment_type == SEGMENT_TYPE_FMP4) { int range_length = 0; if (!vs->init_range_length) { uint8_t *buffer = NULL; @@ -2684,13 +2677,12 @@ static int hls_init(AVFormatContext *s) if (ret < 0) { av_log(s, AV_LOG_ERROR, "Variant stream info update failed with status %x\n", ret); - goto fail; + return ret; } //TODO: Updates needed to encryption functionality with periodic re-key when more than one variant streams are present if (hls->nb_varstreams > 1 && hls->flags & HLS_PERIODIC_REKEY) { - ret = AVERROR(EINVAL); av_log(s, AV_LOG_ERROR, "Periodic re-key not supported when more than one variant streams are present\n"); - goto fail; + return AVERROR(EINVAL); } if (!hls->method && http_base_proto) { @@ -2699,24 +2691,24 @@ static int hls_init(AVFormatContext *s) ret = validate_name(hls->nb_varstreams, s->url); if (ret < 0) - goto fail; + return ret; if (hls->segment_filename) { ret = validate_name(hls->nb_varstreams, hls->segment_filename); if (ret < 0) - goto fail; + return ret; } if (av_strcasecmp(hls->fmp4_init_filename, "init.mp4")) { ret = validate_name(hls->nb_varstreams, hls->fmp4_init_filename); if (ret < 0) - goto fail; + return ret; } if (hls->subtitle_filename) { ret = validate_name(hls->nb_varstreams, hls->subtitle_filename); if (ret < 0) - goto fail; + return ret; } if (hls->master_pl_name) { @@ -2724,7 +2716,7 @@ static int hls_init(AVFormatContext *s) if (ret < 0) { av_log(s, AV_LOG_ERROR, "Master stream info update failed with status %x\n", ret); - goto fail; + return ret; } } @@ -2750,24 +2742,24 @@ static int hls_init(AVFormatContext *s) hls->recording_time = (hls->init_time ? hls->init_time : hls->time) * AV_TIME_BASE; - if (hls->flags & HLS_SPLIT_BY_TIME && hls->flags & HLS_INDEPENDENT_SEGMENTS) { - // Independent segments cannot be guaranteed when splitting by time - hls->flags &= ~HLS_INDEPENDENT_SEGMENTS; - av_log(s, AV_LOG_WARNING, - "'split_by_time' and 'independent_segments' cannot be enabled together. " - "Disabling 'independent_segments' flag\n"); - } + if (hls->flags & HLS_SPLIT_BY_TIME && hls->flags & HLS_INDEPENDENT_SEGMENTS) { + // Independent segments cannot be guaranteed when splitting by time + hls->flags &= ~HLS_INDEPENDENT_SEGMENTS; + av_log(s, AV_LOG_WARNING, + "'split_by_time' and 'independent_segments' cannot be " + "enabled together. Disabling 'independent_segments' flag\n"); + } for (i = 0; i < hls->nb_varstreams; i++) { vs = &hls->var_streams[i]; ret = format_name(s->url, &vs->m3u8_name, i, vs->varname); if (ret < 0) - goto fail; + return ret; - vs->sequence = hls->start_sequence; - vs->start_pts = AV_NOPTS_VALUE; - vs->end_pts = AV_NOPTS_VALUE; + vs->sequence = hls->start_sequence; + vs->start_pts = AV_NOPTS_VALUE; + vs->end_pts = AV_NOPTS_VALUE; vs->current_segment_final_filename_fmt[0] = '\0'; if (hls->flags & HLS_PROGRAM_DATE_TIME) { @@ -2794,15 +2786,13 @@ static int hls_init(AVFormatContext *s) vs->oformat = av_guess_format("mpegts", NULL, NULL); } - if (!vs->oformat) { - ret = AVERROR_MUXER_NOT_FOUND; - goto fail; - } + if (!vs->oformat) + return AVERROR_MUXER_NOT_FOUND; if (hls->segment_filename) { ret = format_name(hls->segment_filename, &vs->basename, i, vs->varname); if (ret < 0) - goto fail; + return ret; } else { if (hls->flags & HLS_SINGLE_FILE) { if (hls->segment_type == SEGMENT_TYPE_FMP4) { @@ -2819,10 +2809,8 @@ static int hls_init(AVFormatContext *s) } vs->basename = av_malloc(basename_size); - if (!vs->basename) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->basename) + return AVERROR(ENOMEM); av_strlcpy(vs->basename, vs->m3u8_name, basename_size); @@ -2841,16 +2829,12 @@ static int hls_init(AVFormatContext *s) fmp4_init_filename_len += strlen(POSTFIX_PATTERN); if (hls->flags & HLS_SINGLE_FILE) { vs->fmp4_init_filename = av_strdup(vs->basename); - if (!vs->fmp4_init_filename) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->fmp4_init_filename) + return AVERROR(ENOMEM); } else { vs->fmp4_init_filename = av_malloc(fmp4_init_filename_len); - if (!vs->fmp4_init_filename ) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->fmp4_init_filename) + return AVERROR(ENOMEM); av_strlcpy(vs->fmp4_init_filename, hls->fmp4_init_filename, fmp4_init_filename_len); if (hls->nb_varstreams > 1) { @@ -2862,17 +2846,15 @@ static int hls_init(AVFormatContext *s) ret = append_postfix(vs->fmp4_init_filename, fmp4_init_filename_len, i); } if (ret < 0) - goto fail; + return ret; } fmp4_init_filename_len = strlen(vs->m3u8_name) + strlen(vs->fmp4_init_filename) + 1; vs->base_output_dirname = av_malloc(fmp4_init_filename_len); - if (!vs->base_output_dirname) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->base_output_dirname) + return AVERROR(ENOMEM); av_strlcpy(vs->base_output_dirname, vs->m3u8_name, fmp4_init_filename_len); @@ -2890,7 +2872,7 @@ static int hls_init(AVFormatContext *s) ret = hls->use_localtime ? sls_flag_check_duration_size(hls, vs) : sls_flag_check_duration_size_index(hls); if (ret < 0) - goto fail; + return ret; if (vs->has_subtitle) { vs->vtt_oformat = av_guess_format("webvtt", NULL, NULL); @@ -2902,25 +2884,21 @@ static int hls_init(AVFormatContext *s) vtt_basename_size = strlen(vs->m3u8_name) + strlen(vtt_pattern) + 1; vs->vtt_basename = av_malloc(vtt_basename_size); - if (!vs->vtt_basename) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->vtt_basename) + return AVERROR(ENOMEM); av_strlcpy(vs->vtt_basename, vs->m3u8_name, vtt_basename_size); p = strrchr(vs->vtt_basename, '.'); if (p) *p = '\0'; - if ( hls->subtitle_filename ) { + if (hls->subtitle_filename) { ret = format_name(hls->subtitle_filename, &vs->vtt_m3u8_name, i, vs->varname); if (ret < 0) - goto fail; + return ret; } else { vs->vtt_m3u8_name = av_malloc(vtt_basename_size); - if (!vs->vtt_m3u8_name) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->vtt_m3u8_name) + return AVERROR(ENOMEM); strcpy(vs->vtt_m3u8_name, vs->vtt_basename); av_strlcat(vs->vtt_m3u8_name, "_vtt.m3u8", vtt_basename_size); } @@ -2929,14 +2907,12 @@ static int hls_init(AVFormatContext *s) if (hls->baseurl) { vs->baseurl = av_strdup(hls->baseurl); - if (!vs->baseurl) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!vs->baseurl) + return AVERROR(ENOMEM); } if ((ret = hls_mux_init(s, vs)) < 0) - goto fail; + return ret; if (hls->flags & HLS_APPEND_LIST) { parse_playlist(s, vs->m3u8_name, vs); @@ -2950,10 +2926,9 @@ static int hls_init(AVFormatContext *s) } if ((ret = hls_start(s, vs)) < 0) - goto fail; + return ret; } -fail: return ret; }