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: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
Родитель
c3adb85745
Коммит
3f715c64be
|
@ -29,44 +29,51 @@
|
||||||
|
|
||||||
static const struct cedrus_control cedrus_controls[] = {
|
static const struct cedrus_control cedrus_controls[] = {
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_mpeg2_slice_params),
|
.id = V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_MPEG2,
|
.codec = CEDRUS_CODEC_MPEG2,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_mpeg2_quantization),
|
.id = V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_MPEG2,
|
.codec = CEDRUS_CODEC_MPEG2,
|
||||||
.required = false,
|
.required = false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_h264_decode_params),
|
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_H264,
|
.codec = CEDRUS_CODEC_H264,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_h264_slice_params),
|
.id = V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_H264,
|
.codec = CEDRUS_CODEC_H264,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_H264_SPS,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_h264_sps),
|
.id = V4L2_CID_MPEG_VIDEO_H264_SPS,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_H264,
|
.codec = CEDRUS_CODEC_H264,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_H264_PPS,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_h264_pps),
|
.id = V4L2_CID_MPEG_VIDEO_H264_PPS,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_H264,
|
.codec = CEDRUS_CODEC_H264,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
|
.cfg = {
|
||||||
.elem_size = sizeof(struct v4l2_ctrl_h264_scaling_matrix),
|
.id = V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
|
||||||
|
},
|
||||||
.codec = CEDRUS_CODEC_H264,
|
.codec = CEDRUS_CODEC_H264,
|
||||||
.required = true,
|
.required = true,
|
||||||
},
|
},
|
||||||
|
@ -106,12 +113,8 @@ static int cedrus_init_ctrls(struct cedrus_dev *dev, struct cedrus_ctx *ctx)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
for (i = 0; i < CEDRUS_CONTROLS_COUNT; i++) {
|
for (i = 0; i < CEDRUS_CONTROLS_COUNT; i++) {
|
||||||
struct v4l2_ctrl_config cfg = {};
|
ctrl = v4l2_ctrl_new_custom(hdl, &cedrus_controls[i].cfg,
|
||||||
|
NULL);
|
||||||
cfg.elem_size = cedrus_controls[i].elem_size;
|
|
||||||
cfg.id = cedrus_controls[i].id;
|
|
||||||
|
|
||||||
ctrl = v4l2_ctrl_new_custom(hdl, &cfg, NULL);
|
|
||||||
if (hdl->error) {
|
if (hdl->error) {
|
||||||
v4l2_err(&dev->v4l2_dev,
|
v4l2_err(&dev->v4l2_dev,
|
||||||
"Failed to create new custom control\n");
|
"Failed to create new custom control\n");
|
||||||
|
@ -178,7 +181,7 @@ static int cedrus_request_validate(struct media_request *req)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ctrl_test = v4l2_ctrl_request_hdl_ctrl_find(hdl,
|
ctrl_test = v4l2_ctrl_request_hdl_ctrl_find(hdl,
|
||||||
cedrus_controls[i].id);
|
cedrus_controls[i].cfg.id);
|
||||||
if (!ctrl_test) {
|
if (!ctrl_test) {
|
||||||
v4l2_info(&ctx->dev->v4l2_dev,
|
v4l2_info(&ctx->dev->v4l2_dev,
|
||||||
"Missing required codec control\n");
|
"Missing required codec control\n");
|
||||||
|
|
|
@ -49,8 +49,7 @@ enum cedrus_h264_pic_type {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cedrus_control {
|
struct cedrus_control {
|
||||||
u32 id;
|
struct v4l2_ctrl_config cfg;
|
||||||
u32 elem_size;
|
|
||||||
enum cedrus_codec codec;
|
enum cedrus_codec codec;
|
||||||
unsigned char required:1;
|
unsigned char required:1;
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче