From 4dc70fa7f9a47096b5062f7d0600aafe4878dec4 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Fri, 21 Jun 2013 17:19:36 -0700 Subject: [PATCH] Don't re-allocate comp_pred buffers for each call to comp motion search. Instead, just allocate a few bytes on the stack, this is 4k, which isn't all that much. Change-Id: I82af6ee89e6ed01faaa23ff891ee7ced76df8c16 --- vp9/encoder/vp9_mcomp.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c index 0f10623..53b70ad 100644 --- a/vp9/encoder/vp9_mcomp.c +++ b/vp9/encoder/vp9_mcomp.c @@ -447,7 +447,7 @@ int vp9_find_best_sub_pixel_comp(MACROBLOCK *x, int offset; int usehp = xd->allow_high_precision_mv; - uint8_t *comp_pred = vpx_memalign(16, w * h * sizeof(uint8_t)); + DECLARE_ALIGNED_ARRAY(16, uint8_t, comp_pred, 64 * 64); uint8_t *y = xd->plane[0].pre[0].buf + (bestmv->as_mv.row) * xd->plane[0].pre[0].stride + bestmv->as_mv.col; @@ -597,8 +597,6 @@ int vp9_find_best_sub_pixel_comp(MACROBLOCK *x, bestmv->as_mv.row = br; bestmv->as_mv.col = bc; - vpx_free(comp_pred); - if ((abs(bestmv->as_mv.col - ref_mv->as_mv.col) > (MAX_FULL_PEL_VAL << 3)) || (abs(bestmv->as_mv.row - ref_mv->as_mv.row) > (MAX_FULL_PEL_VAL << 3))) return INT_MAX; @@ -2356,7 +2354,7 @@ int vp9_refining_search_8p_c(MACROBLOCK *x, int *mvsadcost[2] = {x->nmvsadcost[0], x->nmvsadcost[1]}; /* Compound pred buffer */ - uint8_t *comp_pred = vpx_memalign(16, w * h * sizeof(uint8_t)); + DECLARE_ALIGNED_ARRAY(16, uint8_t, comp_pred, 64 * 64); fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3; fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3; @@ -2420,10 +2418,8 @@ int vp9_refining_search_8p_c(MACROBLOCK *x, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvjcost, mvcost, x->errorperbit, xd->allow_high_precision_mv); - vpx_free(comp_pred); return besterr; } else { - vpx_free(comp_pred); return INT_MAX; } } -- 2.7.4