video: driver: v4l2 compliance fixes for test formats
v4l2 compliance fixes for test formats fixes: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK Change-Id: I23c193ab5785bb10d070fa3085678d9669f53a92 Signed-off-by: Darshana Patil <quic_darshana@quicinc.com>
This commit is contained in:
@@ -134,6 +134,8 @@
|
|||||||
*/
|
*/
|
||||||
#define MAX_DPB_LIST_ARRAY_SIZE (16 * 4)
|
#define MAX_DPB_LIST_ARRAY_SIZE (16 * 4)
|
||||||
#define MAX_DPB_LIST_PAYLOAD_SIZE (16 * 4 * 4)
|
#define MAX_DPB_LIST_PAYLOAD_SIZE (16 * 4 * 4)
|
||||||
|
/* Default metadata size */
|
||||||
|
#define MSM_VIDC_METADATA_SIZE ALIGN(16 * 1024, SZ_4K)
|
||||||
|
|
||||||
enum msm_vidc_domain_type {
|
enum msm_vidc_domain_type {
|
||||||
MSM_VIDC_ENCODER = BIT(0),
|
MSM_VIDC_ENCODER = BIT(0),
|
||||||
|
@@ -106,6 +106,12 @@ static int msm_vdec_codec_change(struct msm_vidc_inst *inst, u32 v4l2_codec)
|
|||||||
v4l2_pixelfmt_name(v4l2_codec));
|
v4l2_pixelfmt_name(v4l2_codec));
|
||||||
|
|
||||||
inst->codec = v4l2_codec_to_driver(v4l2_codec, __func__);
|
inst->codec = v4l2_codec_to_driver(v4l2_codec, __func__);
|
||||||
|
if (!inst->codec) {
|
||||||
|
i_vpr_e(inst, "%s: invalid codec %#x\n", __func__, v4l2_codec);
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
inst->fmts[INPUT_PORT].fmt.pix_mp.pixelformat = v4l2_codec;
|
inst->fmts[INPUT_PORT].fmt.pix_mp.pixelformat = v4l2_codec;
|
||||||
rc = msm_vidc_update_debug_str(inst);
|
rc = msm_vidc_update_debug_str(inst);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -125,11 +131,11 @@ static int msm_vdec_codec_change(struct msm_vidc_inst *inst, u32 v4l2_codec)
|
|||||||
|
|
||||||
rc = msm_vidc_update_buffer_count(inst, INPUT_PORT);
|
rc = msm_vidc_update_buffer_count(inst, INPUT_PORT);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto exit;
|
||||||
|
|
||||||
rc = msm_vidc_update_buffer_count(inst, OUTPUT_PORT);
|
rc = msm_vidc_update_buffer_count(inst, OUTPUT_PORT);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto exit;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
return rc;
|
return rc;
|
||||||
@@ -2224,6 +2230,12 @@ int msm_vdec_try_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
|
|||||||
f->fmt.pix_mp.height = inst->fmts[INPUT_PORT].fmt.pix_mp.height;
|
f->fmt.pix_mp.height = inst->fmts[INPUT_PORT].fmt.pix_mp.height;
|
||||||
f->fmt.pix_mp.width = inst->fmts[INPUT_PORT].fmt.pix_mp.width;
|
f->fmt.pix_mp.width = inst->fmts[INPUT_PORT].fmt.pix_mp.width;
|
||||||
}
|
}
|
||||||
|
} else if (f->type == INPUT_META_PLANE) {
|
||||||
|
f->fmt.meta.dataformat = inst->fmts[INPUT_META_PORT].fmt.meta.dataformat;
|
||||||
|
f->fmt.meta.buffersize = inst->fmts[INPUT_META_PORT].fmt.meta.buffersize;
|
||||||
|
} else if (f->type == OUTPUT_META_PLANE) {
|
||||||
|
f->fmt.meta.dataformat = inst->fmts[OUTPUT_META_PORT].fmt.meta.dataformat;
|
||||||
|
f->fmt.meta.buffersize = inst->fmts[OUTPUT_META_PORT].fmt.meta.buffersize;
|
||||||
} else {
|
} else {
|
||||||
i_vpr_e(inst, "%s: invalid type %d\n", __func__, f->type);
|
i_vpr_e(inst, "%s: invalid type %d\n", __func__, f->type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -2338,23 +2350,15 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
|
|||||||
fmt = &inst->fmts[INPUT_META_PORT];
|
fmt = &inst->fmts[INPUT_META_PORT];
|
||||||
fmt->type = INPUT_META_PLANE;
|
fmt->type = INPUT_META_PLANE;
|
||||||
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
if (is_input_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
inst->buffers.input_meta.min_count =
|
||||||
inst->buffers.input_meta.min_count =
|
inst->buffers.input.min_count;
|
||||||
inst->buffers.input.min_count;
|
inst->buffers.input_meta.extra_count =
|
||||||
inst->buffers.input_meta.extra_count =
|
inst->buffers.input.extra_count;
|
||||||
inst->buffers.input.extra_count;
|
inst->buffers.input_meta.actual_count =
|
||||||
inst->buffers.input_meta.actual_count =
|
inst->buffers.input.actual_count;
|
||||||
inst->buffers.input.actual_count;
|
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.input_meta.min_count = 0;
|
|
||||||
inst->buffers.input_meta.extra_count = 0;
|
|
||||||
inst->buffers.input_meta.actual_count = 0;
|
|
||||||
inst->buffers.input_meta.size = 0;
|
|
||||||
}
|
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: type: INPUT_META, size %u min_count %d extra_count %d\n",
|
"%s: type: INPUT_META, size %u min_count %d extra_count %d\n",
|
||||||
__func__, fmt->fmt.meta.buffersize,
|
__func__, fmt->fmt.meta.buffersize,
|
||||||
@@ -2416,23 +2420,15 @@ int msm_vdec_s_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
|
|||||||
fmt = &inst->fmts[OUTPUT_META_PORT];
|
fmt = &inst->fmts[OUTPUT_META_PORT];
|
||||||
fmt->type = OUTPUT_META_PLANE;
|
fmt->type = OUTPUT_META_PLANE;
|
||||||
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
if (is_output_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
inst->buffers.output_meta.min_count =
|
||||||
inst->buffers.output_meta.min_count =
|
inst->buffers.output.min_count;
|
||||||
inst->buffers.output.min_count;
|
inst->buffers.output_meta.extra_count =
|
||||||
inst->buffers.output_meta.extra_count =
|
inst->buffers.output.extra_count;
|
||||||
inst->buffers.output.extra_count;
|
inst->buffers.output_meta.actual_count =
|
||||||
inst->buffers.output_meta.actual_count =
|
inst->buffers.output.actual_count;
|
||||||
inst->buffers.output.actual_count;
|
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.output_meta.min_count = 0;
|
|
||||||
inst->buffers.output_meta.extra_count = 0;
|
|
||||||
inst->buffers.output_meta.actual_count = 0;
|
|
||||||
inst->buffers.output_meta.size = 0;
|
|
||||||
}
|
|
||||||
i_vpr_h(inst,
|
i_vpr_h(inst,
|
||||||
"%s: type: OUTPUT_META, size %u min_count %d extra_count %d\n",
|
"%s: type: OUTPUT_META, size %u min_count %d extra_count %d\n",
|
||||||
__func__, fmt->fmt.meta.buffersize,
|
__func__, fmt->fmt.meta.buffersize,
|
||||||
@@ -2809,7 +2805,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
|
|||||||
f = &inst->fmts[INPUT_META_PORT];
|
f = &inst->fmts[INPUT_META_PORT];
|
||||||
f->type = INPUT_META_PLANE;
|
f->type = INPUT_META_PLANE;
|
||||||
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
f->fmt.meta.buffersize = 0;
|
f->fmt.meta.buffersize = MSM_VIDC_METADATA_SIZE;
|
||||||
inst->buffers.input_meta.min_count = 0;
|
inst->buffers.input_meta.min_count = 0;
|
||||||
inst->buffers.input_meta.extra_count = 0;
|
inst->buffers.input_meta.extra_count = 0;
|
||||||
inst->buffers.input_meta.actual_count = 0;
|
inst->buffers.input_meta.actual_count = 0;
|
||||||
@@ -2847,7 +2843,7 @@ int msm_vdec_inst_init(struct msm_vidc_inst *inst)
|
|||||||
f = &inst->fmts[OUTPUT_META_PORT];
|
f = &inst->fmts[OUTPUT_META_PORT];
|
||||||
f->type = OUTPUT_META_PLANE;
|
f->type = OUTPUT_META_PLANE;
|
||||||
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
f->fmt.meta.buffersize = 0;
|
f->fmt.meta.buffersize = MSM_VIDC_METADATA_SIZE;
|
||||||
inst->buffers.output_meta.min_count = 0;
|
inst->buffers.output_meta.min_count = 0;
|
||||||
inst->buffers.output_meta.extra_count = 0;
|
inst->buffers.output_meta.extra_count = 0;
|
||||||
inst->buffers.output_meta.actual_count = 0;
|
inst->buffers.output_meta.actual_count = 0;
|
||||||
|
@@ -70,6 +70,12 @@ static int msm_venc_codec_change(struct msm_vidc_inst *inst, u32 v4l2_codec)
|
|||||||
v4l2_pixelfmt_name(v4l2_codec));
|
v4l2_pixelfmt_name(v4l2_codec));
|
||||||
|
|
||||||
inst->codec = v4l2_codec_to_driver(v4l2_codec, __func__);
|
inst->codec = v4l2_codec_to_driver(v4l2_codec, __func__);
|
||||||
|
if (!inst->codec) {
|
||||||
|
i_vpr_e(inst, "%s: invalid codec %#x\n", __func__, v4l2_codec);
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat = v4l2_codec;
|
inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat = v4l2_codec;
|
||||||
rc = msm_vidc_update_debug_str(inst);
|
rc = msm_vidc_update_debug_str(inst);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -89,11 +95,11 @@ static int msm_venc_codec_change(struct msm_vidc_inst *inst, u32 v4l2_codec)
|
|||||||
|
|
||||||
rc = msm_vidc_update_buffer_count(inst, INPUT_PORT);
|
rc = msm_vidc_update_buffer_count(inst, INPUT_PORT);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto exit;
|
||||||
|
|
||||||
rc = msm_vidc_update_buffer_count(inst, OUTPUT_PORT);
|
rc = msm_vidc_update_buffer_count(inst, OUTPUT_PORT);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto exit;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
return rc;
|
return rc;
|
||||||
@@ -1071,6 +1077,12 @@ int msm_venc_try_fmt(struct msm_vidc_inst *inst, struct v4l2_format *f)
|
|||||||
f->fmt.pix_mp.pixelformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
|
f->fmt.pix_mp.pixelformat = inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat;
|
||||||
pix_fmt = v4l2_codec_to_driver(f->fmt.pix_mp.pixelformat, __func__);
|
pix_fmt = v4l2_codec_to_driver(f->fmt.pix_mp.pixelformat, __func__);
|
||||||
}
|
}
|
||||||
|
} else if (f->type == INPUT_META_PLANE) {
|
||||||
|
f->fmt.meta.dataformat = inst->fmts[INPUT_META_PORT].fmt.meta.dataformat;
|
||||||
|
f->fmt.meta.buffersize = inst->fmts[INPUT_META_PORT].fmt.meta.buffersize;
|
||||||
|
} else if (f->type == OUTPUT_META_PLANE) {
|
||||||
|
f->fmt.meta.dataformat = inst->fmts[OUTPUT_META_PORT].fmt.meta.dataformat;
|
||||||
|
f->fmt.meta.buffersize = inst->fmts[OUTPUT_META_PORT].fmt.meta.buffersize;
|
||||||
} else {
|
} else {
|
||||||
i_vpr_e(inst, "%s: invalid type %d\n", __func__, f->type);
|
i_vpr_e(inst, "%s: invalid type %d\n", __func__, f->type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -1178,23 +1190,15 @@ static int msm_venc_s_fmt_output_meta(struct msm_vidc_inst *inst, struct v4l2_fo
|
|||||||
fmt = &inst->fmts[OUTPUT_META_PORT];
|
fmt = &inst->fmts[OUTPUT_META_PORT];
|
||||||
fmt->type = OUTPUT_META_PLANE;
|
fmt->type = OUTPUT_META_PLANE;
|
||||||
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
if (is_output_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
inst->buffers.output_meta.min_count =
|
||||||
inst->buffers.output_meta.min_count =
|
inst->buffers.output.min_count;
|
||||||
inst->buffers.output.min_count;
|
inst->buffers.output_meta.extra_count =
|
||||||
inst->buffers.output_meta.extra_count =
|
inst->buffers.output.extra_count;
|
||||||
inst->buffers.output.extra_count;
|
inst->buffers.output_meta.actual_count =
|
||||||
inst->buffers.output_meta.actual_count =
|
inst->buffers.output.actual_count;
|
||||||
inst->buffers.output.actual_count;
|
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.output_meta.min_count = 0;
|
|
||||||
inst->buffers.output_meta.extra_count = 0;
|
|
||||||
inst->buffers.output_meta.actual_count = 0;
|
|
||||||
inst->buffers.output_meta.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(f, fmt, sizeof(struct v4l2_format));
|
memcpy(f, fmt, sizeof(struct v4l2_format));
|
||||||
|
|
||||||
@@ -1332,23 +1336,15 @@ static int msm_venc_s_fmt_input_meta(struct msm_vidc_inst *inst, struct v4l2_for
|
|||||||
fmt = &inst->fmts[INPUT_META_PORT];
|
fmt = &inst->fmts[INPUT_META_PORT];
|
||||||
fmt->type = INPUT_META_PLANE;
|
fmt->type = INPUT_META_PLANE;
|
||||||
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
fmt->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
if (is_input_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
inst->buffers.input_meta.min_count =
|
||||||
inst->buffers.input_meta.min_count =
|
inst->buffers.input.min_count;
|
||||||
inst->buffers.input.min_count;
|
inst->buffers.input_meta.extra_count =
|
||||||
inst->buffers.input_meta.extra_count =
|
inst->buffers.input.extra_count;
|
||||||
inst->buffers.input.extra_count;
|
inst->buffers.input_meta.actual_count =
|
||||||
inst->buffers.input_meta.actual_count =
|
inst->buffers.input.actual_count;
|
||||||
inst->buffers.input.actual_count;
|
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.input_meta.min_count = 0;
|
|
||||||
inst->buffers.input_meta.extra_count = 0;
|
|
||||||
inst->buffers.input_meta.actual_count = 0;
|
|
||||||
inst->buffers.input_meta.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(f, fmt, sizeof(struct v4l2_format));
|
memcpy(f, fmt, sizeof(struct v4l2_format));
|
||||||
|
|
||||||
@@ -1862,7 +1858,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
|
|||||||
f = &inst->fmts[OUTPUT_META_PORT];
|
f = &inst->fmts[OUTPUT_META_PORT];
|
||||||
f->type = OUTPUT_META_PLANE;
|
f->type = OUTPUT_META_PLANE;
|
||||||
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
f->fmt.meta.buffersize = 0;
|
f->fmt.meta.buffersize = MSM_VIDC_METADATA_SIZE;
|
||||||
inst->buffers.output_meta.min_count = 0;
|
inst->buffers.output_meta.min_count = 0;
|
||||||
inst->buffers.output_meta.extra_count = 0;
|
inst->buffers.output_meta.extra_count = 0;
|
||||||
inst->buffers.output_meta.actual_count = 0;
|
inst->buffers.output_meta.actual_count = 0;
|
||||||
@@ -1896,7 +1892,7 @@ int msm_venc_inst_init(struct msm_vidc_inst *inst)
|
|||||||
f = &inst->fmts[INPUT_META_PORT];
|
f = &inst->fmts[INPUT_META_PORT];
|
||||||
f->type = INPUT_META_PLANE;
|
f->type = INPUT_META_PLANE;
|
||||||
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
f->fmt.meta.dataformat = V4L2_META_FMT_VIDC;
|
||||||
f->fmt.meta.buffersize = 0;
|
f->fmt.meta.buffersize = MSM_VIDC_METADATA_SIZE;
|
||||||
inst->buffers.input_meta.min_count = 0;
|
inst->buffers.input_meta.min_count = 0;
|
||||||
inst->buffers.input_meta.extra_count = 0;
|
inst->buffers.input_meta.extra_count = 0;
|
||||||
inst->buffers.input_meta.actual_count = 0;
|
inst->buffers.input_meta.actual_count = 0;
|
||||||
|
@@ -694,13 +694,16 @@ int msm_vidc_enum_framesizes(void *instance, struct v4l2_frmsizeenum *fsize)
|
|||||||
if (fsize->index)
|
if (fsize->index)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* validate pixel format */
|
if (fsize->pixel_format != V4L2_META_FMT_VIDC) {
|
||||||
codec = v4l2_codec_to_driver(fsize->pixel_format, __func__);
|
/* validate pixel format */
|
||||||
if (!codec) {
|
codec = v4l2_codec_to_driver(fsize->pixel_format, __func__);
|
||||||
colorfmt = v4l2_colorformat_to_driver(fsize->pixel_format, __func__);
|
if (!codec) {
|
||||||
if (colorfmt == MSM_VIDC_FMT_NONE) {
|
colorfmt = v4l2_colorformat_to_driver(fsize->pixel_format, __func__);
|
||||||
i_vpr_e(inst, "%s: unsupported pix fmt %#x\n", __func__, fsize->pixel_format);
|
if (colorfmt == MSM_VIDC_FMT_NONE) {
|
||||||
return -EINVAL;
|
i_vpr_e(inst, "%s: unsupported pix fmt %#x\n",
|
||||||
|
__func__, fsize->pixel_format);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -749,11 +752,14 @@ int msm_vidc_enum_frameintervals(void *instance, struct v4l2_frmivalenum *fival)
|
|||||||
if (fival->index)
|
if (fival->index)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* validate pixel format */
|
if (fival->pixel_format != V4L2_META_FMT_VIDC) {
|
||||||
colorfmt = v4l2_colorformat_to_driver(fival->pixel_format, __func__);
|
/* validate pixel format */
|
||||||
if (colorfmt == MSM_VIDC_FMT_NONE) {
|
colorfmt = v4l2_colorformat_to_driver(fival->pixel_format, __func__);
|
||||||
i_vpr_e(inst, "%s: unsupported pix fmt %#x\n", __func__, fival->pixel_format);
|
if (colorfmt == MSM_VIDC_FMT_NONE) {
|
||||||
return -EINVAL;
|
i_vpr_e(inst, "%s: unsupported pix fmt %#x\n",
|
||||||
|
__func__, fival->pixel_format);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* validate resolution */
|
/* validate resolution */
|
||||||
|
@@ -282,12 +282,12 @@ u32 msm_vidc_decoder_output_size(struct msm_vidc_inst *inst)
|
|||||||
|
|
||||||
u32 msm_vidc_decoder_input_meta_size(struct msm_vidc_inst *inst)
|
u32 msm_vidc_decoder_input_meta_size(struct msm_vidc_inst *inst)
|
||||||
{
|
{
|
||||||
return ALIGN(16 * 1024, SZ_4K);
|
return MSM_VIDC_METADATA_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 msm_vidc_decoder_output_meta_size(struct msm_vidc_inst *inst)
|
u32 msm_vidc_decoder_output_meta_size(struct msm_vidc_inst *inst)
|
||||||
{
|
{
|
||||||
return ALIGN(16 * 1024, SZ_4K);
|
return MSM_VIDC_METADATA_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 msm_vidc_encoder_input_size(struct msm_vidc_inst *inst)
|
u32 msm_vidc_encoder_input_size(struct msm_vidc_inst *inst)
|
||||||
@@ -378,7 +378,7 @@ u32 msm_vidc_encoder_input_meta_size(struct msm_vidc_inst *inst)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size = ALIGN(16 * 1024, SZ_4K);
|
size = MSM_VIDC_METADATA_SIZE;
|
||||||
|
|
||||||
if (inst->capabilities->cap[META_ROI_INFO].value) {
|
if (inst->capabilities->cap[META_ROI_INFO].value) {
|
||||||
lcu_size = 16;
|
lcu_size = 16;
|
||||||
@@ -397,5 +397,5 @@ u32 msm_vidc_encoder_input_meta_size(struct msm_vidc_inst *inst)
|
|||||||
|
|
||||||
u32 msm_vidc_encoder_output_meta_size(struct msm_vidc_inst *inst)
|
u32 msm_vidc_encoder_output_meta_size(struct msm_vidc_inst *inst)
|
||||||
{
|
{
|
||||||
return ALIGN(16 * 1024, SZ_4K);
|
return MSM_VIDC_METADATA_SIZE;
|
||||||
}
|
}
|
||||||
|
@@ -541,7 +541,7 @@ enum msm_vidc_codec_type v4l2_codec_to_driver(u32 v4l2_codec, const char *func)
|
|||||||
codec = MSM_VIDC_HEIC;
|
codec = MSM_VIDC_HEIC;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
d_vpr_e("%s: invalid v4l2 codec %#x\n", func, v4l2_codec);
|
d_vpr_h("%s: invalid v4l2 codec %#x\n", func, v4l2_codec);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return codec;
|
return codec;
|
||||||
@@ -5610,42 +5610,26 @@ int msm_vidc_update_meta_port_settings(struct msm_vidc_inst *inst)
|
|||||||
core = inst->core;
|
core = inst->core;
|
||||||
|
|
||||||
fmt = &inst->fmts[INPUT_META_PORT];
|
fmt = &inst->fmts[INPUT_META_PORT];
|
||||||
if (is_input_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_INPUT_META);
|
inst->buffers.input_meta.min_count =
|
||||||
inst->buffers.input_meta.min_count =
|
inst->buffers.input.min_count;
|
||||||
inst->buffers.input.min_count;
|
inst->buffers.input_meta.extra_count =
|
||||||
inst->buffers.input_meta.extra_count =
|
inst->buffers.input.extra_count;
|
||||||
inst->buffers.input.extra_count;
|
inst->buffers.input_meta.actual_count =
|
||||||
inst->buffers.input_meta.actual_count =
|
inst->buffers.input.actual_count;
|
||||||
inst->buffers.input.actual_count;
|
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.input_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.input_meta.min_count = 0;
|
|
||||||
inst->buffers.input_meta.extra_count = 0;
|
|
||||||
inst->buffers.input_meta.actual_count = 0;
|
|
||||||
inst->buffers.input_meta.size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt = &inst->fmts[OUTPUT_META_PORT];
|
fmt = &inst->fmts[OUTPUT_META_PORT];
|
||||||
if (is_output_meta_enabled(inst)) {
|
fmt->fmt.meta.buffersize = call_session_op(core,
|
||||||
fmt->fmt.meta.buffersize = call_session_op(core,
|
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
||||||
buffer_size, inst, MSM_VIDC_BUF_OUTPUT_META);
|
inst->buffers.output_meta.min_count =
|
||||||
inst->buffers.output_meta.min_count =
|
inst->buffers.output.min_count;
|
||||||
inst->buffers.output.min_count;
|
inst->buffers.output_meta.extra_count =
|
||||||
inst->buffers.output_meta.extra_count =
|
inst->buffers.output.extra_count;
|
||||||
inst->buffers.output.extra_count;
|
inst->buffers.output_meta.actual_count =
|
||||||
inst->buffers.output_meta.actual_count =
|
inst->buffers.output.actual_count;
|
||||||
inst->buffers.output.actual_count;
|
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
||||||
inst->buffers.output_meta.size = fmt->fmt.meta.buffersize;
|
|
||||||
} else {
|
|
||||||
fmt->fmt.meta.buffersize = 0;
|
|
||||||
inst->buffers.output_meta.min_count = 0;
|
|
||||||
inst->buffers.output_meta.extra_count = 0;
|
|
||||||
inst->buffers.output_meta.actual_count = 0;
|
|
||||||
inst->buffers.output_meta.size = 0;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,10 +36,14 @@ static struct v4l2_ioctl_ops msm_v4l2_ioctl_ops_enc = {
|
|||||||
.vidioc_querycap = msm_v4l2_querycap,
|
.vidioc_querycap = msm_v4l2_querycap,
|
||||||
.vidioc_enum_fmt_vid_cap = msm_v4l2_enum_fmt,
|
.vidioc_enum_fmt_vid_cap = msm_v4l2_enum_fmt,
|
||||||
.vidioc_enum_fmt_vid_out = msm_v4l2_enum_fmt,
|
.vidioc_enum_fmt_vid_out = msm_v4l2_enum_fmt,
|
||||||
|
.vidioc_enum_fmt_meta_cap = msm_v4l2_enum_fmt,
|
||||||
|
.vidioc_enum_fmt_meta_out = msm_v4l2_enum_fmt,
|
||||||
.vidioc_enum_framesizes = msm_v4l2_enum_framesizes,
|
.vidioc_enum_framesizes = msm_v4l2_enum_framesizes,
|
||||||
.vidioc_enum_frameintervals = msm_v4l2_enum_frameintervals,
|
.vidioc_enum_frameintervals = msm_v4l2_enum_frameintervals,
|
||||||
.vidioc_try_fmt_vid_cap_mplane = msm_v4l2_try_fmt,
|
.vidioc_try_fmt_vid_cap_mplane = msm_v4l2_try_fmt,
|
||||||
.vidioc_try_fmt_vid_out_mplane = msm_v4l2_try_fmt,
|
.vidioc_try_fmt_vid_out_mplane = msm_v4l2_try_fmt,
|
||||||
|
.vidioc_try_fmt_meta_cap = msm_v4l2_try_fmt,
|
||||||
|
.vidioc_try_fmt_meta_out = msm_v4l2_try_fmt,
|
||||||
.vidioc_s_fmt_vid_cap = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_cap = msm_v4l2_s_fmt,
|
||||||
.vidioc_s_fmt_vid_out = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_out = msm_v4l2_s_fmt,
|
||||||
.vidioc_s_fmt_vid_cap_mplane = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_cap_mplane = msm_v4l2_s_fmt,
|
||||||
@@ -76,10 +80,14 @@ static struct v4l2_ioctl_ops msm_v4l2_ioctl_ops_dec = {
|
|||||||
.vidioc_querycap = msm_v4l2_querycap,
|
.vidioc_querycap = msm_v4l2_querycap,
|
||||||
.vidioc_enum_fmt_vid_cap = msm_v4l2_enum_fmt,
|
.vidioc_enum_fmt_vid_cap = msm_v4l2_enum_fmt,
|
||||||
.vidioc_enum_fmt_vid_out = msm_v4l2_enum_fmt,
|
.vidioc_enum_fmt_vid_out = msm_v4l2_enum_fmt,
|
||||||
|
.vidioc_enum_fmt_meta_cap = msm_v4l2_enum_fmt,
|
||||||
|
.vidioc_enum_fmt_meta_out = msm_v4l2_enum_fmt,
|
||||||
.vidioc_enum_framesizes = msm_v4l2_enum_framesizes,
|
.vidioc_enum_framesizes = msm_v4l2_enum_framesizes,
|
||||||
.vidioc_enum_frameintervals = msm_v4l2_enum_frameintervals,
|
.vidioc_enum_frameintervals = msm_v4l2_enum_frameintervals,
|
||||||
.vidioc_try_fmt_vid_cap_mplane = msm_v4l2_try_fmt,
|
.vidioc_try_fmt_vid_cap_mplane = msm_v4l2_try_fmt,
|
||||||
.vidioc_try_fmt_vid_out_mplane = msm_v4l2_try_fmt,
|
.vidioc_try_fmt_vid_out_mplane = msm_v4l2_try_fmt,
|
||||||
|
.vidioc_try_fmt_meta_cap = msm_v4l2_try_fmt,
|
||||||
|
.vidioc_try_fmt_meta_out = msm_v4l2_try_fmt,
|
||||||
.vidioc_s_fmt_vid_cap = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_cap = msm_v4l2_s_fmt,
|
||||||
.vidioc_s_fmt_vid_out = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_out = msm_v4l2_s_fmt,
|
||||||
.vidioc_s_fmt_vid_cap_mplane = msm_v4l2_s_fmt,
|
.vidioc_s_fmt_vid_cap_mplane = msm_v4l2_s_fmt,
|
||||||
|
Reference in New Issue
Block a user