From patchwork Fri Oct 19 02:58:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Izen X-Patchwork-Id: 10714 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 C8D1C447310 for ; Fri, 19 Oct 2018 05:58:55 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 28BE368A50D; Fri, 19 Oct 2018 05:58:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F2A2689FA0 for ; Fri, 19 Oct 2018 05:58:30 +0300 (EEST) Received: by mail-io1-f45.google.com with SMTP id t7-v6so22236602ioj.13 for ; Thu, 18 Oct 2018 19:58:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=GEvMpZLGwIye7dCXsH+cXLECYOoF+F9PX/PLPc2wWbg=; b=fIgV6bTZioWtYwqtZQUEPTGZBiv3QzuuiQ+Q3dXE+9DTUJRCbOevYkIxmRNDHPFvoa v49jFqa0ybR7NXSAY1mWVEvMPe7eEdWzb77xaF00tnU4nhXLJNyJw4RHJTEb/Lf1HVqT pASDazSLMEs0mC+cK+oTrAYYB50oQSkAqYy/xR+1P5fxUzdvWO1IT8/5wgZ+YlMUYADg 4cz6yZAIqiT1vFF7cDVrx5zAxMAOGO1k76GaA0Iz+WF7S3SPSxjMPh182zz+x3bRoVvx +K71/ENNwsiKV4YhLKbYuWpBpmAZZRTPvjWTEn0sPiseSFrkbqtd1LEioAx7PQecwKB4 vPtw== 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:mime-version :content-transfer-encoding; bh=GEvMpZLGwIye7dCXsH+cXLECYOoF+F9PX/PLPc2wWbg=; b=H6VDACGCtAHdIBR5oVU/PQyyh4Sdiv8LP6Q3wxN9564kLIEVknKuDWeuJDu2UO8nkK O5WONX+111VxB+tUgpd6JR04Bnn+XRbz4G8GMpftzNByN12UnISSwMCCK0jldSL8KSG5 V9R13OXZpCa1DLqHcNnmkVYN2CByzCUj/aY5wXfwSo4Vo5sIh4vT75/TTkMRSgEOc4y9 8d3yl1Ia8QVuHZnQJEVy8DdXyGmfmxxjiP2+28YTpQeOYzbKHUwQZqh4XW96BJ6pVrG7 W5x7oNdPehPPO+yyUL+JXXax0F0iUvyU3zui3nYqjk9oiG9VP3cO5QUbk5G0Oem2Xjwc ogSQ== X-Gm-Message-State: AGRZ1gKsN02AdbyGfGZL6BoTWskKFD7kdCaxBs63TtnfNsctfhfjNs5h Wy/umnD+soYuUtnjdYNS7RBCUNsj X-Google-Smtp-Source: AJdET5d4TwagEBQJ0isvAdIgn9n4s1F7SEQeaakeCTnSRLkJj+Ug2WY0KPci93oSBtHctOHcaJUE1Q== X-Received: by 2002:a6b:1701:: with SMTP id 1-v6mr1899557iox.48.1539917934479; Thu, 18 Oct 2018 19:58:54 -0700 (PDT) Received: from gauss.localdomain (2379590138.vpn.umich.net. [141.213.169.250]) by smtp.gmail.com with ESMTPSA id a3-v6sm6694032ioc.40.2018.10.18.19.58.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Oct 2018 19:58:53 -0700 (PDT) From: Leo Izen To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 Oct 2018 22:58:21 -0400 Message-Id: <20181019025821.23120-1-leo.izen@gmail.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg.c: allow forcing input framerate on streamcopy 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: Leo Izen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- fftools/ffmpeg.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index da4259a9a8..5d68194676 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -2045,12 +2045,14 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO) ost->sync_opts++; - if (pkt->pts != AV_NOPTS_VALUE) + if (ist->framerate.num) + opkt.pts = av_rescale_q(ist->pts, AV_TIME_BASE_Q, ost->mux_timebase) - ost_tb_start_time; + else if (pkt->pts != AV_NOPTS_VALUE) opkt.pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time; else opkt.pts = AV_NOPTS_VALUE; - if (pkt->dts == AV_NOPTS_VALUE) + if (pkt->dts == AV_NOPTS_VALUE || ist->framerate.num) opkt.dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase); else opkt.dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase); @@ -2602,7 +2604,7 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo avpkt = *pkt; } - if (pkt && pkt->dts != AV_NOPTS_VALUE) { + if (pkt && pkt->dts != AV_NOPTS_VALUE && !ist->framerate.num) { ist->next_dts = ist->dts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q); if (ist->dec_ctx->codec_type != AVMEDIA_TYPE_VIDEO || !ist->decoding_needed) ist->next_pts = ist->pts = ist->dts;