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

Commit 1e0f5949 authored by Abdulla Anam's avatar Abdulla Anam
Browse files

msm: vidc: Communicate ref_ltr in bitmap as expected by firmware



Translate ref_ltr as a bitmap before sending it to firmware. Do
validation of v4l2 ctrl values for mark_ltr and use_ltr based on
fw advertized capabilities.

CRs-Fixed: 992084

Change-Id: I5b9980c205196a10fa3845079030aac585a66c80
Signed-off-by: default avatarAbdulla Anam <abdullahanam@codeaurora.org>
parent 53d1dd96
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -2915,13 +2915,31 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
		atomic_inc(&inst->seq_hdr_reqs);
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_USELTRFRAME:
		if (ctrl->val < inst->capability.ltr_count.min ||
			ctrl->val >= inst->capability.ltr_count.max) {
			dprintk(VIDC_ERR,
				"Error setting useltr %d range: [%d,%d)\n",
				ctrl->val, inst->capability.ltr_count.min,
				inst->capability.ltr_count.max);
			rc = -ENOTSUPP;
			break;
		}
		property_id = HAL_CONFIG_VENC_USELTRFRAME;
		use_ltr.ref_ltr = ctrl->val;
		use_ltr.ref_ltr = (0x1 << ctrl->val);
		use_ltr.use_constraint = false;
		use_ltr.frames = 0;
		pdata = &use_ltr;
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_MARKLTRFRAME:
		if (ctrl->val < inst->capability.ltr_count.min ||
			ctrl->val >= inst->capability.ltr_count.max) {
			dprintk(VIDC_ERR,
				"Error setting markltr %d range: [%d,%d)\n",
				ctrl->val, inst->capability.ltr_count.min,
				inst->capability.ltr_count.max);
			rc = -ENOTSUPP;
			break;
		}
		property_id = HAL_CONFIG_VENC_MARKLTRFRAME;
		mark_ltr.mark_frame = ctrl->val;
		pdata = &mark_ltr;