aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch b/target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch
new file mode 100644
index 0000000000..e4a5eb832c
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0400-staging-bcm2835-codec-Ensure-OUTPUT-timestamps-are-a.patch
@@ -0,0 +1,53 @@
+From 35e371f270fb14320de11b93cbc0f1e1024ff58c Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Wed, 4 Nov 2020 18:31:02 +0000
+Subject: [PATCH] staging/bcm2835-codec: Ensure OUTPUT timestamps are
+ always forwarded
+
+The firmware by default tries to ensure that decoded frame
+timestamps always increment. This is counter to the V4L2 API
+which wants exactly the OUTPUT queue timestamps passed to the
+CAPTURE queue buffers.
+
+Disable the firmware option.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ .../bcm2835-codec/bcm2835-v4l2-codec.c | 13 +++++++++++++
+ .../vc04_services/vchiq-mmal/mmal-parameters.h | 3 +++
+ 2 files changed, 16 insertions(+)
+
+--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
++++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
+@@ -2001,6 +2001,19 @@ static int bcm2835_codec_create_componen
+ MMAL_PARAMETER_ZERO_COPY, &enable,
+ sizeof(enable));
+
++ if (dev->role == DECODE) {
++ /*
++ * Disable firmware option that ensures decoded timestamps
++ * always increase.
++ */
++ enable = 0;
++ vchiq_mmal_port_parameter_set(dev->instance,
++ &ctx->component->output[0],
++ MMAL_PARAMETER_VIDEO_VALIDATE_TIMESTAMPS,
++ &enable,
++ sizeof(enable));
++ }
++
+ setup_mmal_port_format(ctx, &ctx->q_data[V4L2_M2M_SRC],
+ &ctx->component->input[0]);
+
+--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
++++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+@@ -674,6 +674,9 @@ enum mmal_parameter_video_type {
+
+ /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
+ MMAL_PARAMETER_VIDEO_ENCODE_HEADERS_WITH_FRAME,
++
++ /**< Take a @ref MMAL_PARAMETER_BOOLEAN_T */
++ MMAL_PARAMETER_VIDEO_VALIDATE_TIMESTAMPS,
+ };
+
+ /** Valid mirror modes */