Exclude hbd intra prediction from CONFIG_AV1_HIGHBITDEPTH
Less than 1% binary size reduction.
BUG=aomedia:2397
Change-Id: I43619f345f9b6824f96503b3c25e80c993343d22
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl
index 61f6131..c00f763 100755
--- a/aom_dsp/aom_dsp_rtcd_defs.pl
+++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -75,8 +75,10 @@
foreach $pred_name (@pred_names) {
add_proto "void", "aom_${pred_name}_predictor_${w}x${h}",
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
- add_proto "void", "aom_highbd_${pred_name}_predictor_${w}x${h}",
- "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ add_proto "void", "aom_highbd_${pred_name}_predictor_${w}x${h}",
+ "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
+ }
}
}
@@ -280,7 +282,7 @@
specialize qw/aom_dc_predictor_64x64 sse2 avx2/;
specialize qw/aom_dc_predictor_64x32 sse2 avx2/;
specialize qw/aom_dc_predictor_64x16 sse2 avx2/;
-
+if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
specialize qw/aom_highbd_v_predictor_4x4 sse2/;
specialize qw/aom_highbd_v_predictor_4x8 sse2/;
specialize qw/aom_highbd_v_predictor_8x4 sse2/;
@@ -346,7 +348,7 @@
specialize qw/aom_highbd_dc_left_predictor_32x32 sse2/;
specialize qw/aom_highbd_dc_top_predictor_32x32 sse2/;
specialize qw/aom_highbd_dc_128_predictor_32x32 sse2/;
-
+}
#
# Sub Pixel Filters
#
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl
index 6ec47df..15bb5cc 100644
--- a/av1/common/av1_rtcd_defs.pl
+++ b/av1/common/av1_rtcd_defs.pl
@@ -98,7 +98,6 @@
specialize qw/av1_highbd_wiener_convolve_add_src ssse3/;
specialize qw/av1_highbd_wiener_convolve_add_src avx2/;
-
# directional intra predictor functions
add_proto qw/void av1_dr_prediction_z1/, "uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy";
specialize qw/av1_dr_prediction_z1 avx2/;
@@ -176,13 +175,15 @@
add_proto qw/void av1_inv_txfm2d_add_8x32/, "const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd";
add_proto qw/void av1_inv_txfm2d_add_32x8/, "const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd";
-# directional intra predictor functions
-add_proto qw/void av1_highbd_dr_prediction_z1/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd";
-specialize qw/av1_highbd_dr_prediction_z1 avx2/;
-add_proto qw/void av1_highbd_dr_prediction_z2/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd";
-specialize qw/av1_highbd_dr_prediction_z2 avx2/;
-add_proto qw/void av1_highbd_dr_prediction_z3/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd";
-specialize qw/av1_highbd_dr_prediction_z3 avx2/;
+if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ # directional intra predictor functions
+ add_proto qw/void av1_highbd_dr_prediction_z1/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int dx, int dy, int bd";
+ specialize qw/av1_highbd_dr_prediction_z1 avx2/;
+ add_proto qw/void av1_highbd_dr_prediction_z2/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_above, int upsample_left, int dx, int dy, int bd";
+ specialize qw/av1_highbd_dr_prediction_z2 avx2/;
+ add_proto qw/void av1_highbd_dr_prediction_z3/, "uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, const uint16_t *left, int upsample_left, int dx, int dy, int bd";
+ specialize qw/av1_highbd_dr_prediction_z3 avx2/;
+}
# build compound seg mask functions
add_proto qw/void av1_build_compound_diffwtd_mask/, "uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w";
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index 16ace15..67e0650 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -453,11 +453,13 @@
static intra_pred_fn pred[INTRA_MODES][TX_SIZES_ALL];
static intra_pred_fn dc_pred[2][2][TX_SIZES_ALL];
+#if CONFIG_AV1_HIGHBITDEPTH
typedef void (*intra_high_pred_fn)(uint16_t *dst, ptrdiff_t stride,
const uint16_t *above, const uint16_t *left,
int bd);
static intra_high_pred_fn pred_high[INTRA_MODES][TX_SIZES_ALL];
static intra_high_pred_fn dc_pred_high[2][2][TX_SIZES_ALL];
+#endif
static void init_intra_predictors_internal(void) {
assert(NELEMENTS(mode_to_angle_map) == INTRA_MODES);
@@ -499,7 +501,7 @@
INIT_ALL_SIZES(dc_pred[0][1], dc_top);
INIT_ALL_SIZES(dc_pred[1][0], dc_left);
INIT_ALL_SIZES(dc_pred[1][1], dc);
-
+#if CONFIG_AV1_HIGHBITDEPTH
INIT_ALL_SIZES(pred_high[V_PRED], highbd_v);
INIT_ALL_SIZES(pred_high[H_PRED], highbd_h);
INIT_ALL_SIZES(pred_high[PAETH_PRED], highbd_paeth);
@@ -510,6 +512,7 @@
INIT_ALL_SIZES(dc_pred_high[0][1], highbd_dc_top);
INIT_ALL_SIZES(dc_pred_high[1][0], highbd_dc_left);
INIT_ALL_SIZES(dc_pred_high[1][1], highbd_dc);
+#endif
#undef intra_pred_allsizes
}
@@ -647,6 +650,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
// Directional prediction, zone 1: 0 < angle < 90
void av1_highbd_dr_prediction_z1_c(uint16_t *dst, ptrdiff_t stride, int bw,
int bh, const uint16_t *above,
@@ -785,6 +789,7 @@
pred_high[H_PRED][tx_size](dst, stride, above, left, bd);
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
DECLARE_ALIGNED(16, const int8_t,
av1_filter_intra_taps[FILTER_INTRA_MODES][8][8]) = {
@@ -888,6 +893,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
static void highbd_filter_intra_predictor(uint16_t *dst, ptrdiff_t stride,
TX_SIZE tx_size,
const uint16_t *above,
@@ -938,6 +944,7 @@
dst += stride;
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
static int is_smooth(const MB_MODE_INFO *mbmi, int plane) {
if (plane == 0) {
@@ -1068,6 +1075,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
static void filter_intra_edge_corner_high(uint16_t *p_above, uint16_t *p_left) {
const int kernel[3] = { 5, 6, 5 };
@@ -1077,6 +1085,7 @@
p_above[-1] = s;
p_left[-1] = s;
}
+#endif
void av1_upsample_intra_edge_c(uint8_t *p, int sz) {
// interpolate half-sample positions
@@ -1124,7 +1133,7 @@
p[2 * i] = in[i + 2];
}
}
-
+#if CONFIG_AV1_HIGHBITDEPTH
static void build_intra_predictors_high(
const MACROBLOCKD *xd, const uint8_t *ref8, int ref_stride, uint8_t *dst8,
int dst_stride, PREDICTION_MODE mode, int angle_delta,
@@ -1309,6 +1318,7 @@
pred_high[mode][tx_size](dst, dst_stride, above_row, left_col, xd->bd);
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
static void build_intra_predictors(const MACROBLOCKD *xd, const uint8_t *ref,
int ref_stride, uint8_t *dst, int dst_stride,
@@ -1572,6 +1582,7 @@
tx_size, row_off, col_off, pd->subsampling_x, pd->subsampling_y);
const int disable_edge_filter = !cm->seq_params.enable_intra_edge_filter;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
build_intra_predictors_high(
xd, ref, ref_stride, dst, dst_stride, mode, angle_delta,
@@ -1582,7 +1593,7 @@
have_bottom_left ? AOMMIN(txhpx, yd) : 0, plane);
return;
}
-
+#endif
build_intra_predictors(xd, ref, ref_stride, dst, dst_stride, mode,
angle_delta, filter_intra_mode, tx_size,
disable_edge_filter,
diff --git a/test/dr_prediction_test.cc b/test/dr_prediction_test.cc
index bacc366..59937e7 100644
--- a/test/dr_prediction_test.cc
+++ b/test/dr_prediction_test.cc
@@ -325,6 +325,7 @@
DrPredFunc<DrPred>(&z3_wrapper<av1_dr_prediction_z3_c>,
NULL, AOM_BITS_8, kZ3Start)));
+#if CONFIG_AV1_HIGHBITDEPTH
class HighbdDrPredTest : public DrPredTest<uint16_t, DrPred_Hbd> {};
TEST_P(HighbdDrPredTest, SaturatedValues) {
@@ -358,6 +359,7 @@
NULL, AOM_BITS_10, kZ3Start),
DrPredFunc<DrPred_Hbd>(&z3_wrapper_hbd<av1_highbd_dr_prediction_z3_c>,
NULL, AOM_BITS_12, kZ3Start)));
+#endif // CONFIG_AV1_HIGHBITDEPTH
#if HAVE_AVX2
INSTANTIATE_TEST_CASE_P(
@@ -398,6 +400,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
INSTANTIATE_TEST_CASE_P(
AVX2, HighbdDrPredTest,
::testing::Values(DrPredFunc<DrPred_Hbd>(
@@ -462,7 +465,7 @@
}
}
}
-
+#endif // CONFIG_AV1_HIGHBITDEPTH
#endif // HAVE_AVX2
} // namespace
diff --git a/test/intrapred_test.cc b/test/intrapred_test.cc
index 43ab773..2689c63 100644
--- a/test/intrapred_test.cc
+++ b/test/intrapred_test.cc
@@ -133,6 +133,7 @@
IntraPredFunc<FuncType> params_;
};
+#if CONFIG_AV1_HIGHBITDEPTH
class HighbdIntraPredTest : public AV1IntraPredTest<HighbdIntraPred, uint16_t> {
protected:
void Predict() {
@@ -142,6 +143,7 @@
params_.pred_fn(dst_, stride_, above_row_, left_col_, bit_depth));
}
};
+#endif
class LowbdIntraPredTest : public AV1IntraPredTest<IntraPred, uint8_t> {
protected:
@@ -152,6 +154,7 @@
}
};
+#if CONFIG_AV1_HIGHBITDEPTH
// Suppress an unitialized warning. Once there are implementations to test then
// this can be restored.
TEST_P(HighbdIntraPredTest, Bitexact) {
@@ -164,6 +167,7 @@
av1_zero(above_data);
RunTest(left_col, above_data, dst, ref_dst);
}
+#endif
// Same issue as above but for arm.
#if !HAVE_NEON
@@ -179,6 +183,7 @@
}
#endif // !HAVE_NEON
+#if CONFIG_AV1_HIGHBITDEPTH
// -----------------------------------------------------------------------------
// High Bit Depth Tests
#define highbd_entry(type, width, height, opt, bd) \
@@ -196,7 +201,7 @@
highbd_entry(type, 16, 32, opt, bd), \
highbd_entry(type, 32, 16, opt, bd), highbd_entry(type, 32, 32, opt, bd)
#endif
-
+#endif // CONFIG_AV1_HIGHBITDEPTH
// ---------------------------------------------------------------------------
// Low Bit Depth Tests
@@ -252,6 +257,7 @@
#endif // HAVE_AVX2
+#if CONFIG_AV1_HIGHBITDEPTH
#if HAVE_NEON
const IntraPredFunc<HighbdIntraPred> HighbdIntraPredTestVectorNeon[] = {
highbd_entry(dc, 4, 4, neon, 8), highbd_entry(dc, 8, 8, neon, 8),
@@ -263,4 +269,5 @@
::testing::ValuesIn(HighbdIntraPredTestVectorNeon));
#endif // HAVE_NEON
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc
index b72ac11..25c50d0 100644
--- a/test/test_intra_pred_speed.cc
+++ b/test/test_intra_pred_speed.cc
@@ -878,6 +878,8 @@
aom_dc_128_predictor_64x16_avx2, aom_v_predictor_64x16_avx2,
NULL, aom_paeth_predictor_64x16_avx2, NULL, NULL, NULL)
#endif
+
+#if CONFIG_AV1_HIGHBITDEPTH
// -----------------------------------------------------------------------------
// High Bitdepth
namespace {
@@ -1460,5 +1462,6 @@
aom_highbd_smooth_h_predictor_64x16_c)
// -----------------------------------------------------------------------------
+#endif // CONFIG_AV1_HIGHBITDEPTH
#include "test/test_libaom.cc"