From patchwork Sat Sep 10 06:47:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 522 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp663966vsd; Fri, 9 Sep 2016 23:48:05 -0700 (PDT) X-Received: by 10.194.232.200 with SMTP id tq8mr1951566wjc.63.1473490085598; Fri, 09 Sep 2016 23:48:05 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w6si6303028wmw.38.2016.09.09.23.48.03; Fri, 09 Sep 2016 23:48:05 -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=@tmm1-net.20150623.gappssmtp.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 9DB4D68A062; Sat, 10 Sep 2016 09:47:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f196.google.com (mail-pf0-f196.google.com [209.85.192.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66FB1689FE6 for ; Sat, 10 Sep 2016 09:47:44 +0300 (EEST) Received: by mail-pf0-f196.google.com with SMTP id i75so109546pfa.2 for ; Fri, 09 Sep 2016 23:47:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=70wenItqhTZUJphLCdpUxUKCASLGZD9vtf2bDe7Z+GE=; b=TJHE0wqP23TFbUz/hNjSdZP4zVxFdHtZ9lpworH9XvWWM/GXwgOpqFWUuXbG6uwSC+ Mb7c5DYDDnu2+Ee/9UffY5KmOVNDHah+Ff8rQxQn8b1iyhvUwpom5qETHn8WKcuZbupD +s+BrQojBRI3dJQIyWFyDuX7b1+cxDFvgh4FprBv9Kla2J9joQFHdpvFufztnoGxiwMk a9jO6HAOB4EWeinLbtLIzgIMfUSjmWUrUzOhGihujew9cn/FdcBPi3hxZDegsu2BLAXu jffcfHLN8GojKqKJwhbx9tm6SkBIVbaqdeyLP77g3M88nM6bUshhvoqVZxe1EyN18OT/ 6iAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=70wenItqhTZUJphLCdpUxUKCASLGZD9vtf2bDe7Z+GE=; b=dQx1j4pyRv+VYgE7PXhpah9oUxc5eUjp9ZDenLxcHjCT3KzUYFjeXw3pifObCI4Ket PUl6ZxOEWqjAQiYohnnfuG99a8J2VUXLGCxtD1zA2putMIXNpGeWu0OaMxeqCVKn4e+q doCDxW+9Q2n1spEXPs+I9HhJsagyQboQLhLER9rWd/1OiPMGFD9nKa614TroHAgndIBP 4WmYwduPcE7QaRE0eJyJJWn7KR+5ZX+13jXCXGo+hzX+NEXztfTwNEBmilSY4tgvh8/J AfQ6K3KpvQnNGIuwHPzl9eSuVHiaBvUqNlcvCi/w4Mu4k4xTrnJaiX8Poz8kprXSvlMD Qo3Q== X-Gm-Message-State: AE9vXwPPlxrkSNgw8RcQ4uh3hPwWOi9b++OltaZSq7jbBgepjuGMHOCJJfgfVzZqyHHIbg== X-Received: by 10.98.194.82 with SMTP id l79mr13353631pfg.113.1473490073579; Fri, 09 Sep 2016 23:47:53 -0700 (PDT) Received: from localhost.localdomain ([220.110.199.168]) by smtp.gmail.com with ESMTPSA id 3sm9520279pai.48.2016.09.09.23.47.52 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 09 Sep 2016 23:47:52 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Sat, 10 Sep 2016 15:47:41 +0900 Message-Id: <1473490061-12965-1-git-send-email-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.8.1 Subject: [FFmpeg-devel] [PATCH] lavf/hlsenc: add -hls_start_time to emit EXT-X-START:TIME-OFFSET 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: Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta --- doc/muxers.texi | 3 +++ libavformat/hlsenc.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/doc/muxers.texi b/doc/muxers.texi index ccf8ea1..e179c5a 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -533,6 +533,9 @@ Emit @code{#EXT-X-PLAYLIST-TYPE:EVENT} in the m3u8 header. Forces Emit @code{#EXT-X-PLAYLIST-TYPE:VOD} in the m3u8 header. Forces @option{hls_list_size} to 0; the playlist must not change. +@item hls_start_time @var{offset} +Emit @code{#EXT-X-START:TIME-OFFSET} in the m3u8 header. + @item method Use the given HTTP method to create the hls files. @example diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index a376312..1344613d 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -79,6 +79,7 @@ typedef struct HLSContext { unsigned number; int64_t sequence; int64_t start_sequence; + float start_offset; AVOutputFormat *oformat; AVOutputFormat *vtt_oformat; @@ -511,6 +512,9 @@ static int hls_window(AVFormatContext *s, int last) } else if (hls->pl_type == PLAYLIST_TYPE_VOD) { avio_printf(out, "#EXT-X-PLAYLIST-TYPE:VOD\n"); } + if (hls->start_offset >= 0) { + avio_printf(out, "#EXT-X-START:TIME-OFFSET=%f\n", hls->start_offset); + } av_log(s, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); @@ -1013,6 +1017,7 @@ static const AVOption options[] = { {"hls_list_size", "set maximum number of playlist entries", OFFSET(max_nb_segments), AV_OPT_TYPE_INT, {.i64 = 5}, 0, INT_MAX, E}, {"hls_ts_options","set hls mpegts list of options for the container format used for hls", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E}, {"hls_vtt_options","set hls vtt list of options for the container format used for hls", OFFSET(vtt_format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E}, + {"hls_start_time", "set EXT-X-START:TIME-OFFSET", OFFSET(start_offset), AV_OPT_TYPE_FLOAT, {.dbl = -1}, -1, FLT_MAX, E}, {"hls_wrap", "set number after which the index wraps", OFFSET(wrap), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, E}, {"hls_allow_cache", "explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments", OFFSET(allowcache), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, E}, {"hls_base_url", "url to prepend to each playlist entry", OFFSET(baseurl), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E},