Merge remote branch 'origin/master' into experimental
Change-Id: I2f9fd68d7fd52e0aebc57e561c77ebe99e9c33e4
This commit is contained in:
commit
a741e0e3cb
@ -1597,14 +1597,8 @@ int vp8cx_encode_inter_macroblock
|
||||
}
|
||||
else
|
||||
{
|
||||
int_mv best_ref_mv;
|
||||
int_mv nearest, nearby;
|
||||
int mdcounts[4];
|
||||
int ref_fb_idx;
|
||||
|
||||
vp8_find_near_mvs(xd, xd->mode_info_context,
|
||||
&nearest, &nearby, &best_ref_mv, mdcounts, xd->mode_info_context->mbmi.ref_frame, cpi->common.ref_frame_sign_bias);
|
||||
|
||||
vp8_build_uvmvs(xd, cpi->common.full_pixel);
|
||||
|
||||
if (xd->mode_info_context->mbmi.ref_frame == LAST_FRAME)
|
||||
@ -1618,25 +1612,6 @@ int vp8cx_encode_inter_macroblock
|
||||
xd->pre.u_buffer = cpi->common.yv12_fb[ref_fb_idx].u_buffer + recon_uvoffset;
|
||||
xd->pre.v_buffer = cpi->common.yv12_fb[ref_fb_idx].v_buffer + recon_uvoffset;
|
||||
|
||||
if (xd->mode_info_context->mbmi.mode == SPLITMV)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (xd->block[i].bmi.mode == NEW4X4)
|
||||
{
|
||||
cpi->MVcount[0][mv_max+((xd->block[i].bmi.mv.as_mv.row - best_ref_mv.as_mv.row) >> 1)]++;
|
||||
cpi->MVcount[1][mv_max+((xd->block[i].bmi.mv.as_mv.col - best_ref_mv.as_mv.col) >> 1)]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (xd->mode_info_context->mbmi.mode == NEWMV)
|
||||
{
|
||||
cpi->MVcount[0][mv_max+((xd->block[0].bmi.mv.as_mv.row - best_ref_mv.as_mv.row) >> 1)]++;
|
||||
cpi->MVcount[1][mv_max+((xd->block[0].bmi.mv.as_mv.col - best_ref_mv.as_mv.col) >> 1)]++;
|
||||
}
|
||||
|
||||
if (!x->skip)
|
||||
{
|
||||
vp8_encode_inter16x16(IF_RTCD(&cpi->rtcd), x);
|
||||
|
@ -426,6 +426,16 @@ void vp8_pick_intra_mbuv_mode(MACROBLOCK *mb)
|
||||
|
||||
}
|
||||
|
||||
static void vp8_update_mvcount(VP8_COMP *cpi, MACROBLOCKD *xd, int_mv *best_ref_mv)
|
||||
{
|
||||
/* Split MV modes currently not supported when RD is nopt enabled, therefore, only need to modify MVcount in NEWMV mode. */
|
||||
if (xd->mode_info_context->mbmi.mode == NEWMV)
|
||||
{
|
||||
cpi->MVcount[0][mv_max+((xd->block[0].bmi.mv.as_mv.row - best_ref_mv->as_mv.row) >> 1)]++;
|
||||
cpi->MVcount[1][mv_max+((xd->block[0].bmi.mv.as_mv.col - best_ref_mv->as_mv.col) >> 1)]++;
|
||||
}
|
||||
}
|
||||
|
||||
void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset, int *returnrate, int *returndistortion, int *returnintra)
|
||||
{
|
||||
BLOCK *b = &x->block[0];
|
||||
@ -637,10 +647,10 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int re
|
||||
|
||||
/* adjust mvp to make sure it is within MV range */
|
||||
vp8_clamp_mv(&mvp,
|
||||
best_ref_mv.as_mv.row - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row + MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.col - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.col + MAX_FULL_PEL_VAL);
|
||||
best_ref_mv.as_mv.col + MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row + MAX_FULL_PEL_VAL);
|
||||
}
|
||||
|
||||
switch (this_mode)
|
||||
@ -970,4 +980,6 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int re
|
||||
}
|
||||
|
||||
x->e_mbd.mode_info_context->mbmi.mv.as_mv = x->e_mbd.block[15].bmi.mv.as_mv;
|
||||
|
||||
vp8_update_mvcount(cpi, &x->e_mbd, &frame_best_ref_mv[xd->mode_info_context->mbmi.ref_frame]);
|
||||
}
|
||||
|
@ -1751,6 +1751,28 @@ void vp8_cal_sad(VP8_COMP *cpi, MACROBLOCKD *xd, MACROBLOCK *x, int recon_yoffse
|
||||
}
|
||||
}
|
||||
|
||||
static void vp8_rd_update_mvcount(VP8_COMP *cpi, MACROBLOCKD *xd, int_mv *best_ref_mv)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (xd->mode_info_context->mbmi.mode == SPLITMV)
|
||||
{
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (xd->block[i].bmi.mode == NEW4X4)
|
||||
{
|
||||
cpi->MVcount[0][mv_max+((xd->block[i].bmi.mv.as_mv.row - best_ref_mv->as_mv.row) >> 1)]++;
|
||||
cpi->MVcount[1][mv_max+((xd->block[i].bmi.mv.as_mv.col - best_ref_mv->as_mv.col) >> 1)]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (xd->mode_info_context->mbmi.mode == NEWMV)
|
||||
{
|
||||
cpi->MVcount[0][mv_max+((xd->block[0].bmi.mv.as_mv.row - best_ref_mv->as_mv.row) >> 1)]++;
|
||||
cpi->MVcount[1][mv_max+((xd->block[0].bmi.mv.as_mv.col - best_ref_mv->as_mv.col) >> 1)]++;
|
||||
}
|
||||
}
|
||||
|
||||
void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset, int *returnrate, int *returndistortion, int *returnintra)
|
||||
{
|
||||
BLOCK *b = &x->block[0];
|
||||
@ -1943,10 +1965,10 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
|
||||
|
||||
/* adjust mvp to make sure it is within MV range */
|
||||
vp8_clamp_mv(&mvp,
|
||||
best_ref_mv.as_mv.row - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row + MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.col - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.col + MAX_FULL_PEL_VAL);
|
||||
best_ref_mv.as_mv.col + MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row - MAX_FULL_PEL_VAL,
|
||||
best_ref_mv.as_mv.row + MAX_FULL_PEL_VAL);
|
||||
}
|
||||
|
||||
// Check to see if the testing frequency for this mode is at its max
|
||||
@ -2465,4 +2487,6 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
|
||||
}
|
||||
|
||||
x->e_mbd.mode_info_context->mbmi.mv.as_mv = x->e_mbd.block[15].bmi.mv.as_mv;
|
||||
|
||||
vp8_rd_update_mvcount(cpi, &x->e_mbd, &frame_best_ref_mv[xd->mode_info_context->mbmi.ref_frame]);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user