Adapt the compound_type syntax element. This syntax element was encoded using legacy tree encoding, and is used in the compound_segment and wedge experiments. AWCY: -0.01% all metrics (objective-1-fast, High Latency) Change-Id: I3771ed27e13dd74841c615bec4c2918d39b76093
diff --git a/av1/common/entropy.c b/av1/common/entropy.c index 3203c64..5b69eff 100644 --- a/av1/common/entropy.c +++ b/av1/common/entropy.c
@@ -5713,6 +5713,9 @@ AVERAGE_TILE_CDFS(inter_compound_mode_cdf) // interintra_mode etc #endif + + AVERAGE_TILE_CDFS(compound_type_cdf) + AVERAGE_TILE_CDFS(y_mode_cdf) if (cm->interp_filter == SWITCHABLE) {
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index e121337..dac7104 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -1134,6 +1134,94 @@ [COMPOUND_TYPES - 1]; #endif // CONFIG_COMPOUND_SEGMENT && CONFIG_WEDGE +#if CONFIG_EC_ADAPT +#if CONFIG_COMPOUND_SEGMENT && CONFIG_WEDGE +static const aom_cdf_prob + default_compound_type_cdf[BLOCK_SIZES][CDF_SIZE(COMPOUND_TYPES)] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + { AOM_ICDF(32640), AOM_ICDF(32704), AOM_ICDF(32768), 0 }, // 255, 128 + { AOM_ICDF(32640), AOM_ICDF(32704), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32704), AOM_ICDF(32768), 0 }, +#endif + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, // 208, 128 + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(29696), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(30208), AOM_ICDF(32768), 0 }, // 216, 128 + { AOM_ICDF(27648), AOM_ICDF(30208), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(30208), AOM_ICDF(32768), 0 }, + { AOM_ICDF(28672), AOM_ICDF(30720), AOM_ICDF(32768), 0 }, // 224, 128 + { AOM_ICDF(28672), AOM_ICDF(28688), AOM_ICDF(32768), 0 }, // 224, 1 + { AOM_ICDF(30720), AOM_ICDF(30728), AOM_ICDF(32768), 0 }, // 240, 1 + { AOM_ICDF(30720), AOM_ICDF(30728), AOM_ICDF(32768), 0 }, +#if CONFIG_EXT_PARTITION + { AOM_ICDF(32640), AOM_ICDF(32641), AOM_ICDF(32768), 0 }, // 255, 1 + { AOM_ICDF(32640), AOM_ICDF(32641), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32641), AOM_ICDF(32768), 0 }, +#endif // CONFIG_EXT_PARTITION + }; +#elif !CONFIG_COMPOUND_SEGMENT && CONFIG_WEDGE +static const aom_cdf_prob + default_compound_type_cdf[BLOCK_SIZES][CDF_SIZE(COMPOUND_TYPES)] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, // 255 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, +#endif + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, // 208 + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, // 216 + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, + { AOM_ICDF(28672), AOM_ICDF(32768), 0 }, // 224 + { AOM_ICDF(28672), AOM_ICDF(32768), 0 }, + { AOM_ICDF(30720), AOM_ICDF(32768), 0 }, // 240 + { AOM_ICDF(30720), AOM_ICDF(32768), 0 }, +#if CONFIG_EXT_PARTITION + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, // 255 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, +#endif // CONFIG_EXT_PARTITION + }; +#elif CONFIG_COMPOUND_SEGMENT && !CONFIG_WEDGE +static const aom_cdf_prob + default_compound_type_cdf[BLOCK_SIZES][CDF_SIZE(COMPOUND_TYPES)] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, // 255 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, +#endif + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, // 208 + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(26624), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, // 216 + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, + { AOM_ICDF(27648), AOM_ICDF(32768), 0 }, + { AOM_ICDF(28672), AOM_ICDF(32768), 0 }, // 224 + { AOM_ICDF(28672), AOM_ICDF(32768), 0 }, + { AOM_ICDF(30720), AOM_ICDF(32768), 0 }, // 240 + { AOM_ICDF(30720), AOM_ICDF(32768), 0 }, +#if CONFIG_EXT_PARTITION + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, // 255 + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, + { AOM_ICDF(32640), AOM_ICDF(32768), 0 }, +#endif // CONFIG_EXT_PARTITION + }; +#else +static const aom_cdf_prob default_compound_type_cdf[BLOCK_SIZES] + [CDF_SIZE(COMPOUND_TYPES)]; +#endif // CONFIG_COMPOUND_SEGMENT && CONFIG_WEDGE +#endif // CONFIG_EC_ADAPT + #if CONFIG_INTERINTRA static const aom_prob default_interintra_prob[BLOCK_SIZE_GROUPS] = { 208, 208, 208, 208, @@ -4776,6 +4864,9 @@ default_inter_singleref_comp_mode_probs); #endif // CONFIG_COMPOUND_SINGLEREF av1_copy(fc->compound_type_prob, default_compound_type_probs); +#if CONFIG_EC_ADAPT + av1_copy(fc->compound_type_cdf, default_compound_type_cdf); +#endif #if CONFIG_INTERINTRA av1_copy(fc->interintra_prob, default_interintra_prob); av1_copy(fc->interintra_mode_prob, default_interintra_mode_prob);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index 8634d6f..8de4916 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -204,6 +204,9 @@ [INTER_SINGLEREF_COMP_MODES - 1]; #endif // CONFIG_COMPOUND_SINGLEREF aom_prob compound_type_prob[BLOCK_SIZES][COMPOUND_TYPES - 1]; +#if CONFIG_EC_ADAPT + aom_cdf_prob compound_type_cdf[BLOCK_SIZES][CDF_SIZE(COMPOUND_TYPES)]; +#endif #if CONFIG_INTERINTRA aom_prob interintra_prob[BLOCK_SIZE_GROUPS]; aom_prob interintra_mode_prob[BLOCK_SIZE_GROUPS][INTERINTRA_MODES - 1];
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index 1b41363..1546401 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -5130,7 +5130,7 @@ #endif // CONFIG_WEDGE } #endif // CONFIG_INTERINTRA -#if CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE +#if !CONFIG_EC_ADAPT && (CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE) #if CONFIG_COMPOUND_SINGLEREF if (cm->allow_masked_compound) { #else // !CONFIG_COMPOUND_SINGLEREF @@ -5144,7 +5144,7 @@ } } } -#endif // CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE +#endif // !CONFIG_EC_ADAPT && (CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE) #endif // CONFIG_EXT_INTER #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 9003ed4..c457e2d 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -2643,9 +2643,14 @@ if (is_any_masked_compound_used(bsize)) { #if CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE if (cm->allow_masked_compound) { +#if CONFIG_EC_ADAPT + mbmi->interinter_compound_type = aom_read_symbol( + r, ec_ctx->compound_type_cdf[bsize], COMPOUND_TYPES, ACCT_STR); +#else mbmi->interinter_compound_type = aom_read_tree(r, av1_compound_type_tree, cm->fc->compound_type_prob[bsize], ACCT_STR); +#endif #if CONFIG_WEDGE if (mbmi->interinter_compound_type == COMPOUND_WEDGE) { mbmi->wedge_index =
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 4797a9d..e85bf8b 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -2278,9 +2278,14 @@ is_any_masked_compound_used(bsize)) { #if CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE if (cm->allow_masked_compound) { +#if CONFIG_EC_ADAPT + aom_write_symbol(w, mbmi->interinter_compound_type, + ec_ctx->compound_type_cdf[bsize], COMPOUND_TYPES); +#else av1_write_token( w, av1_compound_type_tree, cm->fc->compound_type_prob[bsize], &compound_type_encodings[mbmi->interinter_compound_type]); +#endif #if CONFIG_WEDGE if (mbmi->interinter_compound_type == COMPOUND_WEDGE) { aom_write_literal(w, mbmi->wedge_index, get_wedge_bits_lookup(bsize)); @@ -5128,7 +5133,7 @@ #endif // CONFIG_WEDGE } #endif // CONFIG_INTERINTRA -#if CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE +#if !CONFIG_EC_ADAPT && (CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE) #if CONFIG_COMPOUND_SINGLEREF if (cm->allow_masked_compound) { #else // !CONFIG_COMPOUND_SINGLEREF @@ -5142,7 +5147,7 @@ } } } -#endif // CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE +#endif // !CONFIG_EC_ADAPT && (CONFIG_COMPOUND_SEGMENT || CONFIG_WEDGE) #endif // CONFIG_EXT_INTER #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION