Refactor transform size coding Introduce the transform block partition depth macro definition. Change-Id: I218dc77a77c8e967da4d270d4ec0d7691b712a5f
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index e25dcf8..ecad3f4 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -863,8 +863,8 @@ }, }; -static const aom_prob default_tx_size_prob[TX_SIZES - 1][TX_SIZE_CONTEXTS] - [TX_SIZES - 1] = { +static const aom_prob default_tx_size_prob[MAX_TX_DEPTH][TX_SIZE_CONTEXTS] + [MAX_TX_DEPTH] = { { // Max tx_size is 8X8 { 100 }, @@ -1593,7 +1593,7 @@ const FRAME_COUNTS *counts = &cm->counts; if (cm->tx_mode == TX_MODE_SELECT) { - for (i = 0; i < TX_SIZES - 1; ++i) { + for (i = 0; i < MAX_TX_DEPTH; ++i) { for (j = 0; j < TX_SIZE_CONTEXTS; ++j) aom_tree_merge_probs(av1_tx_size_tree[i], pre_fc->tx_size_probs[i][j], counts->tx_size[i][j], fc->tx_size_probs[i][j]);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index 3043114..31ab65d 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -125,7 +125,7 @@ #else aom_prob comp_ref_prob[REF_CONTEXTS][COMP_REFS - 1]; #endif // CONFIG_EXT_REFS - aom_prob tx_size_probs[TX_SIZES - 1][TX_SIZE_CONTEXTS][TX_SIZES - 1]; + aom_prob tx_size_probs[MAX_TX_DEPTH][TX_SIZE_CONTEXTS][MAX_TX_DEPTH]; #if CONFIG_VAR_TX aom_prob txfm_partition_prob[TXFM_PARTITION_CONTEXTS]; #if CONFIG_EXT_TX && CONFIG_RECT_TX @@ -237,7 +237,7 @@ // to use forward updates for the coeff probs, and as such it does not really // belong into this structure. unsigned int tx_size_totals[TX_SIZES]; - unsigned int tx_size[TX_SIZES - 1][TX_SIZE_CONTEXTS][TX_SIZES]; + unsigned int tx_size[MAX_TX_DEPTH][TX_SIZE_CONTEXTS][TX_SIZES]; #if CONFIG_VAR_TX unsigned int txfm_partition[TXFM_PARTITION_CONTEXTS][2]; #if CONFIG_EXT_TX && CONFIG_RECT_TX
diff --git a/av1/common/enums.h b/av1/common/enums.h index 0a1f7a3..701d4b9 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h
@@ -148,6 +148,8 @@ TX_INVALID = 255 // Invalid transform size } TX_SIZE; +#define MAX_TX_DEPTH (TX_32X32 - TX_4X4) + #define MAX_TX_SIZE_LOG2 5 #define MAX_TX_SIZE (1 << MAX_TX_SIZE_LOG2) #define MIN_TX_SIZE_LOG2 2
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index e39d08e..7ccb216 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -3661,7 +3661,7 @@ #endif if (cm->tx_mode == TX_MODE_SELECT) { - for (i = 0; i < TX_SIZES - 1; ++i) + for (i = 0; i < MAX_TX_DEPTH; ++i) for (j = 0; j < TX_SIZE_CONTEXTS; ++j) for (k = 0; k < i + 1; ++k) av1_diff_update_prob(&r, &fc->tx_size_probs[i][j][k], ACCT_STR);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index df27fbc..ade4b42 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -74,7 +74,7 @@ static struct av1_token palette_color_encodings[PALETTE_MAX_SIZE - 1] [PALETTE_MAX_SIZE]; #endif // CONFIG_PALETTE -static const struct av1_token tx_size_encodings[TX_SIZES - 1][TX_SIZES] = { +static const struct av1_token tx_size_encodings[MAX_TX_DEPTH][TX_SIZES] = { { { 0, 1 }, { 1, 1 } }, // Max tx_size is 8X8 { { 0, 1 }, { 2, 2 }, { 3, 2 } }, // Max tx_size is 16X16 { { 0, 1 }, { 2, 2 }, { 6, 3 }, { 7, 3 } }, // Max tx_size is 32X32 @@ -2904,7 +2904,7 @@ FRAME_COUNTS *counts) { if (cm->tx_mode == TX_MODE_SELECT) { int i, j; - for (i = 0; i < TX_SIZES - 1; ++i) + for (i = 0; i < MAX_TX_DEPTH; ++i) for (j = 0; j < TX_SIZE_CONTEXTS; ++j) prob_diff_update(av1_tx_size_tree[i], cm->fc->tx_size_probs[i][j], counts->tx_size[i][j], i + 2, w);
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c index 5015837..4a2bc3f 100644 --- a/av1/encoder/rd.c +++ b/av1/encoder/rd.c
@@ -110,7 +110,7 @@ } #endif // CONFIG_PALETTE - for (i = 0; i < TX_SIZES - 1; ++i) + for (i = 0; i < MAX_TX_DEPTH; ++i) for (j = 0; j < TX_SIZE_CONTEXTS; ++j) av1_cost_tokens(cpi->tx_size_cost[i][j], fc->tx_size_probs[i][j], av1_tx_size_tree[i]);