diff --git a/driver/vidc/inc/msm_vidc_driver.h b/driver/vidc/inc/msm_vidc_driver.h index bb9a36d5c5..fa70bdba2d 100644 --- a/driver/vidc/inc/msm_vidc_driver.h +++ b/driver/vidc/inc/msm_vidc_driver.h @@ -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); diff --git a/driver/vidc/src/msm_vdec.c b/driver/vidc/src/msm_vdec.c index 7f2e55e6d0..07bb5ce85e 100644 --- a/driver/vidc/src/msm_vdec.c +++ b/driver/vidc/src/msm_vdec.c @@ -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", diff --git a/driver/vidc/src/msm_venc.c b/driver/vidc/src/msm_venc.c index cd3c8e27d5..c0e82b9980 100644 --- a/driver/vidc/src/msm_venc.c +++ b/driver/vidc/src/msm_venc.c @@ -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 != diff --git a/driver/vidc/src/msm_vidc_driver.c b/driver/vidc/src/msm_vidc_driver.c index c99ef91f91..78e5f0c2f7 100644 --- a/driver/vidc/src/msm_vidc_driver.c +++ b/driver/vidc/src/msm_vidc_driver.c @@ -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; }