X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0702-staging-bcm2835-codec-add-support-for-V4L2_CID_MPEG_.patch;fp=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0702-staging-bcm2835-codec-add-support-for-V4L2_CID_MPEG_.patch;h=aabb005703185a39273aa6fa561a2b3057d1a015;hb=67dcc43f3a22dc3a7ac07a7065971b426feeb043;hp=0000000000000000000000000000000000000000;hpb=47a93a810f78adce5a130d287f82b28e9b54313c;p=openwrt%2Fstaging%2Fchunkeey.git diff --git a/target/linux/brcm2708/patches-4.19/950-0702-staging-bcm2835-codec-add-support-for-V4L2_CID_MPEG_.patch b/target/linux/brcm2708/patches-4.19/950-0702-staging-bcm2835-codec-add-support-for-V4L2_CID_MPEG_.patch new file mode 100644 index 0000000000..aabb005703 --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0702-staging-bcm2835-codec-add-support-for-V4L2_CID_MPEG_.patch @@ -0,0 +1,55 @@ +From ae6dba510ac29ef7b0e6c838fb1bcc8b9eb474b7 Mon Sep 17 00:00:00 2001 +From: Aman Gupta +Date: Thu, 22 Aug 2019 22:31:37 +0000 +Subject: [PATCH] staging: bcm2835-codec: add support for + V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME + +fixes #3171 + +Signed-off-by: Aman Gupta +--- + .../bcm2835-codec/bcm2835-v4l2-codec.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c ++++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +@@ -1587,6 +1587,20 @@ static int bcm2835_codec_s_ctrl(struct v + ret = bcm2835_codec_set_level_profile(ctx, ctrl); + break; + ++ case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME: { ++ u32 mmal_bool = 1; ++ ++ if (!ctx->component) ++ break; ++ ++ ret = vchiq_mmal_port_parameter_set(ctx->dev->instance, ++ &ctx->component->output[0], ++ MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, ++ &mmal_bool, ++ sizeof(mmal_bool)); ++ break; ++ } ++ + default: + v4l2_err(&ctx->dev->v4l2_dev, "Invalid control\n"); + return -EINVAL; +@@ -2311,7 +2325,7 @@ static int bcm2835_codec_open(struct fil + hdl = &ctx->hdl; + if (dev->role == ENCODE) { + /* Encode controls */ +- v4l2_ctrl_handler_init(hdl, 6); ++ v4l2_ctrl_handler_init(hdl, 7); + + v4l2_ctrl_new_std_menu(hdl, &bcm2835_codec_ctrl_ops, + V4L2_CID_MPEG_VIDEO_BITRATE_MODE, +@@ -2355,6 +2369,9 @@ static int bcm2835_codec_open(struct fil + BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | + BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH)), + V4L2_MPEG_VIDEO_H264_PROFILE_HIGH); ++ v4l2_ctrl_new_std(hdl, &bcm2835_codec_ctrl_ops, ++ V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, ++ 0, 0, 0, 0); + if (hdl->error) { + rc = hdl->error; + goto free_ctrl_handler;