shithub: libvpx

Download patch

ref: 7731e53839be5e6e3a21d4efd25b9a8522b28bb5
parent: d6264f9adffddbb5596fe9a686e0f9b35450053a
parent: e3ce2b2ab30c5ec7d92e099b507ddc2f2bb0434a
author: Ronald S. Bultje <rbultje@google.com>
date: Fri Jun 28 15:36:56 EDT 2013

Merge "Minor change to prevent one level of dereference in cost_coeffs()."

--- 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