aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAman Gupta <aman@tmm1.net>2019-08-29 16:00:50 -0700
committerAman Gupta <aman@tmm1.net>2019-09-02 13:53:08 -0700
commit0f8e2a0b8644fee69cfebe55bbb38e69289beba6 (patch)
treee82eedfb4dd60f27c4bafc99a65c97fe89d2d9ad
parentb4e910370992d4e40af1f62ec0a6a59867dac2ed (diff)
downloadffmpeg-0f8e2a0b8644fee69cfebe55bbb38e69289beba6.tar.gz
avcodec/omx: fix xFramerate calculation
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 <aman@tmm1.net> (cherry picked from commit b022d9ba288ad3de321e0835b0aedfd91c2c3064)
-rw-r--r--libavcodec/omx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/omx.c b/libavcodec/omx.c
index 20869c0f44..a555c3c07d 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 = (1LL << 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 = (1LL << 16) * avctx->time_base.den / avctx->time_base.num;
err = OMX_SetParameter(s->handle, OMX_IndexParamPortDefinition, &in_port_params);
CHECK(err);