video: driver: fix colorspace subscribe params initialization
Initialize subscribe params for colorspace using OUTPUT port params and use right mapper function Change-Id: Ie6be50c1de20e351bad0fc4b015bcc4d72d1711b Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
This commit is contained in:
@@ -220,17 +220,17 @@ enum msm_vidc_colorformat_type v4l2_colorformat_to_driver(u32 colorformat,
|
||||
u32 v4l2_colorformat_from_driver(enum msm_vidc_colorformat_type colorformat,
|
||||
const char *func);
|
||||
u32 v4l2_color_primaries_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_primaries);
|
||||
u32 v4l2_primaries, const char *func);
|
||||
u32 v4l2_color_primaries_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_color_primaries);
|
||||
u32 vidc_color_primaries, const char *func);
|
||||
u32 v4l2_transfer_char_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_transfer_char);
|
||||
u32 v4l2_transfer_char, const char *func);
|
||||
u32 v4l2_transfer_char_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_transfer_char);
|
||||
u32 vidc_transfer_char, const char *func);
|
||||
u32 v4l2_matrix_coeff_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_matrix_coeff);
|
||||
u32 v4l2_matrix_coeff, const char *func);
|
||||
u32 v4l2_matrix_coeff_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_matrix_coeff);
|
||||
u32 vidc_matrix_coeff, const char *func);
|
||||
int v4l2_type_to_driver_port(struct msm_vidc_inst *inst, u32 type,
|
||||
const char *func);
|
||||
const char *state_name(enum msm_vidc_inst_state state);
|
||||
|
@@ -377,16 +377,16 @@ static int msm_vdec_set_colorspace(struct msm_vidc_inst *inst,
|
||||
return 0;
|
||||
|
||||
if (inst->fmts[port].fmt.pix_mp.colorspace != V4L2_COLORSPACE_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc != V4L2_XFER_FUNC_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func != V4L2_YCBCR_ENC_DEFAULT) {
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc != V4L2_YCBCR_ENC_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func != V4L2_XFER_FUNC_DEFAULT) {
|
||||
colour_description_present_flag = 1;
|
||||
video_signal_type_present_flag = 1;
|
||||
primaries = v4l2_color_primaries_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.colorspace);
|
||||
inst->fmts[port].fmt.pix_mp.colorspace, __func__);
|
||||
matrix_coeff = v4l2_matrix_coeff_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc);
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc, __func__);
|
||||
transfer_char = v4l2_transfer_char_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func);
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func, __func__);
|
||||
}
|
||||
|
||||
if (inst->fmts[port].fmt.pix_mp.quantization !=
|
||||
@@ -1235,13 +1235,13 @@ int msm_vdec_init_input_subcr_params(struct msm_vidc_inst *inst)
|
||||
|
||||
subsc_params->fw_min_count = inst->buffers.output.min_count;
|
||||
|
||||
primaries = v4l2_color_primaries_from_driver(inst,
|
||||
inst->fmts[INPUT_PORT].fmt.pix_mp.colorspace);
|
||||
matrix_coeff = v4l2_matrix_coeff_from_driver(inst,
|
||||
inst->fmts[INPUT_PORT].fmt.pix_mp.ycbcr_enc);
|
||||
transfer_char = v4l2_transfer_char_from_driver(inst,
|
||||
inst->fmts[INPUT_PORT].fmt.pix_mp.xfer_func);
|
||||
full_range = inst->fmts[INPUT_PORT].fmt.pix_mp.quantization ==
|
||||
primaries = v4l2_color_primaries_to_driver(inst,
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.colorspace, __func__);
|
||||
matrix_coeff = v4l2_matrix_coeff_to_driver(inst,
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.ycbcr_enc, __func__);
|
||||
transfer_char = v4l2_transfer_char_to_driver(inst,
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.xfer_func, __func__);
|
||||
full_range = inst->fmts[OUTPUT_PORT].fmt.pix_mp.quantization ==
|
||||
V4L2_QUANTIZATION_FULL_RANGE ? 1 : 0;
|
||||
subsc_params->color_info =
|
||||
(matrix_coeff & 0xFF) |
|
||||
@@ -1324,11 +1324,11 @@ static int msm_vdec_read_input_subcr_params(struct msm_vidc_inst *inst)
|
||||
V4L2_QUANTIZATION_LIM_RANGE;
|
||||
if (colour_description_present_flag) {
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.colorspace =
|
||||
v4l2_color_primaries_from_driver(inst, primaries);
|
||||
v4l2_color_primaries_from_driver(inst, primaries, __func__);
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.xfer_func =
|
||||
v4l2_transfer_char_from_driver(inst, transfer_char);
|
||||
v4l2_transfer_char_from_driver(inst, transfer_char, __func__);
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.ycbcr_enc =
|
||||
v4l2_matrix_coeff_from_driver(inst, matrix_coeff);
|
||||
v4l2_matrix_coeff_from_driver(inst, matrix_coeff, __func__);
|
||||
} else {
|
||||
i_vpr_h(inst,
|
||||
"%s: color description flag is not present\n",
|
||||
|
@@ -304,16 +304,16 @@ static int msm_venc_set_colorspace(struct msm_vidc_inst* inst,
|
||||
}
|
||||
|
||||
if (inst->fmts[port].fmt.pix_mp.colorspace != V4L2_COLORSPACE_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc != V4L2_XFER_FUNC_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func != V4L2_YCBCR_ENC_DEFAULT) {
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc != V4L2_YCBCR_ENC_DEFAULT ||
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func != V4L2_XFER_FUNC_DEFAULT) {
|
||||
colour_description_present_flag = 1;
|
||||
video_signal_type_present_flag = 1;
|
||||
primaries = v4l2_color_primaries_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.colorspace);
|
||||
inst->fmts[port].fmt.pix_mp.colorspace, __func__);
|
||||
matrix_coeff = v4l2_matrix_coeff_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc);
|
||||
inst->fmts[port].fmt.pix_mp.ycbcr_enc, __func__);
|
||||
transfer_char = v4l2_transfer_char_to_driver(inst,
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func);
|
||||
inst->fmts[port].fmt.pix_mp.xfer_func, __func__);
|
||||
}
|
||||
|
||||
if (inst->fmts[port].fmt.pix_mp.quantization !=
|
||||
|
@@ -469,7 +469,7 @@ u32 v4l2_colorformat_from_driver(enum msm_vidc_colorformat_type colorformat,
|
||||
}
|
||||
|
||||
u32 v4l2_color_primaries_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_primaries)
|
||||
u32 v4l2_primaries, const char *func)
|
||||
{
|
||||
u32 vidc_color_primaries = MSM_VIDC_PRIMARIES_RESERVED;
|
||||
|
||||
@@ -508,8 +508,8 @@ u32 v4l2_color_primaries_to_driver(struct msm_vidc_inst *inst,
|
||||
vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_EBU_TECH;
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid color primaries %d\n",
|
||||
__func__, v4l2_primaries);
|
||||
i_vpr_e(inst, "%s: invalid v4l2 color primaries %d\n",
|
||||
func, v4l2_primaries);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ u32 v4l2_color_primaries_to_driver(struct msm_vidc_inst *inst,
|
||||
}
|
||||
|
||||
u32 v4l2_color_primaries_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_color_primaries)
|
||||
u32 vidc_color_primaries, const char *func)
|
||||
{
|
||||
u32 v4l2_primaries = V4L2_COLORSPACE_DEFAULT;
|
||||
|
||||
@@ -557,8 +557,7 @@ u32 v4l2_color_primaries_from_driver(struct msm_vidc_inst *inst,
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid hfi color primaries %d\n",
|
||||
__func__, vidc_color_primaries);
|
||||
v4l2_primaries = V4L2_COLORSPACE_DEFAULT;
|
||||
func, vidc_color_primaries);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -566,7 +565,7 @@ u32 v4l2_color_primaries_from_driver(struct msm_vidc_inst *inst,
|
||||
}
|
||||
|
||||
u32 v4l2_transfer_char_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_transfer_char)
|
||||
u32 v4l2_transfer_char, const char *func)
|
||||
{
|
||||
u32 vidc_transfer_char = MSM_VIDC_TRANSFER_RESERVED;
|
||||
|
||||
@@ -614,8 +613,8 @@ u32 v4l2_transfer_char_to_driver(struct msm_vidc_inst *inst,
|
||||
vidc_transfer_char = MSM_VIDC_TRANSFER_BT2100_2_HLG;
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid transfer char %d\n",
|
||||
__func__, v4l2_transfer_char);
|
||||
i_vpr_e(inst, "%s: invalid v4l2 transfer char %d\n",
|
||||
func, v4l2_transfer_char);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -623,7 +622,7 @@ u32 v4l2_transfer_char_to_driver(struct msm_vidc_inst *inst,
|
||||
}
|
||||
|
||||
u32 v4l2_transfer_char_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_transfer_char)
|
||||
u32 vidc_transfer_char, const char *func)
|
||||
{
|
||||
u32 v4l2_transfer_char = V4L2_XFER_FUNC_DEFAULT;
|
||||
|
||||
@@ -672,8 +671,8 @@ u32 v4l2_transfer_char_from_driver(struct msm_vidc_inst *inst,
|
||||
v4l2_transfer_char = V4L2_XFER_FUNC_VIDC_HLG;
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid transfer char %d\n",
|
||||
__func__, vidc_transfer_char);
|
||||
i_vpr_e(inst, "%s: invalid hfi transfer char %d\n",
|
||||
func, vidc_transfer_char);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -681,11 +680,14 @@ u32 v4l2_transfer_char_from_driver(struct msm_vidc_inst *inst,
|
||||
}
|
||||
|
||||
u32 v4l2_matrix_coeff_to_driver(struct msm_vidc_inst *inst,
|
||||
u32 v4l2_matrix_coeff)
|
||||
u32 v4l2_matrix_coeff, const char *func)
|
||||
{
|
||||
u32 vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_RESERVED;
|
||||
|
||||
switch(v4l2_matrix_coeff) {
|
||||
case V4L2_YCBCR_ENC_DEFAULT:
|
||||
vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_RESERVED;
|
||||
break;
|
||||
case V4L2_YCBCR_VIDC_SRGB_OR_SMPTE_ST428:
|
||||
vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_SRGB_SMPTE_ST428_1;
|
||||
break;
|
||||
@@ -712,8 +714,8 @@ u32 v4l2_matrix_coeff_to_driver(struct msm_vidc_inst *inst,
|
||||
vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_CONSTANT;
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid matrix coeff %d\n",
|
||||
__func__, v4l2_matrix_coeff);
|
||||
i_vpr_e(inst, "%s: invalid v4l2 matrix coeff %d\n",
|
||||
func, v4l2_matrix_coeff);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -721,7 +723,7 @@ u32 v4l2_matrix_coeff_to_driver(struct msm_vidc_inst *inst,
|
||||
}
|
||||
|
||||
u32 v4l2_matrix_coeff_from_driver(struct msm_vidc_inst *inst,
|
||||
u32 vidc_matrix_coeff)
|
||||
u32 vidc_matrix_coeff, const char *func)
|
||||
{
|
||||
u32 v4l2_matrix_coeff = V4L2_YCBCR_ENC_DEFAULT;
|
||||
|
||||
@@ -732,6 +734,9 @@ u32 v4l2_matrix_coeff_from_driver(struct msm_vidc_inst *inst,
|
||||
case MSM_VIDC_MATRIX_COEFF_BT709:
|
||||
v4l2_matrix_coeff = V4L2_YCBCR_ENC_709;
|
||||
break;
|
||||
case MSM_VIDC_MATRIX_COEFF_UNSPECIFIED:
|
||||
v4l2_matrix_coeff = V4L2_YCBCR_ENC_DEFAULT;
|
||||
break;
|
||||
case MSM_VIDC_MATRIX_COEFF_FCC_TITLE_47:
|
||||
v4l2_matrix_coeff = V4L2_YCBCR_VIDC_FCC47_73_682;
|
||||
break;
|
||||
@@ -751,8 +756,8 @@ u32 v4l2_matrix_coeff_from_driver(struct msm_vidc_inst *inst,
|
||||
v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020_CONST_LUM;
|
||||
break;
|
||||
default:
|
||||
i_vpr_e(inst, "%s: invalid matrix coeff %d\n",
|
||||
__func__, vidc_matrix_coeff);
|
||||
i_vpr_e(inst, "%s: invalid hfi matrix coeff %d\n",
|
||||
func, vidc_matrix_coeff);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Verwijs in nieuw issue
Block a user