Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38eb198f authored by Praneeth Paladugu's avatar Praneeth Paladugu
Browse files

msm: vidc: Add sanity check for resolutions



Venus HW supports only YUV420 encode\decode. This means it
can't support odd dimensions in both height and width. Hence
add a check to prevent this setting to HW.

CRs-Fixed: 2124363
Change-Id: I0a680a395b40f3d859487c37d8a10faa51fc4680
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent e3950ebc
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -5440,7 +5440,7 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst)
	int rc = 0;
	struct hfi_device *hdev;
	struct msm_vidc_core *core;
	u32 output_height, output_width;
	u32 output_height, output_width, input_height, input_width;
	u32 rotation;

	if (!inst || !inst->core || !inst->core->device) {
@@ -5463,6 +5463,22 @@ int msm_vidc_check_session_supported(struct msm_vidc_inst *inst)
		return -ENOTSUPP;
	}

	output_height = inst->prop.height[CAPTURE_PORT];
	output_width = inst->prop.width[CAPTURE_PORT];
	input_height = inst->prop.height[OUTPUT_PORT];
	input_width = inst->prop.width[OUTPUT_PORT];

	if (input_width % 2 != 0 || input_height % 2 != 0 ||
			output_width % 2 != 0 || output_height % 2 != 0) {
		dprintk(VIDC_ERR,
			"Height and Width should be even numbers for NV12\n");
		dprintk(VIDC_ERR,
			"Input WxH = (%u)x(%u), Output WxH = (%u)x(%u)\n",
			input_width, input_height,
			output_width, output_height);
		rc = -ENOTSUPP;
	}

	rotation =  msm_comm_g_ctrl_for_id(inst,
					V4L2_CID_MPEG_VIDC_VIDEO_ROTATION);