diff options
author | Dmitry Kovalev <dkovalev@google.com> | 2014-01-22 17:15:22 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-01-22 17:15:22 -0800 |
commit | 5f75fda9e92557359e7d8652dddb098ecd39e426 (patch) | |
tree | cbd0905e859bdb38e4c99d3516d92b386940dec5 /vp9/encoder/vp9_mcomp.c | |
parent | eb4cb4339711597cb563110e6c7505242114e205 (diff) | |
parent | d8bfe9e24c8995a1d689d194d1eee54c5e90fd7c (diff) | |
download | libvpx-5f75fda9e92557359e7d8652dddb098ecd39e426.tar libvpx-5f75fda9e92557359e7d8652dddb098ecd39e426.tar.gz libvpx-5f75fda9e92557359e7d8652dddb098ecd39e426.tar.bz2 libvpx-5f75fda9e92557359e7d8652dddb098ecd39e426.zip |
Merge "Cleaning up vp9_refining_search_sad() function."
Diffstat (limited to 'vp9/encoder/vp9_mcomp.c')
-rw-r--r-- | vp9/encoder/vp9_mcomp.c | 65 |
1 files changed, 28 insertions, 37 deletions
diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c index 0f2edb55a..ad9cc00b1 100644 --- a/vp9/encoder/vp9_mcomp.c +++ b/vp9/encoder/vp9_mcomp.c @@ -1712,58 +1712,51 @@ int vp9_full_search_sadx8(MACROBLOCK *x, MV *ref_mv, else return INT_MAX; } -int vp9_refining_search_sad_c(MACROBLOCK *x, + +int vp9_refining_search_sad_c(const MACROBLOCK *x, MV *ref_mv, int error_per_bit, int search_range, vp9_variance_fn_ptr_t *fn_ptr, int *mvjcost, int *mvcost[2], const MV *center_mv) { - const MACROBLOCKD* const xd = &x->e_mbd; - MV neighbors[4] = {{ -1, 0}, {0, -1}, {0, 1}, {1, 0}}; + const MACROBLOCKD *const xd = &x->e_mbd; + const MV neighbors[4] = {{ -1, 0}, {0, -1}, {0, 1}, {1, 0}}; int i, j; - int this_row_offset, this_col_offset; - int what_stride = x->plane[0].src.stride; - int in_what_stride = xd->plane[0].pre[0].stride; - uint8_t *what = x->plane[0].src.buf; - uint8_t *best_address = xd->plane[0].pre[0].buf + - (ref_mv->row * xd->plane[0].pre[0].stride) + - ref_mv->col; - uint8_t *check_here; + const int what_stride = x->plane[0].src.stride; + const uint8_t *const what = x->plane[0].src.buf; + const int in_what_stride = xd->plane[0].pre[0].stride; + const uint8_t *const in_what = xd->plane[0].pre[0].buf; + const uint8_t *best_address = &in_what[ref_mv->row * in_what_stride + + ref_mv->col]; unsigned int thissad; + + const MV fcenter_mv = {center_mv->row >> 3, center_mv->col >> 3}; MV this_mv; - unsigned int bestsad = INT_MAX; - MV fcenter_mv; - int *mvjsadcost = x->nmvjointsadcost; + const int *mvjsadcost = x->nmvjointsadcost; int *mvsadcost[2] = {x->nmvsadcost[0], x->nmvsadcost[1]}; - fcenter_mv.row = center_mv->row >> 3; - fcenter_mv.col = center_mv->col >> 3; - - bestsad = fn_ptr->sdf(what, what_stride, best_address, - in_what_stride, 0x7fffffff) + - mvsad_err_cost(ref_mv, &fcenter_mv, - mvjsadcost, mvsadcost, error_per_bit); + unsigned int bestsad = fn_ptr->sdf(what, what_stride, best_address, + in_what_stride, 0x7fffffff) + + mvsad_err_cost(ref_mv, &fcenter_mv, mvjsadcost, mvsadcost, error_per_bit); for (i = 0; i < search_range; i++) { int best_site = -1; for (j = 0; j < 4; j++) { - this_row_offset = ref_mv->row + neighbors[j].row; - this_col_offset = ref_mv->col + neighbors[j].col; + this_mv.row = ref_mv->row + neighbors[j].row; + this_mv.col = ref_mv->col + neighbors[j].col; - if ((this_col_offset > x->mv_col_min) && - (this_col_offset < x->mv_col_max) && - (this_row_offset > x->mv_row_min) && - (this_row_offset < x->mv_row_max)) { - check_here = (neighbors[j].row) * in_what_stride + neighbors[j].col + - best_address; + if ((this_mv.col > x->mv_col_min) && + (this_mv.col < x->mv_col_max) && + (this_mv.row > x->mv_row_min) && + (this_mv.row < x->mv_row_max)) { + const uint8_t *check_here = &in_what[this_mv.row * in_what_stride + + this_mv.col]; thissad = fn_ptr->sdf(what, what_stride, check_here, in_what_stride, bestsad); if (thissad < bestsad) { - this_mv.row = this_row_offset; - this_mv.col = this_col_offset; thissad += mvsad_err_cost(&this_mv, &fcenter_mv, mvjsadcost, mvsadcost, error_per_bit); @@ -1780,8 +1773,7 @@ int vp9_refining_search_sad_c(MACROBLOCK *x, } else { ref_mv->row += neighbors[best_site].row; ref_mv->col += neighbors[best_site].col; - best_address += (neighbors[best_site].row) * in_what_stride + - neighbors[best_site].col; + best_address = &in_what[ref_mv->row * in_what_stride + ref_mv->col]; } } @@ -1791,13 +1783,12 @@ int vp9_refining_search_sad_c(MACROBLOCK *x, if (bestsad < INT_MAX) return fn_ptr->vf(what, what_stride, best_address, in_what_stride, (unsigned int *)(&thissad)) + - mv_err_cost(&this_mv, center_mv, - mvjcost, mvcost, x->errorperbit); + mv_err_cost(&this_mv, center_mv, mvjcost, mvcost, x->errorperbit); else return INT_MAX; } -int vp9_refining_search_sadx4(MACROBLOCK *x, +int vp9_refining_search_sadx4(const MACROBLOCK *x, MV *ref_mv, int error_per_bit, int search_range, vp9_variance_fn_ptr_t *fn_ptr, int *mvjcost, int *mvcost[2], @@ -1819,7 +1810,7 @@ int vp9_refining_search_sadx4(MACROBLOCK *x, unsigned int bestsad = INT_MAX; MV fcenter_mv; - int *mvjsadcost = x->nmvjointsadcost; + const int *mvjsadcost = x->nmvjointsadcost; int *mvsadcost[2] = {x->nmvsadcost[0], x->nmvsadcost[1]}; fcenter_mv.row = center_mv->row >> 3; |