From 8c2356e38c9a51356a9f0eacf08f4de6521ad0bd Mon Sep 17 00:00:00 2001 From: Dave Stevenson 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 --- .../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,