You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/bcm27xx/patches-5.4/950-0745-staging-vc04_servi...

33 lines
1.3 KiB
Diff

From 39956d31d19658af7a0759e05366d4bc1c04a50a Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Fri, 15 May 2020 13:47:13 +0100
Subject: [PATCH] staging:vc04_services: bcm2835-codec: Avoid
fragmenting buffers
The firmware by default is quite happy to fragment encoded
frames as the original MMAL and IL APIs support this.
V4L2 doesn't, so we need to enable the firmware option to avoid this.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
.../vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
+++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
@@ -1972,6 +1972,14 @@ static int bcm2835_codec_create_componen
&ctx->component->control,
MMAL_PARAMETER_VIDEO_ENCODE_HEADERS_WITH_FRAME,
&param, sizeof(param));
+ /*
+ * Avoid fragmenting the buffers over multiple frames (unless
+ * the frame is bigger than the whole buffer)
+ */
+ vchiq_mmal_port_parameter_set(ctx->dev->instance,
+ &ctx->component->control,
+ MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
+ &param, sizeof(param));
} else {
if (ctx->q_data[V4L2_M2M_DST].sizeimage <
ctx->component->output[0].minimum_buffer.size)