Commit a378a320 authored by Amit Grover's avatar Amit Grover Committed by Mauro Carvalho Chehab
Browse files

[media] s5p-mfc: Add Horizontal and Vertical MV Search Range



This patch adds Controls to set Horizontal and Vertical search range
for Motion Estimation block for Samsung MFC video Encoders.

Signed-off-by: default avatarSwami Nathan <swaminath.p@samsung.com>
Signed-off-by: default avatarAmit Grover <amit.grover@samsung.com>
Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent bf0bedd3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -229,6 +229,7 @@
#define S5P_FIMV_E_PADDING_CTRL_V6		0xf7a4
#define S5P_FIMV_E_MV_HOR_RANGE_V6		0xf7ac
#define S5P_FIMV_E_MV_VER_RANGE_V6		0xf7b0
#define S5P_FIMV_E_MV_RANGE_V6_MASK		0x3fff

#define S5P_FIMV_E_VBV_BUFFER_SIZE_V6		0xf84c
#define S5P_FIMV_E_VBV_INIT_DELAY_V6		0xf850
+2 −0
Original line number Diff line number Diff line
@@ -426,6 +426,8 @@ struct s5p_mfc_vp8_enc_params {
struct s5p_mfc_enc_params {
	u16 width;
	u16 height;
	u32 mv_h_range;
	u32 mv_v_range;

	u16 gop_size;
	enum v4l2_mpeg_video_multi_slice_mode slice_mode;
+24 −0
Original line number Diff line number Diff line
@@ -207,6 +207,24 @@ static struct mfc_control controls[] = {
		.step = 1,
		.default_value = 0,
	},
	{
		.id = V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE,
		.type = V4L2_CTRL_TYPE_INTEGER,
		.name = "Horizontal MV Search Range",
		.minimum = 16,
		.maximum = 128,
		.step = 16,
		.default_value = 32,
	},
	{
		.id = V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE,
		.type = V4L2_CTRL_TYPE_INTEGER,
		.name = "Vertical MV Search Range",
		.minimum = 16,
		.maximum = 128,
		.step = 16,
		.default_value = 32,
	},
	{
		.id = V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE,
		.type = V4L2_CTRL_TYPE_INTEGER,
@@ -1417,6 +1435,12 @@ static int s5p_mfc_enc_s_ctrl(struct v4l2_ctrl *ctrl)
	case V4L2_CID_MPEG_VIDEO_VBV_SIZE:
		p->vbv_size = ctrl->val;
		break;
	case V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE:
		p->mv_h_range = ctrl->val;
		break;
	case V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE:
		p->mv_v_range = ctrl->val;
		break;
	case V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE:
		p->codec.h264.cpb_size = ctrl->val;
		break;
+2 −6
Original line number Diff line number Diff line
@@ -727,14 +727,10 @@ static int s5p_mfc_set_enc_params(struct s5p_mfc_ctx *ctx)
	WRITEL(reg, S5P_FIMV_E_RC_CONFIG_V6);

	/* setting for MV range [16, 256] */
	reg = 0;
	reg &= ~(0x3FFF);
	reg = 256;
	reg = (p->mv_h_range & S5P_FIMV_E_MV_RANGE_V6_MASK);
	WRITEL(reg, S5P_FIMV_E_MV_HOR_RANGE_V6);

	reg = 0;
	reg &= ~(0x3FFF);
	reg = 256;
	reg = (p->mv_v_range & S5P_FIMV_E_MV_RANGE_V6_MASK);
	WRITEL(reg, S5P_FIMV_E_MV_VER_RANGE_V6);

	WRITEL(0x0, S5P_FIMV_E_FRAME_INSERTION_V6);