From patchwork Sun May 6 17:08:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8814 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp2086995jad; Sun, 6 May 2018 10:09:20 -0700 (PDT) X-Google-Smtp-Source: AB8JxZru2w2QDQLJSscdpn3ogrRAok3SXZJsmcS4D17ZlUzRWIOe0iJ28lAo+jCITqJpeMnyeqiF X-Received: by 10.28.178.77 with SMTP id b74mr1198277wmf.112.1525626560843; Sun, 06 May 2018 10:09:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525626560; cv=none; d=google.com; s=arc-20160816; b=CFVDMVOOcJPAUnerqjUX2t2E9ThMWfvjZgQ7TnrHKdxNvHCijMpeo6todqzfz1HANB jdeXPhjcmUjf5tS3mjFO04gYhlwyMsovFZscLBePLOfKyP7DBgdOJfexrRoMzdwvfOV2 FasObvIf79UAnpDddaey1iDCTDvqxzY4/gziMxDr7gekp+76gfII+K2lvt+nQfN6JdDh v2UQmswUDRBjpmZDZhCl6TF7tAjMS931eRrsKKSRxy54lBCVPjkjIW5uMA9gSJykzUHa 6TpMvK96uvIg17WWc6XcJnR6B4wFxuz+L6og+FS/FDA/XaHBn8/7OZk3/M2NpzOphfUE +q4Q== 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=CafLu/lwgjRlJkPc1pWdCXkLsh1s5EvyswIBfCKrIX8=; b=TKbbzfGGTH0i1LRIrEGnmkR5ZYon9O2Nw0X0BKKxay04q06azZ9DFkY/Qg090IRQUJ vdfSgOMlEARMlTc5aRxdCAiQ3Lb9xcq3cXUFO7xFBgtHdaVZKgi5GoH4nifPGMh4Hx77 g/6nVOcCIWF1rqALY6SU69aHVq9t4lJ6/F7MgtvgkQs0HjADivzWtmOghJChNNZDUowd 49VetIkXINNjz2+UeCjjWEjGWa0nqcIMgxJ7qBeGjQwp4w5yUcpGr6WUs5QoMwXhim0G G9hp+9SvcNOy+y3L36C9w/vQ6RGMkkx/2opAZIejbWDFT/2tqxf31YaXZgMADAqbGmxp RFng== 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=Asr7kX1U; 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 35-v6si17808723wrs.340.2018.05.06.10.09.19; Sun, 06 May 2018 10:09:20 -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=Asr7kX1U; 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 86C2168A619; Sun, 6 May 2018 20:08:43 +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 2410668A4F6 for ; Sun, 6 May 2018 20:08:37 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1525627457; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=QPFo6se3WU8t4Vz+ghPzjRpM59Dezi2BUOOjYhwd6OE=; b=Asr7kX1U Wpyx0NjK6DQfYbQFuDQ+4cVqnNXrap9lPhVANjanAm8isGgFGaUSM4OadCYnOOjJOkH7u6yZHM/1V ZuPHhBEugxWCt4IDRS1fc3/Nr3mmYXrGhx7Czfq4HJZL8nsHtOBbsERyRFWoC2IlH0G4jwYoO3Wva yca+C7BoST9MQ3tehKIu7ggLsigw1TM7MQgIUWHSrzZfK64HL76WjueMm8GduE/TENxci8uVKFc12 hV9K7NX1tIjuamjSh+Pc8yrAECxxAv4q8r1cP/OBlu/ZrfXCIeOKIBCJAEkztdaaYnsxMYRXUOvwJ G+L1JsNQDdDXDrZYZT8hNSIQQQ==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 6 May 2018 22:38:59 +0530 Message-Id: <1525626539-30152-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <20180427005425.GJ20131@michaelspb> References: <20180427005425.GJ20131@michaelspb> X-Smtpcorp-Track: 1fFN9kNmF8qaNz.73ax8VrX6 Feedback-ID: 337386m:337386asVRLGB:337386soUNxczOaq:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH 1/1] fftools/ffmpeg: fix for all forced key frames when 'copyts' is enabled 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 Forced key frames generation functionality was assuming the first PTS value as zero, but, when 'copyts' is enabled, the first PTS can be any big number. This was eventually forcing all the frames as key frames. To resolve this issue, update has been made to use first input pts as reference pts. --- fftools/ffmpeg.c | 6 +++++- fftools/ffmpeg.h | 1 + fftools/ffmpeg_opt.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 5a19a09..10f3012 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1236,8 +1236,12 @@ static void do_video_out(OutputFile *of, in_picture->quality = enc->global_quality; in_picture->pict_type = 0; + if (ost->forced_kf_ref_pts == AV_NOPTS_VALUE && + in_picture->pts != AV_NOPTS_VALUE) + ost->forced_kf_ref_pts = in_picture->pts; + pts_time = in_picture->pts != AV_NOPTS_VALUE ? - in_picture->pts * av_q2d(enc->time_base) : NAN; + (in_picture->pts - ost->forced_kf_ref_pts) * av_q2d(enc->time_base) : NAN; if (ost->forced_kf_index < ost->forced_kf_count && in_picture->pts >= ost->forced_kf_pts[ost->forced_kf_index]) { ost->forced_kf_index++; diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index d44b7a5..eb1eaf6 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -484,6 +484,7 @@ typedef struct OutputStream { AVRational frame_aspect_ratio; /* forced key frames */ + int64_t forced_kf_ref_pts; int64_t *forced_kf_pts; int forced_kf_count; int forced_kf_index; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 8ae68ae..36bce44 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1324,6 +1324,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e ost->file_index = nb_output_files - 1; ost->index = idx; ost->st = st; + ost->forced_kf_ref_pts = AV_NOPTS_VALUE; st->codecpar->codec_type = type; ret = choose_encoder(o, oc, ost);