From patchwork Mon Mar 2 04:44:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18002 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 72B61449CCD for ; Mon, 2 Mar 2020 06:45:13 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 57C6268B4C7; Mon, 2 Mar 2020 06:45:13 +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 3265068B0EE for ; Mon, 2 Mar 2020 06:45:03 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id t11so4363306wrw.5 for ; Sun, 01 Mar 2020 20:45:03 -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=O9zsg8xO3uK+MYXGNQgILz5PgD2lGQKnweXHhF2N4YM=; b=NU1xfXFffR+S0IpdHSLupxrw1dfRq8U1Ha11/SVlriXuRf0uCf1xHoOJYOvbIuB1Vn QadOKJyq3bUqXUJIp00efNE9sc8xSCrusHKT2Epq5TvTxJTxeECfBuVuNavmNTlTeINg 5QlwujOd8oEbDYGrazCwjEQ3ckzCmjTBU4SUWaEmZWhFc5252mTDq+dwv7IDkkZZJi04 q9mVSiJ3eCjE+shVhX9MIZ5tROmm54sutqAvRI3cE1YAh41APZdCaIMm75Zq0JxZPg2C qZLhwcL1Ye7U/W0fq4W3PK9VjF5ynQ4kwdSxd7DShZFk2QSSwMw7Pev2HodOXIj24+sQ uPVw== 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=O9zsg8xO3uK+MYXGNQgILz5PgD2lGQKnweXHhF2N4YM=; b=o5rk5xStwh+si2VZyOTRJI/fcZi1UYs4K3wgpdR19lWxMin1qloqv5zEf6MmFKGyRX fQ4YnFLEYh/L3B2cW2HZG9PGElT0b6q/v2d392ELvGZYQPtKz9X+EUT3gBgNOy2Vp1Da l1myQDZCqFAMa376som/uSv3TVPlmFP4QaGBZEp2Xbfj5/cc82rrquf2RWYr632ru+Ja xKl+bEGREC9IIisfHdegPBQssr6YzNcunwkQX9m0ENSWSOlt4jNLjItPMmjtMfYV06qA n/l/+XrZ5skP0IOxRVyHnRfULiEaJmUW03jlP3uRH0pKXIKzVoksPzJqzjm0HpiIa5ky PchA== X-Gm-Message-State: APjAAAUNo1CMa7/W/DrPhtTR6VMVDcKWebuUXDb4rNBehqp/Nl2MVCK3 iNFBLR6to0lCNvLpqXW/f8vZa97/ X-Google-Smtp-Source: APXvYqyWnGxTRxVDdGlBm5fmX+XYODEHoqHZKtHWRcaESPfBTUjkhk3Tfknboe5xgQuWr85BP2WEtA== X-Received: by 2002:a5d:4807:: with SMTP id l7mr19778513wrq.250.1583124302441; Sun, 01 Mar 2020 20:45:02 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id s22sm13130229wmc.16.2020.03.01.20.45.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2020 20:45:01 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 2 Mar 2020 05:44:40 +0100 Message-Id: <20200302044445.14842-8-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200302043520.14165-1-andreas.rheinhardt@gmail.com> References: <20200302043520.14165-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/17] avformat/webm_chunk: Don't copy header filename 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" Instead just reuse the filename string that is given via an option for the child muxer's url field. Signed-off-by: Andreas Rheinhardt --- libavformat/webm_chunk.c | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c index d1b016bb14..a4aab04a44 100644 --- a/libavformat/webm_chunk.c +++ b/libavformat/webm_chunk.c @@ -65,6 +65,11 @@ static int chunk_mux_init(AVFormatContext *s) AVDictionary *dict = NULL; int ret; + if (!wc->header_filename) { + av_log(s, AV_LOG_ERROR, "No header filename provided\n"); + return AVERROR(EINVAL); + } + oformat = av_guess_format("webm", s->url, "video/webm"); if (!oformat) return AVERROR_MUXER_NOT_FOUND; @@ -74,6 +79,9 @@ static int chunk_mux_init(AVFormatContext *s) return ret; oc = wc->avf; + ff_format_set_url(oc, wc->header_filename); + wc->header_filename = NULL; + oc->interrupt_callback = s->interrupt_callback; oc->max_delay = s->max_delay; oc->flags = s->flags & ~AVFMT_FLAG_FLUSH_PACKETS; @@ -120,30 +128,17 @@ static int chunk_mux_init(AVFormatContext *s) return 0; } -static int get_chunk_filename(AVFormatContext *s, int is_header, char filename[MAX_FILENAME_SIZE]) +static int get_chunk_filename(AVFormatContext *s, char filename[MAX_FILENAME_SIZE]) { WebMChunkContext *wc = s->priv_data; if (!filename) { return AVERROR(EINVAL); } - if (is_header) { - int len; - if (!wc->header_filename) { - av_log(s, AV_LOG_ERROR, "No header filename provided\n"); - return AVERROR(EINVAL); - } - len = av_strlcpy(filename, wc->header_filename, MAX_FILENAME_SIZE); - if (len >= MAX_FILENAME_SIZE) { - av_log(s, AV_LOG_ERROR, "Header filename too long\n"); - return AVERROR(EINVAL); - } - } else { if (av_get_frame_filename(filename, MAX_FILENAME_SIZE, s->url, wc->chunk_index - 1) < 0) { av_log(s, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->url); return AVERROR(EINVAL); } - } return 0; } @@ -153,8 +148,6 @@ static int webm_chunk_write_header(AVFormatContext *s) AVFormatContext *oc = NULL; int ret; AVDictionary *options = NULL; - char oc_filename[MAX_FILENAME_SIZE]; - char *oc_url; // DASH Streams can only have either one track per file. if (s->nb_streams != 1) { return AVERROR_INVALIDDATA; } @@ -166,13 +159,6 @@ static int webm_chunk_write_header(AVFormatContext *s) if (ret < 0) return ret; oc = wc->avf; - ret = get_chunk_filename(s, 1, oc_filename); - if (ret < 0) - return ret; - oc_url = av_strdup(oc_filename); - if (!oc_url) - return AVERROR(ENOMEM); - ff_format_set_url(oc, oc_url); if (wc->http_method) av_dict_set(&options, "method", wc->http_method, 0); ret = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, &options); @@ -220,7 +206,7 @@ static int chunk_end(AVFormatContext *s, int flush) av_write_frame(oc, NULL); buffer_size = avio_close_dyn_buf(oc->pb, &buffer); oc->pb = NULL; - ret = get_chunk_filename(s, 0, filename); + ret = get_chunk_filename(s, filename); if (ret < 0) goto fail; if (wc->http_method)