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

[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
......@@ -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
......
......@@ -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;
......
......@@ -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;
......
......@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment