From 39956d31d19658af7a0759e05366d4bc1c04a50a Mon Sep 17 00:00:00 2001 From: Dave Stevenson 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 --- .../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, ¶m, 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, + ¶m, sizeof(param)); } else { if (ctx->q_data[V4L2_M2M_DST].sizeimage < ctx->component->output[0].minimum_buffer.size)