diff options
author | Yunqing Wang <yunqingwang@google.com> | 2011-04-01 16:41:58 -0400 |
---|---|---|
committer | Yunqing Wang <yunqingwang@google.com> | 2011-04-01 16:41:58 -0400 |
commit | 3d6815817cc0d74bbc42294f9fbca01f7840aeef (patch) | |
tree | 2d097e03587b8e501a13f5c16475c80b3d6dcdc6 /vp8/encoder/rdopt.c | |
parent | 534ea700bd690e8f3f6e0d9db930b3bf65a08cac (diff) | |
download | libvpx-3d6815817cc0d74bbc42294f9fbca01f7840aeef.tar libvpx-3d6815817cc0d74bbc42294f9fbca01f7840aeef.tar.gz libvpx-3d6815817cc0d74bbc42294f9fbca01f7840aeef.tar.bz2 libvpx-3d6815817cc0d74bbc42294f9fbca01f7840aeef.zip |
Use full-pixel MV in mvsadcost calculation
MV sad cost error is only used in full-pixel motion search,
which only need full-pixel resolution instead of quarter-pixel
resolution. This change reduced mvsadcost table size, and
removed unneccessary pamameter passing since this table is
constant once it is generated.
Change-Id: I9f931e55f6abc3c99011321f1dfb2f3562e6f6b0
Diffstat (limited to 'vp8/encoder/rdopt.c')
-rw-r--r-- | vp8/encoder/rdopt.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index a125cc481..908e97153 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c @@ -1159,7 +1159,7 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x, { bestsme = cpi->diamond_search_sad(x, c, e, bsi->mvp, &mode_mv[NEW4X4], step_param, - sadpb / 2, &num00, v_fn_ptr, x->mvsadcost, x->mvcost, bsi->ref_mv); + sadpb / 2, &num00, v_fn_ptr, x->mvcost, bsi->ref_mv); n = num00; num00 = 0; @@ -1174,7 +1174,7 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x, { thissme = cpi->diamond_search_sad(x, c, e, bsi->mvp, &temp_mv, step_param + n, - sadpb / 2, &num00, v_fn_ptr, x->mvsadcost, x->mvcost, bsi->ref_mv); + sadpb / 2, &num00, v_fn_ptr, x->mvcost, bsi->ref_mv); if (thissme < bestsme) { @@ -1192,7 +1192,7 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x, if ((cpi->compressor_speed == 0) && (bestsme >> sseshift) > 4000) { thissme = cpi->full_search_sad(x, c, e, bsi->mvp, - sadpb / 4, 16, v_fn_ptr, x->mvcost, x->mvsadcost,bsi->ref_mv); + sadpb / 4, 16, v_fn_ptr, x->mvcost, bsi->ref_mv); if (thissme < bestsme) { @@ -2102,7 +2102,7 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int } else { - bestsme = cpi->diamond_search_sad(x, b, d, &mvp, &d->bmi.mv.as_mv, step_param, sadpb / 2/*x->errorperbit*/, &num00, &cpi->fn_ptr[BLOCK_16X16], x->mvsadcost, x->mvcost, &best_ref_mv); //sadpb < 9 + bestsme = cpi->diamond_search_sad(x, b, d, &mvp, &d->bmi.mv.as_mv, step_param, sadpb / 2/*x->errorperbit*/, &num00, &cpi->fn_ptr[BLOCK_16X16], x->mvcost, &best_ref_mv); //sadpb < 9 mode_mv[NEWMV].row = d->bmi.mv.as_mv.row; mode_mv[NEWMV].col = d->bmi.mv.as_mv.col; @@ -2121,7 +2121,7 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int num00--; else { - thissme = cpi->diamond_search_sad(x, b, d, &mvp, &d->bmi.mv.as_mv, step_param + n, sadpb / 4/*x->errorperbit*/, &num00, &cpi->fn_ptr[BLOCK_16X16], x->mvsadcost, x->mvcost, &best_ref_mv); //sadpb = 9 + thissme = cpi->diamond_search_sad(x, b, d, &mvp, &d->bmi.mv.as_mv, step_param + n, sadpb / 4/*x->errorperbit*/, &num00, &cpi->fn_ptr[BLOCK_16X16], x->mvcost, &best_ref_mv); //sadpb = 9 if (thissme < bestsme) { @@ -2167,7 +2167,7 @@ int vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int { int sadpb = x->sadperbit16 >> 2; - thissme = cpi->full_search_sad(x, b, d, &full_mvp, sadpb, search_range, &cpi->fn_ptr[BLOCK_16X16], x->mvcost, x->mvsadcost,&best_ref_mv); + thissme = cpi->full_search_sad(x, b, d, &full_mvp, sadpb, search_range, &cpi->fn_ptr[BLOCK_16X16], x->mvcost, &best_ref_mv); } // Barrier threshold to initiating full search |