Further clean-ups on dist-wtd compound
Includes removal of enum values.
Change-Id: Ib581c6b114237ce269ffdce3d151ff9cbd0b188d
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 77d2b6a..7a807ee 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -467,7 +467,9 @@
enum {
COMPOUND_AVERAGE,
+#if !CONFIG_REMOVE_DIST_WTD_COMP
COMPOUND_DISTWTD,
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
COMPOUND_WEDGE,
COMPOUND_DIFFWTD,
COMPOUND_TYPES,
diff --git a/av1/common/reconinter.h b/av1/common/reconinter.h
index ff44158..ae48a46 100644
--- a/av1/common/reconinter.h
+++ b/av1/common/reconinter.h
@@ -202,7 +202,9 @@
const int comp_allowed = is_comp_ref_allowed(sb_type);
switch (type) {
case COMPOUND_AVERAGE:
+#if !CONFIG_REMOVE_DIST_WTD_COMP
case COMPOUND_DISTWTD:
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
case COMPOUND_DIFFWTD: return comp_allowed;
case COMPOUND_WEDGE:
return comp_allowed && av1_wedge_params_lookup[sb_type].wedge_types > 0;
diff --git a/av1/encoder/compound_type.c b/av1/encoder/compound_type.c
index e083e99..cf659de 100644
--- a/av1/encoder/compound_type.c
+++ b/av1/encoder/compound_type.c
@@ -49,7 +49,7 @@
}
// Store the stats for COMPOUND_AVERAGE and COMPOUND_DISTWTD
- for (int comp_type = COMPOUND_AVERAGE; comp_type <= COMPOUND_DISTWTD;
+ for (int comp_type = COMPOUND_AVERAGE; comp_type < COMPOUND_WEDGE;
comp_type++) {
comp_rate[comp_type] = st->rate[comp_type];
comp_dist[comp_type] = st->dist[comp_type];
@@ -859,16 +859,19 @@
((mode_search_mask & (1 << COMPOUND_DISTWTD)) &&
cm->seq_params.order_hint_info.enable_dist_wtd_comp == 1 &&
cpi->sf.inter_sf.use_dist_wtd_comp_flag != DIST_WTD_COMP_DISABLED);
-#else
- const int try_distwtd_comp = 0;
-#endif // !CONFIG_REMOVE_DIST_WTD_COMP
*try_average_and_distwtd_comp = try_average_comp && try_distwtd_comp;
+#else
+ *try_average_and_distwtd_comp = 0;
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
// Check if COMPOUND_AVERAGE and COMPOUND_DISTWTD are valid cases
- for (comp_type = COMPOUND_AVERAGE; comp_type <= COMPOUND_DISTWTD;
- comp_type++) {
+ for (comp_type = COMPOUND_AVERAGE; comp_type < COMPOUND_WEDGE; comp_type++) {
valid_check =
+#if !CONFIG_REMOVE_DIST_WTD_COMP
(comp_type == COMPOUND_AVERAGE) ? try_average_comp : try_distwtd_comp;
+#else
+ (comp_type == COMPOUND_AVERAGE) ? try_average_comp : 0;
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
if (!*try_average_and_distwtd_comp && valid_check &&
is_interinter_compound_used(comp_type, bsize))
valid_comp_types[valid_type_count++] = comp_type;
@@ -907,7 +910,9 @@
// Compound group index of wedge and diffwtd is 1
masked_type_cost[COMPOUND_AVERAGE] +=
mode_costs->comp_group_idx_cost[comp_group_idx_ctx][0];
+#if !CONFIG_REMOVE_DIST_WTD_COMP
masked_type_cost[COMPOUND_DISTWTD] += masked_type_cost[COMPOUND_AVERAGE];
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
masked_type_cost[COMPOUND_WEDGE] +=
mode_costs->comp_group_idx_cost[comp_group_idx_ctx][1];
masked_type_cost[COMPOUND_DIFFWTD] += masked_type_cost[COMPOUND_WEDGE];
@@ -930,7 +935,11 @@
COMPOUND_TYPE cur_type) {
mbmi->interinter_comp.type = cur_type;
mbmi->comp_group_idx = (cur_type >= COMPOUND_WEDGE);
+#if !CONFIG_REMOVE_DIST_WTD_COMP
mbmi->compound_idx = (cur_type != COMPOUND_DISTWTD);
+#else
+ mbmi->compound_idx = 1;
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
}
// When match is found, populate the compound type data
@@ -985,6 +994,7 @@
}
}
+#if !CONFIG_REMOVE_DIST_WTD_COMP
// Choose the better of the two COMPOUND_AVERAGE,
// COMPOUND_DISTWTD based on modeled cost
static int find_best_avg_distwtd_comp_type(MACROBLOCK *x, int *comp_model_rate,
@@ -1003,6 +1013,7 @@
*best_rd = est_rd[best_type];
return best_type;
}
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
static INLINE void save_comp_rd_search_stat(
MACROBLOCK *x, const MB_MODE_INFO *const mbmi, const int32_t *comp_rate,
@@ -1295,6 +1306,7 @@
int masked_type_cost[COMPOUND_TYPES];
int calc_pred_masked_compound = 1;
+#if !CONFIG_REMOVE_DIST_WTD_COMP
int64_t comp_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX,
INT64_MAX };
int32_t comp_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX, INT_MAX };
@@ -1303,6 +1315,13 @@
INT_MAX };
int64_t comp_model_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX,
INT64_MAX };
+#else
+ int64_t comp_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX };
+ int32_t comp_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX };
+ int comp_rs2[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX };
+ int32_t comp_model_rate[COMPOUND_TYPES] = { INT_MAX, INT_MAX, INT_MAX };
+ int64_t comp_model_dist[COMPOUND_TYPES] = { INT64_MAX, INT64_MAX, INT64_MAX };
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
int match_index = 0;
const int match_found =
find_comp_rd_in_stats(cpi, x, mbmi, comp_rate, comp_dist, comp_model_rate,
@@ -1316,7 +1335,16 @@
// Local array to store the valid compound types to be evaluated in the core
// loop
COMPOUND_TYPE valid_comp_types[COMPOUND_TYPES] = {
- COMPOUND_AVERAGE, COMPOUND_DISTWTD, COMPOUND_WEDGE, COMPOUND_DIFFWTD
+#if !CONFIG_REMOVE_DIST_WTD_COMP
+ COMPOUND_AVERAGE,
+ COMPOUND_DISTWTD,
+ COMPOUND_WEDGE,
+ COMPOUND_DIFFWTD
+#else
+ COMPOUND_AVERAGE,
+ COMPOUND_WEDGE,
+ COMPOUND_DIFFWTD
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
};
int valid_type_count = 0;
int try_average_and_distwtd_comp = 0;
@@ -1353,6 +1381,7 @@
comp_rate, comp_dist, comp_rs2,
rate_mv, rd, match_index);
}
+#if !CONFIG_REMOVE_DIST_WTD_COMP
// Special handling if both compound_average and compound_distwtd
// are to be searched. In this case, first estimate between the two
// modes and then call estimate_yrd_for_sb() only for the better of
@@ -1445,6 +1474,7 @@
}
}
}
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
// If COMPOUND_AVERAGE is not valid, use the spare buffer
if (valid_comp_types[0] != COMPOUND_AVERAGE) restore_dst_buf(xd, *tmp_dst, 1);
@@ -1559,8 +1589,12 @@
if (mbmi->interinter_comp.type != best_type_stats.best_compound_data.type) {
mbmi->comp_group_idx =
(best_type_stats.best_compound_data.type < COMPOUND_WEDGE) ? 0 : 1;
+#if !CONFIG_REMOVE_DIST_WTD_COMP
mbmi->compound_idx =
!(best_type_stats.best_compound_data.type == COMPOUND_DISTWTD);
+#else
+ mbmi->compound_idx = 1;
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
mbmi->interinter_comp = best_type_stats.best_compound_data;
memcpy(xd->seg_mask, buffers->tmp_best_mask_buf, mask_len);
}
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index ebe8a44..7a5c1e8 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2394,7 +2394,10 @@
const AV1_COMMON *cm = &cpi->common;
const int masked_compound_used = is_any_masked_compound_used(bsize) &&
cm->seq_params.enable_masked_compound;
- int mode_search_mask = (1 << COMPOUND_AVERAGE) | (1 << COMPOUND_DISTWTD) |
+ int mode_search_mask = (1 << COMPOUND_AVERAGE) |
+#if !CONFIG_REMOVE_DIST_WTD_COMP
+ (1 << COMPOUND_DISTWTD) |
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
(1 << COMPOUND_WEDGE) | (1 << COMPOUND_DIFFWTD);
const int num_planes = av1_num_planes(cm);