brcm2708: organize kernel patches
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0326-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0326-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch b/target/linux/brcm2708/patches-4.19/950-0326-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch
new file mode 100644 (file)
index 0000000..5e5f1a7
--- /dev/null
@@ -0,0 +1,44 @@
+From 7f9fd2338e3a9d7b46b6904bbd7f97851e9b3f52 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+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 <dave.stevenson@raspberrypi.org>
+---
+ .../vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- 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_componen
+               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_componen
+               /* 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,
++                                      &param, sizeof(param));
++
+       } else {
+               if (ctx->q_data[V4L2_M2M_DST].sizeimage <
+                       ctx->component->output[0].minimum_buffer.size)