diff options
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.patch | 58 |
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, |