From patchwork Fri May 1 11:31:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 19415 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 A447044B95F for ; Fri, 1 May 2020 15:01:12 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7CA8C68C5BE; Fri, 1 May 2020 15:01:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 275CB68B86B for ; Fri, 1 May 2020 15:01:06 +0300 (EEST) Received: by mail-wr1-f68.google.com with SMTP id i10so11262052wrv.10 for ; Fri, 01 May 2020 05:01:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=5QpznuqzSJIO86dRBQIUM5NSogUsq1AWMprbKU6S6ts=; b=ev10teO8ruPlhdW4sYiEnpQygN9vSGQQGPDr/mnmKzZWAN6Hc3quwVS5067VJ+vxVN VnLALxdQ3C/5hnNc7/JWZTd1ZZ1dLjPAEgvo+QaeXqdZakrnBcvDujJKRXKtV6yeNnyv 5tIu7KBBE+GkYeX/pB9z+/tEN/YKlsLq7KLqjfm0LwoKTACz9Ji8HEN7/MoAB2Psu0oz q+obCqFguLNFxBMJdjpVopOeMogzCnBinF7y8PZ1/BGy1Jp7fym/Ggg5gTLjZiAtRPjm q+t3Ouf2NCf9zKBOUgeg2VLY/yYyetIPuQGMEEx19F7BMGKmTlenVeGB4Npbo6FhVKw3 Pidw== 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:mime-version :content-transfer-encoding; bh=5QpznuqzSJIO86dRBQIUM5NSogUsq1AWMprbKU6S6ts=; b=FkM2A41tMxd/+Q3lXLKMlA4mmEb1JsJ9lhEnTUvJIaZh/Xb7yuKOcYM/xrvJ3ZN24G u0JGMbyTuaHV+xNspmYFjaZiiUbdKnx3pH+4jYl4i52eNm87o5h+2J8WcRZdolEHsFc9 MDQg8s36hcHmRh65TE95j6xMTKJZTjS1GvQsYrFppSsueDrd9KcALf81KA57+mvMIV4A LR1CF1DAjKZvXlaIX3PFaxTDM8pG+7diY3VEOWI4ctyJefZQ9GWplDWiq3eUZVNuvkhp IftGBRpZE1ZVcFrgP16xHu6OELKZIG9yy01YvchMYTUdS6FSheNa6p5zlNUu5bjbgp6i tx1w== X-Gm-Message-State: AGi0PuZWWi7Ys9TVsMSuzhO288gVqmgtnqllks5sdoAE6hoJ1FcNgO9R fWMNTy5vyPAyTDAxwHOeJkhs+Fb/ X-Google-Smtp-Source: APiQypLa0n/GXf9q+nYwiKiw138fVrrGfJ83vF6BKTcCbZTK41KM/LldOLj3uKv+5oDogdRCr9KvyA== X-Received: by 2002:adf:e408:: with SMTP id g8mr2265818wrm.363.1588332716640; Fri, 01 May 2020 04:31:56 -0700 (PDT) Received: from localhost.localdomain ([82.129.83.65]) by smtp.gmail.com with ESMTPSA id y63sm3736195wmg.21.2020.05.01.04.31.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2020 04:31:56 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 May 2020 12:31:47 +0100 Message-Id: <20200501113147.1173-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/librav1e: Use the framerate when available for ratecontrol 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" Rav1e currently uses the time base given to it only for ratecontrol... where the inverse is taken and used as a framerate. So, do what we do in other wrappers and use the framerate if we can. Signed-off-by: Derek Buitenhuis --- Notably, this leaves pkt->pts still broken (it was broken before, too), but after discussion with James and Lynne, we decided to fix this in the rav1e API and bump the minimum version, instead of using a PTS queue in librav1e.c. --- libavcodec/librav1e.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/librav1e.c b/libavcodec/librav1e.c index b8b1b4f8f1..b0ff60d8c7 100644 --- a/libavcodec/librav1e.c +++ b/libavcodec/librav1e.c @@ -186,10 +186,21 @@ static av_cold int librav1e_encode_init(AVCodecContext *avctx) return AVERROR_EXTERNAL; } - rav1e_config_set_time_base(cfg, (RaRational) { - avctx->time_base.num * avctx->ticks_per_frame, - avctx->time_base.den - }); + /* + * Rav1e currently uses the time base given to it only for ratecontrol... where + * the inverse is taken and used as a framerate. So, do what we do in other wrappers + * and use the framerate if we can. + */ + if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { + rav1e_config_set_time_base(cfg, (RaRational) { + avctx->framerate.den, avctx->framerate.num + }); + } else { + rav1e_config_set_time_base(cfg, (RaRational) { + avctx->time_base.num * avctx->ticks_per_frame, + avctx->time_base.den + }); + } if (avctx->flags & AV_CODEC_FLAG_PASS2) { if (!avctx->stats_in) {