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(