aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch b/target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch
new file mode 100644
index 0000000000..aaf302f72a
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0585-staging-bcm2835-camera-Add-support-for-H264-levels-4.patch
@@ -0,0 +1,58 @@
+From 8c85b83a8dc6c62fa20b87f2fe51b80a3bafc169 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.com>
+Date: Thu, 25 Mar 2021 18:34:50 +0000
+Subject: [PATCH] staging/bcm2835-camera: Add support for H264 levels
+ 4.1 and 4.2
+
+Whilst the hardware can't achieve the limits of level 4.2 under
+all situations, it can exceed level 4.0.
+
+Allow selection of levels 4.1 and 4.2.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
+---
+ .../vc04_services/bcm2835-camera/controls.c | 19 +++++++++++++++++--
+ 1 file changed, 17 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
++++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
+@@ -709,6 +709,8 @@ static int ctrl_set_video_encode_profile
+ case V4L2_MPEG_VIDEO_H264_LEVEL_3_1:
+ case V4L2_MPEG_VIDEO_H264_LEVEL_3_2:
+ case V4L2_MPEG_VIDEO_H264_LEVEL_4_0:
++ case V4L2_MPEG_VIDEO_H264_LEVEL_4_1:
++ case V4L2_MPEG_VIDEO_H264_LEVEL_4_2:
+ dev->capture.enc_level = ctrl->val;
+ break;
+ default:
+@@ -774,6 +776,17 @@ static int ctrl_set_video_encode_profile
+ case V4L2_MPEG_VIDEO_H264_LEVEL_4_0:
+ param.level = MMAL_VIDEO_LEVEL_H264_4;
+ break;
++ /*
++ * Note that the hardware spec is level 4.0. Achieving levels
++ * above that depend on exactly the resolution and frame rate
++ * being requested.
++ */
++ case V4L2_MPEG_VIDEO_H264_LEVEL_4_1:
++ param.level = MMAL_VIDEO_LEVEL_H264_41;
++ break;
++ case V4L2_MPEG_VIDEO_H264_LEVEL_4_2:
++ param.level = MMAL_VIDEO_LEVEL_H264_42;
++ break;
+ default:
+ /* Should never get here */
+ break;
+@@ -1224,8 +1237,10 @@ static const struct bm2835_mmal_v4l2_ctr
+ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
+ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
+ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
+- BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0)),
+- .max = V4L2_MPEG_VIDEO_H264_LEVEL_4_0,
++ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
++ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
++ BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2)),
++ .max = V4L2_MPEG_VIDEO_H264_LEVEL_4_2,
+ .def = V4L2_MPEG_VIDEO_H264_LEVEL_4_0,
+ .step = 1,
+ .imenu = NULL,