HBD flag for variance and convolve functions.
Binary size reduction with -DCONFIG_AV1_HIGHBITDEPTH=0:
-Oz 15%
-Os 16%
-O2 23%
-O3 31%
BUG=aomedia:2397
Change-Id: I8b162f3c01527332cc151072927656a71343d465
diff --git a/aom_dsp/aom_convolve.c b/aom_dsp/aom_convolve.c
index 4791826..e7cc659 100644
--- a/aom_dsp/aom_convolve.c
+++ b/aom_dsp/aom_convolve.c
@@ -130,6 +130,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
static INLINE int highbd_vert_scalar_product(const uint16_t *a,
ptrdiff_t a_stride,
const int16_t *b) {
@@ -236,3 +237,4 @@
dst += dst_stride;
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/aom_dsp/aom_dsp.cmake b/aom_dsp/aom_dsp.cmake
index bf35573..921535e 100644
--- a/aom_dsp/aom_dsp.cmake
+++ b/aom_dsp/aom_dsp.cmake
@@ -76,6 +76,11 @@
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_SSE2
+ "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c")
+endif()
+
list(APPEND AOM_DSP_COMMON_ASM_SSSE3
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
@@ -85,6 +90,11 @@
"${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c"
"${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_SSSE3
+ "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c")
+endif()
+
list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
"${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
"${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
@@ -104,6 +114,11 @@
"${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_AVX2
+ "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c")
+endif()
+
list(APPEND AOM_DSP_COMMON_INTRIN_NEON "${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
"${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
"${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
@@ -201,7 +216,8 @@
if(NOT CONFIG_AV1_HIGHBITDEPTH)
list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE2
"${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
- "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c")
+ "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
+ "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c")
endif()
list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
@@ -245,6 +261,11 @@
"${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
"${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
+ if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE4_1
+ "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c")
+ endif()
+
list(APPEND AOM_DSP_ENCODER_INTRIN_NEON "${AOM_ROOT}/aom_dsp/arm/sad4d_neon.c"
"${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
"${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl
index 6469574..41a824a 100755
--- a/aom_dsp/aom_dsp_rtcd_defs.pl
+++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -358,14 +358,16 @@
specialize qw/aom_convolve8_horiz sse2 ssse3/, "$avx2_ssse3";
specialize qw/aom_convolve8_vert sse2 ssse3/, "$avx2_ssse3";
-add_proto qw/void aom_highbd_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int filter_x_stride, const int16_t *filter_y, int filter_y_stride, int w, int h, int bd";
-specialize qw/aom_highbd_convolve_copy sse2 avx2/;
+if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ add_proto qw/void aom_highbd_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int filter_x_stride, const int16_t *filter_y, int filter_y_stride, int w, int h, int bd";
+ specialize qw/aom_highbd_convolve_copy sse2 avx2/;
-add_proto qw/void aom_highbd_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd";
-specialize qw/aom_highbd_convolve8_horiz sse2 avx2/;
+ add_proto qw/void aom_highbd_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd";
+ specialize qw/aom_highbd_convolve8_horiz sse2 avx2/;
-add_proto qw/void aom_highbd_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd";
-specialize qw/aom_highbd_convolve8_vert sse2 avx2/;
+ add_proto qw/void aom_highbd_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bd";
+ specialize qw/aom_highbd_convolve8_vert sse2 avx2/;
+}
#
# Loopfilter
@@ -700,7 +702,7 @@
specialize qw/aom_sad64xh sse2/;
specialize qw/aom_sad128xh sse2/;
-
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
foreach (@block_sizes) {
($w, $h) = @$_;
add_proto qw/unsigned int/, "aom_highbd_sad${w}x${h}", "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
@@ -754,7 +756,7 @@
specialize qw/aom_highbd_sad32x8_avg avx2 sse2/;
specialize qw/aom_highbd_sad16x64_avg avx2 sse2/;
specialize qw/aom_highbd_sad64x16_avg avx2 sse2/;
-
+ }
#
# Masked SAD
#
@@ -828,37 +830,38 @@
#
# Multi-block SAD, comparing a reference to N independent blocks
#
- foreach (@block_sizes) {
- ($w, $h) = @$_;
- add_proto qw/void/, "aom_highbd_sad${w}x${h}x4d", "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array";
- if ($w != 128 && $h != 128) {
- specialize "aom_highbd_sad${w}x${h}x4d", qw/sse2/;
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ foreach (@block_sizes) {
+ ($w, $h) = @$_;
+ add_proto qw/void/, "aom_highbd_sad${w}x${h}x4d", "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array";
+ if ($w != 128 && $h != 128) {
+ specialize "aom_highbd_sad${w}x${h}x4d", qw/sse2/;
+ }
}
+ specialize qw/aom_highbd_sad128x128x4d avx2/;
+ specialize qw/aom_highbd_sad128x64x4d avx2/;
+ specialize qw/aom_highbd_sad64x128x4d avx2/;
+ specialize qw/aom_highbd_sad64x64x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad64x32x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad32x64x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad32x32x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad32x16x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad16x32x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad16x16x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad16x8x4d sse2 avx2/;
+ specialize qw/aom_highbd_sad8x16x4d sse2/;
+ specialize qw/aom_highbd_sad8x8x4d sse2/;
+ specialize qw/aom_highbd_sad8x4x4d sse2/;
+ specialize qw/aom_highbd_sad4x8x4d sse2/;
+ specialize qw/aom_highbd_sad4x4x4d sse2/;
+
+ specialize qw/aom_highbd_sad4x16x4d sse2/;
+ specialize qw/aom_highbd_sad16x4x4d avx2 sse2/;
+ specialize qw/aom_highbd_sad8x32x4d sse2/;
+ specialize qw/aom_highbd_sad32x8x4d avx2 sse2/;
+ specialize qw/aom_highbd_sad16x64x4d avx2 sse2/;
+ specialize qw/aom_highbd_sad64x16x4d avx2 sse2/;
}
- specialize qw/aom_highbd_sad128x128x4d avx2/;
- specialize qw/aom_highbd_sad128x64x4d avx2/;
- specialize qw/aom_highbd_sad64x128x4d avx2/;
- specialize qw/aom_highbd_sad64x64x4d sse2 avx2/;
- specialize qw/aom_highbd_sad64x32x4d sse2 avx2/;
- specialize qw/aom_highbd_sad32x64x4d sse2 avx2/;
- specialize qw/aom_highbd_sad32x32x4d sse2 avx2/;
- specialize qw/aom_highbd_sad32x16x4d sse2 avx2/;
- specialize qw/aom_highbd_sad16x32x4d sse2 avx2/;
- specialize qw/aom_highbd_sad16x16x4d sse2 avx2/;
- specialize qw/aom_highbd_sad16x8x4d sse2 avx2/;
- specialize qw/aom_highbd_sad8x16x4d sse2/;
- specialize qw/aom_highbd_sad8x8x4d sse2/;
- specialize qw/aom_highbd_sad8x4x4d sse2/;
- specialize qw/aom_highbd_sad4x8x4d sse2/;
- specialize qw/aom_highbd_sad4x4x4d sse2/;
-
- specialize qw/aom_highbd_sad4x16x4d sse2/;
- specialize qw/aom_highbd_sad16x4x4d avx2 sse2/;
- specialize qw/aom_highbd_sad8x32x4d sse2/;
- specialize qw/aom_highbd_sad32x8x4d avx2 sse2/;
- specialize qw/aom_highbd_sad16x64x4d avx2 sse2/;
- specialize qw/aom_highbd_sad64x16x4d avx2 sse2/;
-
#
# Avg
#
@@ -984,10 +987,12 @@
int subpel_search";
specialize qw/aom_comp_mask_upsampled_pred sse2/;
- add_proto qw/void aom_highbd_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
- const MV *const mv, uint8_t *comp_pred8, int width, int height, int subpel_x_q3,
- int subpel_y_q3, const uint8_t *ref8, int ref_stride, int bd, int subpel_search";
- specialize qw/aom_highbd_upsampled_pred sse2/;
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ add_proto qw/void aom_highbd_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
+ const MV *const mv, uint8_t *comp_pred8, int width, int height, int subpel_x_q3,
+ int subpel_y_q3, const uint8_t *ref8, int ref_stride, int bd, int subpel_search";
+ specialize qw/aom_highbd_upsampled_pred sse2/;
+ }
add_proto qw/void aom_highbd_comp_avg_upsampled_pred/, "MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
const MV *const mv, uint8_t *comp_pred8, const uint8_t *pred8, int width,
@@ -1122,40 +1127,40 @@
specialize qw/aom_dist_wtd_sub_pixel_avg_variance128x64 ssse3/;
specialize qw/aom_dist_wtd_sub_pixel_avg_variance64x128 ssse3/;
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ foreach $bd (8, 10, 12) {
+ add_proto qw/unsigned int/, "aom_highbd_${bd}_variance2x2", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
- foreach $bd (8, 10, 12) {
- add_proto qw/unsigned int/, "aom_highbd_${bd}_variance2x2", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int/, "aom_highbd_${bd}_variance2x4", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
- add_proto qw/unsigned int/, "aom_highbd_${bd}_variance2x4", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int/, "aom_highbd_${bd}_variance4x2", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
- add_proto qw/unsigned int/, "aom_highbd_${bd}_variance4x2", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
-
- foreach (@block_sizes) {
- ($w, $h) = @$_;
- add_proto qw/unsigned int/, "aom_highbd_${bd}_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
- add_proto qw/uint32_t/, "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
- add_proto qw/uint32_t/, "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
- if ($w != 128 && $h != 128 && $w != 4 && $h != 4) {
- specialize "aom_highbd_${bd}_variance${w}x${h}", "sse2";
- }
- # TODO(david.barker): When ext-partition-types is enabled, we currently
- # don't have vectorized 4x16 highbd variance functions
- if ($w == 4 && $h == 4) {
- specialize "aom_highbd_${bd}_variance${w}x${h}", "sse4_1";
+ foreach (@block_sizes) {
+ ($w, $h) = @$_;
+ add_proto qw/unsigned int/, "aom_highbd_${bd}_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
+ add_proto qw/uint32_t/, "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
+ add_proto qw/uint32_t/, "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
+ if ($w != 128 && $h != 128 && $w != 4 && $h != 4) {
+ specialize "aom_highbd_${bd}_variance${w}x${h}", "sse2";
}
- if ($w != 128 && $h != 128 && $w != 4) {
- specialize "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", qw/sse2/;
- specialize "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", qw/sse2/;
- }
- if ($w == 4 && $h == 4) {
- specialize "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", "sse4_1";
- specialize "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", "sse4_1";
- }
+ # TODO(david.barker): When ext-partition-types is enabled, we currently
+ # don't have vectorized 4x16 highbd variance functions
+ if ($w == 4 && $h == 4) {
+ specialize "aom_highbd_${bd}_variance${w}x${h}", "sse4_1";
+ }
+ if ($w != 128 && $h != 128 && $w != 4) {
+ specialize "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", qw/sse2/;
+ specialize "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", qw/sse2/;
+ }
+ if ($w == 4 && $h == 4) {
+ specialize "aom_highbd_${bd}_sub_pixel_variance${w}x${h}", "sse4_1";
+ specialize "aom_highbd_${bd}_sub_pixel_avg_variance${w}x${h}", "sse4_1";
+ }
- add_proto qw/uint32_t/, "aom_highbd_${bd}_dist_wtd_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param";
+ add_proto qw/uint32_t/, "aom_highbd_${bd}_dist_wtd_sub_pixel_avg_variance${w}x${h}", "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS* jcp_param";
+ }
}
}
-
#
# Masked Variance / Masked Subpixel Variance
#
@@ -1165,7 +1170,7 @@
specialize "aom_masked_sub_pixel_variance${w}x${h}", qw/ssse3/;
}
-
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
foreach $bd ("_8_", "_10_", "_12_") {
foreach (@block_sizes) {
($w, $h) = @$_;
@@ -1173,7 +1178,7 @@
specialize "aom_highbd${bd}masked_sub_pixel_variance${w}x${h}", qw/ssse3/;
}
}
-
+ }
#
# OBMC Variance / OBMC Subpixel Variance
@@ -1186,7 +1191,7 @@
specialize "aom_obmc_sub_pixel_variance${w}x${h}", q/sse4_1/;
}
-
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
foreach $bd ("_", "_10_", "_12_") {
foreach (@block_sizes) {
($w, $h) = @$_;
@@ -1195,7 +1200,7 @@
specialize "aom_highbd${bd}obmc_variance${w}x${h}", qw/sse4_1/;
}
}
-
+ }
add_proto qw/uint32_t aom_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
specialize qw/aom_sub_pixel_avg_variance64x64 avx2 msa sse2 ssse3/;
@@ -1244,13 +1249,15 @@
add_proto qw/void aom_dist_wtd_comp_avg_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param";
specialize qw/aom_dist_wtd_comp_avg_pred ssse3/;
+if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+
add_proto qw/unsigned int aom_highbd_12_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_12_variance128x128 sse2/;
- add_proto qw/unsigned int aom_highbd_12_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_12_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_12_variance128x64 sse2/;
- add_proto qw/unsigned int aom_highbd_12_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_12_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_12_variance64x128 sse2/;
add_proto qw/unsigned int aom_highbd_12_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
@@ -1287,13 +1294,13 @@
add_proto qw/unsigned int aom_highbd_12_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
add_proto qw/unsigned int aom_highbd_12_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
- add_proto qw/unsigned int aom_highbd_10_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_10_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_10_variance128x128 sse2 avx2/;
- add_proto qw/unsigned int aom_highbd_10_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_10_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_10_variance128x64 sse2 avx2/;
- add_proto qw/unsigned int aom_highbd_10_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_10_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_10_variance64x128 sse2 avx2/;
add_proto qw/unsigned int aom_highbd_10_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
@@ -1330,13 +1337,13 @@
add_proto qw/unsigned int aom_highbd_10_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
add_proto qw/unsigned int aom_highbd_10_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
- add_proto qw/unsigned int aom_highbd_8_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_8_variance128x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_8_variance128x128 sse2/;
- add_proto qw/unsigned int aom_highbd_8_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_8_variance128x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_8_variance128x64 sse2/;
- add_proto qw/unsigned int aom_highbd_8_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
+ add_proto qw/unsigned int aom_highbd_8_variance64x128/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
specialize qw/aom_highbd_8_variance64x128 sse2/;
add_proto qw/unsigned int aom_highbd_8_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
@@ -1372,7 +1379,7 @@
add_proto qw/unsigned int aom_highbd_8_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
add_proto qw/unsigned int aom_highbd_8_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
add_proto qw/unsigned int aom_highbd_8_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
-
+ }
add_proto qw/void aom_highbd_8_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
add_proto qw/void aom_highbd_8_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
@@ -1406,11 +1413,12 @@
add_proto qw/unsigned int aom_highbd_12_mse8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
specialize qw/aom_highbd_12_mse8x8 sse2/;
- add_proto qw/void aom_highbd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride";
+ if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ add_proto qw/void aom_highbd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride";
- add_proto qw/void aom_highbd_dist_wtd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param";
- specialize qw/aom_highbd_dist_wtd_comp_avg_pred sse2/;
-
+ add_proto qw/void aom_highbd_dist_wtd_comp_avg_pred/, "uint8_t *comp_pred8, const uint8_t *pred8, int width, int height, const uint8_t *ref8, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param";
+ specialize qw/aom_highbd_dist_wtd_comp_avg_pred sse2/;
+ }
#
# Subpixel Variance
#
diff --git a/aom_dsp/psnr.c b/aom_dsp/psnr.c
index 50f376a..7f5a361 100644
--- a/aom_dsp/psnr.c
+++ b/aom_dsp/psnr.c
@@ -49,6 +49,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
static void encoder_highbd_variance64(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride, int w,
int h, uint64_t *sse, int64_t *sum) {
@@ -81,6 +82,7 @@
*sse = (unsigned int)sse_long;
*sum = (int)sum_long;
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
static int64_t get_sse(const uint8_t *a, int a_stride, const uint8_t *b,
int b_stride, int width, int height) {
@@ -122,6 +124,7 @@
return total_sse;
}
+#if CONFIG_AV1_HIGHBITDEPTH
static int64_t highbd_get_sse_shift(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride, int width,
int height, unsigned int input_shift) {
@@ -174,6 +177,7 @@
}
return total_sse;
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
int64_t aom_get_y_sse_part(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, int hstart, int width,
@@ -226,6 +230,7 @@
a->uv_crop_width, a->uv_crop_height);
}
+#if CONFIG_AV1_HIGHBITDEPTH
int64_t aom_highbd_get_y_sse_part(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, int hstart,
int width, int vstart, int height) {
@@ -284,9 +289,11 @@
return highbd_get_sse(a->v_buffer, a->uv_stride, b->v_buffer, b->uv_stride,
a->uv_crop_width, a->uv_crop_height);
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
int64_t aom_get_sse_plane(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, int plane, int highbd) {
+#if CONFIG_AV1_HIGHBITDEPTH
if (highbd) {
switch (plane) {
case 0: return aom_highbd_get_y_sse(a, b);
@@ -294,15 +301,26 @@
case 2: return aom_highbd_get_v_sse(a, b);
default: assert(plane >= 0 && plane <= 2); return 0;
}
+ } else {
+ switch (plane) {
+ case 0: return aom_get_y_sse(a, b);
+ case 1: return aom_get_u_sse(a, b);
+ case 2: return aom_get_v_sse(a, b);
+ default: assert(plane >= 0 && plane <= 2); return 0;
+ }
}
+#else
+ (void)highbd;
switch (plane) {
case 0: return aom_get_y_sse(a, b);
case 1: return aom_get_u_sse(a, b);
case 2: return aom_get_v_sse(a, b);
default: assert(plane >= 0 && plane <= 2); return 0;
}
+#endif
}
+#if CONFIG_AV1_HIGHBITDEPTH
void aom_calc_highbd_psnr(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, PSNR_STATS *psnr,
uint32_t bit_depth, uint32_t in_bit_depth) {
@@ -347,6 +365,7 @@
psnr->psnr[0] =
aom_sse_to_psnr((double)total_samples, peak, (double)total_sse);
}
+#endif
void aom_calc_psnr(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b,
PSNR_STATS *psnr) {
diff --git a/aom_dsp/psnr.h b/aom_dsp/psnr.h
index 58e4e71..99aa54c 100644
--- a/aom_dsp/psnr.h
+++ b/aom_dsp/psnr.h
@@ -49,6 +49,7 @@
int64_t aom_get_v_sse(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b);
int64_t aom_get_sse_plane(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, int plane, int highbd);
+#if CONFIG_AV1_HIGHBITDEPTH
int64_t aom_highbd_get_y_sse_part(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, int hstart,
int width, int vstart, int height);
@@ -67,6 +68,7 @@
void aom_calc_highbd_psnr(const YV12_BUFFER_CONFIG *a,
const YV12_BUFFER_CONFIG *b, PSNR_STATS *psnr,
unsigned int bit_depth, unsigned int in_bit_depth);
+#endif
void aom_calc_psnr(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b,
PSNR_STATS *psnr);
diff --git a/aom_dsp/sad.c b/aom_dsp/sad.c
index d885154..166a17a 100644
--- a/aom_dsp/sad.c
+++ b/aom_dsp/sad.c
@@ -159,6 +159,7 @@
sadMxN(64, 16);
sadMxNx4D(64, 16);
+#if CONFIG_AV1_HIGHBITDEPTH
static INLINE unsigned int highbd_sad(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride,
int width, int height) {
@@ -306,3 +307,4 @@
highbd_sadMxNx4D(16, 64);
highbd_sadMxN(64, 16);
highbd_sadMxNx4D(64, 16);
+#endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/aom_dsp/variance.c b/aom_dsp/variance.c
index f68c6cc..e80935c 100644
--- a/aom_dsp/variance.c
+++ b/aom_dsp/variance.c
@@ -468,6 +468,7 @@
}
}
+#if CONFIG_AV1_HIGHBITDEPTH
static void highbd_variance64(const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride, int w, int h,
uint64_t *sse, int64_t *sum) {
@@ -1070,6 +1071,7 @@
pred += width;
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width,
int height, const uint8_t *ref, int ref_stride,
@@ -1153,6 +1155,7 @@
MASK_SUBPIX_VAR(16, 64)
MASK_SUBPIX_VAR(64, 16)
+#if CONFIG_AV1_HIGHBITDEPTH
void aom_highbd_comp_mask_pred_c(uint8_t *comp_pred8, const uint8_t *pred8,
int width, int height, const uint8_t *ref8,
int ref_stride, const uint8_t *mask,
@@ -1277,6 +1280,7 @@
HIGHBD_MASK_SUBPIX_VAR(32, 8)
HIGHBD_MASK_SUBPIX_VAR(16, 64)
HIGHBD_MASK_SUBPIX_VAR(64, 16)
+#endif // CONFIG_AV1_HIGHBITDEPTH
static INLINE void obmc_variance(const uint8_t *pre, int pre_stride,
const int32_t *wsrc, const int32_t *mask,
@@ -1384,6 +1388,7 @@
OBMC_VAR(64, 16)
OBMC_SUBPIX_VAR(64, 16)
+#if CONFIG_AV1_HIGHBITDEPTH
static INLINE void highbd_obmc_variance64(const uint8_t *pre8, int pre_stride,
const int32_t *wsrc,
const int32_t *mask, int w, int h,
@@ -1575,3 +1580,4 @@
HIGHBD_OBMC_SUBPIX_VAR(16, 64)
HIGHBD_OBMC_VAR(64, 16)
HIGHBD_OBMC_SUBPIX_VAR(64, 16)
+#endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/aom_dsp/x86/aom_asm_stubs.c b/aom_dsp/x86/aom_asm_stubs.c
index 3bf7b55..ce8285e 100644
--- a/aom_dsp/x86/aom_asm_stubs.c
+++ b/aom_dsp/x86/aom_asm_stubs.c
@@ -49,6 +49,7 @@
FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
+#if CONFIG_AV1_HIGHBITDEPTH
highbd_filter8_1dfunction aom_highbd_filter_block1d16_v8_sse2;
highbd_filter8_1dfunction aom_highbd_filter_block1d16_h8_sse2;
highbd_filter8_1dfunction aom_highbd_filter_block1d8_v8_sse2;
@@ -90,5 +91,5 @@
// int w, int h, int bd);
HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
-
+#endif
#endif // HAVE_SSE2
diff --git a/aom_dsp/x86/convolve.h b/aom_dsp/x86/convolve.h
index ff3224e..b4ff697 100644
--- a/aom_dsp/x86/convolve.h
+++ b/aom_dsp/x86/convolve.h
@@ -107,6 +107,7 @@
} \
}
+#if CONFIG_AV1_HIGHBITDEPTH
typedef void highbd_filter8_1dfunction(const uint16_t *src_ptr,
const ptrdiff_t src_pitch,
uint16_t *output_ptr,
@@ -197,5 +198,6 @@
dst_stride, filter_x, x_step_q4, filter_y, y_step_q4, w, h, bd); \
} \
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
#endif // AOM_AOM_DSP_X86_CONVOLVE_H_
diff --git a/aom_dsp/x86/masked_variance_intrin_ssse3.c b/aom_dsp/x86/masked_variance_intrin_ssse3.c
index ebf4631..fa93f0d 100644
--- a/aom_dsp/x86/masked_variance_intrin_ssse3.c
+++ b/aom_dsp/x86/masked_variance_intrin_ssse3.c
@@ -517,6 +517,7 @@
*sse = _mm_cvtsi128_si32(_mm_srli_si128(sum, 4));
}
+#if CONFIG_AV1_HIGHBITDEPTH
// For width a multiple of 8
static void highbd_bilinear_filter(const uint16_t *src, int src_stride,
int xoffset, int yoffset, uint16_t *dst,
@@ -1025,6 +1026,7 @@
*sum_ = _mm_cvtsi128_si32(sum);
*sse = _mm_cvtsi128_si32(_mm_srli_si128(sum, 4));
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
void aom_comp_mask_pred_ssse3(uint8_t *comp_pred, const uint8_t *pred,
int width, int height, const uint8_t *ref,
diff --git a/aom_dsp/x86/obmc_variance_sse4.c b/aom_dsp/x86/obmc_variance_sse4.c
index 72eda0e..aa73c39 100644
--- a/aom_dsp/x86/obmc_variance_sse4.c
+++ b/aom_dsp/x86/obmc_variance_sse4.c
@@ -166,7 +166,7 @@
////////////////////////////////////////////////////////////////////////////////
// High bit-depth
////////////////////////////////////////////////////////////////////////////////
-
+#if CONFIG_AV1_HIGHBITDEPTH
static INLINE void hbd_obmc_variance_w4(
const uint8_t *pre8, const int pre_stride, const int32_t *wsrc,
const int32_t *mask, uint64_t *const sse, int64_t *const sum, const int h) {
@@ -378,3 +378,4 @@
HBD_OBMCVARWXH(32, 8)
HBD_OBMCVARWXH(16, 64)
HBD_OBMCVARWXH(64, 16)
+#endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/av1/av1.cmake b/av1/av1.cmake
index ce9af78..647d0b0 100644
--- a/av1/av1.cmake
+++ b/av1/av1.cmake
@@ -234,6 +234,11 @@
"${AOM_ROOT}/av1/common/x86/av1_txfm_sse2.h"
"${AOM_ROOT}/av1/common/x86/warp_plane_sse2.c")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE2
+ "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_sse2.c")
+endif()
+
list(APPEND AOM_AV1_COMMON_INTRIN_SSSE3
"${AOM_ROOT}/av1/common/cdef_block_ssse3.c"
"${AOM_ROOT}/av1/common/x86/av1_inv_txfm_ssse3.c"
@@ -244,6 +249,11 @@
"${AOM_ROOT}/av1/common/x86/jnt_convolve_ssse3.c"
"${AOM_ROOT}/av1/common/x86/reconinter_ssse3.c")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSSE3
+ "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_ssse3.c")
+endif()
+
list(APPEND AOM_AV1_COMMON_INTRIN_SSE4_1
"${AOM_ROOT}/av1/common/cdef_block_sse4.c"
"${AOM_ROOT}/av1/common/x86/av1_convolve_horiz_rs_sse4.c"
@@ -260,6 +270,11 @@
"${AOM_ROOT}/av1/common/x86/selfguided_sse4.c"
"${AOM_ROOT}/av1/common/x86/warp_plane_sse4.c")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE4_1
+ "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_sse4.c")
+endif()
+
list(APPEND AOM_AV1_COMMON_INTRIN_AVX2
"${AOM_ROOT}/av1/common/cdef_block_avx2.c"
"${AOM_ROOT}/av1/common/x86/av1_inv_txfm_avx2.c"
@@ -277,6 +292,11 @@
"${AOM_ROOT}/av1/common/x86/warp_plane_avx2.c"
"${AOM_ROOT}/av1/common/x86/wiener_convolve_avx2.c")
+if(NOT CONFIG_AV1_HIGHBITDEPTH)
+ list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_AVX2
+ "${AOM_ROOT}/av1/common/x86/highbd_convolve_2d_avx2.c")
+endif()
+
list(APPEND AOM_AV1_ENCODER_ASM_SSE2 "${AOM_ROOT}/av1/encoder/x86/dct_sse2.asm"
"${AOM_ROOT}/av1/encoder/x86/error_sse2.asm")
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl
index b409bf5..6335a55 100644
--- a/av1/common/av1_rtcd_defs.pl
+++ b/av1/common/av1_rtcd_defs.pl
@@ -401,14 +401,16 @@
add_proto qw/void av1_dist_wtd_convolve_2d_copy/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params";
add_proto qw/void av1_dist_wtd_convolve_x/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params";
add_proto qw/void av1_dist_wtd_convolve_y/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params";
-add_proto qw/void av1_highbd_convolve_2d_copy_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_convolve_2d_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_convolve_x_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_convolve_y_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_dist_wtd_convolve_2d/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_dist_wtd_convolve_x/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_dist_wtd_convolve_y/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
-add_proto qw/void av1_highbd_dist_wtd_convolve_2d_copy/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+if(aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ add_proto qw/void av1_highbd_convolve_2d_copy_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_convolve_2d_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_convolve_x_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_convolve_y_sr/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_dist_wtd_convolve_2d/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_dist_wtd_convolve_x/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_dist_wtd_convolve_y/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+ add_proto qw/void av1_highbd_dist_wtd_convolve_2d_copy/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params, int bd";
+}
add_proto qw/void av1_convolve_2d_scale/, "const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params";
add_proto qw/void av1_highbd_convolve_2d_scale/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params, int bd";
@@ -422,15 +424,17 @@
specialize qw/av1_dist_wtd_convolve_2d_copy sse2 avx2 neon/;
specialize qw/av1_dist_wtd_convolve_x sse2 avx2 neon/;
specialize qw/av1_dist_wtd_convolve_y sse2 avx2 neon/;
- specialize qw/av1_highbd_convolve_2d_copy_sr sse2 avx2/;
- specialize qw/av1_highbd_convolve_2d_sr ssse3 avx2/;
- specialize qw/av1_highbd_convolve_x_sr ssse3 avx2/;
- specialize qw/av1_highbd_convolve_y_sr ssse3 avx2/;
+ if(aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+ specialize qw/av1_highbd_dist_wtd_convolve_2d sse4_1 avx2/;
+ specialize qw/av1_highbd_dist_wtd_convolve_x sse4_1 avx2/;
+ specialize qw/av1_highbd_dist_wtd_convolve_y sse4_1 avx2/;
+ specialize qw/av1_highbd_dist_wtd_convolve_2d_copy sse4_1 avx2/;
+ specialize qw/av1_highbd_convolve_2d_copy_sr sse2 avx2/;
+ specialize qw/av1_highbd_convolve_2d_sr ssse3 avx2/;
+ specialize qw/av1_highbd_convolve_x_sr ssse3 avx2/;
+ specialize qw/av1_highbd_convolve_y_sr ssse3 avx2/;
+ }
specialize qw/av1_highbd_convolve_2d_scale sse4_1/;
- specialize qw/av1_highbd_dist_wtd_convolve_2d sse4_1 avx2/;
- specialize qw/av1_highbd_dist_wtd_convolve_x sse4_1 avx2/;
- specialize qw/av1_highbd_dist_wtd_convolve_y sse4_1 avx2/;
- specialize qw/av1_highbd_dist_wtd_convolve_2d_copy sse4_1 avx2/;
# INTRA_EDGE functions
add_proto qw/void av1_filter_intra_edge/, "uint8_t *p, int sz, int strength";
diff --git a/av1/common/scale.c b/av1/common/scale.c
index a542aaa..50d75cb 100644
--- a/av1/common/scale.c
+++ b/av1/common/scale.c
@@ -104,6 +104,7 @@
sf->convolve[1][0][1] = av1_dist_wtd_convolve_x;
// subpel_x_qn != 0 && subpel_y_qn != 0
sf->convolve[1][1][1] = av1_dist_wtd_convolve_2d;
+#if CONFIG_AV1_HIGHBITDEPTH
// AV1 High BD convolve functions
// Special case convolve functions should produce the same result as
// av1_highbd_convolve_2d.
@@ -123,4 +124,5 @@
sf->highbd_convolve[1][0][1] = av1_highbd_dist_wtd_convolve_x;
// subpel_x_qn != 0 && subpel_y_qn != 0
sf->highbd_convolve[1][1][1] = av1_highbd_dist_wtd_convolve_2d;
+#endif
}
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 878e42e..385cc2b 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -1367,6 +1367,7 @@
4; \
}
+#if CONFIG_AV1_HIGHBITDEPTH
MAKE_BFP_SAD_WRAPPER(aom_highbd_sad128x128)
MAKE_BFP_SADAVG_WRAPPER(aom_highbd_sad128x128_avg)
MAKE_BFP_SAD4D_WRAPPER(aom_highbd_sad128x128x4d)
@@ -1457,6 +1458,7 @@
MAKE_BFP_JSADAVG_WRAPPER(aom_highbd_dist_wtd_sad32x8_avg)
MAKE_BFP_JSADAVG_WRAPPER(aom_highbd_dist_wtd_sad16x64_avg)
MAKE_BFP_JSADAVG_WRAPPER(aom_highbd_dist_wtd_sad64x16_avg)
+#endif // CONFIG_AV1_HIGHBITDEPTH
#define HIGHBD_MBFP(BT, MCSDF, MCSVF) \
cpi->fn_ptr[BT].msdf = MCSDF; \
@@ -1487,6 +1489,7 @@
4; \
}
+#if CONFIG_AV1_HIGHBITDEPTH
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad128x128)
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad128x64)
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad64x128)
@@ -1509,6 +1512,7 @@
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad32x8)
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad16x64)
MAKE_MBFP_COMPOUND_SAD_WRAPPER(aom_highbd_masked_sad64x16)
+#endif
#define HIGHBD_OBFP(BT, OSDF, OVF, OSVF) \
cpi->fn_ptr[BT].osdf = OSDF; \
@@ -1532,6 +1536,7 @@
return fnname(ref, ref_stride, wsrc, msk) >> 4; \
}
+#if CONFIG_AV1_HIGHBITDEPTH
MAKE_OBFP_SAD_WRAPPER(aom_highbd_obmc_sad128x128)
MAKE_OBFP_SAD_WRAPPER(aom_highbd_obmc_sad128x64)
MAKE_OBFP_SAD_WRAPPER(aom_highbd_obmc_sad64x128)
@@ -2428,6 +2433,7 @@
}
}
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
static void realloc_segmentation_maps(AV1_COMP *cpi) {
AV1_COMMON *const cm = &cpi->common;
@@ -2652,7 +2658,9 @@
cpi->ext_refresh_frame_flags_pending = 0;
cpi->ext_refresh_frame_context_pending = 0;
+#if CONFIG_AV1_HIGHBITDEPTH
highbd_set_var_fns(cpi);
+#endif
// Init sequence level coding tools
// This should not be called after the first key frame.
@@ -3089,7 +3097,9 @@
MBFP(BLOCK_64X16, aom_masked_sad64x16, aom_masked_sub_pixel_variance64x16)
+#if CONFIG_AV1_HIGHBITDEPTH
highbd_set_var_fns(cpi);
+#endif
/* av1_init_quantizer() is first called here. Add check in
* av1_frame_init_quantizer() so that av1_init_quantizer is only
@@ -3310,8 +3320,16 @@
struct aom_codec_cx_pkt pkt;
int i;
PSNR_STATS psnr;
- aom_calc_highbd_psnr(cpi->source, &cpi->common.cur_frame->buf, &psnr,
- cpi->td.mb.e_mbd.bd, cpi->oxcf.input_bit_depth);
+#if CONFIG_AV1_HIGHBITDEPTH
+ // TODO(yaowu): unify these two versions into one.
+ if (cpi->common.seq_params.use_highbitdepth)
+ aom_calc_highbd_psnr(cpi->source, &cpi->common.cur_frame->buf, &psnr,
+ cpi->td.mb.e_mbd.bd, cpi->oxcf.input_bit_depth);
+ else
+ aom_calc_psnr(cpi->source, &cpi->common.cur_frame->buf, &psnr);
+#else
+ aom_calc_psnr(cpi->source, &cpi->common.cur_frame->buf, &psnr);
+#endif
for (i = 0; i < 4; ++i) {
pkt.data.psnr.samples[i] = psnr.samples[i];
@@ -4604,11 +4622,15 @@
int64_t high_err_target = cpi->ambient_err;
int64_t low_err_target = cpi->ambient_err >> 1;
+#if CONFIG_AV1_HIGHBITDEPTH
if (cm->seq_params.use_highbitdepth) {
kf_err = aom_highbd_get_y_sse(cpi->source, &cm->cur_frame->buf);
} else {
kf_err = aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
}
+#else
+ kf_err = aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
+#endif
// Prevent possible divide by zero error below for perfect KF
kf_err += !kf_err;
@@ -4985,11 +5007,15 @@
// fixed interval. Note the reconstruction error if it is the frame before
// the force key frame
if (cpi->rc.next_key_frame_forced && cpi->rc.frames_to_key == 1) {
+#if CONFIG_AV1_HIGHBITDEPTH
if (seq_params->use_highbitdepth) {
cpi->ambient_err = aom_highbd_get_y_sse(cpi->source, &cm->cur_frame->buf);
} else {
cpi->ambient_err = aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
}
+#else
+ cpi->ambient_err = aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
+#endif
}
cm->cur_frame->buf.color_primaries = seq_params->color_primaries;
@@ -5042,9 +5068,13 @@
// Compute sse and rate.
if (sse != NULL) {
+#if CONFIG_AV1_HIGHBITDEPTH
*sse = (seq_params->use_highbitdepth)
? aom_highbd_get_y_sse(cpi->source, &cm->cur_frame->buf)
: aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
+#else
+ *sse = aom_get_y_sse(cpi->source, &cm->cur_frame->buf);
+#endif
}
if (rate != NULL) {
const int64_t bits = (*size << 3);
@@ -6016,9 +6046,15 @@
PSNR_STATS psnr;
double frame_ssim2 = 0.0, weight = 0.0;
aom_clear_system_state();
+#if CONFIG_AV1_HIGHBITDEPTH
// TODO(yaowu): unify these two versions into one.
- aom_calc_highbd_psnr(orig, recon, &psnr, bit_depth, in_bit_depth);
-
+ if (cm->seq_params.use_highbitdepth)
+ aom_calc_highbd_psnr(orig, recon, &psnr, bit_depth, in_bit_depth);
+ else
+ aom_calc_psnr(orig, recon, &psnr);
+#else
+ aom_calc_psnr(orig, recon, &psnr);
+#endif
adjust_image_stat(psnr.psnr[1], psnr.psnr[2], psnr.psnr[3], psnr.psnr[0],
&cpi->psnr);
cpi->total_sq_error += psnr.sse[0];
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index 3d3810f..cafd443 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -162,6 +162,7 @@
return sse;
}
+#if CONFIG_AV1_HIGHBITDEPTH
static aom_variance_fn_t highbd_get_block_variance_fn(BLOCK_SIZE bsize,
int bd) {
switch (bd) {
@@ -201,6 +202,7 @@
fn(src->buf, src->stride, ref->buf, ref->stride, &sse);
return sse;
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
// Refine the motion search range according to the frame dimension
// for first pass test.
@@ -231,10 +233,11 @@
// Override the default variance function to use MSE.
v_fn_ptr.vf = get_block_variance_fn(bsize);
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
v_fn_ptr.vf = highbd_get_block_variance_fn(bsize, xd->bd);
}
-
+#endif
// Center the initial step/diamond search on best mv.
tmp_err = cpi->diamond_search_sad(x, &cpi->ss_cfg[SS_CFG_SRC], &ref_mv_full,
&tmp_mv, step_param, x->sadperbit16, &num00,
@@ -560,6 +563,7 @@
struct buf_2d unscaled_last_source_buf_2d;
xd->plane[0].pre[0].buf = lst_yv12->y_buffer + recon_yoffset;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
motion_error = highbd_get_prediction_error(
bsize, &x->plane[0].src, &xd->plane[0].pre[0], xd->bd);
@@ -567,6 +571,10 @@
motion_error = get_prediction_error(bsize, &x->plane[0].src,
&xd->plane[0].pre[0]);
}
+#else
+ motion_error =
+ get_prediction_error(bsize, &x->plane[0].src, &xd->plane[0].pre[0]);
+#endif
// Compute the motion error of the 0,0 motion using the last source
// frame as the reference. Skip the further motion search on
@@ -575,6 +583,7 @@
cpi->unscaled_last_source->y_buffer + src_yoffset;
unscaled_last_source_buf_2d.stride =
cpi->unscaled_last_source->y_stride;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
raw_motion_error = highbd_get_prediction_error(
bsize, &x->plane[0].src, &unscaled_last_source_buf_2d, xd->bd);
@@ -582,7 +591,10 @@
raw_motion_error = get_prediction_error(bsize, &x->plane[0].src,
&unscaled_last_source_buf_2d);
}
-
+#else
+ raw_motion_error = get_prediction_error(bsize, &x->plane[0].src,
+ &unscaled_last_source_buf_2d);
+#endif
// TODO(pengchong): Replace the hard-coded threshold
if (raw_motion_error > 25) {
// Test last reference frame using the previous best mv as the
@@ -606,6 +618,7 @@
if ((current_frame->frame_number > 1) && gld_yv12 != NULL) {
// Assume 0,0 motion with no mv overhead.
xd->plane[0].pre[0].buf = gld_yv12->y_buffer + recon_yoffset;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
gf_motion_error = highbd_get_prediction_error(
bsize, &x->plane[0].src, &xd->plane[0].pre[0], xd->bd);
@@ -613,7 +626,10 @@
gf_motion_error = get_prediction_error(bsize, &x->plane[0].src,
&xd->plane[0].pre[0]);
}
-
+#else
+ gf_motion_error = get_prediction_error(bsize, &x->plane[0].src,
+ &xd->plane[0].pre[0]);
+#endif
first_pass_motion_search(cpi, x, &kZeroMv, &tmp_mv,
&gf_motion_error);
@@ -644,6 +660,7 @@
xd->plane[0].pre[0].buf = alt_yv12->y_buffer + alt_yv12_yoffset;
xd->plane[0].pre[0].stride = alt_yv12->y_stride;
int alt_motion_error;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
alt_motion_error = highbd_get_prediction_error(
bsize, &x->plane[0].src, &xd->plane[0].pre[0], xd->bd);
@@ -651,7 +668,10 @@
alt_motion_error = get_prediction_error(bsize, &x->plane[0].src,
&xd->plane[0].pre[0]);
}
-
+#else
+ alt_motion_error = get_prediction_error(bsize, &x->plane[0].src,
+ &xd->plane[0].pre[0]);
+#endif
first_pass_motion_search(cpi, x, &kZeroMv, &tmp_mv,
&alt_motion_error);
diff --git a/av1/encoder/mcomp.c b/av1/encoder/mcomp.c
index 93b088b..24b27ff 100644
--- a/av1/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -325,6 +325,7 @@
int *mvcost[2], unsigned int *sse1, int *distortion) {
unsigned int besterr;
if (second_pred != NULL) {
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
DECLARE_ALIGNED(16, uint16_t, comp_pred16[MAX_SB_SQUARE]);
uint8_t *comp_pred = CONVERT_TO_BYTEPTR(comp_pred16);
@@ -346,6 +347,17 @@
}
besterr = vfp->vf(comp_pred, w, src, src_stride, sse1);
}
+#else
+ (void)xd;
+ DECLARE_ALIGNED(16, uint8_t, comp_pred[MAX_SB_SQUARE]);
+ if (mask) {
+ aom_comp_mask_pred(comp_pred, second_pred, w, h, y + offset, y_stride,
+ mask, mask_stride, invert_mask);
+ } else {
+ aom_comp_avg_pred(comp_pred, second_pred, w, h, y + offset, y_stride);
+ }
+ besterr = vfp->vf(comp_pred, w, src, src_stride, sse1);
+#endif
} else {
besterr = vfp->vf(y + offset, y_stride, src, src_stride, sse1);
}
@@ -630,6 +642,7 @@
int mask_stride, int invert_mask, int w, int h,
unsigned int *sse, int subpel_search) {
unsigned int besterr;
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
DECLARE_ALIGNED(16, uint16_t, pred16[MAX_SB_SQUARE]);
uint8_t *pred8 = CONVERT_TO_BYTEPTR(pred16);
@@ -670,6 +683,26 @@
besterr = vfp->vf(pred, w, src, src_stride, sse);
}
+#else
+ DECLARE_ALIGNED(16, uint8_t, pred[MAX_SB_SQUARE]);
+ if (second_pred != NULL) {
+ if (mask) {
+ aom_comp_mask_upsampled_pred(xd, cm, mi_row, mi_col, mv, pred,
+ second_pred, w, h, subpel_x_q3, subpel_y_q3,
+ y, y_stride, mask, mask_stride, invert_mask,
+ subpel_search);
+ } else {
+ aom_comp_avg_upsampled_pred(xd, cm, mi_row, mi_col, mv, pred, second_pred,
+ w, h, subpel_x_q3, subpel_y_q3, y, y_stride,
+ subpel_search);
+ }
+ } else {
+ aom_upsampled_pred(xd, cm, mi_row, mi_col, mv, pred, w, h, subpel_x_q3,
+ subpel_y_q3, y, y_stride, subpel_search);
+ }
+
+ besterr = vfp->vf(pred, w, src, src_stride, sse);
+#endif
return besterr;
}
@@ -2533,6 +2566,7 @@
unsigned int besterr;
DECLARE_ALIGNED(16, uint8_t, pred[2 * MAX_SB_SQUARE]);
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
uint8_t *pred8 = CONVERT_TO_BYTEPTR(pred);
aom_highbd_upsampled_pred(xd, cm, mi_row, mi_col, mv, pred8, w, h,
@@ -2545,6 +2579,12 @@
besterr = vfp->ovf(pred, w, wsrc, mask, sse);
}
+#else
+ aom_upsampled_pred(xd, cm, mi_row, mi_col, mv, pred, w, h, subpel_x_q3,
+ subpel_y_q3, y, y_stride, subpel_search);
+
+ besterr = vfp->ovf(pred, w, wsrc, mask, sse);
+#endif
return besterr;
}
diff --git a/av1/encoder/pickrst.c b/av1/encoder/pickrst.c
index 8d8c51c..a2b3ed8 100644
--- a/av1/encoder/pickrst.c
+++ b/av1/encoder/pickrst.c
@@ -64,13 +64,19 @@
int hstart, int width, int vstart,
int height);
+#if CONFIG_AV1_HIGHBITDEPTH
#define NUM_EXTRACTORS (3 * (1 + 1))
-
static const sse_part_extractor_type sse_part_extractors[NUM_EXTRACTORS] = {
aom_get_y_sse_part, aom_get_u_sse_part,
aom_get_v_sse_part, aom_highbd_get_y_sse_part,
aom_highbd_get_u_sse_part, aom_highbd_get_v_sse_part,
};
+#else
+#define NUM_EXTRACTORS 3
+static const sse_part_extractor_type sse_part_extractors[NUM_EXTRACTORS] = {
+ aom_get_y_sse_part, aom_get_u_sse_part, aom_get_v_sse_part
+};
+#endif
static int64_t sse_restoration_unit(const RestorationTileLimits *limits,
const YV12_BUFFER_CONFIG *src,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index e31c845..4ed24f4 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -962,13 +962,17 @@
cpi->fn_ptr[tx_bsize].vf(src, src_stride, dst, dst_stride, &sse);
return sse;
}
- const MACROBLOCKD *xd = &x->e_mbd;
+#if CONFIG_AV1_HIGHBITDEPTH
+ const MACROBLOCKD *xd = &x->e_mbd;
if (is_cur_buf_hbd(xd)) {
uint64_t sse64 = aom_highbd_sse_odd_size(src, src_stride, dst, dst_stride,
visible_cols, visible_rows);
return (unsigned int)ROUND_POWER_OF_TWO(sse64, (xd->bd - 8) * 2);
}
+#else
+ (void)x;
+#endif
sse = aom_sse_odd_size(src, src_stride, dst, dst_stride, visible_cols,
visible_rows);
return sse;
@@ -2111,6 +2115,7 @@
uint8_t *recon;
DECLARE_ALIGNED(16, uint16_t, recon16[MAX_TX_SQUARE]);
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
recon = CONVERT_TO_BYTEPTR(recon16);
av1_highbd_convolve_2d_copy_sr(CONVERT_TO_SHORTPTR(dst), dst_stride,
@@ -2121,6 +2126,11 @@
av1_convolve_2d_copy_sr(dst, dst_stride, recon, MAX_TX_SIZE, bsw, bsh, NULL,
NULL, 0, 0, NULL);
}
+#else
+ recon = (uint8_t *)recon16;
+ av1_convolve_2d_copy_sr(dst, dst_stride, recon, MAX_TX_SIZE, bsw, bsh, NULL,
+ NULL, 0, 0, NULL);
+#endif
const PLANE_TYPE plane_type = get_plane_type(plane);
TX_TYPE tx_type = av1_get_tx_type(plane_type, xd, blk_row, blk_col, tx_size,
@@ -14168,6 +14178,7 @@
assert(w % 8 == 0);
// Because we use an eight tap filter, the stride should be at least 7 + w.
assert(src_stride >= w + 7);
+#if CONFIG_AV1_HIGHBITDEPTH
if (high_bd) {
av1_highbd_convolve_2d_sr(CONVERT_TO_SHORTPTR(src), src_stride,
CONVERT_TO_SHORTPTR(dst), w, w, h, &filter,
@@ -14176,6 +14187,11 @@
av1_convolve_2d_sr(src, src_stride, dst, w, w, h, &filter, &filter, 0, 0,
&conv_params);
}
+#else
+ (void)high_bd;
+ av1_convolve_2d_sr(src, src_stride, dst, w, w, h, &filter, &filter, 0, 0,
+ &conv_params);
+#endif
}
static EdgeInfo edge_probability(const uint8_t *input, int w, int h,
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index 4ac2de1..6cfd2e0 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -578,6 +578,7 @@
h, w);
}
} else {
+#if CONFIG_AV1_HIGHBITDEPTH
if (is_hbd) {
aom_highbd_convolve_copy(CONVERT_TO_BYTEPTR(ext_dst0), ext_dst_stride0,
dst, dst_buf->stride, NULL, 0, NULL, 0, w, h,
@@ -586,6 +587,10 @@
aom_convolve_copy(ext_dst0, ext_dst_stride0, dst, dst_buf->stride, NULL,
0, NULL, 0, w, h);
}
+#else
+ aom_convolve_copy(ext_dst0, ext_dst_stride0, dst, dst_buf->stride, NULL, 0,
+ NULL, 0, w, h);
+#endif
}
}
diff --git a/test/av1_convolve_2d_test.cc b/test/av1_convolve_2d_test.cc
index b0cef81..5218d95 100644
--- a/test/av1_convolve_2d_test.cc
+++ b/test/av1_convolve_2d_test.cc
@@ -15,8 +15,10 @@
using libaom_test::ACMRandom;
using libaom_test::AV1Convolve2D::AV1Convolve2DSrTest;
using libaom_test::AV1Convolve2D::AV1JntConvolve2DTest;
+#if CONFIG_AV1_HIGHBITDEPTH
using libaom_test::AV1HighbdConvolve2D::AV1HighbdConvolve2DSrTest;
using libaom_test::AV1HighbdConvolve2D::AV1HighbdJntConvolve2DTest;
+#endif
using ::testing::make_tuple;
using ::testing::tuple;
@@ -158,6 +160,7 @@
av1_dist_wtd_convolve_y_neon, 0, 1));
#endif // HAVE_NEON
+#if CONFIG_AV1_HIGHBITDEPTH
TEST_P(AV1HighbdConvolve2DSrTest, CheckOutput) { RunCheckOutput(GET_PARAM(1)); }
TEST_P(AV1HighbdConvolve2DSrTest, DISABLED_Speed) {
RunSpeedTest(GET_PARAM(1));
@@ -251,4 +254,5 @@
av1_highbd_dist_wtd_convolve_y_avx2, 0, 1));
#endif // HAVE_AVX2
#endif // HAVE_SSE4_1
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace
diff --git a/test/av1_convolve_2d_test_util.cc b/test/av1_convolve_2d_test_util.cc
index 9cfe3e6..1baa96b 100644
--- a/test/av1_convolve_2d_test_util.cc
+++ b/test/av1_convolve_2d_test_util.cc
@@ -355,6 +355,7 @@
}
} // namespace AV1Convolve2D
+#if CONFIG_AV1_HIGHBITDEPTH
namespace AV1HighbdConvolve2D {
::testing::internal::ParamGenerator<HighbdConvolve2DParam> BuildParams(
highbd_convolve_2d_func filter, int has_subx, int has_suby) {
@@ -703,4 +704,5 @@
}
}
} // namespace AV1HighbdConvolve2D
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace libaom_test
diff --git a/test/av1_convolve_2d_test_util.h b/test/av1_convolve_2d_test_util.h
index e50a373..22116c9 100644
--- a/test/av1_convolve_2d_test_util.h
+++ b/test/av1_convolve_2d_test_util.h
@@ -68,6 +68,7 @@
};
} // namespace AV1Convolve2D
+#if CONFIG_AV1_HIGHBITDEPTH
namespace AV1HighbdConvolve2D {
typedef void (*highbd_convolve_2d_func)(
const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w,
@@ -111,6 +112,7 @@
libaom_test::ACMRandom rnd_;
};
} // namespace AV1HighbdConvolve2D
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace libaom_test
diff --git a/test/comp_avg_pred_test.cc b/test/comp_avg_pred_test.cc
index 3e5632e..21bfb57 100644
--- a/test/comp_avg_pred_test.cc
+++ b/test/comp_avg_pred_test.cc
@@ -14,8 +14,10 @@
using libaom_test::ACMRandom;
using libaom_test::AV1DISTWTDCOMPAVG::AV1DISTWTDCOMPAVGTest;
using libaom_test::AV1DISTWTDCOMPAVG::AV1DISTWTDCOMPAVGUPSAMPLEDTest;
+#if CONFIG_AV1_HIGHBITDEPTH
using libaom_test::AV1DISTWTDCOMPAVG::AV1HighBDDISTWTDCOMPAVGTest;
using libaom_test::AV1DISTWTDCOMPAVG::AV1HighBDDISTWTDCOMPAVGUPSAMPLEDTest;
+#endif
using ::testing::make_tuple;
using ::testing::tuple;
@@ -45,6 +47,7 @@
aom_dist_wtd_comp_avg_upsampled_pred_ssse3));
#endif
+#if CONFIG_AV1_HIGHBITDEPTH
TEST_P(AV1HighBDDISTWTDCOMPAVGTest, DISABLED_Speed) {
RunSpeedTest(GET_PARAM(1));
}
@@ -72,5 +75,6 @@
libaom_test::AV1DISTWTDCOMPAVG::BuildParams(
aom_highbd_dist_wtd_comp_avg_upsampled_pred_sse2));
#endif
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace
diff --git a/test/comp_avg_pred_test.h b/test/comp_avg_pred_test.h
index 01ea35d..27a29d3 100644
--- a/test/comp_avg_pred_test.h
+++ b/test/comp_avg_pred_test.h
@@ -38,6 +38,12 @@
int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref,
int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search);
+typedef ::testing::tuple<distwtdcompavg_func, BLOCK_SIZE> DISTWTDCOMPAVGParam;
+
+typedef ::testing::tuple<distwtdcompavgupsampled_func, BLOCK_SIZE>
+ DISTWTDCOMPAVGUPSAMPLEDParam;
+
+#if CONFIG_AV1_HIGHBITDEPTH
typedef void (*highbddistwtdcompavgupsampled_func)(
MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col,
const MV *const mv, uint8_t *comp_pred8, const uint8_t *pred8, int width,
@@ -45,28 +51,11 @@
int ref_stride, int bd, const DIST_WTD_COMP_PARAMS *jcp_param,
int subpel_search);
-typedef ::testing::tuple<distwtdcompavg_func, BLOCK_SIZE> DISTWTDCOMPAVGParam;
-
-typedef ::testing::tuple<distwtdcompavgupsampled_func, BLOCK_SIZE>
- DISTWTDCOMPAVGUPSAMPLEDParam;
-
-typedef ::testing::tuple<int, distwtdcompavg_func, BLOCK_SIZE>
- HighbdDISTWTDCOMPAVGParam;
-
typedef ::testing::tuple<int, highbddistwtdcompavgupsampled_func, BLOCK_SIZE>
HighbdDISTWTDCOMPAVGUPSAMPLEDParam;
-::testing::internal::ParamGenerator<DISTWTDCOMPAVGParam> BuildParams(
- distwtdcompavg_func filter) {
- return ::testing::Combine(::testing::Values(filter),
- ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL));
-}
-
-::testing::internal::ParamGenerator<DISTWTDCOMPAVGUPSAMPLEDParam> BuildParams(
- distwtdcompavgupsampled_func filter) {
- return ::testing::Combine(::testing::Values(filter),
- ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL));
-}
+typedef ::testing::tuple<int, distwtdcompavg_func, BLOCK_SIZE>
+ HighbdDISTWTDCOMPAVGParam;
::testing::internal::ParamGenerator<HighbdDISTWTDCOMPAVGParam> BuildParams(
distwtdcompavg_func filter, int is_hbd) {
@@ -82,6 +71,19 @@
::testing::Values(filter),
::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL));
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
+
+::testing::internal::ParamGenerator<DISTWTDCOMPAVGParam> BuildParams(
+ distwtdcompavg_func filter) {
+ return ::testing::Combine(::testing::Values(filter),
+ ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL));
+}
+
+::testing::internal::ParamGenerator<DISTWTDCOMPAVGUPSAMPLEDParam> BuildParams(
+ distwtdcompavgupsampled_func filter) {
+ return ::testing::Combine(::testing::Values(filter),
+ ::testing::Range(BLOCK_4X4, BLOCK_SIZES_ALL));
+}
class AV1DISTWTDCOMPAVGTest
: public ::testing::TestWithParam<DISTWTDCOMPAVGParam> {
@@ -315,6 +317,7 @@
libaom_test::ACMRandom rnd_;
}; // class AV1DISTWTDCOMPAVGUPSAMPLEDTest
+#if CONFIG_AV1_HIGHBITDEPTH
class AV1HighBDDISTWTDCOMPAVGTest
: public ::testing::TestWithParam<HighbdDISTWTDCOMPAVGParam> {
public:
@@ -555,7 +558,8 @@
}
libaom_test::ACMRandom rnd_;
-}; // class AV1HighBDDISTWTDCOMPAVGUPSAMPLEDTest
+}; // class AV1HighBDDISTWTDCOMPAVGUPSAMPLEDTest
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace AV1DISTWTDCOMPAVG
} // namespace libaom_test
diff --git a/test/comp_mask_variance_test.cc b/test/comp_mask_variance_test.cc
index 53ba56c..f01c93c 100644
--- a/test/comp_mask_variance_test.cc
+++ b/test/comp_mask_variance_test.cc
@@ -277,6 +277,7 @@
#endif // ifndef aom_comp_mask_pred
+#if CONFIG_AV1_HIGHBITDEPTH
typedef void (*highbd_comp_mask_pred_func)(uint8_t *comp_pred8,
const uint8_t *pred8, int width,
int height, const uint8_t *ref8,
@@ -578,4 +579,5 @@
#endif
#endif // ifndef aom_highbd_comp_mask_pred
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace AV1CompMaskVariance
diff --git a/test/convolve_test.cc b/test/convolve_test.cc
index eaa9aeb..e760911 100644
--- a/test/convolve_test.cc
+++ b/test/convolve_test.cc
@@ -750,6 +750,7 @@
using ::testing::make_tuple;
+#if CONFIG_AV1_HIGHBITDEPTH
#define WRAP(func, bd) \
static void wrap_##func##_##bd( \
const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, \
@@ -758,6 +759,16 @@
aom_highbd_##func(src, src_stride, dst, dst_stride, filter_x, \
filter_x_stride, filter_y, filter_y_stride, w, h, bd); \
}
+#else
+#define WRAP(func, bd) \
+ static void wrap_##func##_##bd( \
+ const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, \
+ ptrdiff_t dst_stride, const int16_t *filter_x, int filter_x_stride, \
+ const int16_t *filter_y, int filter_y_stride, int w, int h) { \
+ aom_##func(src, src_stride, dst, dst_stride, filter_x, filter_x_stride, \
+ filter_y, filter_y_stride, w, h); \
+ }
+#endif
#if HAVE_SSE2 && ARCH_X86_64
WRAP(convolve_copy_sse2, 8)
WRAP(convolve_copy_sse2, 10)
@@ -780,7 +791,7 @@
WRAP(convolve8_horiz_c, 12)
WRAP(convolve8_vert_c, 12)
-#if HAVE_AVX2
+#if HAVE_AVX2 && CONFIG_AV1_HIGHBITDEPTH
WRAP(convolve_copy_avx2, 8)
WRAP(convolve8_horiz_avx2, 8)
WRAP(convolve8_vert_avx2, 8)
@@ -792,7 +803,7 @@
WRAP(convolve_copy_avx2, 12)
WRAP(convolve8_horiz_avx2, 12)
WRAP(convolve8_vert_avx2, 12)
-#endif // HAVE_AVX2
+#endif // HAVE_AVX2 && CONFIG_AV1_HIGHBITDEPTH
#undef WRAP
@@ -842,7 +853,7 @@
::testing::ValuesIn(kArrayConvolve8_ssse3));
#endif
-#if HAVE_AVX2
+#if HAVE_AVX2 && CONFIG_AV1_HIGHBITDEPTH
const ConvolveFunctions convolve8_avx2(aom_convolve_copy_c,
aom_convolve8_horiz_avx2,
aom_convolve8_vert_avx2, 0);
@@ -856,12 +867,13 @@
const ConvolveFunctions wrap_convolve12_avx2(wrap_convolve_copy_avx2_12,
wrap_convolve8_horiz_avx2_12,
wrap_convolve8_vert_avx2_12, 12);
+
const ConvolveParam kArray_Convolve8_avx2[] = {
ALL_SIZES_64(wrap_convolve8_avx2), ALL_SIZES_64(wrap_convolve10_avx2),
ALL_SIZES_64(wrap_convolve12_avx2), ALL_SIZES(convolve8_avx2)
};
INSTANTIATE_TEST_CASE_P(AVX2, ConvolveTest,
::testing::ValuesIn(kArray_Convolve8_avx2));
-#endif // HAVE_AVX2
+#endif // HAVE_AVX2 && CONFIG_AV1_HIGHBITDEPTH
} // namespace
diff --git a/test/masked_variance_test.cc b/test/masked_variance_test.cc
index d156ec9..d1b3375 100644
--- a/test/masked_variance_test.cc
+++ b/test/masked_variance_test.cc
@@ -170,6 +170,7 @@
<< " y_offset = " << first_failure_y;
}
+#if CONFIG_AV1_HIGHBITDEPTH
typedef ::testing::tuple<MaskedSubPixelVarianceFunc, MaskedSubPixelVarianceFunc,
aom_bit_depth_t>
HighbdMaskedSubPixelVarianceParam;
@@ -311,6 +312,7 @@
<< " x_offset = " << first_failure_x
<< " y_offset = " << first_failure_y;
}
+#endif // CONFIG_AV1_HIGHBITDEPTH
using ::testing::make_tuple;
@@ -367,6 +369,7 @@
INSTANTIATE_TEST_CASE_P(SSSE3_C_COMPARE, MaskedSubPixelVarianceTest,
::testing::ValuesIn(sub_pel_var_test));
+#if CONFIG_AV1_HIGHBITDEPTH
const HighbdMaskedSubPixelVarianceParam hbd_sub_pel_var_test[] = {
make_tuple(&aom_highbd_8_masked_sub_pixel_variance128x128_ssse3,
&aom_highbd_8_masked_sub_pixel_variance128x128_c, AOM_BITS_8),
@@ -505,5 +508,6 @@
INSTANTIATE_TEST_CASE_P(SSSE3_C_COMPARE, HighbdMaskedSubPixelVarianceTest,
::testing::ValuesIn(hbd_sub_pel_var_test));
+#endif // CONFIG_AV1_HIGHBITDEPTH
#endif // HAVE_SSSE3
} // namespace
diff --git a/test/obmc_variance_test.cc b/test/obmc_variance_test.cc
index c015202..da4bd96 100644
--- a/test/obmc_variance_test.cc
+++ b/test/obmc_variance_test.cc
@@ -195,7 +195,7 @@
////////////////////////////////////////////////////////////////////////////////
// High bit-depth
////////////////////////////////////////////////////////////////////////////////
-
+#if CONFIG_AV1_HIGHBITDEPTH
class ObmcVarianceHBDTest : public FunctionEquivalenceTest<ObmcVarF> {};
TEST_P(ObmcVarianceHBDTest, RandomValues) {
@@ -393,4 +393,5 @@
INSTANTIATE_TEST_CASE_P(SSE4_1, ObmcVarianceHBDTest,
::testing::ValuesIn(sse4_functions_hbd));
#endif // HAVE_SSE4_1
+#endif // CONFIG_AV1_HIGHBITDEPTH
} // namespace
diff --git a/test/sad_test.cc b/test/sad_test.cc
index ad971cc..960a95e 100644
--- a/test/sad_test.cc
+++ b/test/sad_test.cc
@@ -833,6 +833,7 @@
make_tuple(8, 4, &aom_sad8x4_c, -1),
make_tuple(4, 8, &aom_sad4x8_c, -1),
make_tuple(4, 4, &aom_sad4x4_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128_c, 8),
make_tuple(128, 64, &aom_highbd_sad128x64_c, 8),
make_tuple(64, 128, &aom_highbd_sad64x128_c, 8),
@@ -881,33 +882,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4_c, 12),
make_tuple(4, 8, &aom_highbd_sad4x8_c, 12),
make_tuple(4, 4, &aom_highbd_sad4x4_c, 12),
-
+#endif // CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_sad64x16_c, -1),
make_tuple(16, 64, &aom_sad16x64_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16_c, 8),
make_tuple(16, 64, &aom_highbd_sad16x64_c, 8),
make_tuple(64, 16, &aom_highbd_sad64x16_c, 10),
make_tuple(16, 64, &aom_highbd_sad16x64_c, 10),
make_tuple(64, 16, &aom_highbd_sad64x16_c, 12),
make_tuple(16, 64, &aom_highbd_sad16x64_c, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8_c, -1),
make_tuple(8, 32, &aom_sad8x32_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8_c, 8),
make_tuple(8, 32, &aom_highbd_sad8x32_c, 8),
make_tuple(32, 8, &aom_highbd_sad32x8_c, 10),
make_tuple(8, 32, &aom_highbd_sad8x32_c, 10),
make_tuple(32, 8, &aom_highbd_sad32x8_c, 12),
make_tuple(8, 32, &aom_highbd_sad8x32_c, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4_c, -1),
make_tuple(4, 16, &aom_sad4x16_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4_c, 8),
make_tuple(4, 16, &aom_highbd_sad4x16_c, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_c, 10),
make_tuple(4, 16, &aom_highbd_sad4x16_c, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_c, 12),
make_tuple(4, 16, &aom_highbd_sad4x16_c, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(C, SADTest, ::testing::ValuesIn(c_tests));
@@ -928,6 +933,7 @@
make_tuple(8, 4, &aom_sad8x4_avg_c, -1),
make_tuple(4, 8, &aom_sad4x8_avg_c, -1),
make_tuple(4, 4, &aom_sad4x4_avg_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128_avg_c, 8),
make_tuple(128, 64, &aom_highbd_sad128x64_avg_c, 8),
make_tuple(64, 128, &aom_highbd_sad64x128_avg_c, 8),
@@ -976,33 +982,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4_avg_c, 12),
make_tuple(4, 8, &aom_highbd_sad4x8_avg_c, 12),
make_tuple(4, 4, &aom_highbd_sad4x4_avg_c, 12),
-
+#endif // CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_sad64x16_avg_c, -1),
make_tuple(16, 64, &aom_sad16x64_avg_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16_avg_c, 8),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_c, 8),
make_tuple(64, 16, &aom_highbd_sad64x16_avg_c, 10),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_c, 10),
make_tuple(64, 16, &aom_highbd_sad64x16_avg_c, 12),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_c, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8_avg_c, -1),
make_tuple(8, 32, &aom_sad8x32_avg_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8_avg_c, 8),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_c, 8),
make_tuple(32, 8, &aom_highbd_sad32x8_avg_c, 10),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_c, 10),
make_tuple(32, 8, &aom_highbd_sad32x8_avg_c, 12),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_c, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4_avg_c, -1),
make_tuple(4, 16, &aom_sad4x16_avg_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4_avg_c, 8),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_c, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_c, 10),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_c, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_c, 12),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_c, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(C, SADavgTest, ::testing::ValuesIn(avg_c_tests));
@@ -1082,6 +1092,7 @@
make_tuple(8, 4, &aom_sad8x4x4d_c, -1),
make_tuple(4, 8, &aom_sad4x8x4d_c, -1),
make_tuple(4, 4, &aom_sad4x4x4d_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128x4d_c, 8),
make_tuple(128, 64, &aom_highbd_sad128x64x4d_c, 8),
make_tuple(64, 128, &aom_highbd_sad64x128x4d_c, 8),
@@ -1130,33 +1141,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4x4d_c, 12),
make_tuple(4, 8, &aom_highbd_sad4x8x4d_c, 12),
make_tuple(4, 4, &aom_highbd_sad4x4x4d_c, 12),
-
+#endif
make_tuple(64, 16, &aom_sad64x16x4d_c, -1),
make_tuple(16, 64, &aom_sad16x64x4d_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16x4d_c, 8),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_c, 8),
make_tuple(64, 16, &aom_highbd_sad64x16x4d_c, 10),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_c, 10),
make_tuple(64, 16, &aom_highbd_sad64x16x4d_c, 12),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_c, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8x4d_c, -1),
make_tuple(8, 32, &aom_sad8x32x4d_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8x4d_c, 8),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_c, 8),
make_tuple(32, 8, &aom_highbd_sad32x8x4d_c, 10),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_c, 10),
make_tuple(32, 8, &aom_highbd_sad32x8x4d_c, 12),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_c, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4x4d_c, -1),
make_tuple(4, 16, &aom_sad4x16x4d_c, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4x4d_c, 8),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_c, 8),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_c, 10),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_c, 10),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_c, 12),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_c, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(C, SADx4Test, ::testing::ValuesIn(x4d_c_tests));
@@ -1202,6 +1217,7 @@
make_tuple(8, 4, &aom_sad8x4_sse2, -1),
make_tuple(4, 8, &aom_sad4x8_sse2, -1),
make_tuple(4, 4, &aom_sad4x4_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 64, &aom_highbd_sad64x64_sse2, 8),
make_tuple(64, 32, &aom_highbd_sad64x32_sse2, 8),
make_tuple(32, 64, &aom_highbd_sad32x64_sse2, 8),
@@ -1241,33 +1257,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4_sse2, 12),
make_tuple(4, 8, &aom_highbd_sad4x8_sse2, 12),
make_tuple(4, 4, &aom_highbd_sad4x4_sse2, 12),
-
+#endif
make_tuple(64, 16, &aom_sad64x16_sse2, -1),
make_tuple(16, 64, &aom_sad16x64_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16_sse2, 8),
make_tuple(16, 64, &aom_highbd_sad16x64_sse2, 8),
make_tuple(64, 16, &aom_highbd_sad64x16_sse2, 10),
make_tuple(16, 64, &aom_highbd_sad16x64_sse2, 10),
make_tuple(64, 16, &aom_highbd_sad64x16_sse2, 12),
make_tuple(16, 64, &aom_highbd_sad16x64_sse2, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8_sse2, -1),
make_tuple(8, 32, &aom_sad8x32_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8_sse2, 8),
make_tuple(8, 32, &aom_highbd_sad8x32_sse2, 8),
make_tuple(32, 8, &aom_highbd_sad32x8_sse2, 10),
make_tuple(8, 32, &aom_highbd_sad8x32_sse2, 10),
make_tuple(32, 8, &aom_highbd_sad32x8_sse2, 12),
make_tuple(8, 32, &aom_highbd_sad8x32_sse2, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4_sse2, -1),
make_tuple(4, 16, &aom_sad4x16_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4_sse2, 8),
make_tuple(4, 16, &aom_highbd_sad4x16_sse2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_sse2, 10),
make_tuple(4, 16, &aom_highbd_sad4x16_sse2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_sse2, 12),
make_tuple(4, 16, &aom_highbd_sad4x16_sse2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(SSE2, SADTest, ::testing::ValuesIn(sse2_tests));
@@ -1288,6 +1308,7 @@
make_tuple(8, 4, &aom_sad8x4_avg_sse2, -1),
make_tuple(4, 8, &aom_sad4x8_avg_sse2, -1),
make_tuple(4, 4, &aom_sad4x4_avg_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 64, &aom_highbd_sad64x64_avg_sse2, 8),
make_tuple(64, 32, &aom_highbd_sad64x32_avg_sse2, 8),
make_tuple(32, 64, &aom_highbd_sad32x64_avg_sse2, 8),
@@ -1327,33 +1348,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4_avg_sse2, 12),
make_tuple(4, 8, &aom_highbd_sad4x8_avg_sse2, 12),
make_tuple(4, 4, &aom_highbd_sad4x4_avg_sse2, 12),
-
+#endif
make_tuple(64, 16, &aom_sad64x16_avg_sse2, -1),
make_tuple(16, 64, &aom_sad16x64_avg_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16_avg_sse2, 8),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_sse2, 8),
make_tuple(64, 16, &aom_highbd_sad64x16_avg_sse2, 10),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_sse2, 10),
make_tuple(64, 16, &aom_highbd_sad64x16_avg_sse2, 12),
make_tuple(16, 64, &aom_highbd_sad16x64_avg_sse2, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8_avg_sse2, -1),
make_tuple(8, 32, &aom_sad8x32_avg_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8_avg_sse2, 8),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_sse2, 8),
make_tuple(32, 8, &aom_highbd_sad32x8_avg_sse2, 10),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_sse2, 10),
make_tuple(32, 8, &aom_highbd_sad32x8_avg_sse2, 12),
make_tuple(8, 32, &aom_highbd_sad8x32_avg_sse2, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4_avg_sse2, -1),
make_tuple(4, 16, &aom_sad4x16_avg_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4_avg_sse2, 8),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_sse2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_sse2, 10),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_sse2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_sse2, 12),
make_tuple(4, 16, &aom_highbd_sad4x16_avg_sse2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(SSE2, SADavgTest, ::testing::ValuesIn(avg_sse2_tests));
@@ -1374,6 +1399,7 @@
make_tuple(8, 4, &aom_sad8x4x4d_sse2, -1),
make_tuple(4, 8, &aom_sad4x8x4d_sse2, -1),
make_tuple(4, 4, &aom_sad4x4x4d_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 64, &aom_highbd_sad64x64x4d_sse2, 8),
make_tuple(64, 32, &aom_highbd_sad64x32x4d_sse2, 8),
make_tuple(32, 64, &aom_highbd_sad32x64x4d_sse2, 8),
@@ -1413,33 +1439,37 @@
make_tuple(8, 4, &aom_highbd_sad8x4x4d_sse2, 12),
make_tuple(4, 8, &aom_highbd_sad4x8x4d_sse2, 12),
make_tuple(4, 4, &aom_highbd_sad4x4x4d_sse2, 12),
-
+#endif
make_tuple(64, 16, &aom_sad64x16x4d_sse2, -1),
make_tuple(16, 64, &aom_sad16x64x4d_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(64, 16, &aom_highbd_sad64x16x4d_sse2, 8),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_sse2, 8),
make_tuple(64, 16, &aom_highbd_sad64x16x4d_sse2, 10),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_sse2, 10),
make_tuple(64, 16, &aom_highbd_sad64x16x4d_sse2, 12),
make_tuple(16, 64, &aom_highbd_sad16x64x4d_sse2, 12),
-
+#endif
make_tuple(32, 8, &aom_sad32x8x4d_sse2, -1),
make_tuple(8, 32, &aom_sad8x32x4d_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(32, 8, &aom_highbd_sad32x8x4d_sse2, 8),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_sse2, 8),
make_tuple(32, 8, &aom_highbd_sad32x8x4d_sse2, 10),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_sse2, 10),
make_tuple(32, 8, &aom_highbd_sad32x8x4d_sse2, 12),
make_tuple(8, 32, &aom_highbd_sad8x32x4d_sse2, 12),
-
+#endif
make_tuple(16, 4, &aom_sad16x4x4d_sse2, -1),
make_tuple(4, 16, &aom_sad4x16x4d_sse2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(16, 4, &aom_highbd_sad16x4x4d_sse2, 8),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_sse2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_sse2, 10),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_sse2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_sse2, 12),
make_tuple(4, 16, &aom_highbd_sad4x16x4d_sse2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(SSE2, SADx4Test, ::testing::ValuesIn(x4d_sse2_tests));
#endif // HAVE_SSE2
@@ -1561,6 +1591,7 @@
make_tuple(32, 64, &aom_sad32x64_avx2, -1),
make_tuple(32, 32, &aom_sad32x32_avx2, -1),
make_tuple(32, 16, &aom_sad32x16_avx2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128_avx2, 8),
make_tuple(128, 128, &aom_highbd_sad128x128_avx2, 10),
make_tuple(128, 128, &aom_highbd_sad128x128_avx2, 12),
@@ -1607,6 +1638,7 @@
make_tuple(16, 4, &aom_highbd_sad16x4_avx2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_avx2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_avx2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(AVX2, SADTest, ::testing::ValuesIn(avx2_tests));
@@ -1619,6 +1651,7 @@
make_tuple(32, 64, &aom_sad32x64_avg_avx2, -1),
make_tuple(32, 32, &aom_sad32x32_avg_avx2, -1),
make_tuple(32, 16, &aom_sad32x16_avg_avx2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128_avg_avx2, 8),
make_tuple(128, 128, &aom_highbd_sad128x128_avg_avx2, 10),
make_tuple(128, 128, &aom_highbd_sad128x128_avg_avx2, 12),
@@ -1665,6 +1698,7 @@
make_tuple(16, 4, &aom_highbd_sad16x4_avg_avx2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_avx2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4_avg_avx2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(AVX2, SADavgTest, ::testing::ValuesIn(avg_avx2_tests));
@@ -1676,6 +1710,7 @@
make_tuple(32, 64, &aom_sad32x64x4d_avx2, -1),
make_tuple(64, 32, &aom_sad64x32x4d_avx2, -1),
make_tuple(32, 32, &aom_sad32x32x4d_avx2, -1),
+#if CONFIG_AV1_HIGHBITDEPTH
make_tuple(128, 128, &aom_highbd_sad128x128x4d_avx2, 8),
make_tuple(128, 128, &aom_highbd_sad128x128x4d_avx2, 10),
make_tuple(128, 128, &aom_highbd_sad128x128x4d_avx2, 12),
@@ -1722,6 +1757,7 @@
make_tuple(16, 4, &aom_highbd_sad16x4x4d_avx2, 8),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_avx2, 10),
make_tuple(16, 4, &aom_highbd_sad16x4x4d_avx2, 12),
+#endif
};
INSTANTIATE_TEST_CASE_P(AVX2, SADx4Test, ::testing::ValuesIn(x4d_avx2_tests));
#endif // HAVE_AVX2
diff --git a/test/variance_test.cc b/test/variance_test.cc
index a679808..8f525b6 100644
--- a/test/variance_test.cc
+++ b/test/variance_test.cc
@@ -1251,6 +1251,7 @@
ObmcSubpelVarianceParams(4, 2, &aom_obmc_sub_pixel_variance16x4_c, 0),
ObmcSubpelVarianceParams(2, 4, &aom_obmc_sub_pixel_variance4x16_c, 0)));
+#if CONFIG_AV1_HIGHBITDEPTH
typedef MainTestClass<VarianceMxNFunc> AvxHBDMseTest;
typedef MainTestClass<VarianceMxNFunc> AvxHBDVarianceTest;
typedef SubpelVarianceTest<SubpixVarMxNFunc> AvxHBDSubpelVarianceTest;
@@ -1668,6 +1669,7 @@
};
INSTANTIATE_TEST_CASE_P(C, AvxHBDObmcSubpelVarianceTest,
::testing::ValuesIn(kArrayHBDObmcSubpelVariance_c));
+#endif // CONFIG_AV1_HIGHBITDEPTH
#if HAVE_SSE2
INSTANTIATE_TEST_CASE_P(SSE2, SumOfSquaresTest,
@@ -1762,6 +1764,7 @@
SubpelAvgVarianceParams(2, 4, &aom_sub_pixel_avg_variance4x16_sse2,
0)));
+#if CONFIG_AV1_HIGHBITDEPTH
#if HAVE_SSE4_1
INSTANTIATE_TEST_CASE_P(
SSE4_1, AvxSubpelVarianceTest,
@@ -2064,6 +2067,7 @@
INSTANTIATE_TEST_CASE_P(SSE2, AvxHBDSubpelAvgVarianceTest,
::testing::ValuesIn(kArrayHBDSubpelAvgVariance_sse2));
#endif // HAVE_SSE2
+#endif // CONFIG_AV1_HIGHBITDEPTH
#if HAVE_SSSE3
INSTANTIATE_TEST_CASE_P(