CT4: FG8 activity Test 8 variant 2 implementation - bypass coding for Cb DC sign
Bypass coding for Cb DC sign
diff --git a/av1/decoder/decodetxb.c b/av1/decoder/decodetxb.c
index ee0ac15..17506d2 100644
--- a/av1/decoder/decodetxb.c
+++ b/av1/decoder/decodetxb.c
@@ -1163,8 +1163,16 @@
#if CONFIG_CONTEXT_DERIVATION
if (plane == AOM_PLANE_Y || plane == AOM_PLANE_U) {
#if CONFIG_CTX_BYPASS_DC_SIGN
- sign = aom_read_literal(
- r, 1, ACCT_INFO("sign", "dc_sign_cdf", "plane_y_or_u"));
+#if CONFIG_CTX_BYPASS_CB_DC_SIGN
+ if (plane == AOM_PLANE_Y) {
+ sign = aom_read_symbol(
+ r,
+ ec_ctx->dc_sign_cdf[plane_type][is_hidden ? 1 : 0][dc_sign_ctx],
+ 2, ACCT_INFO("sign", "dc_sign_cdf", "plane_y_or_u"));
+ } else
+#endif
+ sign = aom_read_literal(
+ r, 1, ACCT_INFO("sign", "dc_sign_cdf", "plane_y_or_u"));
#else
sign = aom_read_symbol(
r,
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 390cec7b..f71cfae 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -1505,7 +1505,15 @@
#endif
} else {
#if CONFIG_CTX_BYPASS_DC_SIGN
- aom_write_literal(w, sign, 1);
+#if CONFIG_CTX_BYPASS_CB_DC_SIGN
+ if (plane == AOM_PLANE_Y) {
+ aom_write_symbol(
+ w, sign,
+ ec_ctx->dc_sign_cdf[plane_type][is_hidden ? 1 : 0][dc_sign_ctx],
+ 2);
+ } else
+#endif
+ aom_write_literal(w, sign, 1);
#else
aom_write_symbol(
w, sign,
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 60c50b6..ef80c4d 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -1345,8 +1345,17 @@
for (int gr = 0; gr < DC_SIGN_GROUPS; ++gr) {
for (int ctx = 0; ctx < DC_SIGN_CONTEXTS; ++ctx) {
#if CONFIG_CTX_BYPASS_DC_SIGN
- pcost->dc_sign_cost[gr][ctx][0] = av1_cost_literal(1);
- pcost->dc_sign_cost[gr][ctx][1] = av1_cost_literal(1);
+#if CONFIG_CTX_BYPASS_CB_DC_SIGN
+ if (plane == PLANE_TYPE_Y) {
+ av1_cost_tokens_from_cdf(pcost->dc_sign_cost[gr][ctx],
+ fc->dc_sign_cdf[plane][gr][ctx], NULL);
+ } else {
+#endif
+ pcost->dc_sign_cost[gr][ctx][0] = av1_cost_literal(1);
+ pcost->dc_sign_cost[gr][ctx][1] = av1_cost_literal(1);
+#if CONFIG_CTX_BYPASS_CB_DC_SIGN
+ }
+#endif
#else
av1_cost_tokens_from_cdf(pcost->dc_sign_cost[gr][ctx],
fc->dc_sign_cdf[plane][gr][ctx], NULL);
diff --git a/build/cmake/aom_config_defaults.cmake b/build/cmake/aom_config_defaults.cmake
index 787d99c..acd273f 100644
--- a/build/cmake/aom_config_defaults.cmake
+++ b/build/cmake/aom_config_defaults.cmake
@@ -166,6 +166,7 @@
"by-pass merge para coding. FG8-Test26")
set_aom_config_var(CONFIG_CTX_Y_SECOND_MODE 1 "bypass coding FG8-Test27")
set_aom_config_var(CONFIG_CTX_BYPASS_DC_SIGN 0 "bypass coding FG8-Test8")
+set_aom_config_var(CONFIG_CTX_BYPASS_CB_DC_SIGN 0 "bypass coding FG8-Test8")
# AV2 experiment flags.
set_aom_config_var(