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

Commit 72fa67bf authored by Praneeth Paladugu's avatar Praneeth Paladugu
Browse files

msm: vidc: Add interface to send crop info



This change adds interface for clients to query for crop
through IOCTL VIDIOC_G_CROP. Driver also sends crop
information along with sequence change event.

CRs-Fixed: 2055218
Change-Id: I4253d22cc6efc0b8e7f3b8963ba0ef7e129e5b0a
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent 520e9b26
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -225,6 +225,14 @@ static int msm_v4l2_g_parm(struct file *file, void *fh,
	return 0;
}

static int msm_v4l2_g_crop(struct file *file, void *fh,
			struct v4l2_crop *a)
{
	struct msm_vidc_inst *vidc_inst = get_vidc_inst(file, fh);

	return msm_vidc_g_crop(vidc_inst, a);
}

static int msm_v4l2_enum_framesizes(struct file *file, void *fh,
				struct v4l2_frmsizeenum *fsize)
{
@@ -265,6 +273,7 @@ static const struct v4l2_ioctl_ops msm_v4l2_ioctl_ops = {
	.vidioc_encoder_cmd = msm_v4l2_encoder_cmd,
	.vidioc_s_parm = msm_v4l2_s_parm,
	.vidioc_g_parm = msm_v4l2_g_parm,
	.vidioc_g_crop = msm_v4l2_g_crop,
	.vidioc_enum_framesizes = msm_v4l2_enum_framesizes,
};

+23 −0
Original line number Diff line number Diff line
@@ -265,6 +265,29 @@ int msm_vidc_s_ctrl(void *instance, struct v4l2_control *control)
}
EXPORT_SYMBOL(msm_vidc_s_ctrl);

int msm_vidc_g_crop(void *instance, struct v4l2_crop *crop)
{
	struct msm_vidc_inst *inst = instance;

	if (!inst || !crop)
		return -EINVAL;

	if (inst->session_type == MSM_VIDC_ENCODER) {
		dprintk(VIDC_ERR,
			"Session = %pK : Encoder Crop is not implemented yet\n",
				inst);
		return -EPERM;
	}

	crop->c.left = inst->prop.crop_info.left;
	crop->c.top = inst->prop.crop_info.top;
	crop->c.width = inst->prop.crop_info.width;
	crop->c.height = inst->prop.crop_info.height;

	return 0;
}
EXPORT_SYMBOL(msm_vidc_g_crop);

int msm_vidc_g_ctrl(void *instance, struct v4l2_control *control)
{
	struct msm_vidc_inst *inst = instance;
+4 −0
Original line number Diff line number Diff line
@@ -1569,6 +1569,10 @@ static void handle_event_change(enum hal_command_response cmd, void *data)
	ptr[2] = event_notify->bit_depth;
	ptr[3] = event_notify->pic_struct;
	ptr[4] = event_notify->colour_space;
	ptr[5] = event_notify->crop_data.top;
	ptr[6] = event_notify->crop_data.left;
	ptr[7] = event_notify->crop_data.height;
	ptr[8] = event_notify->crop_data.width;

	dprintk(VIDC_DBG,
		"Event payload: height = %d width = %d\n",
+1 −0
Original line number Diff line number Diff line
@@ -121,5 +121,6 @@ int msm_vidc_subscribe_event(void *instance,
int msm_vidc_unsubscribe_event(void *instance,
		const struct v4l2_event_subscription *sub);
int msm_vidc_dqevent(void *instance, struct v4l2_event *event);
int msm_vidc_g_crop(void *instance, struct v4l2_crop *a);
int msm_vidc_enum_framesizes(void *instance, struct v4l2_frmsizeenum *fsize);
#endif