From patchwork Wed Jan 9 22:26:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Izen X-Patchwork-Id: 11688 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 EC03444CF5D for ; Thu, 10 Jan 2019 00:33:20 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D324E68A5E3; Thu, 10 Jan 2019 00:33:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f41.google.com (mail-io1-f41.google.com [209.85.166.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CEA00689ACE for ; Thu, 10 Jan 2019 00:33:02 +0200 (EET) Received: by mail-io1-f41.google.com with SMTP id g8so7373011iok.4 for ; Wed, 09 Jan 2019 14:33:14 -0800 (PST) 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=xEnKykF0WTK5bjbXozX41CLV8kobFVJQvnPdUxEnv7I=; b=oygDYVzPIWjB62SBVoA8NkEyLWlY4yy299WZNZ4EOYx6rHxdcysVThpgEoWYAh6tyH QsfCvur2cVoSjMo0qjTq7LKA1206Tsi6+02lR8mbI/lJiVQSQJhGiBXgP/2JVcvy/utB 5PBYvXlHSLVRJmsdstEL4cO1kynteekE7yI+RCBPyKj62yUwFIQBUfZYx1g+xNjy8eyy 8PE6vfoY9EUFexMbAM7PuGkt+asvX8r97CYHex0QjceSXsUx04qLLNZim8TPfjrWvBpX neCPKR7R/GEYsiqL//qwVQYK8WOYU6eIYlJGflAfjL42o5yPED9VEehqo83kFW7ZecNK PbKg== 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=xEnKykF0WTK5bjbXozX41CLV8kobFVJQvnPdUxEnv7I=; b=pApwe4PSNxE2C/RJFsqsFS9tdBpa+YRv+ksOXVYT0Gcyq5+E2asPZm5GUrsyFDJ6mi x1gfaSelN0BLOx9qj9ibZjAd6VXi6I/kf89fRt9wBOiQ4H/HrFHALcWYZzueLb9famIk r8ryRJBAcZRgDPYEqtgAtUwZ7dwfNdF5WBRH1JTR2aWO5EdPBUm5LXsdL9PKMpH7mgT2 FJyNAaGbw7wt7Vfuo7RK9yI0cgMo+1YhCbvhHBps3CsKfFNYFdifh56aqo3l9L6qBPHJ FM7yTXzLBSySUF1Q7x5slMLKBVXWJKVYe4m40DsMG5gTImwryNaGmdDtDSSx6LyDVbUw U2iw== X-Gm-Message-State: AJcUukcFd75p3ZNze9NKEfvrE/ZWgMBRsWuswmiEnkcxQadqQgT4LecH oQnMeXGA1it/9ba1UDkxoDvPxHEe X-Google-Smtp-Source: ALg8bN6s+ckpHegQgmlNYxmD/Wa57xy0lTaIukiPIhzCxsepCNwWHJiv5xKbi8U5mChm6dMGObMcJA== X-Received: by 2002:a6b:db17:: with SMTP id t23mr5133428ioc.262.1547072842914; Wed, 09 Jan 2019 14:27:22 -0800 (PST) Received: from gauss.localdomain (2379589715.vpn.umich.net. [141.213.168.83]) by smtp.gmail.com with ESMTPSA id b188sm8309303itc.9.2019.01.09.14.27.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jan 2019 14:27:22 -0800 (PST) From: Leo Izen To: ffmpeg-devel@ffmpeg.org Date: Wed, 9 Jan 2019 17:26:53 -0500 Message-Id: <20190109222653.18346-1-leo.izen@gmail.com> X-Mailer: git-send-email 2.20.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 | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 544f1a1cef..f4bd5d97b7 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -2038,12 +2038,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); @@ -2597,7 +2599,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; @@ -3153,8 +3155,15 @@ 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; }