Merge NEW_TOKENSET experiment into EC_MULTISYMBOL.
Change-Id: I0ed6d8f2b6a83641f65096cf41fcde94e70d94d4
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index eb444d7..8f8c52f 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -887,7 +887,7 @@
}
#endif
-#if CONFIG_NEW_TOKENSET && !CONFIG_LV_MAP
+#if CONFIG_EC_MULTISYMBOL && !CONFIG_LV_MAP
static void pack_mb_tokens(aom_writer *w, const TOKENEXTRA **tp,
const TOKENEXTRA *const stop,
aom_bit_depth_t bit_depth, const TX_SIZE tx_size,
@@ -951,7 +951,7 @@
*tp = p;
}
-#else // CONFIG_NEW_TOKENSET
+#else // CONFIG_EC_MULTISYMBOL && !CONFIG_LV_MAP
#if !CONFIG_LV_MAP
static void pack_mb_tokens(aom_writer *w, const TOKENEXTRA **tp,
const TOKENEXTRA *const stop,
@@ -1042,7 +1042,7 @@
*tp = p;
}
#endif // !CONFIG_LV_MAP
-#endif // CONFIG_NEW_TOKENSET
+#endif // CONFIG_EC_MULTISYMBOL !CONFIG_LV_MAP
#else // !CONFIG_PVQ
static PVQ_INFO *get_pvq_block(PVQ_QUEUE *pvq_q) {
PVQ_INFO *pvq;
@@ -3113,7 +3113,7 @@
}
#if !CONFIG_LV_MAP
-#if !CONFIG_PVQ && !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#if !CONFIG_PVQ && !CONFIG_EC_ADAPT
static void build_tree_distribution(AV1_COMP *cpi, TX_SIZE tx_size,
av1_coeff_stats *coef_branch_ct,
av1_coeff_probs_model *coef_probs) {
@@ -3144,7 +3144,7 @@
}
}
-#if !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#if !CONFIG_EC_ADAPT
static void update_coef_probs_common(aom_writer *const bc, AV1_COMP *cpi,
TX_SIZE tx_size,
av1_coeff_stats *frame_branch_ct,
@@ -3297,7 +3297,7 @@
}
#endif
-#if !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#if !CONFIG_EC_ADAPT
static void update_coef_probs(AV1_COMP *cpi, aom_writer *w) {
const TX_MODE tx_mode = cpi->common.tx_mode;
const TX_SIZE max_tx_size = tx_mode_to_biggest_tx_size[tx_mode];
@@ -3316,7 +3316,7 @@
}
}
}
-#endif // !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#endif // !CONFIG_EC_ADAPT
#endif // !CONFIG_EC_ADAPT
#endif // !CONFIG_LV_MAP
@@ -4719,9 +4719,9 @@
av1_write_txb_probs(cpi, header_bc);
#else
#if !CONFIG_PVQ
-#if !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#if !CONFIG_EC_ADAPT
update_coef_probs(cpi, header_bc);
-#endif // !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
+#endif // !CONFIG_EC_ADAPT
#endif // CONFIG_PVQ
#endif // CONFIG_LV_MAP
@@ -4906,9 +4906,7 @@
#endif // CONFIG_GLOBAL_MOTION
}
#if CONFIG_EC_MULTISYMBOL && !CONFIG_EC_ADAPT
-#if CONFIG_NEW_TOKENSET
av1_coef_head_cdfs(fc);
-#endif
av1_coef_pareto_cdfs(fc);
for (i = 0; i < NMV_CONTEXTS; ++i) av1_set_mv_cdfs(&fc->nmvc[i]);
av1_set_mode_cdfs(cm);
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index a6b67c1..f70ab89 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -128,12 +128,12 @@
static INLINE unsigned int get_token_bit_costs(
unsigned int token_costs[2][COEFF_CONTEXTS][ENTROPY_TOKENS], int skip_eob,
int ctx, int token) {
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
(void)skip_eob;
return token_costs[token == ZERO_TOKEN || token == EOB_TOKEN][ctx][token];
#else
return token_costs[skip_eob][ctx][token];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
}
#define USE_GREEDY_OPTIMIZE_B 0
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 28c9138..b714887 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1104,12 +1104,12 @@
int c, cost;
const int16_t *scan = scan_order->scan;
const int16_t *nb = scan_order->neighbors;
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
const int ref = is_inter_block(mbmi);
aom_prob *blockz_probs =
cm->fc->blockzero_probs[txsize_sqr_map[tx_size]][type][ref];
-#endif // CONFIG_NEW_TOKENSET
+#endif // CONFIG_EC_MULTISYMBOL
#if CONFIG_HIGHBITDEPTH
const int cat6_bits = av1_get_cat6_extrabits_size(tx_size, xd->bd);
@@ -1124,12 +1124,12 @@
(void)cm;
if (eob == 0) {
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
// single eob token
cost = av1_cost_bit(blockz_probs[pt], 0);
#else
cost = token_costs[0][0][pt][EOB_TOKEN];
-#endif // CONFIG_NEW_TOKENSET
+#endif // CONFIG_EC_MULTISYBMOL
} else {
if (use_fast_coef_costing) {
int band_left = *band_count++;
@@ -1138,11 +1138,11 @@
int v = qcoeff[0];
int16_t prev_t;
cost = av1_get_token_cost(v, &prev_t, cat6_bits);
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
cost += (*token_costs)[!prev_t][pt][prev_t];
#else
cost += (*token_costs)[0][pt][prev_t];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
token_cache[0] = av1_pt_energy_class[prev_t];
++token_costs;
@@ -1154,11 +1154,11 @@
v = qcoeff[rc];
cost += av1_get_token_cost(v, &t, cat6_bits);
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
cost += (*token_costs)[!t][!prev_t][t];
#else
cost += (*token_costs)[!prev_t][!prev_t][t];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
prev_t = t;
if (!--band_left) {
band_left = *band_count++;
@@ -1167,7 +1167,7 @@
}
// eob token
- if (band_left || CONFIG_NEW_TOKENSET)
+ if (band_left || CONFIG_EC_MULTISYMBOL)
cost += (*token_costs)[0][!prev_t][EOB_TOKEN];
} else { // !use_fast_coef_costing
@@ -1176,22 +1176,22 @@
// dc token
int v = qcoeff[0];
int16_t tok;
-#if !CONFIG_NEW_TOKENSET
+#if !CONFIG_EC_MULTISYMBOL
unsigned int(*tok_cost_ptr)[COEFF_CONTEXTS][ENTROPY_TOKENS];
-#endif
+#endif // !CONFIG_EC_MULTISYMBOL
cost = av1_get_token_cost(v, &tok, cat6_bits);
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
cost += (*token_costs)[!tok][pt][tok];
#else
cost += (*token_costs)[0][pt][tok];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
token_cache[0] = av1_pt_energy_class[tok];
++token_costs;
-#if !CONFIG_NEW_TOKENSET
+#if !CONFIG_EC_MULTISYMBOL
tok_cost_ptr = &((*token_costs)[!tok]);
-#endif
+#endif // !CONFIG_EC_MULTISYMBOL
// ac tokens
for (c = 1; c < eob; c++) {
@@ -1200,23 +1200,23 @@
v = qcoeff[rc];
cost += av1_get_token_cost(v, &tok, cat6_bits);
pt = get_coef_context(nb, token_cache, c);
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
cost += (*token_costs)[!tok][pt][tok];
#else
cost += (*tok_cost_ptr)[pt][tok];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
token_cache[rc] = av1_pt_energy_class[tok];
if (!--band_left) {
band_left = *band_count++;
++token_costs;
}
-#if !CONFIG_NEW_TOKENSET
+#if !CONFIG_EC_MULTISYMBOL
tok_cost_ptr = &((*token_costs)[!tok]);
-#endif
+#endif // !CONFIG_EC_MULTISYMBOL
}
// eob token
- if (band_left || CONFIG_NEW_TOKENSET) {
+ if (band_left || CONFIG_EC_MULTISYMBOL) {
pt = get_coef_context(nb, token_cache, c);
cost += (*token_costs)[0][pt][EOB_TOKEN];
}
diff --git a/av1/encoder/tokenize.c b/av1/encoder/tokenize.c
index acdd12a..01ca36c 100644
--- a/av1/encoder/tokenize.c
+++ b/av1/encoder/tokenize.c
@@ -314,7 +314,7 @@
blk_row);
}
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
static INLINE void add_token(TOKENEXTRA **t,
aom_cdf_prob (*tail_cdf)[CDF_SIZE(ENTROPY_TOKENS)],
aom_cdf_prob (*head_cdf)[CDF_SIZE(ENTROPY_TOKENS)],
@@ -329,24 +329,18 @@
(*t)++;
}
-#else // CONFIG_NEW_TOKENSET
-static INLINE void add_token(
- TOKENEXTRA **t, const aom_prob *context_tree,
-#if CONFIG_EC_MULTISYMBOL
- aom_cdf_prob (*token_cdf)[CDF_SIZE(ENTROPY_TOKENS)],
-#endif // CONFIG_EC_MULTISYMBOL
- int32_t extra, uint8_t token, uint8_t skip_eob_node, unsigned int *counts) {
+#else // CONFIG_EC_MULTISYMBOL
+static INLINE void add_token(TOKENEXTRA **t, const aom_prob *context_tree,
+ int32_t extra, uint8_t token,
+ uint8_t skip_eob_node, unsigned int *counts) {
(*t)->token = token;
(*t)->extra = extra;
(*t)->context_tree = context_tree;
-#if CONFIG_EC_MULTISYMBOL
- (*t)->token_cdf = token_cdf;
-#endif // CONFIG_EC_MULTISYMBOL
(*t)->skip_eob_node = skip_eob_node;
(*t)++;
++counts[token];
}
-#endif // CONFIG_NEW_TOKENSET
+#endif // CONFIG_EC_MULTISYMBOL
#endif // !CONFIG_PVQ || CONFIG_VAR_TX
#if CONFIG_PALETTE
@@ -471,16 +465,16 @@
const int ref = is_inter_block(mbmi);
unsigned int(*const counts)[COEFF_CONTEXTS][ENTROPY_TOKENS] =
td->rd_counts.coef_counts[txsize_sqr_map[tx_size]][type][ref];
-#if !CONFIG_NEW_TOKENSET
+#if !CONFIG_EC_MULTISYMBOL
aom_prob(*const coef_probs)[COEFF_CONTEXTS][UNCONSTRAINED_NODES] =
cpi->common.fc->coef_probs[txsize_sqr_map[tx_size]][type][ref];
-#endif // !CONFIG_NEW_TOKENSET
+#endif // !CONFIG_EC_MULTISYMBOL
#if CONFIG_EC_ADAPT
FRAME_CONTEXT *ec_ctx = xd->tile_ctx;
#elif CONFIG_EC_MULTISYMBOL
FRAME_CONTEXT *ec_ctx = cpi->common.fc;
#endif
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
aom_cdf_prob(
*const coef_head_cdfs)[COEFF_CONTEXTS][CDF_SIZE(ENTROPY_TOKENS)] =
ec_ctx->coef_head_cdfs[txsize_sqr_map[tx_size]][type][ref];
@@ -492,12 +486,8 @@
int eob_val;
int first_val = 1;
#else
-#if CONFIG_EC_MULTISYMBOL
- aom_cdf_prob(*const coef_cdfs)[COEFF_CONTEXTS][CDF_SIZE(ENTROPY_TOKENS)] =
- ec_ctx->coef_cdfs[txsize_sqr_map[tx_size]][type][ref];
-#endif
int skip_eob = 0;
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
const int seg_eob = get_tx_eob(&cpi->common.seg, segment_id, tx_size);
unsigned int(*const eob_branch)[COEFF_CONTEXTS] =
td->counts->eob_branch[txsize_sqr_map[tx_size]][type][ref];
@@ -511,7 +501,7 @@
nb = scan_order->neighbors;
c = 0;
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
if (eob == 0)
add_token(&t, &coef_tail_cdfs[band[c]][pt], &coef_head_cdfs[band[c]][pt], 1,
1, 0, BLOCK_Z_TOKEN);
@@ -554,11 +544,8 @@
av1_get_token_extra(v, &token, &extra);
- add_token(&t, coef_probs[band[c]][pt],
-#if CONFIG_EC_MULTISYMBOL
- &coef_cdfs[band[c]][pt],
-#endif
- extra, (uint8_t)token, (uint8_t)skip_eob, counts[band[c]][pt]);
+ add_token(&t, coef_probs[band[c]][pt], extra, (uint8_t)token,
+ (uint8_t)skip_eob, counts[band[c]][pt]);
token_cache[scan[c]] = av1_pt_energy_class[token];
++c;
@@ -566,14 +553,11 @@
skip_eob = (token == ZERO_TOKEN);
}
if (c < seg_eob) {
- add_token(&t, coef_probs[band[c]][pt],
-#if CONFIG_EC_MULTISYMBOL
- NULL,
-#endif
- 0, EOB_TOKEN, 0, counts[band[c]][pt]);
+ add_token(&t, coef_probs[band[c]][pt], 0, EOB_TOKEN, 0,
+ counts[band[c]][pt]);
++eob_branch[band[c]][pt];
}
-#endif // CONFIG_NEW_TOKENSET
+#endif // CONFIG_EC_MULTISYMBOL
#if CONFIG_COEF_INTERLEAVE
t->token = EOSB_TOKEN;
diff --git a/av1/encoder/tokenize.h b/av1/encoder/tokenize.h
index 3928111..098d3d1 100644
--- a/av1/encoder/tokenize.h
+++ b/av1/encoder/tokenize.h
@@ -35,14 +35,12 @@
} TOKENVALUE;
typedef struct {
-#if CONFIG_NEW_TOKENSET
+#if CONFIG_EC_MULTISYMBOL
aom_cdf_prob (*tail_cdf)[CDF_SIZE(ENTROPY_TOKENS)];
aom_cdf_prob (*head_cdf)[CDF_SIZE(ENTROPY_TOKENS)];
int eob_val;
int first_val;
-#elif CONFIG_EC_MULTISYMBOL
- aom_cdf_prob (*token_cdf)[CDF_SIZE(ENTROPY_TOKENS)];
-#endif
+#endif // CONFIG_EC_MULTISYMBOL
const aom_prob *context_tree;
EXTRABIT extra;
uint8_t token;