Commit 716db10f authored by John Koleszar's avatar John Koleszar Committed by Gerrit Code Review
Browse files

Merge "Moved vp9_get_coef_band to header file" into experimental

parents 03f28c0a ae886d6b
......@@ -244,13 +244,6 @@ int vp9_get_coef_context(int * recent_energy, int token) {
return vp9_prev_token_class[token];
};
int vp9_get_coef_band(int coef_index) {
if (coef_index < 32)
return vp9_coef_bands[coef_index];
else
return 7;
}
void vp9_default_coef_probs(VP9_COMMON *pc) {
vpx_memcpy(pc->fc.coef_probs_4x4, default_coef_probs_4x4,
sizeof(pc->fc.coef_probs_4x4));
......
......@@ -122,6 +122,12 @@ static void vp9_reset_mb_tokens_context(MACROBLOCKD* const xd) {
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
}
extern const int vp9_coef_bands[32];
static int get_coef_band(int coef_index) {
if (coef_index < 32)
return vp9_coef_bands[coef_index];
else
return 7;
}
extern int vp9_get_coef_context(int * recent_energy, int token);
extern int vp9_get_coef_band(int coef_index);
#endif // VP9_COMMON_VP9_ENTROPY_H_
......@@ -65,7 +65,7 @@ static int get_signed(BOOL_DECODER *br, int value_to_sign) {
#define INCREMENT_COUNT(token) \
do { \
coef_counts[type][vp9_get_coef_band(c)][pt][token]++; \
coef_counts[type][get_coef_band(c)][pt][token]++; \
pt = vp9_get_coef_context(&recent_energy, token); \
} while (0)
......@@ -179,7 +179,7 @@ static int decode_coefs(VP9D_COMP *dx, const MACROBLOCKD *xd,
int val;
const uint8_t *cat6 = cat6_prob;
if (c >= seg_eob) break;
prob = coef_probs[type][vp9_get_coef_band(c)][pt];
prob = coef_probs[type][get_coef_band(c)][pt];
if (!vp9_read(br, prob[EOB_CONTEXT_NODE]))
break;
SKIP_START:
......@@ -187,7 +187,7 @@ SKIP_START:
if (!vp9_read(br, prob[ZERO_CONTEXT_NODE])) {
INCREMENT_COUNT(ZERO_TOKEN);
++c;
prob = coef_probs[type][vp9_get_coef_band(c)][pt];
prob = coef_probs[type][get_coef_band(c)][pt];
goto SKIP_START;
}
// ONE_CONTEXT_NODE_0_
......@@ -251,7 +251,7 @@ SKIP_START:
}
if (c < seg_eob)
coef_counts[type][vp9_get_coef_band(c)][pt][DCT_EOB_TOKEN]++;
coef_counts[type][get_coef_band(c)][pt][DCT_EOB_TOKEN]++;
A0[aidx] = L0[lidx] = (c > !type);
if (txfm_size >= TX_8X8 && type != PLANE_TYPE_Y2) {
......
......@@ -456,7 +456,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
t0 = (vp9_dct_value_tokens_ptr + x)->Token;
/* Consider both possible successor states. */
if (next < default_eob) {
band = vp9_get_coef_band(i + 1);
band = get_coef_band(i + 1);
pt = trellis_get_coeff_context(t0);
rate0 +=
mb->token_costs[tx_size][type][band][pt][tokens[next][0].token];
......@@ -503,7 +503,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
t0 = t1 = (vp9_dct_value_tokens_ptr + x)->Token;
}
if (next < default_eob) {
band = vp9_get_coef_band(i + 1);
band = get_coef_band(i + 1);
if (t0 != DCT_EOB_TOKEN) {
pt = trellis_get_coeff_context(t0);
rate0 += mb->token_costs[tx_size][type][band][pt][
......@@ -538,7 +538,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
* add a new trellis node, but we do need to update the costs.
*/
else {
band = vp9_get_coef_band(i + 1);
band = get_coef_band(i + 1);
t0 = tokens[next][0].token;
t1 = tokens[next][1].token;
/* Update the cost of each path if we're past the EOB token. */
......@@ -555,7 +555,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
}
/* Now pick the best path through the whole trellis. */
band = vp9_get_coef_band(i + 1);
band = get_coef_band(i + 1);
VP9_COMBINEENTROPYCONTEXTS(pt, *a, *l);
rate0 = tokens[next][0].rate;
rate1 = tokens[next][1].rate;
......
......@@ -489,24 +489,24 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
for (; c < eob; c++) {
int v = qcoeff_ptr[scan[c]];
int t = vp9_dct_value_tokens_ptr[v].Token;
cost += token_costs[vp9_get_coef_band(c)][pt][t];
cost += token_costs[get_coef_band(c)][pt][t];
cost += vp9_dct_value_cost_ptr[v];
pt = vp9_get_coef_context(&recent_energy, t);
}
if (c < seg_eob)
cost += mb->hybrid_token_costs[tx_size][type][vp9_get_coef_band(c)]
cost += mb->hybrid_token_costs[tx_size][type][get_coef_band(c)]
[pt][DCT_EOB_TOKEN];
} else {
int recent_energy = 0;
for (; c < eob; c++) {
int v = qcoeff_ptr[scan[c]];
int t = vp9_dct_value_tokens_ptr[v].Token;
cost += token_costs[vp9_get_coef_band(c)][pt][t];
cost += token_costs[get_coef_band(c)][pt][t];
cost += vp9_dct_value_cost_ptr[v];
pt = vp9_get_coef_context(&recent_energy, t);
}
if (c < seg_eob)
cost += mb->token_costs[tx_size][type][vp9_get_coef_band(c)]
cost += mb->token_costs[tx_size][type][get_coef_band(c)]
[pt][DCT_EOB_TOKEN];
}
......
......@@ -219,7 +219,7 @@ static void tokenize_b(VP9_COMP *cpi,
seg_eob = 0;
do {
const int band = vp9_get_coef_band(c);
const int band = get_coef_band(c);
int token;
if (c < eob) {
......@@ -774,7 +774,7 @@ static INLINE void stuff_b(VP9_COMP *cpi,
VP9_COMBINEENTROPYCONTEXTS(pt, a_ec, l_ec);
band = vp9_get_coef_band((type == PLANE_TYPE_Y_NO_DC) ? 1 : 0);
band = get_coef_band((type == PLANE_TYPE_Y_NO_DC) ? 1 : 0);
t->Token = DCT_EOB_TOKEN;
t->context_tree = probs[type][band][pt];
t->skip_eob_node = 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment