From patchwork Fri Aug 30 00:30:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 14806 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 409AB448DF4 for ; Fri, 30 Aug 2019 03:36:21 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F61E687F32; Fri, 30 Aug 2019 03:36:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D03A0687F2E for ; Fri, 30 Aug 2019 03:36:13 +0300 (EEST) Received: by mail-pl1-f194.google.com with SMTP id f19so2443564plr.3 for ; Thu, 29 Aug 2019 17:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=swaBuZ3FghKlajzXTT64gbVyFWonyiG+JKw+Caxi3J8=; b=HNv4Wqwx29D0wAwdJ7S8dcT9t3b73o8sRBF0nJUjVJtiJVjvNCRQcBJh/q8nGaboQS dMcBQj6wKo5zRyxdC16pbEcYz+5ccirJpumY6AhJKD/HdPA1PuMLNWU7jJEKWuz/S1Yx TYBy31OMRSbqHLxUt+n5YZAfMML6J9EqO2NGhHEradZ4mkzgincVFv2+3OLMUiqQqzTU l+N3dHRzseF1HTtmrhv9hPQt+NCc8SxtO89DhwP8kzrI3+k4scdejRi02FhCKEnH5puS 5HmN3ZJKBc3xOjfHfkpv/4tw7SBGmVhGoxkviJ7a4OfTWal4VNguOqo4jodWtxGDfqeR q77w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=swaBuZ3FghKlajzXTT64gbVyFWonyiG+JKw+Caxi3J8=; b=H132mtHO/lyHtyBIHHBKlAWZIGnHe4oky1zv+gCWql4I0Pw23gQj0YPJOYbH9yDpEk 8My13Bpw+lDSW4AoNeO3RgipmCFdLCfYAiEweTZ22XfkXHYIZvJoMwFDS2nyAze6+lCp HhvF8Q3BwVGIllK++ID3due4Yd8zgMNbaJLI5inDJgvdpfP84SQqIDRBvtaJYELPezwg F2sHJjHqyrbQgad09jieHVQM6SilkwNvkANXULKCpvv6NEV5a66pbIvIWsLPL3zIHPbb XQhDqHQhI/b+4mPbzDAtQYOypnS/9Ev71HNb/KFHyVpXpQxSV0jH0xea711skHrzkU0z +PrA== X-Gm-Message-State: APjAAAWQuQmyogZwtgxjCIBhRUlxIZXSpOxVpis+a+UmEpzv0kNzkjjT zBlYGq61DPtl0Oc2HWsQY128kyOoHEs= X-Google-Smtp-Source: APXvYqwpxOnoOigVWcuBvaWzZgULt5lrPj3s8ejJrPXo9hwP2f6bOeYz3l6w+vuai1iJZlA3zC1F4A== X-Received: by 2002:a17:902:6a84:: with SMTP id n4mr12952789plk.109.1567125043924; Thu, 29 Aug 2019 17:30:43 -0700 (PDT) Received: from localhost.localdomain (ip184-189-221-177.sb.sd.cox.net. [184.189.221.177]) by smtp.gmail.com with ESMTPSA id b3sm5094471pfp.65.2019.08.29.17.30.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 29 Aug 2019 17:30:43 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Aug 2019 17:30:25 -0700 Message-Id: <20190830003025.70136-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/omx: fix xFramerate calculation 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: martin@martin.st, Aman Gupta Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Integer overflow in the Q16 framerate calculation was sending invalid values to the OMX encoder. On the RPI4, this manifested as bitrate controls being ignored on video streams with 60000/1001 framerates. Video streams with 30000/1001 framerates were not affected. Signed-off-by: Aman Gupta --- libavcodec/omx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/omx.c b/libavcodec/omx.c index 837f5df666..c745860242 100644 --- a/libavcodec/omx.c +++ b/libavcodec/omx.c @@ -473,9 +473,9 @@ static av_cold int omx_component_init(AVCodecContext *avctx, const char *role) in_port_params.format.video.nFrameWidth = avctx->width; in_port_params.format.video.nFrameHeight = avctx->height; if (avctx->framerate.den > 0 && avctx->framerate.num > 0) - in_port_params.format.video.xFramerate = (1 << 16) * avctx->framerate.num / avctx->framerate.den; + in_port_params.format.video.xFramerate = (int64_t)(1 << 16) * avctx->framerate.num / avctx->framerate.den; else - in_port_params.format.video.xFramerate = (1 << 16) * avctx->time_base.den / avctx->time_base.num; + in_port_params.format.video.xFramerate = (int64_t)(1 << 16) * avctx->time_base.den / avctx->time_base.num; err = OMX_SetParameter(s->handle, OMX_IndexParamPortDefinition, &in_port_params); CHECK(err);