65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
From 8c2356e38c9a51356a9f0eacf08f4de6521ad0bd Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Sun, 13 Dec 2020 16:45:58 +0000
|
|
Subject: [PATCH] staging/vc04_services/codec: Add support for CID
|
|
MPEG_HEADER_MODE
|
|
|
|
Control V4L2_CID_MPEG_VIDEO_HEADER_MODE controls whether the encoder
|
|
is meant to emit the header bytes as a separate packet or with the
|
|
first encoded frame.
|
|
Add support for it.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
.../bcm2835-codec/bcm2835-v4l2-codec.c | 18 +++++++++++++++++-
|
|
1 file changed, 17 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
|
|
@@ -1692,6 +1692,17 @@ static int bcm2835_codec_s_ctrl(struct v
|
|
sizeof(ctrl->val));
|
|
break;
|
|
|
|
+ case V4L2_CID_MPEG_VIDEO_HEADER_MODE:
|
|
+ if (!ctx->component)
|
|
+ break;
|
|
+
|
|
+ ret = vchiq_mmal_port_parameter_set(ctx->dev->instance,
|
|
+ &ctx->component->output[0],
|
|
+ MMAL_PARAMETER_VIDEO_ENCODE_HEADERS_WITH_FRAME,
|
|
+ &ctrl->val,
|
|
+ sizeof(ctrl->val));
|
|
+ break;
|
|
+
|
|
case V4L2_CID_MPEG_VIDEO_H264_I_PERIOD:
|
|
if (!ctx->component)
|
|
break;
|
|
@@ -1963,6 +1974,7 @@ static int bcm2835_codec_set_ctrls(struc
|
|
const u32 control_ids[] = {
|
|
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
|
|
V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER,
|
|
+ V4L2_CID_MPEG_VIDEO_HEADER_MODE,
|
|
V4L2_CID_MPEG_VIDEO_H264_I_PERIOD,
|
|
V4L2_CID_MPEG_VIDEO_H264_LEVEL,
|
|
V4L2_CID_MPEG_VIDEO_H264_PROFILE,
|
|
@@ -2515,7 +2527,7 @@ static int bcm2835_codec_open(struct fil
|
|
hdl = &ctx->hdl;
|
|
if (dev->role == ENCODE) {
|
|
/* Encode controls */
|
|
- v4l2_ctrl_handler_init(hdl, 7);
|
|
+ v4l2_ctrl_handler_init(hdl, 9);
|
|
|
|
v4l2_ctrl_new_std_menu(hdl, &bcm2835_codec_ctrl_ops,
|
|
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
|
|
@@ -2525,6 +2537,10 @@ static int bcm2835_codec_open(struct fil
|
|
V4L2_CID_MPEG_VIDEO_BITRATE,
|
|
25 * 1000, 25 * 1000 * 1000,
|
|
25 * 1000, 10 * 1000 * 1000);
|
|
+ v4l2_ctrl_new_std_menu(hdl, &bcm2835_codec_ctrl_ops,
|
|
+ V4L2_CID_MPEG_VIDEO_HEADER_MODE,
|
|
+ V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
|
|
+ 0, V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME);
|
|
v4l2_ctrl_new_std(hdl, &bcm2835_codec_ctrl_ops,
|
|
V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER,
|
|
0, 1,
|