0 LR ctx 3
diff --git a/apps/aomenc.c b/apps/aomenc.c
index a9f74b8..3768964 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -1645,6 +1645,9 @@
fprintf(stdout,
"Tool setting (Others) : Palette (%d), "
"ParityHiding (%d), "
+#if CONFIG_ADAPTIVE_HR
+ "AdaptiveHighRange (%d), "
+#endif // CONFIG_ADAPTIVE_HR
#if CONFIG_IBC_SR_EXT
"IntraBCExt (%d), "
#endif // CONFIG_IBC_SR_EXT
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 68cf339..e873331 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1459,6 +1459,7 @@
tool_cfg->enable_short_refresh_frame_flags =
extra_cfg->enable_short_refresh_frame_flags;
#endif // CONFIG_REFRESH_FLAG
+
// Set Quantization related configuration.
q_cfg->using_qm = extra_cfg->enable_qm;
q_cfg->qm_minlevel = extra_cfg->qm_min;
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index f43adad..c607734 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -63,14 +63,18 @@
av1_default_coeff_base_lf_multi_cdfs[index]);
av1_copy(cm->fc->coeff_base_lf_eob_cdf,
av1_default_coeff_base_lf_eob_multi_cdfs[index]);
+#if !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_br_lf_cdf, av1_default_coeff_lps_lf_multi_cdfs[index]);
av1_copy(cm->fc->coeff_br_cdf, av1_default_coeff_lps_multi_cdfs[index]);
+#endif // !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_base_cdf, av1_default_coeff_base_multi_cdfs[index]);
av1_copy(cm->fc->idtx_sign_cdf, av1_default_idtx_sign_cdfs[index]);
av1_copy(cm->fc->coeff_base_cdf_idtx,
av1_default_coeff_base_multi_cdfs_idtx[index]);
+#if !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_br_cdf_idtx,
av1_default_coeff_lps_multi_cdfs_idtx[index]);
+#endif // !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_base_eob_cdf,
av1_default_coeff_base_eob_multi_cdfs[index]);
av1_copy(cm->fc->eob_flag_cdf16, av1_default_eob_multi16_cdfs[index]);
@@ -81,7 +85,9 @@
av1_copy(cm->fc->eob_flag_cdf512, av1_default_eob_multi512_cdfs[index]);
av1_copy(cm->fc->eob_flag_cdf1024, av1_default_eob_multi1024_cdfs[index]);
av1_copy(cm->fc->coeff_base_ph_cdf, av1_default_coeff_base_ph_cdfs[index]);
+#if !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_br_ph_cdf, av1_default_coeff_br_ph_cdfs[index]);
+#endif // !CONFIG_ADAPTIVE_HR
av1_copy(cm->fc->coeff_base_bob_cdf,
av1_default_coeff_base_bob_multi_cdfs[index]);
}
@@ -149,12 +155,16 @@
RESET_CDF_COUNTER(fc->coeff_base_bob_cdf, 3);
RESET_CDF_COUNTER(fc->coeff_base_lf_cdf, LF_BASE_SYMBOLS);
RESET_CDF_COUNTER(fc->coeff_base_lf_eob_cdf, LF_BASE_SYMBOLS - 1);
+#if !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->coeff_br_lf_cdf, BR_CDF_SIZE);
+#endif // !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->coeff_base_cdf, 4);
RESET_CDF_COUNTER(fc->idtx_sign_cdf, 2);
RESET_CDF_COUNTER(fc->coeff_base_cdf_idtx, 4);
+#if !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->coeff_br_cdf_idtx, BR_CDF_SIZE);
RESET_CDF_COUNTER(fc->coeff_br_cdf, BR_CDF_SIZE);
+#endif // !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->inter_single_mode_cdf, INTER_SINGLE_MODES);
#if CONFIG_EXTENDED_WARP_PREDICTION
RESET_CDF_COUNTER(fc->inter_warp_mode_cdf, 2);
@@ -436,6 +446,8 @@
}
RESET_CDF_COUNTER(fc->coeff_base_ph_cdf, NUM_BASE_LEVELS + 2);
+#if !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->coeff_br_ph_cdf, BR_CDF_SIZE);
+#endif // !CONFIG_ADAPTIVE_HR
RESET_CDF_COUNTER(fc->cctx_type_cdf, CCTX_TYPES);
}
diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index d84c233..0efcca2 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -83,7 +83,7 @@
#define NUM_BASE_LEVELS 2
#if CONFIG_ADAPTIVE_HR
-#define BR_NUM_ITERATIONS 1
+#define BR_NUM_ITERATIONS 0
#else
#define BR_NUM_ITERATIONS 4
#endif // CONFIG_ADAPTIVE_HR
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index 8536f22..d8497b4 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -199,18 +199,24 @@
[CDF_SIZE(4)];
aom_cdf_prob idtx_sign_cdf[IDTX_SIGN_CONTEXTS][CDF_SIZE(2)];
aom_cdf_prob coeff_base_cdf_idtx[IDTX_SIG_COEF_CONTEXTS][CDF_SIZE(4)];
+#if !CONFIG_ADAPTIVE_HR
aom_cdf_prob coeff_br_cdf_idtx[IDTX_LEVEL_CONTEXTS][CDF_SIZE(BR_CDF_SIZE)];
+#endif // !CONFIG_ADAPTIVE_HR
aom_cdf_prob coeff_base_lf_cdf[TX_SIZES][PLANE_TYPES][LF_SIG_COEF_CONTEXTS]
[CDF_SIZE(LF_BASE_SYMBOLS)];
aom_cdf_prob coeff_base_lf_eob_cdf[TX_SIZES][PLANE_TYPES]
[SIG_COEF_CONTEXTS_EOB]
[CDF_SIZE(LF_BASE_SYMBOLS - 1)];
+#if !CONFIG_ADAPTIVE_HR
aom_cdf_prob coeff_br_lf_cdf[PLANE_TYPES][LF_LEVEL_CONTEXTS]
[CDF_SIZE(BR_CDF_SIZE)];
aom_cdf_prob coeff_br_cdf[PLANE_TYPES][LEVEL_CONTEXTS][CDF_SIZE(BR_CDF_SIZE)];
+#endif // !CONFIG_ADAPTIVE_HR
aom_cdf_prob coeff_base_ph_cdf[COEFF_BASE_PH_CONTEXTS]
[CDF_SIZE(NUM_BASE_LEVELS + 2)];
+#if !CONFIG_ADAPTIVE_HR
aom_cdf_prob coeff_br_ph_cdf[COEFF_BR_PH_CONTEXTS][CDF_SIZE(BR_CDF_SIZE)];
+#endif // !CONFIG_ADAPTIVE_HR
aom_cdf_prob inter_single_mode_cdf[INTER_SINGLE_MODE_CONTEXTS]
[CDF_SIZE(INTER_SINGLE_MODES)];
diff --git a/av1/common/hr_coding.c b/av1/common/hr_coding.c
index 6fb9673..4279c6a 100644
--- a/av1/common/hr_coding.c
+++ b/av1/common/hr_coding.c
@@ -64,13 +64,13 @@
#if CONFIG_ADAPTIVE_HR
-static int adaptive_table[] = { 10, 20, 40, 75, 135 };
+static const int adaptive_table[] = { 5, 10, 15, 35, 70, 135 };
+static const int table_size = sizeof(adaptive_table) / sizeof(int);
static int get_adaptive_param(int ctx) {
- const int table_size = sizeof(adaptive_table) / sizeof(int);
int m = 0;
- while (m < table_size && ctx >= adaptive_table[m]) ++m;
- return m + 1;
+ while (m < table_size && ctx > adaptive_table[m]) ++m;
+ return m;
}
void write_truncated_rice(aom_writer *w, int level, int m, int k, int cmax) {
@@ -81,8 +81,7 @@
write_exp_golomb(w, level - (cmax << m), k);
} else {
const int mask = (1 << m) - 1;
- aom_write_literal(w, 0, q);
- aom_write_literal(w, 1, 1);
+ aom_write_literal(w, 1, q + 1);
aom_write_literal(w, level & mask, m);
}
}
diff --git a/av1/common/txb_common.h b/av1/common/txb_common.h
index c35cce4..92c2a16 100644
--- a/av1/common/txb_common.h
+++ b/av1/common/txb_common.h
@@ -270,12 +270,12 @@
int mag;
// Note: AOMMIN(level, 5) is useless for decoder since level < 5.
- mag = clip_max5[levels[1]]; // { 0, 1 }
- mag += clip_max5[levels[(1 << bwl) + TX_PAD_HOR]]; // { 1, 0 }
+ mag = clip_max3[levels[1]]; // { 0, 1 }
+ mag += clip_max3[levels[(1 << bwl) + TX_PAD_HOR]]; // { 1, 0 }
if (tx_class == TX_CLASS_2D) {
- mag += clip_max5[levels[(1 << bwl) + TX_PAD_HOR + 1]]; // { 1, 1 }
- mag += clip_max5[levels[2]]; // { 0, 2 }
- mag += clip_max5[levels[(2 << bwl) + (2 << TX_PAD_HOR_LOG2)]]; // { 2, 0 }
+ mag += clip_max3[levels[(1 << bwl) + TX_PAD_HOR + 1]]; // { 1, 1 }
+ mag += clip_max3[levels[2]]; // { 0, 2 }
+ mag += clip_max3[levels[(2 << bwl) + (2 << TX_PAD_HOR_LOG2)]]; // { 2, 0 }
} else if (tx_class == TX_CLASS_VERT) {
mag += clip_max3[levels[(2 << bwl) + (2 << TX_PAD_HOR_LOG2)]]; // { 2, 0 }
mag += clip_max3[levels[(3 << bwl) + (3 << TX_PAD_HOR_LOG2)]]; // { 3, 0 }
@@ -524,11 +524,11 @@
int mag;
// Note: AOMMIN(level, 3) is useless for decoder since level < 5.
levels = levels + get_padded_idx(coeff_idx, bwl);
- mag = AOMMIN(levels[1], 5); // { 0, 1 }
- mag += AOMMIN(levels[(1 << bwl) + TX_PAD_HOR], 5); // { 1, 0 }
- mag += AOMMIN(levels[(1 << bwl) + TX_PAD_HOR + 1], 5); // { 1, 1 }
- mag += AOMMIN(levels[2], 5); // { 0, 2 }
- mag += AOMMIN(levels[(2 << bwl) + (2 << TX_PAD_HOR_LOG2)], 5); // { 2, 0 }
+ mag = AOMMIN(levels[1], 3); // { 0, 1 }
+ mag += AOMMIN(levels[(1 << bwl) + TX_PAD_HOR], 3); // { 1, 0 }
+ mag += AOMMIN(levels[(1 << bwl) + TX_PAD_HOR + 1], 3); // { 1, 1 }
+ mag += AOMMIN(levels[2], 3); // { 0, 2 }
+ mag += AOMMIN(levels[(2 << bwl) + (2 << TX_PAD_HOR_LOG2)], 3); // { 2, 0 }
int ctx = (mag + 1) >> 1;
const int row = coeff_idx >> bwl;
const int col = coeff_idx - (row << bwl);
diff --git a/av1/decoder/decodetxb.c b/av1/decoder/decodetxb.c
index 4c5edb2..19974d6 100644
--- a/av1/decoder/decodetxb.c
+++ b/av1/decoder/decodetxb.c
@@ -52,6 +52,8 @@
const int coeff_ctx = get_lower_levels_ctx_lf_2d(levels, pos, bwl);
level += aom_read_symbol(r, base_lf_cdf[coeff_ctx], LF_BASE_SYMBOLS,
ACCT_INFO("level", "base_lf_cdf"));
+
+#if !CONFIG_ADAPTIVE_HR
if (level > LF_NUM_BASE_LEVELS) {
const int br_ctx = get_br_lf_ctx_2d(levels, pos, bwl);
aom_cdf_prob *cdf = br_lf_cdf[br_ctx];
@@ -62,6 +64,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
} else {
const int coeff_ctx = get_lower_levels_ctx_2d(levels, pos, bwl
#if CONFIG_CHROMA_TX_COEFF_CODING
@@ -71,6 +74,8 @@
);
level += aom_read_symbol(r, base_cdf[coeff_ctx], 4,
ACCT_INFO("level", "base_cdf"));
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int br_ctx = get_br_ctx_2d(levels, pos, bwl);
aom_cdf_prob *cdf = br_cdf[br_ctx];
@@ -81,6 +86,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
levels[get_padded_idx(pos, bwl)] = level;
}
@@ -100,6 +106,8 @@
const int coeff_ctx = get_lower_levels_lf_ctx(levels, pos, bwl, tx_class);
level += aom_read_symbol(r, base_lf_cdf[coeff_ctx], LF_BASE_SYMBOLS,
ACCT_INFO("level", "base_lf_cdf"));
+
+#if !CONFIG_ADAPTIVE_HR
if (level > LF_NUM_BASE_LEVELS) {
const int br_ctx = get_br_lf_ctx(levels, pos, bwl, tx_class);
aom_cdf_prob *cdf = br_lf_cdf[br_ctx];
@@ -110,6 +118,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
} else {
const int coeff_ctx = get_lower_levels_ctx(levels, pos, bwl, tx_class
#if CONFIG_CHROMA_TX_COEFF_CODING
@@ -119,6 +128,8 @@
);
level += aom_read_symbol(r, base_cdf[coeff_ctx], 4,
ACCT_INFO("level", "base_cdf"));
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int br_ctx = get_br_ctx(levels, pos, bwl, tx_class);
aom_cdf_prob *cdf = br_cdf[br_ctx];
@@ -129,6 +140,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
levels[get_padded_idx(pos, bwl)] = level;
}
@@ -145,6 +157,8 @@
const int nsymbs = 4;
int level = aom_read_symbol(r, base_cdf[coeff_ctx], nsymbs,
ACCT_INFO("level", "base_cdf"));
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int br_ctx = get_br_ctx_skip(levels, pos, bwl);
aom_cdf_prob *cdf = br_cdf[br_ctx];
@@ -155,6 +169,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
levels[get_padded_idx_left(pos, bwl)] = level;
}
}
@@ -417,7 +432,11 @@
memset(levels_buf, 0, sizeof(*levels_buf) * TX_PAD_2D);
memset(signs_buf, 0, sizeof(*signs_buf) * TX_PAD_2D);
base_cdf_arr base_cdf = ec_ctx->coeff_base_cdf_idtx;
+#if !CONFIG_ADAPTIVE_HR
br_cdf_arr br_cdf = ec_ctx->coeff_br_cdf_idtx;
+#else
+ br_cdf_arr br_cdf;
+#endif // !CONFIG_ADAPTIVE_HR
const int bob = av1_get_max_eob(tx_size) - bob_data->eob;
{
const int pos = scan[bob];
@@ -427,6 +446,8 @@
int level = aom_read_symbol(r, cdf_bob, nsymbs_bob,
ACCT_INFO("level", "cdf_bob")) +
1;
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int br_ctx = get_br_ctx_skip(levels, pos, bwl);
aom_cdf_prob *cdf = br_cdf[br_ctx];
@@ -437,6 +458,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
levels[get_padded_idx_left(pos, bwl)] = level;
}
read_coeffs_forward_2d(r, bob + 1, eob_data->eob - 1, scan, bwl, levels,
@@ -505,6 +527,7 @@
int ctx_idx = get_base_ctx_ph(levels, pos, bwl, tx_class);
q_index = aom_read_symbol(r, base_cdf_ph[ctx_idx], 4, ACCT_INFO("q_index"));
+#if !CONFIG_ADAPTIVE_HR
if (q_index > NUM_BASE_LEVELS) {
ctx_idx = get_par_br_ctx(levels, pos, bwl, tx_class);
aom_cdf_prob *cdf_br = br_cdf_ph[ctx_idx];
@@ -515,6 +538,8 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+
+#endif // !CONFIG_ADAPTIVE_HR
assert(q_index <= MAX_BASE_BR_RANGE);
uint8_t level = (q_index << 1) + parity;
levels[get_padded_idx(pos, bwl)] = level;
@@ -611,6 +636,8 @@
level += aom_read_symbol(r, cdf, LF_BASE_SYMBOLS - 1,
ACCT_INFO("level", "coeff_base_lf_eob_cdf")) +
1;
+
+#if !CONFIG_ADAPTIVE_HR
if (level > LF_NUM_BASE_LEVELS) {
const int br_ctx = get_br_ctx_lf_eob(pos, tx_class);
cdf = ec_ctx->coeff_br_lf_cdf[plane_type][br_ctx];
@@ -621,12 +648,15 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
} else {
aom_cdf_prob *cdf =
ec_ctx->coeff_base_eob_cdf[txs_ctx][plane_type][coeff_ctx];
level +=
aom_read_symbol(r, cdf, 3, ACCT_INFO("level", "coeff_base_eob_cdf")) +
1;
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int br_ctx = 0; /* get_lf_ctx_eob */
cdf = ec_ctx->coeff_br_cdf[plane_type][br_ctx];
@@ -637,6 +667,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
levels[get_padded_idx(pos, bwl)] = level;
}
@@ -648,9 +679,14 @@
if (*eob > 1) {
base_lf_cdf_arr base_lf_cdf =
ec_ctx->coeff_base_lf_cdf[txs_ctx][plane_type];
- br_cdf_arr br_lf_cdf = ec_ctx->coeff_br_lf_cdf[plane_type];
base_cdf_arr base_cdf = ec_ctx->coeff_base_cdf[txs_ctx][plane_type];
+#if !CONFIG_ADAPTIVE_HR
+ br_cdf_arr br_lf_cdf = ec_ctx->coeff_br_lf_cdf[plane_type];
br_cdf_arr br_cdf = ec_ctx->coeff_br_cdf[plane_type];
+#else
+ br_cdf_arr br_lf_cdf = NULL;
+ br_cdf_arr br_cdf = NULL;
+#endif // !CONFIG_ADAPTIVE_HR
if (tx_class == TX_CLASS_2D) {
read_coeffs_reverse_2d(r, 1, *eob - 2, scan, bwl, levels, base_lf_cdf,
@@ -669,7 +705,13 @@
}
if (is_hidden) {
read_coeff_hidden(r, tx_class, scan, bwl, levels, (sum_abs1 & 1),
- ec_ctx->coeff_base_ph_cdf, ec_ctx->coeff_br_ph_cdf);
+ ec_ctx->coeff_base_ph_cdf
+#if !CONFIG_ADAPTIVE_HR
+ , ec_ctx->coeff_br_ph_cdf
+#else
+ , NULL
+#endif // !CONFIG_ADAPTIVE_HR
+ );
} else {
read_coeffs_reverse(r, tx_class, 0, 0, scan, bwl, levels, base_lf_cdf,
br_lf_cdf, plane, base_cdf, br_cdf);
@@ -691,7 +733,13 @@
}
if (is_hidden) {
read_coeff_hidden(r, tx_class, scan, bwl, levels, (sum_abs1 & 1),
- ec_ctx->coeff_base_ph_cdf, ec_ctx->coeff_br_ph_cdf);
+ ec_ctx->coeff_base_ph_cdf
+#if !CONFIG_ADAPTIVE_HR
+ , ec_ctx->coeff_br_ph_cdf
+#else
+ , NULL
+#endif // !CONFIG_ADAPTIVE_HR
+ );
} else {
read_coeffs_reverse(r, tx_class, 0, 0, scan, bwl, levels, base_lf_cdf,
br_lf_cdf, plane, base_cdf, br_cdf);
diff --git a/av1/encoder/encodeframe_utils.c b/av1/encoder/encodeframe_utils.c
index 5c1a663..87b88d2 100644
--- a/av1/encoder/encodeframe_utils.c
+++ b/av1/encoder/encodeframe_utils.c
@@ -1300,13 +1300,17 @@
LF_BASE_SYMBOLS);
AVERAGE_CDF(ctx_left->coeff_base_lf_eob_cdf, ctx_tr->coeff_base_lf_eob_cdf,
LF_BASE_SYMBOLS - 1);
+#if !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->coeff_br_lf_cdf, ctx_tr->coeff_br_lf_cdf, BR_CDF_SIZE);
+#endif // !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->coeff_base_cdf, ctx_tr->coeff_base_cdf, 4);
AVERAGE_CDF(ctx_left->idtx_sign_cdf, ctx_tr->idtx_sign_cdf, 2);
AVERAGE_CDF(ctx_left->coeff_base_cdf_idtx, ctx_tr->coeff_base_cdf_idtx, 4);
+#if !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->coeff_br_cdf_idtx, ctx_tr->coeff_br_cdf_idtx,
BR_CDF_SIZE);
AVERAGE_CDF(ctx_left->coeff_br_cdf, ctx_tr->coeff_br_cdf, BR_CDF_SIZE);
+#endif // !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->inter_single_mode_cdf, ctx_tr->inter_single_mode_cdf,
INTER_SINGLE_MODES);
@@ -1631,7 +1635,9 @@
}
AVERAGE_CDF(ctx_left->coeff_base_ph_cdf, ctx_tr->coeff_base_ph_cdf, 4);
+#if !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->coeff_br_ph_cdf, ctx_tr->coeff_br_ph_cdf, 4);
+#endif // !CONFIG_ADAPTIVE_HR
AVERAGE_CDF(ctx_left->cctx_type_cdf, ctx_tr->cctx_type_cdf, CCTX_TYPES);
}
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index b7a2ce8..653fbea 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -771,6 +771,8 @@
aom_write_symbol(w, AOMMIN(level, 3),
ec_ctx->coeff_base_cdf_idtx[coeff_ctx], 4);
}
+
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
// level is above 1.
const int base_range = level - 1 - NUM_BASE_LEVELS;
@@ -782,6 +784,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
// Loop to code all signs, bypass levels in the transform block
for (int c = eob - 1; c >= 0; --c) {
@@ -817,6 +820,7 @@
int ctx_id = get_base_ctx_ph(levels, pos, bwl, tx_class);
aom_write_symbol(w, AOMMIN(q_index, 3), base_cdf_ph[ctx_id], 4);
+#if !CONFIG_ADAPTIVE_HR
if (q_index > NUM_BASE_LEVELS) {
ctx_id = get_par_br_ctx(levels, pos, bwl, tx_class);
aom_cdf_prob *cdf_br = br_cdf_ph[ctx_id];
@@ -827,6 +831,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
void av1_write_coeffs_txb(const AV1_COMMON *const cm, MACROBLOCK *const x,
@@ -895,7 +900,6 @@
plane);
const int bwl = get_txb_bwl(tx_size);
-
bool enable_parity_hiding = cm->features.allow_parity_hiding &&
!xd->lossless[xd->mi[0]->segment_id] &&
plane == PLANE_TYPE_Y &&
@@ -939,6 +943,7 @@
const int row = pos >> bwl;
const int col = pos - (row << bwl);
int limits = get_lf_limits(row, col, tx_class, plane);
+#if !CONFIG_ADAPTIVE_HR
if (limits) {
if (level > LF_NUM_BASE_LEVELS) {
const int base_range =
@@ -963,6 +968,7 @@
}
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
int num_nz = 0;
@@ -979,7 +985,13 @@
const tran_low_t v = tcoeff[pos];
const tran_low_t level = abs(v);
write_coeff_hidden(w, tx_class, scan, bwl, levels, level,
- ec_ctx->coeff_base_ph_cdf, ec_ctx->coeff_br_ph_cdf);
+ ec_ctx->coeff_base_ph_cdf
+#if !CONFIG_ADAPTIVE_HR
+ , ec_ctx->coeff_br_ph_cdf
+ #else
+ , NULL
+ #endif // !CONFIG_ADAPTIVE_HR
+ );
} else {
const int c = 0;
const int pos = scan[c];
@@ -1020,6 +1032,7 @@
const int row = pos >> bwl;
const int col = pos - (row << bwl);
int limits = get_lf_limits(row, col, tx_class, plane);
+#if !CONFIG_ADAPTIVE_HR
if (limits) {
if (level > LF_NUM_BASE_LEVELS) {
const int base_range =
@@ -1044,6 +1057,7 @@
}
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
#if DEBUG_EXTQUANT
@@ -2100,7 +2114,12 @@
int32_t *tmp_sign
#endif // CONFIG_CONTEXT_DERIVATION
,
- int plane) {
+ int plane
+#if CONFIG_ADAPTIVE_HR
+ ,
+ const uint8_t *levels
+#endif // CONFIG_ADAPTIVE_HR
+) {
int cost = 0;
const int row = ci >> bwl;
const int col = ci - (row << bwl);
@@ -2557,7 +2576,12 @@
tmp_sign
#endif // CONFIG_CONTEXT_DERIVATION
,
- plane);
+ plane
+#if CONFIG_ADAPTIVE_HR
+ ,
+ levels
+#endif // CONFIG_ADAPTIVE_HR
+ );
int64_t dist_new_eob = dist;
int64_t rd_new_eob = RDCOST(rdmult, rate_coeff_eob, dist_new_eob);
int rateeobup = rate_coeff_eob;
@@ -2572,7 +2596,12 @@
tmp_sign
#endif // CONFIG_CONTEXT_DERIVATION
,
- plane);
+ plane
+#if CONFIG_ADAPTIVE_HR
+ ,
+ levels
+#endif // CONFIG_ADAPTIVE_HR
+ );
const int64_t dist_new_eob_low = dist_low;
const int64_t rd_new_eob_low =
RDCOST(rdmult, rate_coeff_eob_low, dist_new_eob_low);
@@ -3091,7 +3120,12 @@
xd->tmp_sign
#endif // CONFIG_CONTEXT_DERIVATION
,
- plane);
+ plane
+#if CONFIG_ADAPTIVE_HR
+ ,
+ levels
+#endif // CONFIG_ADAPTIVE_HR
+ );
const tran_low_t tqc = tcoeff[ci];
const tran_low_t dqc = dqcoeff[ci];
const int64_t dist = get_coeff_dist(tqc, dqc, shift);
@@ -3122,8 +3156,7 @@
for (; si >= 1; --si) {
update_coeff_simple(&accu_rate, si, eob, tx_class, bwl, rdmult, shift,
dequant, scan, txb_costs, tcoeff, qcoeff, dqcoeff,
- levels, iqmatrix, coef_info, enable_parity_hiding,
- plane);
+ levels, iqmatrix, coef_info, enable_parity_hiding, plane);
}
// DC position
@@ -3480,6 +3513,7 @@
->coeff_base_multi_skip[cdf_idx][coeff_ctx][AOMMIN(level, 3)];
}
#endif
+#if !CONFIG_ADAPTIVE_HR
if (level > NUM_BASE_LEVELS) {
const int base_range = level - 1 - NUM_BASE_LEVELS;
const int br_ctx = get_br_ctx_skip(levels, pos, bwl);
@@ -3500,6 +3534,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
for (int c = eob - 1; c >= 0; --c) {
const int pos = scan[c];
@@ -3540,6 +3575,7 @@
++td->counts->coeff_base_ph_multi[cdf_idx][coeff_ctx][AOMMIN(level, 3)];
#endif // CONFIG_ENTROPY_STATS
+#if !CONFIG_ADAPTIVE_HR
if (q_index > NUM_BASE_LEVELS) {
int br_ctx = get_par_br_ctx(levels, pos, bwl, tx_class);
aom_cdf_prob *cdf_br = br_cdf_ph[br_ctx];
@@ -3559,6 +3595,7 @@
if (k < BR_CDF_SIZE - 1) break;
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
void av1_update_and_record_txb_context(int plane, int block, int blk_row,
int blk_col, BLOCK_SIZE plane_bsize,
@@ -3796,6 +3833,7 @@
const int row = pos >> bwl;
const int col = pos - (row << bwl);
int limits = get_lf_limits(row, col, tx_class, plane);
+#if !CONFIG_ADAPTIVE_HR
if (limits) {
if (level > LF_NUM_BASE_LEVELS) {
const int base_range = level - 1 - LF_NUM_BASE_LEVELS;
@@ -3842,6 +3880,7 @@
}
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
bool is_hidden = false;
@@ -3856,7 +3895,11 @@
const int level = abs(qcoeff[scan[0]]);
update_coeff_ctx_hiden(tx_class, scan, bwl, levels, level,
ec_ctx->coeff_base_ph_cdf,
+#if !CONFIG_ADAPTIVE_HR
ec_ctx->coeff_br_ph_cdf
+#else
+ NULL
+#endif // !CONFIG_ADAPTIVE_HR
#if CONFIG_ENTROPY_STATS
,
td, cdf_idx
@@ -3932,6 +3975,7 @@
const int row = pos >> bwl;
const int col = pos - (row << bwl);
int limits = get_lf_limits(row, col, tx_class, plane);
+#if !CONFIG_ADAPTIVE_HR
if (limits) {
if (level > LF_NUM_BASE_LEVELS) {
const int base_range = level - 1 - LF_NUM_BASE_LEVELS;
@@ -3978,6 +4022,7 @@
}
}
}
+#endif // !CONFIG_ADAPTIVE_HR
}
// Update the context needed to code the DC sign (if applicable)
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 218b323..e3f114e 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -1105,8 +1105,11 @@
int br_lf_rate[BR_CDF_SIZE];
int prev_cost_lf = 0;
int i, j;
+
+#if !CONFIG_ADAPTIVE_HR
av1_cost_tokens_from_cdf(br_lf_rate, fc->coeff_br_lf_cdf[plane][ctx],
NULL);
+#endif // !CONFIG_ADAPTIVE_HR
for (i = 0; i < COEFF_BASE_RANGE; i += BR_CDF_SIZE - 1) {
for (j = 0; j < BR_CDF_SIZE - 1; j++) {
pcost->lps_lf_cost[ctx][i + j] = prev_cost_lf + br_lf_rate[j];
@@ -1127,7 +1130,9 @@
int br_rate[BR_CDF_SIZE];
int prev_cost = 0;
int i, j;
+#if !CONFIG_ADAPTIVE_HR
av1_cost_tokens_from_cdf(br_rate, fc->coeff_br_cdf[plane][ctx], NULL);
+#endif // !CONFIG_ADAPTIVE_HR
// printf("br_rate: ");
// for(j = 0; j < BR_CDF_SIZE; j++)
// printf("%4d ", br_rate[j]);
@@ -1178,7 +1183,9 @@
int br_rate_skip[BR_CDF_SIZE];
int prev_cost_skip = 0;
int i, j;
+#if !CONFIG_ADAPTIVE_HR
av1_cost_tokens_from_cdf(br_rate_skip, fc->coeff_br_cdf_idtx[ctx], NULL);
+#endif // !CONFIG_ADAPTIVE_HR
for (i = 0; i < COEFF_BASE_RANGE; i += BR_CDF_SIZE - 1) {
for (j = 0; j < BR_CDF_SIZE - 1; j++) {
pcost->lps_cost_skip[ctx][i + j] = prev_cost_skip + br_rate_skip[j];
@@ -1209,7 +1216,9 @@
int br_ph_rate[BR_CDF_SIZE];
int prev_cost = 0;
int i, j;
+#if !CONFIG_ADAPTIVE_HR
av1_cost_tokens_from_cdf(br_ph_rate, fc->coeff_br_ph_cdf[ctx], NULL);
+#endif // !CONFIG_ADAPTIVE_HR
for (i = 0; i < COEFF_BASE_RANGE; i += BR_CDF_SIZE - 1) {
for (j = 0; j < BR_CDF_SIZE - 1; j++) {
pcost->lps_ph_cost[ctx][i + j] = prev_cost + br_ph_rate[j];
diff --git a/tools/aom_entropy_optimizer.c b/tools/aom_entropy_optimizer.c
index 4a37aaf..7b7bf2c 100644
--- a/tools/aom_entropy_optimizer.c
+++ b/tools/aom_entropy_optimizer.c
@@ -1901,6 +1901,7 @@
"BASE_PH_CONTEXTS][CDF_SIZE(NUM_BASE_LEVELS + 2)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#if !CONFIG_ADAPTIVE_HR
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = COEFF_BR_PH_CONTEXTS;
cts_each_dim[2] = BR_CDF_SIZE;
@@ -1910,6 +1911,7 @@
"av1_default_coeff_br_ph_cdfs[TOKEN_CDF_Q_CTXS][COEFF_BR_"
"PH_CONTEXTS][CDF_SIZE(BR_CDF_SIZE)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#endif // !CONFIG_ADAPTIVE_HR
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = TX_SIZES;
@@ -1936,6 +1938,7 @@
"[CDF_SIZE(LF_BASE_SYMBOLS - 1)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#if !CONFIG_ADAPTIVE_HR
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = PLANE_TYPES;
cts_each_dim[2] = LF_LEVEL_CONTEXTS;
@@ -1959,6 +1962,7 @@
"[PLANE_TYPES][LEVEL_CONTEXTS]"
"[CDF_SIZE(BR_CDF_SIZE)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#endif // !CONFIG_ADAPTIVE_HR
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = TX_SIZES;
@@ -1972,6 +1976,7 @@
"[CDF_SIZE(NUM_BASE_LEVELS + 2)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#if !CONFIG_ADAPTIVE_HR
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = IDTX_LEVEL_CONTEXTS;
cts_each_dim[2] = BR_CDF_SIZE;
@@ -1982,6 +1987,8 @@
"[TOKEN_CDF_Q_CTXS][IDTX_LEVEL_CONTEXTS]"
"[CDF_SIZE(BR_CDF_SIZE)]",
1, &total_count, 0, mem_wanted, "Coefficients");
+#endif // !CONFIG_ADAPTIVE_HR
+
cts_each_dim[0] = TOKEN_CDF_Q_CTXS;
cts_each_dim[1] = IDTX_SIG_COEF_CONTEXTS;
cts_each_dim[2] = NUM_BASE_LEVELS + 2;