From 50af417692f6ee6010b153e7ddab2a2e9ab3e9cc Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 18 Feb 2019 15:56:42 +0000 Subject: [PATCH] staging: bcm2835_codec: Include timing info in SPS headers Inserting timing information into the VUI block of the SPS is optional with the VPU encoder. GStreamer appears to require them when using V4L2 M2M, therefore set the option to enable them from the encoder. Signed-off-by: Dave Stevenson --- .../staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c index 67d42bf..eb5c07b 100644 --- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c @@ -1785,6 +1785,8 @@ static int bcm2835_codec_create_component(struct bcm2835_codec_ctx *ctx) goto destroy_component; if (dev->role == ENCODE) { + u32 param = 1; + if (ctx->q_data[V4L2_M2M_SRC].sizeimage < ctx->component->output[0].minimum_buffer.size) v4l2_err(&dev->v4l2_dev, "buffer size mismatch sizeimage %u < min size %u\n", @@ -1793,6 +1795,16 @@ static int bcm2835_codec_create_component(struct bcm2835_codec_ctx *ctx) /* Now we have a component we can set all the ctrls */ bcm2835_codec_set_ctrls(ctx); + + /* Enable SPS Timing header so framerate information is encoded + * in the H264 header. + */ + vchiq_mmal_port_parameter_set( + ctx->dev->instance, + &ctx->component->output[0], + MMAL_PARAMETER_VIDEO_ENCODE_SPS_TIMING, + ¶m, sizeof(param)); + } else { if (ctx->q_data[V4L2_M2M_DST].sizeimage < ctx->component->output[0].minimum_buffer.size) -- 2.7.4