From patchwork Tue Feb 11 17:05:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 17757 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 B20C144ABAB for ; Tue, 11 Feb 2020 19:05:37 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8A05668A259; Tue, 11 Feb 2020 19:05:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2A242689F6E for ; Tue, 11 Feb 2020 19:05:31 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id s10so4532388wmh.3 for ; Tue, 11 Feb 2020 09:05:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=bvHjgzzW8Xq6bkwoQUtzTN9WRQsHSI5WlA+80sMC094=; b=Xan8bHjPVDnNYCACGPheXAivKqlP+iSIJahOKpEg4JbRyTIC69Ke6siaNatHrstSOw lzyaw1KcNL6D7S738ShGE/m9vzJ4MX5UA9SrqnbFCsC/qbN2lv9C0BEq5DqS1xZ5AZ0A Npso8Ug/RqHFPuIi51YFtVs0T6bK4KZvMHQSxfmyqLbyL3oLJV/ubNcUtR5rC5Hj4XHo KbRqAC6yBfDh63hkhFzlE/R22mouboSX2hs3iXuFmWwlddWCpMIfJpmXy2oIoNlqKSjg cs9xrhZwMZ0RfjAGEIJGTjfZI3V2tZML6nSIzTQ7+LbKFPTnXTtOS2G0YdsL8XX+yvo7 tXPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=bvHjgzzW8Xq6bkwoQUtzTN9WRQsHSI5WlA+80sMC094=; b=eKzwdviyCL6Cq7v6TfJ2sETQoCN4b99F9Xo/x9a9Gdv6UD6cyAnLj2tk3w1dTgKA1r XkNNXtE68M89iMY16oqnmYRDZPImW5F2qMPGgM48bsMYdInAzFcybE8+/tfgIf7tsSuR wfwBTiDLM3oalSak+/J2utd/11LG83nWIP3x3UGNaANJ1SYRhEJKZbWd1yyP6VPOX//P t8JZ/7BRE63gn73LTSR8jWRIP+2+Kiu3HyVPX2h9SPqL/b64maQEByPZku5STRZYe/5/ ugewTOS84YGnuceGojTcTjYLpxv6oA07xPCGgvlPYRh3KYr4IIweVkfo4vOmeJq81T8E HVHQ== X-Gm-Message-State: APjAAAXqdxoXwAMKsTgNoSeKa5O4dr342V+MIDQAYuZToZYAkda36YAb HFvk8R7i/H+QzsDIsacphzIqL629 X-Google-Smtp-Source: APXvYqw2WYmqzMsepsW923zj8Hlp/yZCyjjJ5i6sxMxQutL6Hdg3Il/EW0kDx72I50KGMotAQ5xh5A== X-Received: by 2002:a1c:7f0d:: with SMTP id a13mr6275660wmd.182.1581440730177; Tue, 11 Feb 2020 09:05:30 -0800 (PST) Received: from localhost.localdomain ([77.237.111.189]) by smtp.gmail.com with ESMTPSA id k13sm5623832wrx.59.2020.02.11.09.05.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2020 09:05:29 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Tue, 11 Feb 2020 18:05:20 +0100 Message-Id: <20200211170520.3495-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg: 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Leo Izen Signed-off-by: Paul B Mahol --- fftools/ffmpeg.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index b0bffe0a54..9bfa853253 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -2045,10 +2045,12 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p if (av_packet_ref(&opkt, pkt) < 0) exit_program(1); - 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; - 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); @@ -2590,7 +2592,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; @@ -3146,8 +3148,14 @@ static int init_output_stream_streamcopy(OutputStream *ost) else sar = par_src->sample_aspect_ratio; ost->st->sample_aspect_ratio = par_dst->sample_aspect_ratio = sar; - ost->st->avg_frame_rate = ist->st->avg_frame_rate; - ost->st->r_frame_rate = ist->st->r_frame_rate; + + if (ist->framerate.num) { + ost->st->avg_frame_rate = ist->framerate; + ost->st->r_frame_rate = ist->framerate; + } else { + ost->st->avg_frame_rate = ist->st->avg_frame_rate; + ost->st->r_frame_rate = ist->st->r_frame_rate; + } break; }