From patchwork Mon May 7 09:58:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8821 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp2678450jad; Mon, 7 May 2018 02:58:21 -0700 (PDT) X-Google-Smtp-Source: AB8JxZopyv+hFqFb0ftsEgIu8EstDZvAorRRvnprRhr5Z0735M9Hd93tQie/CsN3gHFKISDL2z7O X-Received: by 2002:adf:c88e:: with SMTP id k14-v6mr27565049wrh.135.1525687101590; Mon, 07 May 2018 02:58:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525687101; cv=none; d=google.com; s=arc-20160816; b=ihpWH7l+fJjo6SXhLcK65NkdL/9IpoAKtfRHo1Zk3e/7gr0oeG0Hms3tbvZojAjQNP RRtvZMNJT5vO9Wg2oppzAHdCwdTPLFvYnMj4Y0/zPoAC9CdA97oIDwuNfNho+ed89VWp xomNiGBhhdsRa3jnH0ibM/err2r5JME5bJlrS+XIm9uIEQICJqDH3kSOkhuUVrMATOEr anpURbXcOPuKSK0hWJXH3opYZ0mLG6oa2RtXOsK3NxRaSgXxcfkpzTR+b2YIKP4ibt8k WkRkg+i81CqHmgC12pvSWvjlxf6usyij4/w/m8FPAWIGGhIyIPh9nmFRV9v0qBc8rntc mPXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=s4IWSSQNbFWaQt+sJKwFoA31tn9Fq0ZZ/jRpo3Sn4e8=; b=H5MJTgDnm9ogF6u45z3yjVA0IBDrAwyy1HAH4NmQyVsWMOJyu1hFLO1ULK+sR3R61/ ctutjcaJLJ3t2WElKYMWu/r0hbWoJZdF3Nr8onzlinnk5mi/yStnyaANQDNZbK0Grm4M k2Y2D4ypfCKUyF+6f1+mfuJHl09ew3ziJK0QxXi+z0Q0D3rohP7GYMHzpaLSsnru07Q5 4ffkA+/dRRzqoFRkSknCoPhais6HicNQgUOdLHaIFidPNT6aq8A/GwjcnuMnIOR1LRcZ H5emHunop9XzaGLReZW84dBD0vq4F1pifcrllZe+OT8MqQTtVys9EwiGgHxurGLRqSpU /Pew== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=LDS8xFIy; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o83-v6si4761083wma.200.2018.05.07.02.58.21; Mon, 07 May 2018 02:58:21 -0700 (PDT) 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=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=LDS8xFIy; 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=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8A5CB68A55C; Mon, 7 May 2018 12:57:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a1i318.smtp2go.com (a1i318.smtp2go.com [43.228.185.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AEBA368A55F for ; Mon, 7 May 2018 12:57:34 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1525687995; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=GC4rxeT77FOMqDK2sRUvRtTX0vogc2U3qxrM6V/IAMo=; b=LDS8xFIy 2z+gNv3d+MPJs/7sJTm+Fpe4HEQTVnCX5T2tFy6xMyRK+sjehaoBQW7eGW9E/ucZ9lS51rh3+VXwz P6H8y+/RU8vH9ljk7jbt9BTq/+LJpUKaPjZzOBLpcxzgQMIshTh1z3RzKVN2gS2cun/TD+37+r6r3 FPBfKxIrna0TvpV942lHtr3guCHkd7vQyEqPw5iEKQHVrz5sfeMCUHkbtLHwPT/gr6PN7gdTgZk/O qM862t+9HTUzbGBckCawABUCJbjAs7auXZiM+k8kuO5rH0YcH85UWZdQOHXqB3OVZR5RmEBIPRdg4 7Q6R+BeLVyhkVCg2TUmsw4S2Iw==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 May 2018 15:28:02 +0530 Message-Id: <1525687082-6126-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1524561418-4419-3-git-send-email-vdixit@akamai.com> References: <1524561418-4419-3-git-send-email-vdixit@akamai.com> X-Smtpcorp-Track: 1fFcIE4ba9bZ5r.8GuvBDSu- Feedback-ID: 337386m:337386asVRLGB:337386smy3Nlxax0:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v2 3/3] avformat/dashenc: configuring container format options 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: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit --- doc/muxers.texi | 4 ++++ libavformat/dashenc.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/doc/muxers.texi b/doc/muxers.texi index db81901..e9082a4 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -282,6 +282,10 @@ corrects that index value. Typically this logic is needed in live streaming use cases. The network bandwidth fluctuations are common during long run streaming. Each fluctuation can cause the segment indexes fall behind the expected real time position. +@item -format_options @var{options_list} +Set container format (mp4/webm) options using a @code{:} separated list of +key=value parameters. Values containing @code{:} special characters must be +escaped. @end table @anchor{framecrc} diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 1dd6333..e27b61c 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -125,6 +125,7 @@ typedef struct DASHContext { int streaming; int64_t timeout; int index_correction; + char *format_options_str; } DASHContext; static struct codec_string { @@ -1017,6 +1018,11 @@ static int dash_init(AVFormatContext *s) av_dict_free(&opts); os->init_start_pos = 0; + if (c->format_options_str) { + ret = av_dict_parse_string(&opts, c->format_options_str, "=", ":", 0); + if (ret < 0) + return ret; + } if (!strcmp(os->format_name, "mp4")) { if (c->streaming) av_dict_set(&opts, "movflags", "frag_every_frame+dash+delay_moov", 0); @@ -1538,6 +1544,7 @@ static const AVOption options[] = { { "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, { "timeout", "set timeout for socket I/O operations", OFFSET(timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT_MAX, .flags = E }, { "index_correction", "Enable/Disable segment index correction logic", OFFSET(index_correction), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, + { "format_options","set list of options for the container format (mp4/webm) used for dash", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E}, { NULL }, };