Refactor lv_map decoder code
Define MAX_BASE_BR_RANGE macro to simplify the code
Replace ((row < 2) && (col < 2)) by ((row | col) < 2)
Change-Id: Ic838b42b18023352bfbfa4bfaaad2976e85c3b3d
diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index 320eb33..1ced783 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -79,6 +79,7 @@
#define COEFF_CONTEXT_BITS 6
#define COEFF_CONTEXT_MASK ((1 << COEFF_CONTEXT_BITS) - 1)
+#define MAX_BASE_BR_RANGE (COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1)
#define BASE_CONTEXT_POSITION_NUM 12
diff --git a/av1/common/txb_common.h b/av1/common/txb_common.h
index 9c37324..29ad05b 100644
--- a/av1/common/txb_common.h
+++ b/av1/common/txb_common.h
@@ -365,12 +365,12 @@
const int col = c - (row << bwl);
const int stride = (1 << bwl) + TX_PAD_HOR;
const int pos = row * stride + col;
- int mag =
- AOMMIN(levels[pos + 1], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1) +
- AOMMIN(levels[pos + stride], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1) +
- AOMMIN(levels[pos + 1 + stride], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1);
+ int mag = AOMMIN(levels[pos + 1], MAX_BASE_BR_RANGE) +
+ AOMMIN(levels[pos + stride], MAX_BASE_BR_RANGE) +
+ AOMMIN(levels[pos + 1 + stride], MAX_BASE_BR_RANGE);
mag = AOMMIN((mag + 1) >> 1, 6);
- if ((row < 2) && (col < 2)) return mag + 7;
+ //((row | col) < 2) is equivalent to ((row < 2) && (col < 2))
+ if ((row | col) < 2) return mag + 7;
return mag + 14;
}
@@ -385,9 +385,9 @@
const TX_CLASS tx_class = tx_type_to_class[tx_type];
get_level_mag_with_txclass(levels, stride, row, col, nb_mag, tx_class);
- mag = AOMMIN(nb_mag[0], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1) +
- AOMMIN(nb_mag[1], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1) +
- AOMMIN(nb_mag[2], COEFF_BASE_RANGE + NUM_BASE_LEVELS + 1);
+ mag = AOMMIN(nb_mag[0], MAX_BASE_BR_RANGE) +
+ AOMMIN(nb_mag[1], MAX_BASE_BR_RANGE) +
+ AOMMIN(nb_mag[2], MAX_BASE_BR_RANGE);
mag = AOMMIN((mag + 1) >> 1, 6);
if (c == 0) return mag;
if (tx_class == TX_CLASS_2D) {
diff --git a/av1/decoder/decodetxb.c b/av1/decoder/decodetxb.c
index 09d6ec1..60ad2be 100644
--- a/av1/decoder/decodetxb.c
+++ b/av1/decoder/decodetxb.c
@@ -286,7 +286,7 @@
} else {
sign = aom_read_bit(r, ACCT_STR);
}
- if (level > NUM_BASE_LEVELS + COEFF_BASE_RANGE) {
+ if (level >= MAX_BASE_BR_RANGE) {
level += read_golomb(xd, r);
}
cul_level += level;