FG8 combined test: Test 27 Bypass coding of y_second_mode (related to CONFIG_AIMC) STATS_CHANGED
diff --git a/av1/common/entropy.c b/av1/common/entropy.c index ba828e7..ee46d8f 100644 --- a/av1/common/entropy.c +++ b/av1/common/entropy.c
@@ -409,7 +409,9 @@ #if CONFIG_AIMC RESET_CDF_COUNTER(fc->y_mode_set_cdf, INTRA_MODE_SETS); RESET_CDF_COUNTER(fc->y_mode_idx_cdf_0, FIRST_MODE_COUNT); +#if !TEST_27 RESET_CDF_COUNTER(fc->y_mode_idx_cdf_1, SECOND_MODE_COUNT); +#endif // !TEST_27 #else RESET_CDF_COUNTER(fc->y_mode_cdf, INTRA_MODES); #endif // CONFIG_AIMC
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index f215e83..b109c52 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -246,7 +246,7 @@ 29340, 31013, 31870), 75 }, }; - +#if !TEST_27 static const aom_cdf_prob default_y_second_mode_cdf[Y_MODE_CONTEXTS][CDF_SIZE(SECOND_MODE_COUNT)] = { { AOM_CDF16(2614, 4872, 7327, 9645, 11546, 13349, 15504, 17424, 19397, @@ -259,7 +259,7 @@ 19690, 21835, 25356, 27731, 29157, 30362), 76 }, }; - +#endif // !TEST_27 static const aom_cdf_prob default_uv_mode_cdf[UV_MODE_CONTEXTS][CDF_SIZE(UV_INTRA_MODES - 1)] = { { AOM_CDF13(13848, 18930, 20641, 22133, 23986, 25450, 28075, 28950, 29740, @@ -287,6 +287,7 @@ { AOM_CDF13(7000, 12000, 14000, 16000, 17000, 22000, 26000, 27000, 28000, 29000, 30000, 31000) } }; +#if !TEST_27 static const aom_cdf_prob default_y_second_mode_cdf[Y_MODE_CONTEXTS][CDF_SIZE(SECOND_MODE_COUNT)] = { { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, @@ -296,6 +297,7 @@ { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432, 20480, 22528, 24576, 26624, 28672, 30720) } }; +#endif // !TEST_27 static const aom_cdf_prob default_uv_mode_cdf[UV_MODE_CONTEXTS][CDF_SIZE(UV_INTRA_MODES - 1)] = { { AOM_CDF13(20545, 22597, 24087, 24753, 24995, 25621, 26273, 27089, 28510, @@ -8556,7 +8558,9 @@ #if CONFIG_AIMC av1_copy(fc->y_mode_set_cdf, default_y_mode_set_cdf); av1_copy(fc->y_mode_idx_cdf_0, default_y_first_mode_cdf); +#if !TEST_27 av1_copy(fc->y_mode_idx_cdf_1, default_y_second_mode_cdf); +#endif // !TEST_27 #else av1_copy(fc->y_mode_cdf, default_if_y_mode_cdf); #endif // CONFIG_AIMC @@ -9085,8 +9089,10 @@ INTRA_MODE_SETS); CUMULATIVE_AVERAGE_CDF(ctx_left->y_mode_idx_cdf_0, ctx_tr->y_mode_idx_cdf_0, FIRST_MODE_COUNT); +#if !TEST_27 CUMULATIVE_AVERAGE_CDF(ctx_left->y_mode_idx_cdf_1, ctx_tr->y_mode_idx_cdf_1, SECOND_MODE_COUNT); +#endif // !TEST_27 #else CUMULATIVE_AVERAGE_CDF(ctx_left->y_mode_cdf, ctx_tr->y_mode_cdf, INTRA_MODES); #endif // CONFIG_AIMC @@ -9511,7 +9517,9 @@ #if CONFIG_AIMC SHIFT_CDF(ctx_ptr->y_mode_set_cdf, INTRA_MODE_SETS); SHIFT_CDF(ctx_ptr->y_mode_idx_cdf_0, FIRST_MODE_COUNT); +#if !TEST_27 SHIFT_CDF(ctx_ptr->y_mode_idx_cdf_1, SECOND_MODE_COUNT); +#endif // !TEST_27 #else SHIFT_CDF(ctx_ptr->y_mode_cdf, INTRA_MODES); #endif // CONFIG_AIMC @@ -9980,8 +9988,10 @@ INTRA_MODE_SETS); AVERAGE_CDF(ctx_left->y_mode_idx_cdf_0, ctx_tr->y_mode_idx_cdf_0, FIRST_MODE_COUNT); +#if !TEST_27 AVERAGE_CDF(ctx_left->y_mode_idx_cdf_1, ctx_tr->y_mode_idx_cdf_1, SECOND_MODE_COUNT); +#endif // !TEST_27 #else AVERAGE_CDF(ctx_left->y_mode_cdf, ctx_tr->y_mode_cdf, INTRA_MODES); #endif // CONFIG_AIMC
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index 411c0dd..8a6778a 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -581,7 +581,9 @@ // y mode cdf aom_cdf_prob y_mode_set_cdf[CDF_SIZE(INTRA_MODE_SETS)]; aom_cdf_prob y_mode_idx_cdf_0[Y_MODE_CONTEXTS][CDF_SIZE(FIRST_MODE_COUNT)]; +#if !TEST_27 aom_cdf_prob y_mode_idx_cdf_1[Y_MODE_CONTEXTS][CDF_SIZE(SECOND_MODE_COUNT)]; +#endif // !TEST_27 aom_cdf_prob uv_mode_cdf[UV_MODE_CONTEXTS][CDF_SIZE(UV_INTRA_MODES - 1)]; aom_cdf_prob cfl_cdf[CFL_CONTEXTS][CDF_SIZE(2)]; #endif // CONFIG_AIMC
diff --git a/av1/common/enums.h b/av1/common/enums.h index 90dc0e6..3df0fa9 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h
@@ -29,6 +29,8 @@ #undef MAX_SB_SIZE +#define TEST_27 1 // literal coding of y_second_mode + #define BAWP_BUGFIX 1 #define ADJUST_SUPER_RES_Q 1
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 6ec926a..72f2836 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -2153,10 +2153,14 @@ aom_read_symbol(r, ec_ctx->y_mode_idx_cdf_0[context], FIRST_MODE_COUNT, ACCT_INFO("mode_idx", "y_mode_idx_cdf_0")); } else { - mode_idx = - FIRST_MODE_COUNT + (mode_set_index - 1) * SECOND_MODE_COUNT + - aom_read_symbol(r, ec_ctx->y_mode_idx_cdf_1[context], SECOND_MODE_COUNT, - ACCT_INFO("mode_idx", "y_mode_idx_cdf_1")); + mode_idx = FIRST_MODE_COUNT + (mode_set_index - 1) * SECOND_MODE_COUNT + +#if TEST_27 + aom_read_literal(r, 4, ACCT_INFO("mode_idx")); +#else + aom_read_symbol(r, ec_ctx->y_mode_idx_cdf_1[context], + SECOND_MODE_COUNT, + ACCT_INFO("mode_idx", "y_mode_idx_cdf_1")); +#endif // TEST_27 } assert(mode_idx < LUMA_MODE_COUNT); get_y_intra_mode_set(mbmi, xd);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 4668853..8e86f44 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -2125,10 +2125,17 @@ aom_write_symbol(w, mode_idx, ec_ctx->y_mode_idx_cdf_0[context], FIRST_MODE_COUNT); } else { +#if TEST_27 + aom_write_literal( + w, + mode_idx - FIRST_MODE_COUNT - (mode_set_index - 1) * SECOND_MODE_COUNT, + 4); +#else aom_write_symbol( w, mode_idx - FIRST_MODE_COUNT - (mode_set_index - 1) * SECOND_MODE_COUNT, ec_ctx->y_mode_idx_cdf_1[context], SECOND_MODE_COUNT); +#endif // !TEST_27 } if (mbmi->joint_y_mode_delta_angle < NON_DIRECTIONAL_MODES_COUNT) assert(mbmi->joint_y_mode_delta_angle == mbmi->y_mode_idx);
diff --git a/av1/encoder/block.h b/av1/encoder/block.h index e6a626c..93fca27 100644 --- a/av1/encoder/block.h +++ b/av1/encoder/block.h
@@ -985,7 +985,9 @@ //! y first mode cost int y_first_mode_costs[Y_MODE_CONTEXTS][FIRST_MODE_COUNT]; //! y second mode cost +#if !TEST_27 int y_second_mode_costs[Y_MODE_CONTEXTS][SECOND_MODE_COUNT]; +#endif // !TEST_27 //! uv mode cost int intra_uv_mode_cost[UV_MODE_CONTEXTS][UV_INTRA_MODES - 1]; //! CFL mode cost
diff --git a/av1/encoder/encodeframe_utils.c b/av1/encoder/encodeframe_utils.c index 5d7cc4a..24434c4 100644 --- a/av1/encoder/encodeframe_utils.c +++ b/av1/encoder/encodeframe_utils.c
@@ -598,7 +598,9 @@ ++counts->y_mode_idx_0[context][mode_idx]; #endif update_cdf(fc->y_mode_idx_cdf_0[context], mode_idx, FIRST_MODE_COUNT); - } else { + } +#if !TEST_27 + else { const int mode_idx_in_set = mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1); #if CONFIG_ENTROPY_STATS @@ -607,6 +609,7 @@ update_cdf(fc->y_mode_idx_cdf_1[context], mode_idx_in_set, SECOND_MODE_COUNT); } +#endif // !TEST_27 } else { update_cdf(fc->dpcm_vert_horz_cdf, mbmi->dpcm_mode_y, 2); } @@ -624,7 +627,9 @@ ++counts->y_mode_idx_0[context][mode_idx]; #endif update_cdf(fc->y_mode_idx_cdf_0[context], mode_idx, FIRST_MODE_COUNT); - } else { + } +#if !TEST_27 + else { const int mode_idx_in_set = mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1); #if CONFIG_ENTROPY_STATS @@ -633,6 +638,7 @@ update_cdf(fc->y_mode_idx_cdf_1[context], mode_idx_in_set, SECOND_MODE_COUNT); } +#endif // !TEST_27 } #else // CONFIG_LOSSLESS_DPCM const int context = get_y_mode_idx_ctx(xd); @@ -648,7 +654,9 @@ ++counts->y_mode_idx_0[context][mode_idx]; #endif update_cdf(fc->y_mode_idx_cdf_0[context], mode_idx, FIRST_MODE_COUNT); - } else { + } +#if !TEST_27 + else { const int mode_idx_in_set = mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1); #if CONFIG_ENTROPY_STATS @@ -657,6 +665,7 @@ update_cdf(fc->y_mode_idx_cdf_1[context], mode_idx_in_set, SECOND_MODE_COUNT); } +#endif // !TEST_27 #endif // CONFIG_LOSSLESS_DPCM update_fsc_cdf(cm, xd, #if CONFIG_ENTROPY_STATS @@ -1737,8 +1746,10 @@ INTRA_MODE_SETS); AVERAGE_CDF(ctx_left->y_mode_idx_cdf_0, ctx_tr->y_mode_idx_cdf_0, FIRST_MODE_COUNT); +#if !TEST_27 AVERAGE_CDF(ctx_left->y_mode_idx_cdf_1, ctx_tr->y_mode_idx_cdf_1, SECOND_MODE_COUNT); +#endif // !TEST_27 #else AVERAGE_CDF(ctx_left->y_mode_cdf, ctx_tr->y_mode_cdf, INTRA_MODES); #endif // CONFIG_AIMC
diff --git a/av1/encoder/intra_mode_search.c b/av1/encoder/intra_mode_search.c index ab2c6d9..35ba94c 100644 --- a/av1/encoder/intra_mode_search.c +++ b/av1/encoder/intra_mode_search.c
@@ -1532,11 +1532,15 @@ mode_cost += x->mode_costs.y_first_mode_costs[context][mbmi->y_mode_idx]; } else { +#if TEST_27 + mode_cost += av1_cost_literal(4); +#else mode_cost += x->mode_costs .y_second_mode_costs[context] [mbmi->y_mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1)]; +#endif // TEST_27 } mode_cost += ref_frame_cost; mode_cost += mrl_idx_cost; @@ -1552,11 +1556,15 @@ if (mbmi->y_mode_idx < FIRST_MODE_COUNT) { mode_cost += x->mode_costs.y_first_mode_costs[context][mbmi->y_mode_idx]; } else { +#if TEST_27 + mode_cost += av1_cost_literal(4); +#else mode_cost += x->mode_costs .y_second_mode_costs[context] [mbmi->y_mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1)]; +#endif // TEST_27 } mode_cost += ref_frame_cost; mode_cost += mrl_idx_cost; @@ -1569,11 +1577,15 @@ if (mbmi->y_mode_idx < FIRST_MODE_COUNT) { mode_cost += x->mode_costs.y_first_mode_costs[context][mbmi->y_mode_idx]; } else { +#if TEST_27 + mode_cost += av1_cost_literal(4); +#else mode_cost += x->mode_costs .y_second_mode_costs[context] [mbmi->y_mode_idx - FIRST_MODE_COUNT - SECOND_MODE_COUNT * (mode_set_index - 1)]; +#endif // TEST_27 } #if CONFIG_EXTENDED_SDP if (mbmi->region_type != INTRA_REGION) @@ -1935,10 +1947,13 @@ if (mode_idx < FIRST_MODE_COUNT) { mode_costs += x->mode_costs.y_first_mode_costs[context][mode_idx]; } else { - mode_costs += - x->mode_costs.y_second_mode_costs - [context][mbmi->y_mode_idx - FIRST_MODE_COUNT - - SECOND_MODE_COUNT * (mode_set_index - 1)]; +#if TEST_27 + mode_costs += av1_cost_literal(4); +#else + mode_costs += x->mode_costs.y_second_mode_costs + [context][mbmi->y_mode_idx - FIRST_MODE_COUNT - + SECOND_MODE_COUNT * (mode_set_index - 1)]; +#endif // TEST_27 } #if CONFIG_LOSSLESS_DPCM } else { @@ -2257,10 +2272,13 @@ if (mode_idx < FIRST_MODE_COUNT) { mode_costs += x->mode_costs.y_first_mode_costs[context][mode_idx]; } else { - mode_costs += - x->mode_costs.y_second_mode_costs - [context][mbmi->y_mode_idx - FIRST_MODE_COUNT - - SECOND_MODE_COUNT * (mode_set_index - 1)]; +#if TEST_27 + mode_costs += av1_cost_literal(4); +#else + mode_costs += x->mode_costs.y_second_mode_costs + [context][mbmi->y_mode_idx - FIRST_MODE_COUNT - + SECOND_MODE_COUNT * (mode_set_index - 1)]; +#endif // TEST_27 } #if CONFIG_LOSSLESS_DPCM } else {
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c index 3d0d244..75c660c 100644 --- a/av1/encoder/rd.c +++ b/av1/encoder/rd.c
@@ -208,8 +208,10 @@ // y mode costs av1_cost_tokens_from_cdf(mode_costs->y_first_mode_costs[i], fc->y_mode_idx_cdf_0[i], NULL); +#if !TEST_27 av1_cost_tokens_from_cdf(mode_costs->y_second_mode_costs[i], fc->y_mode_idx_cdf_1[i], NULL); +#endif // !TEST_27 } #else for (i = 0; i < KF_MODE_CONTEXTS; ++i)