Commit 340593e5 authored by Urvang Joshi's avatar Urvang Joshi

Add ALT_INTRA experiment.

When the experiment is ON, we use Paeth predictor instead of TM
predictor.

For derf set, this gives about 0.09% improvement overall, and 0.55%
improvement if all frames are forced to be intra-only.

Also, if the EXT_INTRA experiment is also on, the improvement overall
is 0.056%, and improvement if all frames are forced to be intra-only is
0.465%.

Change-Id: Id74e107ede70a8d2107fa14fcb3f44b23a437274
parent f883b42c
...@@ -86,8 +86,12 @@ specialize qw/aom_v_predictor_4x4 neon msa sse2/; ...@@ -86,8 +86,12 @@ specialize qw/aom_v_predictor_4x4 neon msa sse2/;
add_proto qw/void aom_ve_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_ve_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_ve_predictor_4x4/; specialize qw/aom_ve_predictor_4x4/;
add_proto qw/void aom_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_tm_predictor_4x4 neon dspr2 msa sse2/; add_proto qw/void aom_paeth_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
} else {
add_proto qw/void aom_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_tm_predictor_4x4 neon dspr2 msa sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_dc_predictor_4x4 dspr2 msa neon sse2/; specialize qw/aom_dc_predictor_4x4 dspr2 msa neon sse2/;
...@@ -134,8 +138,12 @@ specialize qw/aom_d153_predictor_8x8 ssse3/; ...@@ -134,8 +138,12 @@ specialize qw/aom_d153_predictor_8x8 ssse3/;
add_proto qw/void aom_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_v_predictor_8x8 neon msa sse2/; specialize qw/aom_v_predictor_8x8 neon msa sse2/;
add_proto qw/void aom_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_tm_predictor_8x8 neon dspr2 msa sse2/; add_proto qw/void aom_paeth_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
} else {
add_proto qw/void aom_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_tm_predictor_8x8 neon dspr2 msa sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_dc_predictor_8x8 dspr2 neon msa sse2/; specialize qw/aom_dc_predictor_8x8 dspr2 neon msa sse2/;
...@@ -182,8 +190,13 @@ specialize qw/aom_d153_predictor_16x16 ssse3/; ...@@ -182,8 +190,13 @@ specialize qw/aom_d153_predictor_16x16 ssse3/;
add_proto qw/void aom_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_v_predictor_16x16 neon msa sse2/; specialize qw/aom_v_predictor_16x16 neon msa sse2/;
add_proto qw/void aom_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_tm_predictor_16x16 neon msa sse2/; add_proto qw/void aom_paeth_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
} else {
add_proto qw/void aom_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_tm_predictor_16x16 neon msa sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_dc_predictor_16x16 dspr2 neon msa sse2/; specialize qw/aom_dc_predictor_16x16 dspr2 neon msa sse2/;
...@@ -230,8 +243,13 @@ specialize qw/aom_d153_predictor_32x32 ssse3/; ...@@ -230,8 +243,13 @@ specialize qw/aom_d153_predictor_32x32 ssse3/;
add_proto qw/void aom_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_v_predictor_32x32 neon msa sse2/; specialize qw/aom_v_predictor_32x32 neon msa sse2/;
add_proto qw/void aom_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_tm_predictor_32x32 neon msa sse2/; add_proto qw/void aom_paeth_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
} else {
add_proto qw/void aom_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_tm_predictor_32x32 neon msa sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"; add_proto qw/void aom_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
specialize qw/aom_dc_predictor_32x32 msa neon sse2/; specialize qw/aom_dc_predictor_32x32 msa neon sse2/;
...@@ -280,8 +298,13 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") { ...@@ -280,8 +298,13 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_v_predictor_4x4 sse2/; specialize qw/aom_highbd_v_predictor_4x4 sse2/;
add_proto qw/void aom_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_highbd_tm_predictor_4x4 sse2/; add_proto qw/void aom_highbd_paeth_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
} else {
add_proto qw/void aom_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_tm_predictor_4x4 sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_dc_predictor_4x4 sse2/; specialize qw/aom_highbd_dc_predictor_4x4 sse2/;
...@@ -328,8 +351,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") { ...@@ -328,8 +351,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_v_predictor_8x8 sse2/; specialize qw/aom_highbd_v_predictor_8x8 sse2/;
add_proto qw/void aom_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_highbd_tm_predictor_8x8 sse2/; add_proto qw/void aom_highbd_paeth_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
} else {
add_proto qw/void aom_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_tm_predictor_8x8 sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_dc_predictor_8x8 sse2/;; specialize qw/aom_highbd_dc_predictor_8x8 sse2/;;
...@@ -376,8 +403,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") { ...@@ -376,8 +403,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_v_predictor_16x16 sse2/; specialize qw/aom_highbd_v_predictor_16x16 sse2/;
add_proto qw/void aom_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_highbd_tm_predictor_16x16 sse2/; add_proto qw/void aom_highbd_paeth_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
} else {
add_proto qw/void aom_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_tm_predictor_16x16 sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_dc_predictor_16x16 sse2/; specialize qw/aom_highbd_dc_predictor_16x16 sse2/;
...@@ -424,8 +455,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") { ...@@ -424,8 +455,12 @@ if (aom_config("CONFIG_AOM_HIGHBITDEPTH") eq "yes") {
add_proto qw/void aom_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_v_predictor_32x32 sse2/; specialize qw/aom_highbd_v_predictor_32x32 sse2/;
add_proto qw/void aom_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; if ((aom_config("CONFIG_ALT_INTRA") eq "yes")) {
specialize qw/aom_highbd_tm_predictor_32x32 sse2/; add_proto qw/void aom_highbd_paeth_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
} else {
add_proto qw/void aom_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_tm_predictor_32x32 sse2/;
} # CONFIG_ALT_INTRA
add_proto qw/void aom_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd"; add_proto qw/void aom_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
specialize qw/aom_highbd_dc_predictor_32x32 sse2/; specialize qw/aom_highbd_dc_predictor_32x32 sse2/;
......
...@@ -218,6 +218,36 @@ static INLINE void h_predictor(uint8_t *dst, ptrdiff_t stride, int bs, ...@@ -218,6 +218,36 @@ static INLINE void h_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
} }
} }
#if CONFIG_ALT_INTRA
static INLINE int abs_diff(int a, int b) { return (a > b) ? a - b : b - a; }
static INLINE uint16_t paeth_predictor_single(uint16_t left, uint16_t top,
uint16_t top_left) {
const int base = top + left - top_left;
const int p_left = abs_diff(base, left);
const int p_top = abs_diff(base, top);
const int p_top_left = abs_diff(base, top_left);
// Return nearest to base of left, top and top_left.
return (p_left <= p_top && p_left <= p_top_left)
? left
: (p_top <= p_top_left) ? top : top_left;
}
static INLINE void paeth_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
const uint8_t *above, const uint8_t *left) {
int r, c;
const uint8_t ytop_left = above[-1];
for (r = 0; r < bs; r++) {
for (c = 0; c < bs; c++)
dst[c] = (uint8_t)paeth_predictor_single(left[r], above[c], ytop_left);
dst += stride;
}
}
#else
static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs, static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
const uint8_t *above, const uint8_t *left) { const uint8_t *above, const uint8_t *left) {
int r, c; int r, c;
...@@ -229,6 +259,7 @@ static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs, ...@@ -229,6 +259,7 @@ static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
dst += stride; dst += stride;
} }
} }
#endif // CONFIG_ALT_INTRA
static INLINE void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bs, static INLINE void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bs,
const uint8_t *above, const uint8_t *left) { const uint8_t *above, const uint8_t *left) {
...@@ -688,6 +719,22 @@ static INLINE void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride, int bs, ...@@ -688,6 +719,22 @@ static INLINE void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
} }
} }
#if CONFIG_ALT_INTRA
static INLINE void highbd_paeth_predictor(uint16_t *dst, ptrdiff_t stride,
int bs, const uint16_t *above,
const uint16_t *left, int bd) {
int r, c;
const uint16_t ytop_left = above[-1];
(void)bd;
for (r = 0; r < bs; r++) {
for (c = 0; c < bs; c++)
dst[c] = paeth_predictor_single(left[r], above[c], ytop_left);
dst += stride;
}
}
#else
static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs, static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
const uint16_t *above, const uint16_t *above,
const uint16_t *left, int bd) { const uint16_t *left, int bd) {
...@@ -701,6 +748,7 @@ static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs, ...@@ -701,6 +748,7 @@ static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs,
dst += stride; dst += stride;
} }
} }
#endif // CONFIG_ALT_INTRA
static INLINE void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride, static INLINE void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride,
int bs, const uint16_t *above, int bs, const uint16_t *above,
...@@ -830,7 +878,11 @@ intra_pred_no_4x4(d135) ...@@ -830,7 +878,11 @@ intra_pred_no_4x4(d135)
intra_pred_no_4x4(d153) intra_pred_no_4x4(d153)
intra_pred_allsizes(v) intra_pred_allsizes(v)
intra_pred_allsizes(h) intra_pred_allsizes(h)
#if CONFIG_ALT_INTRA
intra_pred_allsizes(paeth)
#else
intra_pred_allsizes(tm) intra_pred_allsizes(tm)
#endif // CONFIG_ALT_INTRA
intra_pred_allsizes(dc_128) intra_pred_allsizes(dc_128)
intra_pred_allsizes(dc_left) intra_pred_allsizes(dc_left)
intra_pred_allsizes(dc_top) intra_pred_allsizes(dc_top)
......
...@@ -335,7 +335,12 @@ static void av1_init_intra_predictors_internal(void) { ...@@ -335,7 +335,12 @@ static void av1_init_intra_predictors_internal(void) {
INIT_ALL_SIZES(pred[D117_PRED], d117); INIT_ALL_SIZES(pred[D117_PRED], d117);
INIT_ALL_SIZES(pred[D135_PRED], d135); INIT_ALL_SIZES(pred[D135_PRED], d135);
INIT_ALL_SIZES(pred[D153_PRED], d153); INIT_ALL_SIZES(pred[D153_PRED], d153);
#if CONFIG_ALT_INTRA
INIT_ALL_SIZES(pred[TM_PRED], paeth);
#else
INIT_ALL_SIZES(pred[TM_PRED], tm); INIT_ALL_SIZES(pred[TM_PRED], tm);
#endif // CONFIG_ALT_INTRA
INIT_ALL_SIZES(dc_pred[0][0], dc_128); INIT_ALL_SIZES(dc_pred[0][0], dc_128);
INIT_ALL_SIZES(dc_pred[0][1], dc_top); INIT_ALL_SIZES(dc_pred[0][1], dc_top);
...@@ -351,7 +356,12 @@ static void av1_init_intra_predictors_internal(void) { ...@@ -351,7 +356,12 @@ static void av1_init_intra_predictors_internal(void) {
INIT_ALL_SIZES(pred_high[D117_PRED], highbd_d117); INIT_ALL_SIZES(pred_high[D117_PRED], highbd_d117);
INIT_ALL_SIZES(pred_high[D135_PRED], highbd_d135); INIT_ALL_SIZES(pred_high[D135_PRED], highbd_d135);
INIT_ALL_SIZES(pred_high[D153_PRED], highbd_d153); INIT_ALL_SIZES(pred_high[D153_PRED], highbd_d153);
#if CONFIG_ALT_INTRA
INIT_ALL_SIZES(pred_high[TM_PRED], highbd_paeth);
#else
INIT_ALL_SIZES(pred_high[TM_PRED], highbd_tm); INIT_ALL_SIZES(pred_high[TM_PRED], highbd_tm);
#endif // CONFIG_ALT_INTRA
INIT_ALL_SIZES(dc_pred_high[0][0], highbd_dc_128); INIT_ALL_SIZES(dc_pred_high[0][0], highbd_dc_128);
INIT_ALL_SIZES(dc_pred_high[0][1], highbd_dc_top); INIT_ALL_SIZES(dc_pred_high[0][1], highbd_dc_top);
......
...@@ -276,6 +276,7 @@ EXPERIMENT_LIST=" ...@@ -276,6 +276,7 @@ EXPERIMENT_LIST="
entropy entropy
bidir_pred bidir_pred
bitstream_debug bitstream_debug
alt_intra
" "
CONFIG_LIST=" CONFIG_LIST="
dependency_tracking dependency_tracking
......
...@@ -129,10 +129,13 @@ INSTANTIATE_TEST_CASE_P( ...@@ -129,10 +129,13 @@ INSTANTIATE_TEST_CASE_P(
SSE2_TO_C_8, AV1IntraPredTest, SSE2_TO_C_8, AV1IntraPredTest,
::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2, ::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2,
&aom_highbd_dc_predictor_32x32_c, 32, 8), &aom_highbd_dc_predictor_32x32_c, 32, 8),
#if !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2,
&aom_highbd_tm_predictor_16x16_c, 16, 8), &aom_highbd_tm_predictor_16x16_c, 16, 8),
IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2,
&aom_highbd_tm_predictor_32x32_c, 32, 8), &aom_highbd_tm_predictor_32x32_c, 32, 8),
#endif // !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2,
&aom_highbd_dc_predictor_4x4_c, 4, 8), &aom_highbd_dc_predictor_4x4_c, 4, 8),
IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2,
...@@ -146,20 +149,26 @@ INSTANTIATE_TEST_CASE_P( ...@@ -146,20 +149,26 @@ INSTANTIATE_TEST_CASE_P(
IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2,
&aom_highbd_v_predictor_16x16_c, 16, 8), &aom_highbd_v_predictor_16x16_c, 16, 8),
IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2,
&aom_highbd_v_predictor_32x32_c, 32, 8), &aom_highbd_v_predictor_32x32_c, 32, 8)
#if !CONFIG_ALT_INTRA
,
IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2,
&aom_highbd_tm_predictor_4x4_c, 4, 8), &aom_highbd_tm_predictor_4x4_c, 4, 8),
IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2,
&aom_highbd_tm_predictor_8x8_c, 8, 8))); &aom_highbd_tm_predictor_8x8_c, 8, 8)
#endif // !CONFIG_ALT_INTRA
));
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
SSE2_TO_C_10, AV1IntraPredTest, SSE2_TO_C_10, AV1IntraPredTest,
::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2, ::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2,
&aom_highbd_dc_predictor_32x32_c, 32, 10), &aom_highbd_dc_predictor_32x32_c, 32, 10),
#if !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2,
&aom_highbd_tm_predictor_16x16_c, 16, 10), &aom_highbd_tm_predictor_16x16_c, 16, 10),
IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2,
&aom_highbd_tm_predictor_32x32_c, 32, 10), &aom_highbd_tm_predictor_32x32_c, 32, 10),
#endif // !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2,
&aom_highbd_dc_predictor_4x4_c, 4, 10), &aom_highbd_dc_predictor_4x4_c, 4, 10),
IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2,
...@@ -173,20 +182,26 @@ INSTANTIATE_TEST_CASE_P( ...@@ -173,20 +182,26 @@ INSTANTIATE_TEST_CASE_P(
IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2,
&aom_highbd_v_predictor_16x16_c, 16, 10), &aom_highbd_v_predictor_16x16_c, 16, 10),
IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2,
&aom_highbd_v_predictor_32x32_c, 32, 10), &aom_highbd_v_predictor_32x32_c, 32, 10)
#if !CONFIG_ALT_INTRA
,
IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2,
&aom_highbd_tm_predictor_4x4_c, 4, 10), &aom_highbd_tm_predictor_4x4_c, 4, 10),
IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2,
&aom_highbd_tm_predictor_8x8_c, 8, 10))); &aom_highbd_tm_predictor_8x8_c, 8, 10)
#endif // !CONFIG_ALT_INTRA
));
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(
SSE2_TO_C_12, AV1IntraPredTest, SSE2_TO_C_12, AV1IntraPredTest,
::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2, ::testing::Values(IntraPredFunc(&aom_highbd_dc_predictor_32x32_sse2,
&aom_highbd_dc_predictor_32x32_c, 32, 12), &aom_highbd_dc_predictor_32x32_c, 32, 12),
#if !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_tm_predictor_16x16_sse2,
&aom_highbd_tm_predictor_16x16_c, 16, 12), &aom_highbd_tm_predictor_16x16_c, 16, 12),
IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_tm_predictor_32x32_sse2,
&aom_highbd_tm_predictor_32x32_c, 32, 12), &aom_highbd_tm_predictor_32x32_c, 32, 12),
#endif // !CONFIG_ALT_INTRA
IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_dc_predictor_4x4_sse2,
&aom_highbd_dc_predictor_4x4_c, 4, 12), &aom_highbd_dc_predictor_4x4_c, 4, 12),
IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_dc_predictor_8x8_sse2,
...@@ -200,11 +215,15 @@ INSTANTIATE_TEST_CASE_P( ...@@ -200,11 +215,15 @@ INSTANTIATE_TEST_CASE_P(
IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2, IntraPredFunc(&aom_highbd_v_predictor_16x16_sse2,
&aom_highbd_v_predictor_16x16_c, 16, 12), &aom_highbd_v_predictor_16x16_c, 16, 12),
IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2, IntraPredFunc(&aom_highbd_v_predictor_32x32_sse2,
&aom_highbd_v_predictor_32x32_c, 32, 12), &aom_highbd_v_predictor_32x32_c, 32, 12)
#if !CONFIG_ALT_INTRA
,
IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2, IntraPredFunc(&aom_highbd_tm_predictor_4x4_sse2,
&aom_highbd_tm_predictor_4x4_c, 4, 12), &aom_highbd_tm_predictor_4x4_c, 4, 12),
IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2, IntraPredFunc(&aom_highbd_tm_predictor_8x8_sse2,
&aom_highbd_tm_predictor_8x8_c, 8, 12))); &aom_highbd_tm_predictor_8x8_c, 8, 12)
#endif // !CONFIG_ALT_INTRA
));
#endif // CONFIG_AOM_HIGHBITDEPTH #endif // CONFIG_AOM_HIGHBITDEPTH
#endif // HAVE_SSE2 #endif // HAVE_SSE2
......
...@@ -161,7 +161,13 @@ INTRA_PRED_TEST(C, TestIntraPred4, aom_dc_predictor_4x4_c, ...@@ -161,7 +161,13 @@ INTRA_PRED_TEST(C, TestIntraPred4, aom_dc_predictor_4x4_c,
aom_h_predictor_4x4_c, aom_d45_predictor_4x4_c, aom_h_predictor_4x4_c, aom_d45_predictor_4x4_c,
aom_d135_predictor_4x4_c, aom_d117_predictor_4x4_c, aom_d135_predictor_4x4_c, aom_d117_predictor_4x4_c,
aom_d153_predictor_4x4_c, aom_d207_predictor_4x4_c, aom_d153_predictor_4x4_c, aom_d207_predictor_4x4_c,
aom_d63_predictor_4x4_c, aom_tm_predictor_4x4_c) aom_d63_predictor_4x4_c,
#if CONFIG_ALT_INTRA
aom_paeth_predictor_4x4_c
#else
aom_tm_predictor_4x4_c
#endif // CONFIG_ALT_INTRA
)
#if HAVE_SSE2 #if HAVE_SSE2
INTRA_PRED_TEST(SSE2, TestIntraPred4, aom_dc_predictor_4x4_sse2, INTRA_PRED_TEST(SSE2, TestIntraPred4, aom_dc_predictor_4x4_sse2,
...@@ -169,7 +175,12 @@ INTRA_PRED_TEST(SSE2, TestIntraPred4, aom_dc_predictor_4x4_sse2, ...@@ -169,7 +175,12 @@ INTRA_PRED_TEST(SSE2, TestIntraPred4, aom_dc_predictor_4x4_sse2,
aom_dc_128_predictor_4x4_sse2, aom_v_predictor_4x4_sse2, aom_dc_128_predictor_4x4_sse2, aom_v_predictor_4x4_sse2,
aom_h_predictor_4x4_sse2, aom_d45_predictor_4x4_sse2, NULL, aom_h_predictor_4x4_sse2, aom_d45_predictor_4x4_sse2, NULL,
NULL, NULL, aom_d207_predictor_4x4_sse2, NULL, NULL, NULL, aom_d207_predictor_4x4_sse2, NULL,
aom_tm_predictor_4x4_sse2) #if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_4x4_sse2
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_SSE2 #endif // HAVE_SSE2
#if HAVE_SSSE3 #if HAVE_SSSE3
...@@ -181,7 +192,13 @@ INTRA_PRED_TEST(SSSE3, TestIntraPred4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ...@@ -181,7 +192,13 @@ INTRA_PRED_TEST(SSSE3, TestIntraPred4, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
#if HAVE_DSPR2 #if HAVE_DSPR2
INTRA_PRED_TEST(DSPR2, TestIntraPred4, aom_dc_predictor_4x4_dspr2, NULL, NULL, INTRA_PRED_TEST(DSPR2, TestIntraPred4, aom_dc_predictor_4x4_dspr2, NULL, NULL,
NULL, NULL, aom_h_predictor_4x4_dspr2, NULL, NULL, NULL, NULL, NULL, NULL, aom_h_predictor_4x4_dspr2, NULL, NULL, NULL, NULL,
NULL, NULL, aom_tm_predictor_4x4_dspr2) NULL, NULL,
#if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_4x4_dspr2
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_DSPR2 #endif // HAVE_DSPR2
#if HAVE_NEON #if HAVE_NEON
...@@ -190,7 +207,12 @@ INTRA_PRED_TEST(NEON, TestIntraPred4, aom_dc_predictor_4x4_neon, ...@@ -190,7 +207,12 @@ INTRA_PRED_TEST(NEON, TestIntraPred4, aom_dc_predictor_4x4_neon,
aom_dc_128_predictor_4x4_neon, aom_v_predictor_4x4_neon, aom_dc_128_predictor_4x4_neon, aom_v_predictor_4x4_neon,
aom_h_predictor_4x4_neon, aom_d45_predictor_4x4_neon, aom_h_predictor_4x4_neon, aom_d45_predictor_4x4_neon,
aom_d135_predictor_4x4_neon, NULL, NULL, NULL, NULL, aom_d135_predictor_4x4_neon, NULL, NULL, NULL, NULL,
aom_tm_predictor_4x4_neon) #if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_4x4_neon
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_NEON #endif // HAVE_NEON
#if HAVE_MSA #if HAVE_MSA
...@@ -198,7 +220,12 @@ INTRA_PRED_TEST(MSA, TestIntraPred4, aom_dc_predictor_4x4_msa, ...@@ -198,7 +220,12 @@ INTRA_PRED_TEST(MSA, TestIntraPred4, aom_dc_predictor_4x4_msa,
aom_dc_left_predictor_4x4_msa, aom_dc_top_predictor_4x4_msa, aom_dc_left_predictor_4x4_msa, aom_dc_top_predictor_4x4_msa,
aom_dc_128_predictor_4x4_msa, aom_v_predictor_4x4_msa, aom_dc_128_predictor_4x4_msa, aom_v_predictor_4x4_msa,
aom_h_predictor_4x4_msa, NULL, NULL, NULL, NULL, NULL, NULL, aom_h_predictor_4x4_msa, NULL, NULL, NULL, NULL, NULL, NULL,
aom_tm_predictor_4x4_msa) #if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_4x4_msa
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_MSA #endif // HAVE_MSA
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -210,14 +237,26 @@ INTRA_PRED_TEST(C, TestIntraPred8, aom_dc_predictor_8x8_c, ...@@ -210,14 +237,26 @@ INTRA_PRED_TEST(C, TestIntraPred8, aom_dc_predictor_8x8_c,
aom_h_predictor_8x8_c, aom_d45_predictor_8x8_c, aom_h_predictor_8x8_c, aom_d45_predictor_8x8_c,
aom_d135_predictor_8x8_c, aom_d117_predictor_8x8_c, aom_d135_predictor_8x8_c, aom_d117_predictor_8x8_c,
aom_d153_predictor_8x8_c, aom_d207_predictor_8x8_c, aom_d153_predictor_8x8_c, aom_d207_predictor_8x8_c,
aom_d63_predictor_8x8_c, aom_tm_predictor_8x8_c) aom_d63_predictor_8x8_c,
#if CONFIG_ALT_INTRA
aom_paeth_predictor_8x8_c
#else
aom_tm_predictor_8x8_c
#endif // CONFIG_ALT_INTRA
)
#if HAVE_SSE2 #if HAVE_SSE2
INTRA_PRED_TEST(SSE2, TestIntraPred8, aom_dc_predictor_8x8_sse2, INTRA_PRED_TEST(SSE2, TestIntraPred8, aom_dc_predictor_8x8_sse2,
aom_dc_left_predictor_8x8_sse2, aom_dc_top_predictor_8x8_sse2, aom_dc_left_predictor_8x8_sse2, aom_dc_top_predictor_8x8_sse2,
aom_dc_128_predictor_8x8_sse2, aom_v_predictor_8x8_sse2, aom_dc_128_predictor_8x8_sse2, aom_v_predictor_8x8_sse2,
aom_h_predictor_8x8_sse2, aom_d45_predictor_8x8_sse2, NULL, aom_h_predictor_8x8_sse2, aom_d45_predictor_8x8_sse2, NULL,
NULL, NULL, NULL, NULL, aom_tm_predictor_8x8_sse2) NULL, NULL, NULL, NULL,
#if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_8x8_sse2
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_SSE2 #endif // HAVE_SSE2
#if HAVE_SSSE3 #if HAVE_SSSE3
...@@ -229,7 +268,13 @@ INTRA_PRED_TEST(SSSE3, TestIntraPred8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ...@@ -229,7 +268,13 @@ INTRA_PRED_TEST(SSSE3, TestIntraPred8, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
#if HAVE_DSPR2 #if HAVE_DSPR2
INTRA_PRED_TEST(DSPR2, TestIntraPred8, aom_dc_predictor_8x8_dspr2, NULL, NULL, INTRA_PRED_TEST(DSPR2, TestIntraPred8, aom_dc_predictor_8x8_dspr2, NULL, NULL,
NULL, NULL, aom_h_predictor_8x8_dspr2, NULL, NULL, NULL, NULL, NULL, NULL, aom_h_predictor_8x8_dspr2, NULL, NULL, NULL, NULL,
NULL, NULL, aom_tm_predictor_8x8_dspr2) NULL, NULL,
#if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_8x8_dspr2
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_DSPR2 #endif // HAVE_DSPR2
#if HAVE_NEON #if HAVE_NEON
...@@ -237,7 +282,13 @@ INTRA_PRED_TEST(NEON, TestIntraPred8, aom_dc_predictor_8x8_neon, ...@@ -237,7 +282,13 @@ INTRA_PRED_TEST(NEON, TestIntraPred8, aom_dc_predictor_8x8_neon,
aom_dc_left_predictor_8x8_neon, aom_dc_top_predictor_8x8_neon, aom_dc_left_predictor_8x8_neon, aom_dc_top_predictor_8x8_neon,
aom_dc_128_predictor_8x8_neon, aom_v_predictor_8x8_neon, aom_dc_128_predictor_8x8_neon, aom_v_predictor_8x8_neon,
aom_h_predictor_8x8_neon, aom_d45_predictor_8x8_neon, NULL, aom_h_predictor_8x8_neon, aom_d45_predictor_8x8_neon, NULL,
NULL, NULL, NULL, NULL, aom_tm_predictor_8x8_neon) NULL, NULL, NULL, NULL,
#if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_8x8_neon
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_NEON #endif // HAVE_NEON
...@@ -246,7 +297,12 @@ INTRA_PRED_TEST(MSA, TestIntraPred8, aom_dc_predictor_8x8_msa, ...@@ -246,7 +297,12 @@ INTRA_PRED_TEST(MSA, TestIntraPred8, aom_dc_predictor_8x8_msa,
aom_dc_left_predictor_8x8_msa, aom_dc_top_predictor_8x8_msa, aom_dc_left_predictor_8x8_msa, aom_dc_top_predictor_8x8_msa,
aom_dc_128_predictor_8x8_msa, aom_v_predictor_8x8_msa, aom_dc_128_predictor_8x8_msa, aom_v_predictor_8x8_msa,
aom_h_predictor_8x8_msa, NULL, NULL, NULL, NULL, NULL, NULL, aom_h_predictor_8x8_msa, NULL, NULL, NULL, NULL, NULL, NULL,
aom_tm_predictor_8x8_msa) #if CONFIG_ALT_INTRA
NULL
#else
aom_tm_predictor_8x8_msa
#endif // CONFIG_ALT_INTRA
)
#endif // HAVE_MSA #endif // HAVE_MSA
// -----------------------------------------------------------------------------