Skip to content

Commit

Permalink
[media] s5p-mfc: Add Horizontal and Vertical MV Search Range
Browse files Browse the repository at this point in the history
This patch adds Controls to set Horizontal and Vertical search range
for Motion Estimation block for Samsung MFC video Encoders.

Signed-off-by: Swami Nathan <swaminath.p@samsung.com>
Signed-off-by: Amit Grover <amit.grover@samsung.com>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
  • Loading branch information
Amit Grover authored and Mauro Carvalho Chehab committed Feb 28, 2014

Unverified

No user is associated with the committer email.
1 parent bf0bedd commit a378a32
Showing 4 changed files with 29 additions and 6 deletions.
1 change: 1 addition & 0 deletions drivers/media/platform/s5p-mfc/regs-mfc-v6.h
Original file line number Diff line number Diff line change
@@ -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 changes: 2 additions & 0 deletions drivers/media/platform/s5p-mfc/s5p_mfc_common.h
Original file line number Diff line number Diff line change
@@ -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 changes: 24 additions & 0 deletions drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
Original file line number Diff line number Diff line change
@@ -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;
8 changes: 2 additions & 6 deletions drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit a378a32

Please sign in to comment.