ref: e3ce2b2ab30c5ec7d92e099b507ddc2f2bb0434a
parent: 91d223bd5c3ece5edc28d048a866d1c0fb39bdc7
author: Ronald S. Bultje <rbultje@google.com>
date: Fri Jun 28 06:21:25 EDT 2013
Minor change to prevent one level of dereference in cost_coeffs(). 4x4: 234 -> 236 cycles 8x8: 878 -> 888 cycles 16x16: 3664 -> 3550 cycles 32x32: 18134 -> 17392 cycles Change-Id: I37a51bfbb0060a3a54f09c6045c14a989811ed78
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -386,27 +386,26 @@
// single eob token
cost += token_costs[0][0][pt][DCT_EOB_TOKEN];
} else {
- int t, v, prev_rc = 0;
+ int v, prev_t;
// dc token
v = qcoeff_ptr[0];
- t = vp9_dct_value_tokens_ptr[v].token;
- cost += token_costs[0][0][pt][t] + vp9_dct_value_cost_ptr[v];
- token_cache[0] = vp9_pt_energy_class[t];
+ prev_t = vp9_dct_value_tokens_ptr[v].token;
+ cost += token_costs[0][0][pt][prev_t] + vp9_dct_value_cost_ptr[v];
+ token_cache[0] = vp9_pt_energy_class[prev_t];
// ac tokens
for (c = 1; c < eob; c++) {
const int rc = scan[c];
- int band = get_coef_band(band_translate, c);
+ const int band = get_coef_band(band_translate, c);
+ int t;
v = qcoeff_ptr[rc];
t = vp9_dct_value_tokens_ptr[v].token;
pt = vp9_get_coef_context(scan, nb, pad, token_cache, c, default_eob);
- // as an index at some level
- cost += token_costs[!token_cache[prev_rc]][band][pt][t] +
- vp9_dct_value_cost_ptr[v];
+ cost += token_costs[!prev_t][band][pt][t] + vp9_dct_value_cost_ptr[v];
token_cache[rc] = vp9_pt_energy_class[t];
- prev_rc = rc;
+ prev_t = t;
}
// eob token
--
⑨