From patchwork Sun Jul 26 11:41:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 21264 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 E599044A7A8 for ; Sun, 26 Jul 2020 14:46:33 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BFE4E68B038; Sun, 26 Jul 2020 14:46:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4962B689F05 for ; Sun, 26 Jul 2020 14:46:27 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id a14so12177524wra.5 for ; Sun, 26 Jul 2020 04:46:27 -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=Hb8XWlq29uXWAtJbqiPxxWMcMDr9fKcQmwksvhkOcqxCV2+jiXo7bXRZCPnsTjMRtg kmUM2F5aQcCEX1PzXZ4g4RYQvyt/adwAThpRIHkWVRSF1wvFhPzHNny0912XCrNfHvZk /d+KAPicwmzncEsvg9XtpCReXKGBa/vF3s3J5eB9FioethqBwIRnW5dU/u0JiEsOgXAz GOCpb7rZ8/S0ug9wlpddSGYLukwBXU+PQnxrhtYwygYpTrAvgxeyxFDmWZzaCm05P6Yp cRCS5VjDBqmWNuhjvjSzGR/ULOIoJgQ3rpq9U+BRJzTnoxazigR6OXniH6Y7rXoC5J/2 PEuQ== 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=YJwf+0VMVkTAsw9X97RSzQoz0I882MOjBKWPF8iG/BgLU58zZHPMFnDW5FH/TP2xsm KWDMX7xegrjZolxtxeM6HpAQXFqjMpLsNFDQbh5uLZ8LRFEPNSD9MzfTBEN3h8KJJgTB Q0KX0WSIQE6/u3I8N4Ih2ZNVSAH1ZAj8eIr9Vp5/msflOs8oy329N9xev95FCyFELdNe 3R8Hh1UtcfWFcp2IgvHCAOO2p1N1BrD2jEt+k2IpqPJu6t9+4QIuMytPjUzgYdnn55Z8 Nk4yZ6SsifKi/vdLn6INVs4BuIxg/mXUePwGHBAb/GUfzsU6iqEHEseK0msnbyT3STfp juuw== X-Gm-Message-State: AOAM532qp9Ua2YmyDs46xXcD9baBkK5eLh+BqDQ6o32QCPNL2Fj08Mk2 3MTcdk3yNjVh2wLkgeSGwdW/ZvKh X-Google-Smtp-Source: ABdhPJzRNTADY7XftssFKcSECMWN8MbpFXFkyne97PCzLX4gYZ3lfbaJude4Cprc5n/x1jI/z3caWQ== X-Received: by 2002:a5d:480b:: with SMTP id l11mr15339366wrq.85.1595763679602; Sun, 26 Jul 2020 04:41:19 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id h199sm14068068wme.42.2020.07.26.04.41.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jul 2020 04:41:19 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jul 2020 19:41:12 +0800 Message-Id: <1595763675-1857-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1595763675-1857-1-git-send-email-mypopydev@gmail.com> References: <1595763675-1857-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;