From patchwork Sat Apr 27 11:17:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 12923 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 2168E4487EE for ; Sat, 27 Apr 2019 14:18:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A8DD68A89E; Sat, 27 Apr 2019 14:18:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 750C368A7E6 for ; Sat, 27 Apr 2019 14:18:06 +0300 (EEST) Received: by mail-pg1-f178.google.com with SMTP id z9so2836354pgu.10 for ; Sat, 27 Apr 2019 04:18:06 -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:in-reply-to:references; bh=DnI7Z/IektgtwmeUXsC7dCgRFZZa13CSZbX2clUqVo8=; b=IoU6kcFjHnHckA4cQNw/UlEpiEoztDUjGPAvEuszwcxlUpgp4RbtDZUdVcJoxS/KIf 15/7SvHAXLeG/nPa6pQozNax9VQytfYcvS2CHFWg9iTVESXT0c3xlxroZFaNw1wAzUw6 /Tw2OxftTrCn95eT12X3d/+8f+kXF4QiZy44SScg8Bv/OqVXlOXEfIGMv21VrVNdOB7L bgKWyPap06ZqAOSDG6wOOMv5HV7sf6acB2608GAUNh6BxyYPjixnj0LjkUhBtAjAPw2a BEqVQkoiDCC+wlN2+oEMhuRDUMmb/WEr7Gmm/fDaDQsIYwDaRONnVgQP9ZVKcoTq3Ckk xx+g== 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:in-reply-to :references; bh=DnI7Z/IektgtwmeUXsC7dCgRFZZa13CSZbX2clUqVo8=; b=q9HsAwM+1F93ww7Yqi2QL/yY38G3O+sqSvjB9vGL++RwqXV5QOUotYRnifWFdUFol6 Fihh+8SGA+dwoPlRkzk3AzAjwfMOUC47I0H02LTNrlW6Fg9uEHACkOulz5q10pzg8dZU pDTyejQNKS2uMO0pg8ba0tRVukg7YYq15Pby5IzrglU+8TD2/oyE0R9EbIp/ded2U+Kd 0mjORE00hWP2T2L8W2R7NL5xAO9ad1YV0fjI9b+43/0Pbysat7NtC+iWIf+qbSrAyijA Bh569+Cy5uQZDxaR9y0cYcNytIhUet/Q/ql3PliJJPvTrwxlrA1Mk0tiMmKV6//KmbXR 4jwg== X-Gm-Message-State: APjAAAW+YUYFp3r82y1zoD+9hatD3v0/77PJjR/1pgb/xMVHQWcHO9R4 6SgaxObn5OqbZehTOKcEyL2cRbGW X-Google-Smtp-Source: APXvYqw5yKrXQGDz2+CaI2ctDLK5h8BafomKf72oujMEQvGcIEi8oYOaCQZyoYuSLflUjktXIhJrtg== X-Received: by 2002:a62:b61a:: with SMTP id j26mr51168641pff.203.1556363884772; Sat, 27 Apr 2019 04:18:04 -0700 (PDT) Received: from localhost.localdomain ([47.90.47.25]) by smtp.gmail.com with ESMTPSA id p7sm36200252pgn.64.2019.04.27.04.18.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 27 Apr 2019 04:18:04 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 Apr 2019 19:17:55 +0800 Message-Id: <1556363876-7100-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1556363876-7100-1-git-send-email-mypopydev@gmail.com> References: <1556363876-7100-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH V1 1/2] lavc/libx264: Use avctx->framerate first for frame rate setting 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao perfer avctx->framerate first than use avctx->time_base when setting the frame rate to encoder. 1/time_base is not the average frame rate if the frame rate is not constant. In this case, we need to setting avctx->framerate and avctx->time_base both, but avctx->framerate not equal to 1/(avctx->time_base). Signed-off-by: Jun Zhao --- libavcodec/libx264.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index a3493f3..45d07a9 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -821,8 +821,13 @@ FF_ENABLE_DEPRECATION_WARNINGS x4->params.vui.i_sar_height = sh; x4->params.i_timebase_den = avctx->time_base.den; x4->params.i_timebase_num = avctx->time_base.num; - x4->params.i_fps_num = avctx->time_base.den; - x4->params.i_fps_den = avctx->time_base.num * avctx->ticks_per_frame; + if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { + x4->params.i_fps_num = avctx->framerate.num; + x4->params.i_fps_den = avctx->framerate.den; + } else { + x4->params.i_fps_num = avctx->time_base.den; + x4->params.i_fps_den = avctx->time_base.num * avctx->ticks_per_frame; + } x4->params.analyse.b_psnr = avctx->flags & AV_CODEC_FLAG_PSNR;