Fix compiler warnings on config_subframe_prob_update
Remove the unused codes under the experimental flag.
Change-Id: I4e1c176d13a58f6677f32d52bbfaa7f0aad4249d
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 7cc6179..fbdd0c0 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -3249,235 +3249,12 @@
}
}
#endif
-#if CONFIG_SUBFRAME_PROB_UPDATE
-// Calculate the token counts between subsequent subframe updates.
-static void get_coef_counts_diff(
- AV1_COMP *cpi, int index,
- av1_coeff_count coef_counts[TX_SIZES][PLANE_TYPES],
- unsigned int eob_counts[TX_SIZES][PLANE_TYPES][REF_TYPES][COEF_BANDS]
- [COEFF_CONTEXTS]) {
- int i, j, k, l, m, tx_size, val;
- const int max_idx = cpi->common.coef_probs_update_idx;
- const TX_MODE tx_mode = cpi->common.tx_mode;
- const int max_tx_size = tx_mode_to_biggest_tx_size[tx_mode];
- const SUBFRAME_STATS *subframe_stats = &cpi->subframe_stats;
-
- assert(max_idx < COEF_PROBS_BUFS);
-
- for (tx_size = 0; tx_size <= max_tx_size; ++tx_size)
- for (i = 0; i < PLANE_TYPES; ++i)
- for (j = 0; j < REF_TYPES; ++j)
- for (k = 0; k < COEF_BANDS; ++k)
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l) {
- if (index == max_idx) {
- val =
- cpi->common.counts.eob_branch[tx_size][i][j][k][l] -
- subframe_stats->eob_counts_buf[max_idx][tx_size][i][j][k][l];
- } else {
- val = subframe_stats
- ->eob_counts_buf[index + 1][tx_size][i][j][k][l] -
- subframe_stats->eob_counts_buf[index][tx_size][i][j][k][l];
- }
- assert(val >= 0);
- eob_counts[tx_size][i][j][k][l] = val;
-
- for (m = 0; m < ENTROPY_TOKENS; ++m) {
- if (index == max_idx) {
- val = cpi->td.rd_counts.coef_counts[tx_size][i][j][k][l][m] -
- subframe_stats
- ->coef_counts_buf[max_idx][tx_size][i][j][k][l][m];
- } else {
- val = subframe_stats
- ->coef_counts_buf[index + 1][tx_size][i][j][k][l][m] -
- subframe_stats
- ->coef_counts_buf[index][tx_size][i][j][k][l][m];
- }
- assert(val >= 0);
- coef_counts[tx_size][i][j][k][l][m] = val;
- }
- }
-}
-
-static void update_coef_probs_subframe(
- aom_writer *const bc, AV1_COMP *cpi, TX_SIZE tx_size,
- av1_coeff_stats branch_ct[COEF_PROBS_BUFS][TX_SIZES][PLANE_TYPES],
- av1_coeff_probs_model *new_coef_probs) {
- av1_coeff_probs_model *old_coef_probs = cpi->common.fc->coef_probs[tx_size];
- const aom_prob upd = DIFF_UPDATE_PROB;
- const int entropy_nodes_update = UNCONSTRAINED_NODES;
- int i, j, k, l, t;
- int stepsize = cpi->sf.coeff_prob_appx_step;
- const int max_idx = cpi->common.coef_probs_update_idx;
- int idx;
- unsigned int this_branch_ct[ENTROPY_NODES][COEF_PROBS_BUFS][2];
-
- switch (cpi->sf.use_fast_coef_updates) {
- case TWO_LOOP: {
- /* dry run to see if there is any update at all needed */
- int savings = 0;
- int update[2] = { 0, 0 };
- for (i = 0; i < PLANE_TYPES; ++i) {
- for (j = 0; j < REF_TYPES; ++j) {
- for (k = 0; k < COEF_BANDS; ++k) {
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l) {
- for (t = 0; t < ENTROPY_NODES; ++t) {
- for (idx = 0; idx <= max_idx; ++idx) {
- memcpy(this_branch_ct[t][idx],
- branch_ct[idx][tx_size][i][j][k][l][t],
- 2 * sizeof(this_branch_ct[t][idx][0]));
- }
- }
- for (t = 0; t < entropy_nodes_update; ++t) {
- aom_prob newp = new_coef_probs[i][j][k][l][t];
- const aom_prob oldp = old_coef_probs[i][j][k][l][t];
- int s, u = 0;
-
- if (t == PIVOT_NODE)
- s = av1_prob_update_search_model_subframe(
- this_branch_ct, old_coef_probs[i][j][k][l], &newp, upd,
- stepsize, max_idx);
- else
- s = av1_prob_update_search_subframe(this_branch_ct[t], oldp,
- &newp, upd, max_idx);
- if (s > 0 && newp != oldp) u = 1;
- if (u)
- savings += s - (int)(av1_cost_zero(upd));
- else
- savings -= (int)(av1_cost_zero(upd));
- update[u]++;
- }
- }
- }
- }
- }
-
- /* Is coef updated at all */
- if (update[1] == 0 || savings < 0) {
- aom_write_bit(bc, 0);
- return;
- }
- aom_write_bit(bc, 1);
- for (i = 0; i < PLANE_TYPES; ++i) {
- for (j = 0; j < REF_TYPES; ++j) {
- for (k = 0; k < COEF_BANDS; ++k) {
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l) {
- for (t = 0; t < ENTROPY_NODES; ++t) {
- for (idx = 0; idx <= max_idx; ++idx) {
- memcpy(this_branch_ct[t][idx],
- branch_ct[idx][tx_size][i][j][k][l][t],
- 2 * sizeof(this_branch_ct[t][idx][0]));
- }
- }
- for (t = 0; t < entropy_nodes_update; ++t) {
- aom_prob newp = new_coef_probs[i][j][k][l][t];
- aom_prob *oldp = old_coef_probs[i][j][k][l] + t;
- int s;
- int u = 0;
-
- if (t == PIVOT_NODE)
- s = av1_prob_update_search_model_subframe(
- this_branch_ct, old_coef_probs[i][j][k][l], &newp, upd,
- stepsize, max_idx);
- else
- s = av1_prob_update_search_subframe(this_branch_ct[t], *oldp,
- &newp, upd, max_idx);
- if (s > 0 && newp != *oldp) u = 1;
- aom_write(bc, u, upd);
- if (u) {
- /* send/use new probability */
- av1_write_prob_diff_update(bc, newp, *oldp);
- *oldp = newp;
- }
- }
- }
- }
- }
- }
- return;
- }
-
- case ONE_LOOP_REDUCED: {
- int updates = 0;
- int noupdates_before_first = 0;
- for (i = 0; i < PLANE_TYPES; ++i) {
- for (j = 0; j < REF_TYPES; ++j) {
- for (k = 0; k < COEF_BANDS; ++k) {
- for (l = 0; l < BAND_COEFF_CONTEXTS(k); ++l) {
- for (t = 0; t < ENTROPY_NODES; ++t) {
- for (idx = 0; idx <= max_idx; ++idx) {
- memcpy(this_branch_ct[t][idx],
- branch_ct[idx][tx_size][i][j][k][l][t],
- 2 * sizeof(this_branch_ct[t][idx][0]));
- }
- }
- for (t = 0; t < entropy_nodes_update; ++t) {
- aom_prob newp = new_coef_probs[i][j][k][l][t];
- aom_prob *oldp = old_coef_probs[i][j][k][l] + t;
- int s;
- int u = 0;
-
- if (t == PIVOT_NODE)
- s = av1_prob_update_search_model_subframe(
- this_branch_ct, old_coef_probs[i][j][k][l], &newp, upd,
- stepsize, max_idx);
- else
- s = av1_prob_update_search_subframe(this_branch_ct[t], *oldp,
- &newp, upd, max_idx);
- if (s > 0 && newp != *oldp) u = 1;
- updates += u;
- if (u == 0 && updates == 0) {
- noupdates_before_first++;
- continue;
- }
- if (u == 1 && updates == 1) {
- int v;
- // first update
- aom_write_bit(bc, 1);
- for (v = 0; v < noupdates_before_first; ++v)
- aom_write(bc, 0, upd);
- }
- aom_write(bc, u, upd);
- if (u) {
- /* send/use new probability */
- av1_write_prob_diff_update(bc, newp, *oldp);
- *oldp = newp;
- }
- }
- }
- }
- }
- }
- if (updates == 0) {
- aom_write_bit(bc, 0); // no updates
- }
- return;
- }
- default: assert(0);
- }
-}
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
#if !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
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];
TX_SIZE tx_size;
-#if CONFIG_SUBFRAME_PROB_UPDATE
- AV1_COMMON *cm = &cpi->common;
- SUBFRAME_STATS *subframe_stats = &cpi->subframe_stats;
- int i;
- av1_coeff_probs_model dummy_frame_coef_probs[PLANE_TYPES];
-
- if (cm->do_subframe_update &&
- cm->refresh_frame_context == REFRESH_FRAME_CONTEXT_BACKWARD) {
- av1_copy(cpi->common.fc->coef_probs,
- subframe_stats->enc_starting_coef_probs);
- for (i = 0; i <= cpi->common.coef_probs_update_idx; ++i) {
- get_coef_counts_diff(cpi, i, cpi->wholeframe_stats.coef_counts_buf[i],
- cpi->wholeframe_stats.eob_counts_buf[i]);
- }
- }
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
for (tx_size = 0; tx_size <= max_tx_size; ++tx_size) {
av1_coeff_stats frame_branch_ct[PLANE_TYPES];
@@ -3486,61 +3263,11 @@
(tx_size >= TX_16X16 && cpi->sf.tx_size_search_method == USE_TX_8X8)) {
aom_write_bit(w, 0);
} else {
-#if CONFIG_SUBFRAME_PROB_UPDATE
- if (cm->do_subframe_update &&
- cm->refresh_frame_context == REFRESH_FRAME_CONTEXT_BACKWARD) {
- unsigned int this_eob_counts_copy[PLANE_TYPES][REF_TYPES][COEF_BANDS]
- [COEFF_CONTEXTS];
- av1_coeff_count coef_counts_copy[PLANE_TYPES];
- av1_copy(this_eob_counts_copy, cpi->common.counts.eob_branch[tx_size]);
- av1_copy(coef_counts_copy, cpi->td.rd_counts.coef_counts[tx_size]);
- build_tree_distribution(cpi, tx_size, frame_branch_ct,
- frame_coef_probs);
- for (i = 0; i <= cpi->common.coef_probs_update_idx; ++i) {
- av1_copy(cpi->common.counts.eob_branch[tx_size],
- cpi->wholeframe_stats.eob_counts_buf[i][tx_size]);
- av1_copy(cpi->td.rd_counts.coef_counts[tx_size],
- cpi->wholeframe_stats.coef_counts_buf[i][tx_size]);
- build_tree_distribution(cpi, tx_size, cpi->branch_ct_buf[i][tx_size],
- dummy_frame_coef_probs);
- }
- av1_copy(cpi->common.counts.eob_branch[tx_size], this_eob_counts_copy);
- av1_copy(cpi->td.rd_counts.coef_counts[tx_size], coef_counts_copy);
-
- update_coef_probs_subframe(w, cpi, tx_size, cpi->branch_ct_buf,
- frame_coef_probs);
- } else {
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
- build_tree_distribution(cpi, tx_size, frame_branch_ct,
- frame_coef_probs);
- update_coef_probs_common(w, cpi, tx_size, frame_branch_ct,
- frame_coef_probs);
-#if CONFIG_SUBFRAME_PROB_UPDATE
- }
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
+ build_tree_distribution(cpi, tx_size, frame_branch_ct, frame_coef_probs);
+ update_coef_probs_common(w, cpi, tx_size, frame_branch_ct,
+ frame_coef_probs);
}
}
-
-#if CONFIG_SUBFRAME_PROB_UPDATE
- av1_copy(cm->starting_coef_probs, cm->fc->coef_probs);
- av1_copy(subframe_stats->coef_probs_buf[0], cm->fc->coef_probs);
- if (cm->do_subframe_update &&
- cm->refresh_frame_context == REFRESH_FRAME_CONTEXT_BACKWARD) {
- unsigned int eob_counts_copy[TX_SIZES][PLANE_TYPES][REF_TYPES][COEF_BANDS]
- [COEFF_CONTEXTS];
- av1_copy(eob_counts_copy, cm->counts.eob_branch);
- for (i = 1; i <= cpi->common.coef_probs_update_idx; ++i) {
- for (tx_size = 0; tx_size <= max_tx_size; ++tx_size)
- av1_full_to_model_counts(cm->counts.coef[tx_size],
- subframe_stats->coef_counts_buf[i][tx_size]);
- av1_copy(cm->counts.eob_branch, subframe_stats->eob_counts_buf[i]);
- av1_partial_adapt_probs(cm, 0, 0);
- av1_copy(subframe_stats->coef_probs_buf[i], cm->fc->coef_probs);
- }
- av1_copy(cm->fc->coef_probs, subframe_stats->coef_probs_buf[0]);
- av1_copy(cm->counts.eob_branch, eob_counts_copy);
- }
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
}
#endif // !(CONFIG_EC_ADAPT && CONFIG_NEW_TOKENSET)
#endif // !CONFIG_EC_ADAPT
diff --git a/av1/encoder/tokenize.c b/av1/encoder/tokenize.c
index f48493b..acdd12a 100644
--- a/av1/encoder/tokenize.c
+++ b/av1/encoder/tokenize.c
@@ -472,14 +472,8 @@
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_SUBFRAME_PROB_UPDATE
- const aom_prob(*coef_probs)[COEFF_CONTEXTS][UNCONSTRAINED_NODES] =
- cpi->subframe_stats.coef_probs_buf[cpi->common.coef_probs_update_idx]
- [txsize_sqr_map[tx_size]][type][ref];
-#else
aom_prob(*const coef_probs)[COEFF_CONTEXTS][UNCONSTRAINED_NODES] =
cpi->common.fc->coef_probs[txsize_sqr_map[tx_size]][type][ref];
-#endif // CONFIG_SUBFRAME_PROB_UPDATE
#endif // !CONFIG_NEW_TOKENSET
#if CONFIG_EC_ADAPT
FRAME_CONTEXT *ec_ctx = xd->tile_ctx;