From patchwork Sun Jul 26 12:26:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 21267 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 0F2FE44A760 for ; Sun, 26 Jul 2020 15:26:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EB60968B5E3; Sun, 26 Jul 2020 15:26:40 +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 1C8B068B474 for ; Sun, 26 Jul 2020 15:26:33 +0300 (EEST) Received: by mail-wr1-f68.google.com with SMTP id z18so8648343wrm.12 for ; Sun, 26 Jul 2020 05:26:33 -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=e8pnUugmEkMvwdUOElWnDr/6i7fCEjn5zglFzQVUPfE=; b=dhf2TCCbqIG3Nj2hgT1zxx61lgkE90qDdiCCqsPGpSZKmFoVi8Qgzq7ua3JAjBjWqI rYMk9m9RNoRohnBvqZo8D41ASo5EeqBoEyQaUte3zw8Bi80FayRlsYITlxJs7NdQCm3g zDp713x33Bknjc1yEdVI5XkhQoH2KYCN4h1UwZUISuVVxcb6xvnqHK1hhoM5xexX4CS9 vEe+v67aUsbHe9CBQW9rah1G3OSVpRfLvI/SyhYh8zIobPdR8Vp6uuu5/Oeaj1uFhrSM 8jJxL3fuEc+4A6WCEw+mjK1qOIrhxf66iAd/2I3VdvEms/OzeXxHVAAS0ID2UaEhA7o1 bxwA== 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=e8pnUugmEkMvwdUOElWnDr/6i7fCEjn5zglFzQVUPfE=; b=rvgX8ZDXyW+cl+41f41AH/XZucJd0i/jj+owv66moW5NYRvHOJYZMV5cxfhtFTEwJt SL0Mm6ixOGaj2igiro7HFfHcNHwCtx34by4crWhtz4zbLD/WRA0oJyowBPLR2sOO/g9G Uu9gYRBErjR1BOh7tthsvAiGhjmgFQIXslHS+imM4z0YPNYD+6XLQJO2OnkbTckrZ2yt IWZfxMmLGpGlAKI0rWtuovRKp1eS6TOyFT2EwBQwy3KzKKDJKnxGZc+TUVWWZcPZ/bG1 TdxJYzWez4LH4mg5Lic9PrxG+gh09B3/3wHtQFhmNOlb3Jzet8qBAUEzetdGzUXhujvi 5znQ== X-Gm-Message-State: AOAM531viuEHc8ypPZCkbqzD44gdzBd5RRW0ok650tyBLUNcyR+yEsMj KO8f5qQ4OB0ibTbYzEfVeDl3sGEd X-Google-Smtp-Source: ABdhPJwnjpMQRf2gJgH17b9o651ubBAZEMYB8behMjo/wJwPGY+7ra3nkqDWBh6A1uJsFgl8G/0NQw== X-Received: by 2002:a5d:4c8f:: with SMTP id z15mr7513009wrs.88.1595766392592; Sun, 26 Jul 2020 05:26:32 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id j6sm8506576wro.25.2020.07.26.05.26.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jul 2020 05:26:31 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jul 2020 20:26:04 +0800 Message-Id: <1595766367-8861-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1595766367-8861-1-git-send-email-mypopydev@gmail.com> References: <1595766367-8861-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/5] lavc/libopenh264enc: use framerate if available 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 Respecting the framerate in the libopenh264enc codec context. Both the libx264 and libx264 encoders already contain similar logic to first check the framerate before falling back to the timebase. Signed-off-by: Jun Zhao --- libavcodec/libopenh264enc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index f63aa52..cf48566 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -156,7 +156,16 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) (*s->encoder)->GetDefaultParams(s->encoder, ¶m); - param.fMaxFrameRate = 1/av_q2d(avctx->time_base); + if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { + param.fMaxFrameRate = av_q2d(avctx->framerate); + } else { + if (avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) { + av_log(avctx, AV_LOG_ERROR, + "Could not set framerate for libopenh264enc: integer overflow\n"); + return AVERROR(EINVAL); + } + param.fMaxFrameRate = 1.0 / av_q2d(avctx->time_base) / FFMAX(avctx->ticks_per_frame, 1); + } param.iPicWidth = avctx->width; param.iPicHeight = avctx->height; param.iTargetBitrate = avctx->bit_rate > 0 ? avctx->bit_rate : TARGET_BITRATE_DEFAULT;