From patchwork Mon Feb 13 13:15:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Miroslav_Sluge=C5=88?= X-Patchwork-Id: 2541 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp904431vsb; Mon, 13 Feb 2017 05:15:57 -0800 (PST) X-Received: by 10.223.169.140 with SMTP id b12mr19884574wrd.138.1486991757531; Mon, 13 Feb 2017 05:15:57 -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 8si5474214wmq.139.2017.02.13.05.15.51; Mon, 13 Feb 2017 05:15:57 -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=@email.cz; dkim=neutral (body hash did not verify) header.i=@email.cz; 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=NONE dis=NONE) header.from=email.cz Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8314568920D; Mon, 13 Feb 2017 15:15:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mxf2.seznam.cz (mxf2.seznam.cz [77.75.76.123]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F1C4B687ECA for ; Mon, 13 Feb 2017 15:15:38 +0200 (EET) Received: from email.seznam.cz by email-smtpc3a.ng.seznam.cz (email-smtpc3a.ng.seznam.cz [10.23.10.75]) id 32ca1be4061d03f8325832e9; Mon, 13 Feb 2017 14:15:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email.cz; s=beta; t=1486991743; bh=3C0xxTYv+s+gYclVE+ty1kUT5gI24Bcc0n0+tnVe7CQ=; h=DKIM-Signature:Received:From:Subject:To:Message-ID:Date: User-Agent:MIME-Version:Content-Type; b=FcV7EmRzdDW6yw7VvMnBLps+nymc3603FVq9Y9eoFC6yIJuk1500T1+iCqKUIgUwu lhrjX5ziisWKP5ZIAYRHBUZyMRYDc6JtHKRL2r7c+134tcBScMROlQIbCEPVd2d32A UheQO478aFCyzjWMi2zQfdYbUkj00MsMJN5lTOnc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email.cz; s=beta; t=1486991743; bh=3C0xxTYv+s+gYclVE+ty1kUT5gI24Bcc0n0+tnVe7CQ=; h=Received:From:Subject:To:Message-ID:Date:User-Agent:MIME-Version: Content-Type; b=Qu00K7kUZ6AbVNABK7dNyGPo4PNrK6XJ5hJw0Xl3W94Cy+dshfNHcuFSo/l+7/OdK bQZ5jJxlyCIfyyyfpgRykUkY2kjR6koZGsLVa7Pe/lWQQiVEa2OsT8klDLmyEoUUt7 Q/vK1gibvmQYr8tBoDD0o4AcLIYR5RYS69k5uiwc= Received: from [192.168.0.6] (ip-94-113-140-7.net.upcbroadband.cz [94.113.140.7]) by email-relay23.ng.seznam.cz (Seznam SMTPD 1.3.56) with ESMTP; Mon, 13 Feb 2017 14:15:41 +0100 (CET) From: =?UTF-8?Q?Miroslav_Sluge=c5=88?= To: ffmpeg-devel@ffmpeg.org Message-ID: <58A1B17C.1090607@email.cz> Date: Mon, 13 Feb 2017 14:15:40 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] hlsenc: intialize only on ref_pkt (v2) 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This patch will fix cutting hls segments into exactly same length. Because it will intialize only on first ref_packet, which is video frame, not audio frame (old behavior) Now it should be possible to create segments at exactly same length if we use new -force_key_frames hls:time_in_seconds parameter. This is required to support adaptive HLS. This patch was splitted to two parts, this is first independent part From 2d0bbf0a68bc5f85f24c65a65e3ae70c362e82dc Mon Sep 17 00:00:00 2001 From: Miroslav Slugen Date: Mon, 13 Feb 2017 14:13:18 +0100 Subject: [PATCH 1/1] hlsenc: intialize only on ref_pkt --- libavformat/hlsenc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 930e94b..e107fff 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1279,10 +1279,6 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) oc = hls->avf; stream_index = pkt->stream_index; } - if (hls->start_pts == AV_NOPTS_VALUE) { - hls->start_pts = pkt->pts; - hls->end_pts = pkt->pts; - } if (hls->has_video) { can_split = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && @@ -1293,6 +1289,11 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) is_ref_pkt = can_split = 0; if (is_ref_pkt) { + if (hls->start_pts == AV_NOPTS_VALUE) { + hls->start_pts = pkt->pts; + hls->end_pts = pkt->pts; + } + if (hls->new_start) { hls->new_start = 0; hls->duration = (double)(pkt->pts - hls->end_pts) -- 2.1.4