Commit 3f715c64 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab
Browse files

media: cedrus: Cleanup control initialization



In order to introduce other controls, the control initialization
needs to support an initial struct v4l2_ctrl_control.

While here, let's cleanup the control initialization,
removing unneeded fields.

Signed-off-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent c3adb857
Loading
Loading
Loading
Loading
+24 −21
Original line number Diff line number Diff line
@@ -29,44 +29,51 @@

static const struct cedrus_control cedrus_controls[] = {
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS,
		.elem_size	= sizeof(struct v4l2_ctrl_mpeg2_slice_params),
		},
		.codec		= CEDRUS_CODEC_MPEG2,
		.required	= true,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION,
		.elem_size	= sizeof(struct v4l2_ctrl_mpeg2_quantization),
		},
		.codec		= CEDRUS_CODEC_MPEG2,
		.required	= false,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
		.elem_size	= sizeof(struct v4l2_ctrl_h264_decode_params),
		},
		.codec		= CEDRUS_CODEC_H264,
		.required	= true,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS,
		.elem_size	= sizeof(struct v4l2_ctrl_h264_slice_params),
		},
		.codec		= CEDRUS_CODEC_H264,
		.required	= true,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_H264_SPS,
		.elem_size	= sizeof(struct v4l2_ctrl_h264_sps),
		},
		.codec		= CEDRUS_CODEC_H264,
		.required	= true,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_H264_PPS,
		.elem_size	= sizeof(struct v4l2_ctrl_h264_pps),
		},
		.codec		= CEDRUS_CODEC_H264,
		.required	= true,
	},
	{
		.cfg = {
			.id	= V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
		.elem_size	= sizeof(struct v4l2_ctrl_h264_scaling_matrix),
		},
		.codec		= CEDRUS_CODEC_H264,
		.required	= true,
	},
@@ -106,12 +113,8 @@ static int cedrus_init_ctrls(struct cedrus_dev *dev, struct cedrus_ctx *ctx)
		return -ENOMEM;

	for (i = 0; i < CEDRUS_CONTROLS_COUNT; i++) {
		struct v4l2_ctrl_config cfg = {};

		cfg.elem_size = cedrus_controls[i].elem_size;
		cfg.id = cedrus_controls[i].id;

		ctrl = v4l2_ctrl_new_custom(hdl, &cfg, NULL);
		ctrl = v4l2_ctrl_new_custom(hdl, &cedrus_controls[i].cfg,
					    NULL);
		if (hdl->error) {
			v4l2_err(&dev->v4l2_dev,
				 "Failed to create new custom control\n");
@@ -178,7 +181,7 @@ static int cedrus_request_validate(struct media_request *req)
			continue;

		ctrl_test = v4l2_ctrl_request_hdl_ctrl_find(hdl,
							    cedrus_controls[i].id);
							    cedrus_controls[i].cfg.id);
		if (!ctrl_test) {
			v4l2_info(&ctx->dev->v4l2_dev,
				  "Missing required codec control\n");
+1 −2
Original line number Diff line number Diff line
@@ -49,8 +49,7 @@ enum cedrus_h264_pic_type {
};

struct cedrus_control {
	u32			id;
	u32			elem_size;
	struct v4l2_ctrl_config cfg;
	enum cedrus_codec	codec;
	unsigned char		required:1;
};