summaryrefslogtreecommitdiffstats
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:46:11 -0700
commitb022d9ba288ad3de321e0835b0aedfd91c2c3064 (patch)
treedaf6532bcc8c5db9a1f648144a7d60952025c4c3
parentf4eb7d84a7c219eac130750417e4bc2cbbff7b3f (diff)
downloadffmpeg-streaming-b022d9ba288ad3de321e0835b0aedfd91c2c3064.zip
ffmpeg-streaming-b022d9ba288ad3de321e0835b0aedfd91c2c3064.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>
-rw-r--r--libavcodec/omx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/omx.c b/libavcodec/omx.c
index 837f5df..0a6a308 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);
OpenPOWER on IntegriCloud