Revert^2 "Binary size reduction for realtime build" This reverts commit fc9c858970cd8c2925bef69a426bcb4ee4deb6ec. Reason for revert: nightly now pass for encode-realtime-only, adding additional fix needed for this CL to patch set 4. Change-Id: I5e2ddc694856f36da0dc119b715e7d20e178e310
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl index 5d4dce1..d87c1d3 100755 --- a/aom_dsp/aom_dsp_rtcd_defs.pl +++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -63,7 +63,10 @@ push @tx_sizes, [$w, $w]; foreach $h (@tx_dims) { push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 2*$h || $h == 2*$w)); - push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 4*$h || $h == 4*$w)); + if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || + (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 4*$h || $h == 4*$w)); + } # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } @@ -87,181 +90,127 @@ specialize qw/aom_dc_top_predictor_4x4 neon sse2/; specialize qw/aom_dc_top_predictor_4x8 neon sse2/; -specialize qw/aom_dc_top_predictor_4x16 neon sse2/; specialize qw/aom_dc_top_predictor_8x4 neon sse2/; specialize qw/aom_dc_top_predictor_8x8 neon sse2/; specialize qw/aom_dc_top_predictor_8x16 neon sse2/; -specialize qw/aom_dc_top_predictor_8x32 neon sse2/; -specialize qw/aom_dc_top_predictor_16x4 neon sse2/; specialize qw/aom_dc_top_predictor_16x8 neon sse2/; specialize qw/aom_dc_top_predictor_16x16 neon sse2/; specialize qw/aom_dc_top_predictor_16x32 neon sse2/; -specialize qw/aom_dc_top_predictor_16x64 neon sse2/; -specialize qw/aom_dc_top_predictor_32x8 neon sse2/; specialize qw/aom_dc_top_predictor_32x16 neon sse2 avx2/; specialize qw/aom_dc_top_predictor_32x32 neon sse2 avx2/; specialize qw/aom_dc_top_predictor_32x64 neon sse2 avx2/; -specialize qw/aom_dc_top_predictor_64x16 neon sse2 avx2/; specialize qw/aom_dc_top_predictor_64x32 neon sse2 avx2/; specialize qw/aom_dc_top_predictor_64x64 neon sse2 avx2/; specialize qw/aom_dc_left_predictor_4x4 neon sse2/; specialize qw/aom_dc_left_predictor_4x8 neon sse2/; -specialize qw/aom_dc_left_predictor_4x16 neon sse2/; specialize qw/aom_dc_left_predictor_8x4 neon sse2/; specialize qw/aom_dc_left_predictor_8x8 neon sse2/; specialize qw/aom_dc_left_predictor_8x16 neon sse2/; -specialize qw/aom_dc_left_predictor_8x32 neon sse2/; -specialize qw/aom_dc_left_predictor_16x4 neon sse2/; specialize qw/aom_dc_left_predictor_16x8 neon sse2/; specialize qw/aom_dc_left_predictor_16x16 neon sse2/; specialize qw/aom_dc_left_predictor_16x32 neon sse2/; -specialize qw/aom_dc_left_predictor_16x64 neon sse2/; -specialize qw/aom_dc_left_predictor_32x8 neon sse2/; specialize qw/aom_dc_left_predictor_32x16 neon sse2 avx2/; specialize qw/aom_dc_left_predictor_32x32 neon sse2 avx2/; specialize qw/aom_dc_left_predictor_32x64 neon sse2 avx2/; -specialize qw/aom_dc_left_predictor_64x16 neon sse2 avx2/; specialize qw/aom_dc_left_predictor_64x32 neon sse2 avx2/; specialize qw/aom_dc_left_predictor_64x64 neon sse2 avx2/; specialize qw/aom_dc_128_predictor_4x4 neon sse2/; specialize qw/aom_dc_128_predictor_4x8 neon sse2/; -specialize qw/aom_dc_128_predictor_4x16 neon sse2/; specialize qw/aom_dc_128_predictor_8x4 neon sse2/; specialize qw/aom_dc_128_predictor_8x8 neon sse2/; specialize qw/aom_dc_128_predictor_8x16 neon sse2/; -specialize qw/aom_dc_128_predictor_8x32 neon sse2/; -specialize qw/aom_dc_128_predictor_16x4 neon sse2/; specialize qw/aom_dc_128_predictor_16x8 neon sse2/; specialize qw/aom_dc_128_predictor_16x16 neon sse2/; specialize qw/aom_dc_128_predictor_16x32 neon sse2/; -specialize qw/aom_dc_128_predictor_16x64 neon sse2/; -specialize qw/aom_dc_128_predictor_32x8 neon sse2/; specialize qw/aom_dc_128_predictor_32x16 neon sse2 avx2/; specialize qw/aom_dc_128_predictor_32x32 neon sse2 avx2/; specialize qw/aom_dc_128_predictor_32x64 neon sse2 avx2/; -specialize qw/aom_dc_128_predictor_64x16 neon sse2 avx2/; specialize qw/aom_dc_128_predictor_64x32 neon sse2 avx2/; specialize qw/aom_dc_128_predictor_64x64 neon sse2 avx2/; specialize qw/aom_v_predictor_4x4 neon sse2/; specialize qw/aom_v_predictor_4x8 neon sse2/; -specialize qw/aom_v_predictor_4x16 neon sse2/; specialize qw/aom_v_predictor_8x4 neon sse2/; specialize qw/aom_v_predictor_8x8 neon sse2/; specialize qw/aom_v_predictor_8x16 neon sse2/; -specialize qw/aom_v_predictor_8x32 neon sse2/; -specialize qw/aom_v_predictor_16x4 neon sse2/; specialize qw/aom_v_predictor_16x8 neon sse2/; specialize qw/aom_v_predictor_16x16 neon sse2/; specialize qw/aom_v_predictor_16x32 neon sse2/; -specialize qw/aom_v_predictor_16x64 neon sse2/; -specialize qw/aom_v_predictor_32x8 neon sse2/; specialize qw/aom_v_predictor_32x16 neon sse2 avx2/; specialize qw/aom_v_predictor_32x32 neon sse2 avx2/; specialize qw/aom_v_predictor_32x64 neon sse2 avx2/; -specialize qw/aom_v_predictor_64x16 neon sse2 avx2/; specialize qw/aom_v_predictor_64x32 neon sse2 avx2/; specialize qw/aom_v_predictor_64x64 neon sse2 avx2/; specialize qw/aom_h_predictor_4x4 neon sse2/; specialize qw/aom_h_predictor_4x8 neon sse2/; -specialize qw/aom_h_predictor_4x16 neon sse2/; specialize qw/aom_h_predictor_8x4 neon sse2/; specialize qw/aom_h_predictor_8x8 neon sse2/; specialize qw/aom_h_predictor_8x16 neon sse2/; -specialize qw/aom_h_predictor_8x32 neon sse2/; -specialize qw/aom_h_predictor_16x4 neon sse2/; specialize qw/aom_h_predictor_16x8 neon sse2/; specialize qw/aom_h_predictor_16x16 neon sse2/; specialize qw/aom_h_predictor_16x32 neon sse2/; -specialize qw/aom_h_predictor_16x64 neon sse2/; -specialize qw/aom_h_predictor_32x8 neon sse2/; specialize qw/aom_h_predictor_32x16 neon sse2/; specialize qw/aom_h_predictor_32x32 neon sse2 avx2/; specialize qw/aom_h_predictor_32x64 neon sse2/; -specialize qw/aom_h_predictor_64x16 neon sse2/; specialize qw/aom_h_predictor_64x32 neon sse2/; specialize qw/aom_h_predictor_64x64 neon sse2/; specialize qw/aom_paeth_predictor_4x4 ssse3 neon/; specialize qw/aom_paeth_predictor_4x8 ssse3 neon/; -specialize qw/aom_paeth_predictor_4x16 ssse3 neon/; specialize qw/aom_paeth_predictor_8x4 ssse3 neon/; specialize qw/aom_paeth_predictor_8x8 ssse3 neon/; specialize qw/aom_paeth_predictor_8x16 ssse3 neon/; -specialize qw/aom_paeth_predictor_8x32 ssse3 neon/; -specialize qw/aom_paeth_predictor_16x4 ssse3 neon/; specialize qw/aom_paeth_predictor_16x8 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_16x16 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_16x32 ssse3 avx2 neon/; -specialize qw/aom_paeth_predictor_16x64 ssse3 avx2 neon/; -specialize qw/aom_paeth_predictor_32x8 ssse3 neon/; specialize qw/aom_paeth_predictor_32x16 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_32x32 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_32x64 ssse3 avx2 neon/; -specialize qw/aom_paeth_predictor_64x16 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_64x32 ssse3 avx2 neon/; specialize qw/aom_paeth_predictor_64x64 ssse3 avx2 neon/; specialize qw/aom_smooth_predictor_4x4 neon ssse3/; specialize qw/aom_smooth_predictor_4x8 neon ssse3/; -specialize qw/aom_smooth_predictor_4x16 neon ssse3/; specialize qw/aom_smooth_predictor_8x4 neon ssse3/; specialize qw/aom_smooth_predictor_8x8 neon ssse3/; specialize qw/aom_smooth_predictor_8x16 neon ssse3/; -specialize qw/aom_smooth_predictor_8x32 neon ssse3/; -specialize qw/aom_smooth_predictor_16x4 neon ssse3/; specialize qw/aom_smooth_predictor_16x8 neon ssse3/; specialize qw/aom_smooth_predictor_16x16 neon ssse3/; specialize qw/aom_smooth_predictor_16x32 neon ssse3/; -specialize qw/aom_smooth_predictor_16x64 neon ssse3/; -specialize qw/aom_smooth_predictor_32x8 neon ssse3/; specialize qw/aom_smooth_predictor_32x16 neon ssse3/; specialize qw/aom_smooth_predictor_32x32 neon ssse3/; specialize qw/aom_smooth_predictor_32x64 neon ssse3/; -specialize qw/aom_smooth_predictor_64x16 neon ssse3/; specialize qw/aom_smooth_predictor_64x32 neon ssse3/; specialize qw/aom_smooth_predictor_64x64 neon ssse3/; specialize qw/aom_smooth_v_predictor_4x4 neon ssse3/; specialize qw/aom_smooth_v_predictor_4x8 neon ssse3/; -specialize qw/aom_smooth_v_predictor_4x16 neon ssse3/; specialize qw/aom_smooth_v_predictor_8x4 neon ssse3/; specialize qw/aom_smooth_v_predictor_8x8 neon ssse3/; specialize qw/aom_smooth_v_predictor_8x16 neon ssse3/; -specialize qw/aom_smooth_v_predictor_8x32 neon ssse3/; -specialize qw/aom_smooth_v_predictor_16x4 neon ssse3/; specialize qw/aom_smooth_v_predictor_16x8 neon ssse3/; specialize qw/aom_smooth_v_predictor_16x16 neon ssse3/; specialize qw/aom_smooth_v_predictor_16x32 neon ssse3/; -specialize qw/aom_smooth_v_predictor_16x64 neon ssse3/; -specialize qw/aom_smooth_v_predictor_32x8 neon ssse3/; specialize qw/aom_smooth_v_predictor_32x16 neon ssse3/; specialize qw/aom_smooth_v_predictor_32x32 neon ssse3/; specialize qw/aom_smooth_v_predictor_32x64 neon ssse3/; -specialize qw/aom_smooth_v_predictor_64x16 neon ssse3/; specialize qw/aom_smooth_v_predictor_64x32 neon ssse3/; specialize qw/aom_smooth_v_predictor_64x64 neon ssse3/; specialize qw/aom_smooth_h_predictor_4x4 neon ssse3/; specialize qw/aom_smooth_h_predictor_4x8 neon ssse3/; -specialize qw/aom_smooth_h_predictor_4x16 neon ssse3/; specialize qw/aom_smooth_h_predictor_8x4 neon ssse3/; specialize qw/aom_smooth_h_predictor_8x8 neon ssse3/; specialize qw/aom_smooth_h_predictor_8x16 neon ssse3/; -specialize qw/aom_smooth_h_predictor_8x32 neon ssse3/; -specialize qw/aom_smooth_h_predictor_16x4 neon ssse3/; specialize qw/aom_smooth_h_predictor_16x8 neon ssse3/; specialize qw/aom_smooth_h_predictor_16x16 neon ssse3/; specialize qw/aom_smooth_h_predictor_16x32 neon ssse3/; -specialize qw/aom_smooth_h_predictor_16x64 neon ssse3/; -specialize qw/aom_smooth_h_predictor_32x8 neon ssse3/; specialize qw/aom_smooth_h_predictor_32x16 neon ssse3/; specialize qw/aom_smooth_h_predictor_32x32 neon ssse3/; specialize qw/aom_smooth_h_predictor_32x64 neon ssse3/; -specialize qw/aom_smooth_h_predictor_64x16 neon ssse3/; specialize qw/aom_smooth_h_predictor_64x32 neon ssse3/; specialize qw/aom_smooth_h_predictor_64x64 neon ssse3/; @@ -269,41 +218,103 @@ # by multiply and shift. specialize qw/aom_dc_predictor_4x4 neon sse2/; specialize qw/aom_dc_predictor_4x8 neon sse2/; -specialize qw/aom_dc_predictor_4x16 neon sse2/; specialize qw/aom_dc_predictor_8x4 neon sse2/; specialize qw/aom_dc_predictor_8x8 neon sse2/; specialize qw/aom_dc_predictor_8x16 neon sse2/; -specialize qw/aom_dc_predictor_8x32 neon sse2/; -specialize qw/aom_dc_predictor_16x4 neon sse2/; specialize qw/aom_dc_predictor_16x8 neon sse2/; specialize qw/aom_dc_predictor_16x16 neon sse2/; specialize qw/aom_dc_predictor_16x32 neon sse2/; -specialize qw/aom_dc_predictor_16x64 neon sse2/; -specialize qw/aom_dc_predictor_32x8 neon sse2/; specialize qw/aom_dc_predictor_32x16 neon sse2 avx2/; specialize qw/aom_dc_predictor_32x32 neon sse2 avx2/; specialize qw/aom_dc_predictor_32x64 neon sse2 avx2/; specialize qw/aom_dc_predictor_64x64 neon sse2 avx2/; specialize qw/aom_dc_predictor_64x32 neon sse2 avx2/; -specialize qw/aom_dc_predictor_64x16 neon sse2 avx2/; + + +if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + specialize qw/aom_dc_top_predictor_4x16 neon sse2/; + specialize qw/aom_dc_top_predictor_8x32 neon sse2/; + specialize qw/aom_dc_top_predictor_16x4 neon sse2/; + specialize qw/aom_dc_top_predictor_16x64 neon sse2/; + specialize qw/aom_dc_top_predictor_32x8 neon sse2/; + specialize qw/aom_dc_top_predictor_64x16 neon sse2 avx2/; + + specialize qw/aom_dc_left_predictor_4x16 neon sse2/; + specialize qw/aom_dc_left_predictor_8x32 neon sse2/; + specialize qw/aom_dc_left_predictor_16x4 neon sse2/; + specialize qw/aom_dc_left_predictor_16x64 neon sse2/; + specialize qw/aom_dc_left_predictor_32x8 neon sse2/; + specialize qw/aom_dc_left_predictor_64x16 neon sse2 avx2/; + + specialize qw/aom_dc_128_predictor_4x16 neon sse2/; + specialize qw/aom_dc_128_predictor_8x32 neon sse2/; + specialize qw/aom_dc_128_predictor_16x4 neon sse2/; + specialize qw/aom_dc_128_predictor_16x64 neon sse2/; + specialize qw/aom_dc_128_predictor_32x8 neon sse2/; + specialize qw/aom_dc_128_predictor_64x16 neon sse2 avx2/; + + specialize qw/aom_v_predictor_4x16 neon sse2/; + specialize qw/aom_v_predictor_8x32 neon sse2/; + specialize qw/aom_v_predictor_16x4 neon sse2/; + specialize qw/aom_v_predictor_16x64 neon sse2/; + specialize qw/aom_v_predictor_32x8 neon sse2/; + specialize qw/aom_v_predictor_64x16 neon sse2 avx2/; + + specialize qw/aom_h_predictor_4x16 neon sse2/; + specialize qw/aom_h_predictor_8x32 neon sse2/; + specialize qw/aom_h_predictor_16x4 neon sse2/; + specialize qw/aom_h_predictor_16x64 neon sse2/; + specialize qw/aom_h_predictor_32x8 neon sse2/; + specialize qw/aom_h_predictor_64x16 neon sse2/; + + specialize qw/aom_paeth_predictor_4x16 ssse3 neon/; + specialize qw/aom_paeth_predictor_8x32 ssse3 neon/; + specialize qw/aom_paeth_predictor_16x4 ssse3 neon/; + specialize qw/aom_paeth_predictor_16x64 ssse3 avx2 neon/; + specialize qw/aom_paeth_predictor_32x8 ssse3 neon/; + specialize qw/aom_paeth_predictor_64x16 ssse3 avx2 neon/; + + specialize qw/aom_smooth_predictor_4x16 neon ssse3/; + specialize qw/aom_smooth_predictor_8x32 neon ssse3/; + specialize qw/aom_smooth_predictor_16x4 neon ssse3/; + specialize qw/aom_smooth_predictor_16x64 neon ssse3/; + specialize qw/aom_smooth_predictor_32x8 neon ssse3/; + specialize qw/aom_smooth_predictor_64x16 neon ssse3/; + + specialize qw/aom_smooth_v_predictor_4x16 neon ssse3/; + specialize qw/aom_smooth_v_predictor_8x32 neon ssse3/; + specialize qw/aom_smooth_v_predictor_16x4 neon ssse3/; + specialize qw/aom_smooth_v_predictor_16x64 neon ssse3/; + specialize qw/aom_smooth_v_predictor_32x8 neon ssse3/; + specialize qw/aom_smooth_v_predictor_64x16 neon ssse3/; + + specialize qw/aom_smooth_h_predictor_4x16 neon ssse3/; + specialize qw/aom_smooth_h_predictor_8x32 neon ssse3/; + specialize qw/aom_smooth_h_predictor_16x4 neon ssse3/; + specialize qw/aom_smooth_h_predictor_16x64 neon ssse3/; + specialize qw/aom_smooth_h_predictor_32x8 neon ssse3/; + specialize qw/aom_smooth_h_predictor_64x16 neon ssse3/; + + specialize qw/aom_dc_predictor_4x16 neon sse2/; + specialize qw/aom_dc_predictor_8x32 neon sse2/; + specialize qw/aom_dc_predictor_16x4 neon sse2/; + specialize qw/aom_dc_predictor_16x64 neon sse2/; + specialize qw/aom_dc_predictor_32x8 neon sse2/; + specialize qw/aom_dc_predictor_64x16 neon sse2 avx2/; +} # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER + if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") { specialize qw/aom_highbd_v_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_v_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_v_predictor_4x16 neon/; specialize qw/aom_highbd_v_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_v_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_v_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_v_predictor_8x32 neon/; - specialize qw/aom_highbd_v_predictor_16x4 neon/; specialize qw/aom_highbd_v_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_v_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_v_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_v_predictor_16x64 neon/; - specialize qw/aom_highbd_v_predictor_32x8 neon/; specialize qw/aom_highbd_v_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_v_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_v_predictor_32x64 neon/; - specialize qw/aom_highbd_v_predictor_64x16 neon/; specialize qw/aom_highbd_v_predictor_64x32 neon/; specialize qw/aom_highbd_v_predictor_64x64 neon/; @@ -311,183 +322,202 @@ # by multiply and shift. specialize qw/aom_highbd_dc_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_dc_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_dc_predictor_4x16 neon/; specialize qw/aom_highbd_dc_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_dc_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_dc_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_dc_predictor_8x32 neon/; - specialize qw/aom_highbd_dc_predictor_16x4 neon/; specialize qw/aom_highbd_dc_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_dc_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_dc_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_dc_predictor_16x64 neon/; - specialize qw/aom_highbd_dc_predictor_32x8 neon/; specialize qw/aom_highbd_dc_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_dc_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_dc_predictor_32x64 neon/; - specialize qw/aom_highbd_dc_predictor_64x16 neon/; specialize qw/aom_highbd_dc_predictor_64x32 neon/; specialize qw/aom_highbd_dc_predictor_64x64 neon/; specialize qw/aom_highbd_h_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_h_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_h_predictor_4x16 neon/; specialize qw/aom_highbd_h_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_h_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_h_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_h_predictor_8x32 neon/; - specialize qw/aom_highbd_h_predictor_16x4 neon/; specialize qw/aom_highbd_h_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_h_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_h_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_h_predictor_16x64 neon/; - specialize qw/aom_highbd_h_predictor_32x8 neon/; specialize qw/aom_highbd_h_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_h_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_h_predictor_32x64 neon/; - specialize qw/aom_highbd_h_predictor_64x16 neon/; specialize qw/aom_highbd_h_predictor_64x32 neon/; specialize qw/aom_highbd_h_predictor_64x64 neon/; specialize qw/aom_highbd_dc_128_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_dc_128_predictor_4x16 neon/; specialize qw/aom_highbd_dc_128_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_dc_128_predictor_8x32 neon/; - specialize qw/aom_highbd_dc_128_predictor_16x4 neon/; specialize qw/aom_highbd_dc_128_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_dc_128_predictor_16x64 neon/; - specialize qw/aom_highbd_dc_128_predictor_32x8 neon/; specialize qw/aom_highbd_dc_128_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_dc_128_predictor_32x64 neon/; - specialize qw/aom_highbd_dc_128_predictor_64x16 neon/; specialize qw/aom_highbd_dc_128_predictor_64x32 neon/; specialize qw/aom_highbd_dc_128_predictor_64x64 neon/; specialize qw/aom_highbd_dc_left_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_dc_left_predictor_4x16 neon/; specialize qw/aom_highbd_dc_left_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_dc_left_predictor_8x32 neon/; - specialize qw/aom_highbd_dc_left_predictor_16x4 neon/; specialize qw/aom_highbd_dc_left_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_dc_left_predictor_16x64 neon/; - specialize qw/aom_highbd_dc_left_predictor_32x8 neon/; specialize qw/aom_highbd_dc_left_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_dc_left_predictor_32x64 neon/; - specialize qw/aom_highbd_dc_left_predictor_64x16 neon/; specialize qw/aom_highbd_dc_left_predictor_64x32 neon/; specialize qw/aom_highbd_dc_left_predictor_64x64 neon/; specialize qw/aom_highbd_dc_top_predictor_4x4 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_4x8 sse2 neon/; - specialize qw/aom_highbd_dc_top_predictor_4x16 neon/; specialize qw/aom_highbd_dc_top_predictor_8x4 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_8x8 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_8x16 sse2 neon/; - specialize qw/aom_highbd_dc_top_predictor_8x32 neon/; - specialize qw/aom_highbd_dc_top_predictor_16x4 neon/; specialize qw/aom_highbd_dc_top_predictor_16x8 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_16x16 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_16x32 sse2 neon/; - specialize qw/aom_highbd_dc_top_predictor_16x64 neon/; - specialize qw/aom_highbd_dc_top_predictor_32x8 neon/; specialize qw/aom_highbd_dc_top_predictor_32x16 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_32x32 sse2 neon/; specialize qw/aom_highbd_dc_top_predictor_32x64 neon/; - specialize qw/aom_highbd_dc_top_predictor_64x16 neon/; specialize qw/aom_highbd_dc_top_predictor_64x32 neon/; specialize qw/aom_highbd_dc_top_predictor_64x64 neon/; specialize qw/aom_highbd_paeth_predictor_4x4 neon/; specialize qw/aom_highbd_paeth_predictor_4x8 neon/; - specialize qw/aom_highbd_paeth_predictor_4x16 neon/; specialize qw/aom_highbd_paeth_predictor_8x4 neon/; specialize qw/aom_highbd_paeth_predictor_8x8 neon/; specialize qw/aom_highbd_paeth_predictor_8x16 neon/; - specialize qw/aom_highbd_paeth_predictor_8x32 neon/; - specialize qw/aom_highbd_paeth_predictor_16x4 neon/; specialize qw/aom_highbd_paeth_predictor_16x8 neon/; specialize qw/aom_highbd_paeth_predictor_16x16 neon/; specialize qw/aom_highbd_paeth_predictor_16x32 neon/; - specialize qw/aom_highbd_paeth_predictor_16x64 neon/; - specialize qw/aom_highbd_paeth_predictor_32x8 neon/; specialize qw/aom_highbd_paeth_predictor_32x16 neon/; specialize qw/aom_highbd_paeth_predictor_32x32 neon/; specialize qw/aom_highbd_paeth_predictor_32x64 neon/; - specialize qw/aom_highbd_paeth_predictor_64x16 neon/; specialize qw/aom_highbd_paeth_predictor_64x32 neon/; specialize qw/aom_highbd_paeth_predictor_64x64 neon/; specialize qw/aom_highbd_smooth_predictor_4x4 neon/; specialize qw/aom_highbd_smooth_predictor_4x8 neon/; - specialize qw/aom_highbd_smooth_predictor_4x16 neon/; specialize qw/aom_highbd_smooth_predictor_8x4 neon/; specialize qw/aom_highbd_smooth_predictor_8x8 neon/; specialize qw/aom_highbd_smooth_predictor_8x16 neon/; - specialize qw/aom_highbd_smooth_predictor_8x32 neon/; - specialize qw/aom_highbd_smooth_predictor_16x4 neon/; specialize qw/aom_highbd_smooth_predictor_16x8 neon/; specialize qw/aom_highbd_smooth_predictor_16x16 neon/; specialize qw/aom_highbd_smooth_predictor_16x32 neon/; - specialize qw/aom_highbd_smooth_predictor_16x64 neon/; - specialize qw/aom_highbd_smooth_predictor_32x8 neon/; specialize qw/aom_highbd_smooth_predictor_32x16 neon/; specialize qw/aom_highbd_smooth_predictor_32x32 neon/; specialize qw/aom_highbd_smooth_predictor_32x64 neon/; - specialize qw/aom_highbd_smooth_predictor_64x16 neon/; specialize qw/aom_highbd_smooth_predictor_64x32 neon/; specialize qw/aom_highbd_smooth_predictor_64x64 neon/; specialize qw/aom_highbd_smooth_v_predictor_4x4 neon/; specialize qw/aom_highbd_smooth_v_predictor_4x8 neon/; - specialize qw/aom_highbd_smooth_v_predictor_4x16 neon/; specialize qw/aom_highbd_smooth_v_predictor_8x4 neon/; specialize qw/aom_highbd_smooth_v_predictor_8x8 neon/; specialize qw/aom_highbd_smooth_v_predictor_8x16 neon/; - specialize qw/aom_highbd_smooth_v_predictor_8x32 neon/; - specialize qw/aom_highbd_smooth_v_predictor_16x4 neon/; specialize qw/aom_highbd_smooth_v_predictor_16x8 neon/; specialize qw/aom_highbd_smooth_v_predictor_16x16 neon/; specialize qw/aom_highbd_smooth_v_predictor_16x32 neon/; - specialize qw/aom_highbd_smooth_v_predictor_16x64 neon/; - specialize qw/aom_highbd_smooth_v_predictor_32x8 neon/; specialize qw/aom_highbd_smooth_v_predictor_32x16 neon/; specialize qw/aom_highbd_smooth_v_predictor_32x32 neon/; specialize qw/aom_highbd_smooth_v_predictor_32x64 neon/; - specialize qw/aom_highbd_smooth_v_predictor_64x16 neon/; specialize qw/aom_highbd_smooth_v_predictor_64x32 neon/; specialize qw/aom_highbd_smooth_v_predictor_64x64 neon/; - specialize qw/aom_highbd_smooth_h_predictor_4x4 neon/; specialize qw/aom_highbd_smooth_h_predictor_4x8 neon/; - specialize qw/aom_highbd_smooth_h_predictor_4x16 neon/; + specialize qw/aom_highbd_smooth_h_predictor_8x4 neon/; specialize qw/aom_highbd_smooth_h_predictor_8x8 neon/; specialize qw/aom_highbd_smooth_h_predictor_8x16 neon/; - specialize qw/aom_highbd_smooth_h_predictor_8x32 neon/; - specialize qw/aom_highbd_smooth_h_predictor_16x4 neon/; specialize qw/aom_highbd_smooth_h_predictor_16x8 neon/; specialize qw/aom_highbd_smooth_h_predictor_16x16 neon/; specialize qw/aom_highbd_smooth_h_predictor_16x32 neon/; - specialize qw/aom_highbd_smooth_h_predictor_16x64 neon/; - specialize qw/aom_highbd_smooth_h_predictor_32x8 neon/; specialize qw/aom_highbd_smooth_h_predictor_32x16 neon/; specialize qw/aom_highbd_smooth_h_predictor_32x32 neon/; specialize qw/aom_highbd_smooth_h_predictor_32x64 neon/; - specialize qw/aom_highbd_smooth_h_predictor_64x16 neon/; specialize qw/aom_highbd_smooth_h_predictor_64x32 neon/; specialize qw/aom_highbd_smooth_h_predictor_64x64 neon/; + + if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || + (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + specialize qw/aom_highbd_v_predictor_4x16 neon/; + specialize qw/aom_highbd_v_predictor_8x32 neon/; + specialize qw/aom_highbd_v_predictor_16x4 neon/; + specialize qw/aom_highbd_v_predictor_16x64 neon/; + specialize qw/aom_highbd_v_predictor_32x8 neon/; + specialize qw/aom_highbd_v_predictor_64x16 neon/; + + specialize qw/aom_highbd_dc_predictor_4x16 neon/; + specialize qw/aom_highbd_dc_predictor_8x32 neon/; + specialize qw/aom_highbd_dc_predictor_16x4 neon/; + specialize qw/aom_highbd_dc_predictor_16x64 neon/; + specialize qw/aom_highbd_dc_predictor_32x8 neon/; + specialize qw/aom_highbd_dc_predictor_64x16 neon/; + + specialize qw/aom_highbd_h_predictor_4x16 neon/; + specialize qw/aom_highbd_h_predictor_8x32 neon/; + specialize qw/aom_highbd_h_predictor_16x4 neon/; + specialize qw/aom_highbd_h_predictor_16x64 neon/; + specialize qw/aom_highbd_h_predictor_32x8 neon/; + specialize qw/aom_highbd_h_predictor_64x16 neon/; + + specialize qw/aom_highbd_dc_128_predictor_4x16 neon/; + specialize qw/aom_highbd_dc_128_predictor_8x32 neon/; + specialize qw/aom_highbd_dc_128_predictor_16x4 neon/; + specialize qw/aom_highbd_dc_128_predictor_16x64 neon/; + specialize qw/aom_highbd_dc_128_predictor_32x8 neon/; + specialize qw/aom_highbd_dc_128_predictor_64x16 neon/; + + specialize qw/aom_highbd_dc_left_predictor_4x16 neon/; + specialize qw/aom_highbd_dc_left_predictor_8x32 neon/; + specialize qw/aom_highbd_dc_left_predictor_16x4 neon/; + specialize qw/aom_highbd_dc_left_predictor_16x64 neon/; + specialize qw/aom_highbd_dc_left_predictor_32x8 neon/; + specialize qw/aom_highbd_dc_left_predictor_64x16 neon/; + + specialize qw/aom_highbd_dc_top_predictor_4x16 neon/; + specialize qw/aom_highbd_dc_top_predictor_8x32 neon/; + specialize qw/aom_highbd_dc_top_predictor_16x4 neon/; + specialize qw/aom_highbd_dc_top_predictor_16x64 neon/; + specialize qw/aom_highbd_dc_top_predictor_32x8 neon/; + specialize qw/aom_highbd_dc_top_predictor_64x16 neon/; + + specialize qw/aom_highbd_paeth_predictor_4x16 neon/; + specialize qw/aom_highbd_paeth_predictor_8x32 neon/; + specialize qw/aom_highbd_paeth_predictor_16x4 neon/; + specialize qw/aom_highbd_paeth_predictor_16x64 neon/; + specialize qw/aom_highbd_paeth_predictor_32x8 neon/; + specialize qw/aom_highbd_paeth_predictor_64x16 neon/; + + specialize qw/aom_highbd_smooth_predictor_4x16 neon/; + specialize qw/aom_highbd_smooth_predictor_8x32 neon/; + specialize qw/aom_highbd_smooth_predictor_16x4 neon/; + specialize qw/aom_highbd_smooth_predictor_16x64 neon/; + specialize qw/aom_highbd_smooth_predictor_32x8 neon/; + specialize qw/aom_highbd_smooth_predictor_64x16 neon/; + + specialize qw/aom_highbd_smooth_v_predictor_4x16 neon/; + specialize qw/aom_highbd_smooth_v_predictor_8x32 neon/; + specialize qw/aom_highbd_smooth_v_predictor_16x4 neon/; + specialize qw/aom_highbd_smooth_v_predictor_16x64 neon/; + specialize qw/aom_highbd_smooth_v_predictor_32x8 neon/; + specialize qw/aom_highbd_smooth_v_predictor_64x16 neon/; + + specialize qw/aom_highbd_smooth_h_predictor_4x16 neon/; + specialize qw/aom_highbd_smooth_h_predictor_8x32 neon/; + specialize qw/aom_highbd_smooth_h_predictor_16x4 neon/; + specialize qw/aom_highbd_smooth_h_predictor_16x64 neon/; + specialize qw/aom_highbd_smooth_h_predictor_32x8 neon/; + specialize qw/aom_highbd_smooth_h_predictor_64x16 neon/; + } # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } # # Sub Pixel Filters
diff --git a/aom_dsp/arm/highbd_intrapred_neon.c b/aom_dsp/arm/highbd_intrapred_neon.c index 5b8234c..f674a13 100644 --- a/aom_dsp/arm/highbd_intrapred_neon.c +++ b/aom_dsp/arm/highbd_intrapred_neon.c
@@ -200,6 +200,7 @@ highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_n_u16(dc0)); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_DC_PREDICTOR_RECT(4, 8, , 2, HIGHBD_DC_MULTIPLIER_1X2) HIGHBD_DC_PREDICTOR_RECT(4, 16, , 2, HIGHBD_DC_MULTIPLIER_1X4) HIGHBD_DC_PREDICTOR_RECT(8, 4, q, 2, HIGHBD_DC_MULTIPLIER_1X2) @@ -214,6 +215,16 @@ HIGHBD_DC_PREDICTOR_RECT(32, 64, q, 5, HIGHBD_DC_MULTIPLIER_1X2) HIGHBD_DC_PREDICTOR_RECT(64, 16, q, 4, HIGHBD_DC_MULTIPLIER_1X4) HIGHBD_DC_PREDICTOR_RECT(64, 32, q, 5, HIGHBD_DC_MULTIPLIER_1X2) +#else +HIGHBD_DC_PREDICTOR_RECT(4, 8, , 2, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(8, 4, q, 2, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(8, 16, q, 3, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(16, 8, q, 3, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(16, 32, q, 4, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(32, 16, q, 4, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(32, 64, q, 5, HIGHBD_DC_MULTIPLIER_1X2) +HIGHBD_DC_PREDICTOR_RECT(64, 32, q, 5, HIGHBD_DC_MULTIPLIER_1X2) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_DC_PREDICTOR_RECT #undef HIGHBD_DC_MULTIPLIER_1X2 @@ -233,6 +244,7 @@ vdup##q##_n_u16(0x80 << (bd - 8))); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_DC_PREDICTOR_128(4, 4, ) HIGHBD_DC_PREDICTOR_128(4, 8, ) HIGHBD_DC_PREDICTOR_128(4, 16, ) @@ -252,6 +264,21 @@ HIGHBD_DC_PREDICTOR_128(64, 16, q) HIGHBD_DC_PREDICTOR_128(64, 32, q) HIGHBD_DC_PREDICTOR_128(64, 64, q) +#else +HIGHBD_DC_PREDICTOR_128(4, 4, ) +HIGHBD_DC_PREDICTOR_128(4, 8, ) +HIGHBD_DC_PREDICTOR_128(8, 4, q) +HIGHBD_DC_PREDICTOR_128(8, 8, q) +HIGHBD_DC_PREDICTOR_128(8, 16, q) +HIGHBD_DC_PREDICTOR_128(16, 8, q) +HIGHBD_DC_PREDICTOR_128(16, 16, q) +HIGHBD_DC_PREDICTOR_128(16, 32, q) +HIGHBD_DC_PREDICTOR_128(32, 16, q) +HIGHBD_DC_PREDICTOR_128(32, 32, q) +HIGHBD_DC_PREDICTOR_128(32, 64, q) +HIGHBD_DC_PREDICTOR_128(64, 32, q) +HIGHBD_DC_PREDICTOR_128(64, 64, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_DC_PREDICTOR_128 @@ -294,6 +321,7 @@ highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u16(dc0, 0)); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER DC_PREDICTOR_LEFT(4, 4, 2, ) DC_PREDICTOR_LEFT(4, 8, 3, ) DC_PREDICTOR_LEFT(4, 16, 4, ) @@ -313,6 +341,21 @@ DC_PREDICTOR_LEFT(64, 16, 4, q) DC_PREDICTOR_LEFT(64, 32, 5, q) DC_PREDICTOR_LEFT(64, 64, 6, q) +#else +DC_PREDICTOR_LEFT(4, 4, 2, ) +DC_PREDICTOR_LEFT(4, 8, 3, ) +DC_PREDICTOR_LEFT(8, 4, 2, q) +DC_PREDICTOR_LEFT(8, 8, 3, q) +DC_PREDICTOR_LEFT(8, 16, 4, q) +DC_PREDICTOR_LEFT(16, 8, 3, q) +DC_PREDICTOR_LEFT(16, 16, 4, q) +DC_PREDICTOR_LEFT(16, 32, 5, q) +DC_PREDICTOR_LEFT(32, 16, 4, q) +DC_PREDICTOR_LEFT(32, 32, 5, q) +DC_PREDICTOR_LEFT(32, 64, 6, q) +DC_PREDICTOR_LEFT(64, 32, 5, q) +DC_PREDICTOR_LEFT(64, 64, 6, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef DC_PREDICTOR_LEFT @@ -330,6 +373,7 @@ highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u16(dc0, 0)); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER DC_PREDICTOR_TOP(4, 4, 2, ) DC_PREDICTOR_TOP(4, 8, 2, ) DC_PREDICTOR_TOP(4, 16, 2, ) @@ -349,6 +393,21 @@ DC_PREDICTOR_TOP(64, 16, 6, q) DC_PREDICTOR_TOP(64, 32, 6, q) DC_PREDICTOR_TOP(64, 64, 6, q) +#else +DC_PREDICTOR_TOP(4, 4, 2, ) +DC_PREDICTOR_TOP(4, 8, 2, ) +DC_PREDICTOR_TOP(8, 4, 3, q) +DC_PREDICTOR_TOP(8, 8, 3, q) +DC_PREDICTOR_TOP(8, 16, 3, q) +DC_PREDICTOR_TOP(16, 8, 4, q) +DC_PREDICTOR_TOP(16, 16, 4, q) +DC_PREDICTOR_TOP(16, 32, 4, q) +DC_PREDICTOR_TOP(32, 16, 5, q) +DC_PREDICTOR_TOP(32, 32, 5, q) +DC_PREDICTOR_TOP(32, 64, 5, q) +DC_PREDICTOR_TOP(64, 32, 6, q) +DC_PREDICTOR_TOP(64, 64, 6, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef DC_PREDICTOR_TOP @@ -459,6 +518,7 @@ } while (y != 0); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_V_NXM(4, 4) HIGHBD_V_NXM(4, 8) HIGHBD_V_NXM(4, 16) @@ -482,6 +542,25 @@ HIGHBD_V_NXM(64, 16) HIGHBD_V_NXM(64, 32) HIGHBD_V_NXM(64, 64) +#else +HIGHBD_V_NXM(4, 4) +HIGHBD_V_NXM(4, 8) + +HIGHBD_V_NXM(8, 4) +HIGHBD_V_NXM(8, 8) +HIGHBD_V_NXM(8, 16) + +HIGHBD_V_NXM(16, 8) +HIGHBD_V_NXM(16, 16) +HIGHBD_V_NXM(16, 32) + +HIGHBD_V_NXM(32, 16) +HIGHBD_V_NXM(32, 32) +HIGHBD_V_NXM(32, 64) + +HIGHBD_V_NXM(64, 32) +HIGHBD_V_NXM(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // H_PRED @@ -585,6 +664,7 @@ highbd_h_store_8x4(dst + 4 * stride, stride, vget_high_u16(l)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_h_predictor_16x4_neon(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd) { @@ -592,6 +672,7 @@ (void)bd; highbd_h_store_16x4(dst, stride, vld1_u16(left)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_h_predictor_16x8_neon(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, @@ -603,6 +684,7 @@ highbd_h_store_16x4(dst + 4 * stride, stride, vget_high_u16(l)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_h_predictor_32x8_neon(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd) { @@ -612,6 +694,7 @@ highbd_h_store_32x4(dst + 0 * stride, stride, vget_low_u16(l)); highbd_h_store_32x4(dst + 4 * stride, stride, vget_high_u16(l)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // For cases where height >= 16 we use pairs of loads to get LDP instructions. #define HIGHBD_H_WXH_LARGE(w, h) \ @@ -632,6 +715,7 @@ } \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_H_WXH_LARGE(4, 16) HIGHBD_H_WXH_LARGE(8, 16) HIGHBD_H_WXH_LARGE(8, 32) @@ -644,6 +728,16 @@ HIGHBD_H_WXH_LARGE(64, 16) HIGHBD_H_WXH_LARGE(64, 32) HIGHBD_H_WXH_LARGE(64, 64) +#else +HIGHBD_H_WXH_LARGE(8, 16) +HIGHBD_H_WXH_LARGE(16, 16) +HIGHBD_H_WXH_LARGE(16, 32) +HIGHBD_H_WXH_LARGE(32, 16) +HIGHBD_H_WXH_LARGE(32, 32) +HIGHBD_H_WXH_LARGE(32, 64) +HIGHBD_H_WXH_LARGE(64, 32) +HIGHBD_H_WXH_LARGE(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_H_WXH_LARGE @@ -706,6 +800,7 @@ highbd_paeth_4or8_x_h_neon(dst, stride, above, left, W, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_PAETH_NXM(4, 4) HIGHBD_PAETH_NXM(4, 8) HIGHBD_PAETH_NXM(4, 16) @@ -713,6 +808,13 @@ HIGHBD_PAETH_NXM(8, 8) HIGHBD_PAETH_NXM(8, 16) HIGHBD_PAETH_NXM(8, 32) +#else +HIGHBD_PAETH_NXM(4, 4) +HIGHBD_PAETH_NXM(4, 8) +HIGHBD_PAETH_NXM(8, 4) +HIGHBD_PAETH_NXM(8, 8) +HIGHBD_PAETH_NXM(8, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Select the closest values and collect them. static inline uint16x8_t select_paeth(const uint16x8_t top, @@ -798,6 +900,7 @@ highbd_paeth16_plus_x_h_neon(dst, stride, above, left, W, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_PAETH_NXM_WIDE(16, 4) HIGHBD_PAETH_NXM_WIDE(16, 8) HIGHBD_PAETH_NXM_WIDE(16, 16) @@ -810,6 +913,16 @@ HIGHBD_PAETH_NXM_WIDE(64, 16) HIGHBD_PAETH_NXM_WIDE(64, 32) HIGHBD_PAETH_NXM_WIDE(64, 64) +#else +HIGHBD_PAETH_NXM_WIDE(16, 8) +HIGHBD_PAETH_NXM_WIDE(16, 16) +HIGHBD_PAETH_NXM_WIDE(16, 32) +HIGHBD_PAETH_NXM_WIDE(32, 16) +HIGHBD_PAETH_NXM_WIDE(32, 32) +HIGHBD_PAETH_NXM_WIDE(32, 64) +HIGHBD_PAETH_NXM_WIDE(64, 32) +HIGHBD_PAETH_NXM_WIDE(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // SMOOTH @@ -916,6 +1029,7 @@ highbd_smooth_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_NXM(4, 4) HIGHBD_SMOOTH_NXM(4, 8) HIGHBD_SMOOTH_NXM(8, 4) @@ -923,6 +1037,13 @@ HIGHBD_SMOOTH_NXM(4, 16) HIGHBD_SMOOTH_NXM(8, 16) HIGHBD_SMOOTH_NXM(8, 32) +#else +HIGHBD_SMOOTH_NXM(4, 4) +HIGHBD_SMOOTH_NXM(4, 8) +HIGHBD_SMOOTH_NXM(8, 4) +HIGHBD_SMOOTH_NXM(8, 8) +HIGHBD_SMOOTH_NXM(8, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_NXM @@ -989,6 +1110,7 @@ highbd_smooth_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_NXM_WIDE(16, 4) HIGHBD_SMOOTH_NXM_WIDE(16, 8) HIGHBD_SMOOTH_NXM_WIDE(16, 16) @@ -1001,6 +1123,16 @@ HIGHBD_SMOOTH_NXM_WIDE(64, 16) HIGHBD_SMOOTH_NXM_WIDE(64, 32) HIGHBD_SMOOTH_NXM_WIDE(64, 64) +#else +HIGHBD_SMOOTH_NXM_WIDE(16, 8) +HIGHBD_SMOOTH_NXM_WIDE(16, 16) +HIGHBD_SMOOTH_NXM_WIDE(16, 32) +HIGHBD_SMOOTH_NXM_WIDE(32, 16) +HIGHBD_SMOOTH_NXM_WIDE(32, 32) +HIGHBD_SMOOTH_NXM_WIDE(32, 64) +HIGHBD_SMOOTH_NXM_WIDE(64, 32) +HIGHBD_SMOOTH_NXM_WIDE(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_NXM_WIDE @@ -1060,6 +1192,7 @@ highbd_smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_V_NXM(4, 4) HIGHBD_SMOOTH_V_NXM(4, 8) HIGHBD_SMOOTH_V_NXM(4, 16) @@ -1067,6 +1200,13 @@ HIGHBD_SMOOTH_V_NXM(8, 8) HIGHBD_SMOOTH_V_NXM(8, 16) HIGHBD_SMOOTH_V_NXM(8, 32) +#else +HIGHBD_SMOOTH_V_NXM(4, 4) +HIGHBD_SMOOTH_V_NXM(4, 8) +HIGHBD_SMOOTH_V_NXM(8, 4) +HIGHBD_SMOOTH_V_NXM(8, 8) +HIGHBD_SMOOTH_V_NXM(8, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_V_NXM @@ -1121,6 +1261,7 @@ highbd_smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_V_NXM_WIDE(16, 4) HIGHBD_SMOOTH_V_NXM_WIDE(16, 8) HIGHBD_SMOOTH_V_NXM_WIDE(16, 16) @@ -1133,6 +1274,16 @@ HIGHBD_SMOOTH_V_NXM_WIDE(64, 16) HIGHBD_SMOOTH_V_NXM_WIDE(64, 32) HIGHBD_SMOOTH_V_NXM_WIDE(64, 64) +#else +HIGHBD_SMOOTH_V_NXM_WIDE(16, 8) +HIGHBD_SMOOTH_V_NXM_WIDE(16, 16) +HIGHBD_SMOOTH_V_NXM_WIDE(16, 32) +HIGHBD_SMOOTH_V_NXM_WIDE(32, 16) +HIGHBD_SMOOTH_V_NXM_WIDE(32, 32) +HIGHBD_SMOOTH_V_NXM_WIDE(32, 64) +HIGHBD_SMOOTH_V_NXM_WIDE(64, 32) +HIGHBD_SMOOTH_V_NXM_WIDE(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_V_NXM_WIDE @@ -1190,6 +1341,7 @@ highbd_smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_H_NXM(4, 4) HIGHBD_SMOOTH_H_NXM(4, 8) HIGHBD_SMOOTH_H_NXM(4, 16) @@ -1197,6 +1349,13 @@ HIGHBD_SMOOTH_H_NXM(8, 8) HIGHBD_SMOOTH_H_NXM(8, 16) HIGHBD_SMOOTH_H_NXM(8, 32) +#else +HIGHBD_SMOOTH_H_NXM(4, 4) +HIGHBD_SMOOTH_H_NXM(4, 8) +HIGHBD_SMOOTH_H_NXM(8, 4) +HIGHBD_SMOOTH_H_NXM(8, 8) +HIGHBD_SMOOTH_H_NXM(8, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_H_NXM @@ -1254,6 +1413,7 @@ highbd_smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_SMOOTH_H_NXM_WIDE(16, 4) HIGHBD_SMOOTH_H_NXM_WIDE(16, 8) HIGHBD_SMOOTH_H_NXM_WIDE(16, 16) @@ -1266,6 +1426,16 @@ HIGHBD_SMOOTH_H_NXM_WIDE(64, 16) HIGHBD_SMOOTH_H_NXM_WIDE(64, 32) HIGHBD_SMOOTH_H_NXM_WIDE(64, 64) +#else +HIGHBD_SMOOTH_H_NXM_WIDE(16, 8) +HIGHBD_SMOOTH_H_NXM_WIDE(16, 16) +HIGHBD_SMOOTH_H_NXM_WIDE(16, 32) +HIGHBD_SMOOTH_H_NXM_WIDE(32, 16) +HIGHBD_SMOOTH_H_NXM_WIDE(32, 32) +HIGHBD_SMOOTH_H_NXM_WIDE(32, 64) +HIGHBD_SMOOTH_H_NXM_WIDE(64, 32) +HIGHBD_SMOOTH_H_NXM_WIDE(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_SMOOTH_H_NXM_WIDE @@ -1898,6 +2068,7 @@ } while (++r < bh); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_DR_PREDICTOR_Z2_WXH(4, 16) HIGHBD_DR_PREDICTOR_Z2_WXH(8, 16) HIGHBD_DR_PREDICTOR_Z2_WXH(8, 32) @@ -1913,6 +2084,16 @@ HIGHBD_DR_PREDICTOR_Z2_WXH(64, 16) HIGHBD_DR_PREDICTOR_Z2_WXH(64, 32) HIGHBD_DR_PREDICTOR_Z2_WXH(64, 64) +#else +HIGHBD_DR_PREDICTOR_Z2_WXH(8, 16) +HIGHBD_DR_PREDICTOR_Z2_WXH(16, 8) +HIGHBD_DR_PREDICTOR_Z2_WXH(16, 16) +HIGHBD_DR_PREDICTOR_Z2_WXH(16, 32) +HIGHBD_DR_PREDICTOR_Z2_WXH(32, 32) +HIGHBD_DR_PREDICTOR_Z2_WXH(32, 64) +HIGHBD_DR_PREDICTOR_Z2_WXH(64, 32) +HIGHBD_DR_PREDICTOR_Z2_WXH(64, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef HIGHBD_DR_PREDICTOR_Z2_WXH @@ -2440,6 +2621,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static highbd_dr_prediction_z2_ptr dr_predictor_z2_arr_neon[7][7] = { { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, @@ -2458,6 +2640,24 @@ { NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_64x16_neon, &highbd_dr_prediction_z2_64x32_neon, &highbd_dr_prediction_z2_64x64_neon }, }; +#else +static highbd_dr_prediction_z2_ptr dr_predictor_z2_arr_neon[7][7] = { + { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { NULL, NULL, &highbd_dr_prediction_z2_4x4_neon, + &highbd_dr_prediction_z2_4x8_neon, NULL, NULL, NULL }, + { NULL, NULL, &highbd_dr_prediction_z2_8x4_neon, + &highbd_dr_prediction_z2_8x8_neon, &highbd_dr_prediction_z2_8x16_neon, NULL, + NULL }, + { NULL, NULL, NULL, &highbd_dr_prediction_z2_16x8_neon, + &highbd_dr_prediction_z2_16x16_neon, &highbd_dr_prediction_z2_16x32_neon, + NULL }, + { NULL, NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_32x32_neon, + &highbd_dr_prediction_z2_32x64_neon }, + { NULL, NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_64x32_neon, + &highbd_dr_prediction_z2_64x64_neon }, +}; +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Directional prediction, zone 2: 90 < angle < 180 void av1_highbd_dr_prediction_z2_neon(uint16_t *dst, ptrdiff_t stride, int bw,
diff --git a/aom_dsp/arm/intrapred_neon.c b/aom_dsp/arm/intrapred_neon.c index e44e186..caf385c 100644 --- a/aom_dsp/arm/intrapred_neon.c +++ b/aom_dsp/arm/intrapred_neon.c
@@ -374,6 +374,7 @@ dc_store_8xh(dst, stride, 4, vdup_n_u8(dc)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { uint8x8_t a = load_u8_4x1(above); @@ -393,6 +394,7 @@ uint32_t dc = calculate_dc_from_sum(16, 4, sum, 2, DC_MULTIPLIER_1X4); dc_store_16xh(dst, stride, 4, vdupq_n_u8(dc)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -414,6 +416,7 @@ dc_store_16xh(dst, stride, 8, vdupq_n_u8(dc)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { uint8x8_t a = vld1_u8(above); @@ -433,6 +436,7 @@ uint32_t dc = calculate_dc_from_sum(32, 8, sum, 3, DC_MULTIPLIER_1X4); dc_store_32xh(dst, stride, 8, vdupq_n_u8(dc)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -454,6 +458,7 @@ dc_store_32xh(dst, stride, 16, vdupq_n_u8(dc)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { uint16x8_t sum_above = dc_load_partial_sum_16(above); @@ -473,6 +478,7 @@ uint32_t dc = calculate_dc_from_sum(64, 16, sum, 4, DC_MULTIPLIER_1X4); dc_store_64xh(dst, stride, 16, vdupq_n_u8(dc)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_32x64_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -506,20 +512,22 @@ dc_store_##w##xh(dst, stride, (h), vdup##q##_n_u8(0x80)); \ } -DC_PREDICTOR_128(4, 8, ) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER DC_PREDICTOR_128(4, 16, ) -DC_PREDICTOR_128(8, 4, ) -DC_PREDICTOR_128(8, 16, ) DC_PREDICTOR_128(8, 32, ) DC_PREDICTOR_128(16, 4, q) -DC_PREDICTOR_128(16, 8, q) -DC_PREDICTOR_128(16, 32, q) DC_PREDICTOR_128(16, 64, q) DC_PREDICTOR_128(32, 8, q) +DC_PREDICTOR_128(64, 16, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +DC_PREDICTOR_128(4, 8, ) +DC_PREDICTOR_128(8, 4, ) +DC_PREDICTOR_128(8, 16, ) +DC_PREDICTOR_128(16, 8, q) +DC_PREDICTOR_128(16, 32, q) DC_PREDICTOR_128(32, 16, q) DC_PREDICTOR_128(32, 64, q) DC_PREDICTOR_128(64, 32, q) -DC_PREDICTOR_128(64, 16, q) #undef DC_PREDICTOR_128 @@ -541,12 +549,14 @@ DC_PREDICTOR_LEFT(32, 16, 4, q) DC_PREDICTOR_LEFT(32, 64, 6, q) DC_PREDICTOR_LEFT(64, 32, 5, q) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER DC_PREDICTOR_LEFT(4, 16, 4, ) DC_PREDICTOR_LEFT(16, 4, 2, q) DC_PREDICTOR_LEFT(8, 32, 5, ) DC_PREDICTOR_LEFT(32, 8, 3, q) DC_PREDICTOR_LEFT(16, 64, 6, q) DC_PREDICTOR_LEFT(64, 16, 4, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef DC_PREDICTOR_LEFT @@ -560,19 +570,21 @@ dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u8(dc0, 0)); \ } -DC_PREDICTOR_TOP(4, 8, 2, ) -DC_PREDICTOR_TOP(4, 16, 2, ) -DC_PREDICTOR_TOP(8, 4, 3, ) -DC_PREDICTOR_TOP(8, 16, 3, ) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER DC_PREDICTOR_TOP(8, 32, 3, ) +DC_PREDICTOR_TOP(4, 16, 2, ) DC_PREDICTOR_TOP(16, 4, 4, q) -DC_PREDICTOR_TOP(16, 8, 4, q) -DC_PREDICTOR_TOP(16, 32, 4, q) DC_PREDICTOR_TOP(16, 64, 4, q) DC_PREDICTOR_TOP(32, 8, 5, q) +DC_PREDICTOR_TOP(64, 16, 6, q) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +DC_PREDICTOR_TOP(4, 8, 2, ) +DC_PREDICTOR_TOP(8, 4, 3, ) +DC_PREDICTOR_TOP(8, 16, 3, ) +DC_PREDICTOR_TOP(16, 8, 4, q) +DC_PREDICTOR_TOP(16, 32, 4, q) DC_PREDICTOR_TOP(32, 16, 5, q) DC_PREDICTOR_TOP(32, 64, 5, q) -DC_PREDICTOR_TOP(64, 16, 6, q) DC_PREDICTOR_TOP(64, 32, 6, q) #undef DC_PREDICTOR_TOP @@ -653,11 +665,13 @@ v_store_4xh(dst, stride, 8, load_u8_4x1(above)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; v_store_4xh(dst, stride, 16, load_u8_4x1(above)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_8x4_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -671,6 +685,7 @@ v_store_8xh(dst, stride, 16, vld1_u8(above)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; @@ -682,6 +697,7 @@ (void)left; v_store_16xh(dst, stride, 4, vld1q_u8(above)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_16x8_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -695,6 +711,7 @@ v_store_16xh(dst, stride, 32, vld1q_u8(above)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; @@ -708,6 +725,7 @@ (void)left; v_store_32xh(dst, stride, 8, d0, d1); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_32x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -725,6 +743,7 @@ v_store_32xh(dst, stride, 64, d0, d1); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_64x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint8x16_t d0 = vld1q_u8(above); @@ -734,6 +753,7 @@ (void)left; v_store_64xh(dst, stride, 16, d0, d1, d2, d3); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_64x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -901,6 +921,7 @@ h_store_4x8(dst, stride, d0); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint8x16_t d0 = vld1q_u8(left); @@ -908,6 +929,7 @@ h_store_4x8(dst + 0 * stride, stride, vget_low_u8(d0)); h_store_4x8(dst + 8 * stride, stride, vget_high_u8(d0)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_8x4_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -927,6 +949,7 @@ h_store_8x8(dst + 8 * stride, stride, vget_high_u8(d0)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint8x16_t d0 = vld1q_u8(left); @@ -947,6 +970,7 @@ vst1q_u8(dst + 2 * stride, vdupq_lane_u8(d0, 2)); vst1q_u8(dst + 3 * stride, vdupq_lane_u8(d0, 3)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_16x8_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -966,6 +990,7 @@ h_store_16x8(dst + 24 * stride, stride, vget_high_u8(d1)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint8x16_t d0 = vld1q_u8(left); @@ -989,6 +1014,7 @@ (void)above; h_store_32x8(dst, stride, d0); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_32x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -1015,6 +1041,7 @@ h_store_32x8(dst + 56 * stride, stride, vget_high_u8(d3)); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_64x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint8x16_t d0 = vld1q_u8(left); @@ -1022,6 +1049,7 @@ h_store_64x8(dst + 0 * stride, stride, vget_low_u8(d0)); h_store_64x8(dst + 8 * stride, stride, vget_high_u8(d0)); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_64x32_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -2040,7 +2068,7 @@ } /* ---------------------P R E D I C T I O N Z 3--------------------------- */ - +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static AOM_FORCE_INLINE void z3_transpose_arrays_u8_16x4(const uint8x16_t *x, uint8x16x2_t *d) { uint8x16x2_t w0 = vzipq_u8(x[0], x[1]); @@ -2051,6 +2079,7 @@ d[1] = aom_reinterpretq_u8_u16_x2(vzipq_u16(vreinterpretq_u16_u8(w0.val[1]), vreinterpretq_u16_u8(w1.val[1]))); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static AOM_FORCE_INLINE void z3_transpose_arrays_u8_4x4(const uint8x8_t *x, uint8x8x2_t *d) { @@ -2173,6 +2202,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_4x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -2233,6 +2263,7 @@ vst1q_u8(dst + i * stride + 16, d[i + 8]); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x16_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, @@ -2323,6 +2354,7 @@ z3_transpose_arrays_u8_16nx16n(dstT, 32, dst, stride, 64, 32); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x64_neon(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -2347,11 +2379,28 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER typedef void (*dr_prediction_z3_fn)(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy); +#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER +static const dr_prediction_z3_fn dr_prediction_z3_arr[7][7] = { + { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + { NULL, NULL, dr_prediction_z3_4x4_neon, dr_prediction_z3_4x8_neon, NULL, + NULL, NULL }, + { NULL, NULL, dr_prediction_z3_8x4_neon, dr_prediction_z3_8x8_neon, + dr_prediction_z3_8x16_neon, NULL, NULL }, + { NULL, NULL, NULL, dr_prediction_z3_16x8_neon, dr_prediction_z3_16x16_neon, + dr_prediction_z3_16x32_neon, NULL }, + { NULL, NULL, NULL, NULL, dr_prediction_z3_32x16_neon, + dr_prediction_z3_32x32_neon, dr_prediction_z3_32x64_neon }, + { NULL, NULL, NULL, NULL, NULL, dr_prediction_z3_64x32_neon, + dr_prediction_z3_64x64_neon }, +}; +#else static const dr_prediction_z3_fn dr_prediction_z3_arr[7][7] = { { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, { NULL, NULL, NULL, NULL, NULL, NULL, NULL }, @@ -2367,6 +2416,7 @@ { NULL, NULL, NULL, NULL, dr_prediction_z3_64x16_neon, dr_prediction_z3_64x32_neon, dr_prediction_z3_64x64_neon }, }; +#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER void av1_dr_prediction_z3_neon(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, @@ -2483,9 +2533,11 @@ SMOOTH_NXM(4, 8) SMOOTH_NXM(8, 4) SMOOTH_NXM(8, 8) -SMOOTH_NXM(4, 16) SMOOTH_NXM(8, 16) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +SMOOTH_NXM(4, 16) SMOOTH_NXM(8, 32) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #undef SMOOTH_NXM @@ -2604,16 +2656,18 @@ smooth_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_NXM_WIDE(16, 4) +SMOOTH_NXM_WIDE(16, 64) +SMOOTH_NXM_WIDE(32, 8) +SMOOTH_NXM_WIDE(64, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_NXM_WIDE(16, 8) SMOOTH_NXM_WIDE(16, 16) SMOOTH_NXM_WIDE(16, 32) -SMOOTH_NXM_WIDE(16, 64) -SMOOTH_NXM_WIDE(32, 8) SMOOTH_NXM_WIDE(32, 16) SMOOTH_NXM_WIDE(32, 32) SMOOTH_NXM_WIDE(32, 64) -SMOOTH_NXM_WIDE(64, 16) SMOOTH_NXM_WIDE(64, 32) SMOOTH_NXM_WIDE(64, 64) @@ -2672,13 +2726,15 @@ smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +SMOOTH_V_NXM(4, 16) +SMOOTH_V_NXM(8, 32) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_V_NXM(4, 4) SMOOTH_V_NXM(4, 8) -SMOOTH_V_NXM(4, 16) SMOOTH_V_NXM(8, 4) SMOOTH_V_NXM(8, 8) SMOOTH_V_NXM(8, 16) -SMOOTH_V_NXM(8, 32) #undef SMOOTH_V_NXM @@ -2761,16 +2817,18 @@ smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_V_NXM_WIDE(16, 4) +SMOOTH_V_NXM_WIDE(32, 8) +SMOOTH_V_NXM_WIDE(64, 16) +SMOOTH_V_NXM_WIDE(16, 64) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_V_NXM_WIDE(16, 8) SMOOTH_V_NXM_WIDE(16, 16) SMOOTH_V_NXM_WIDE(16, 32) -SMOOTH_V_NXM_WIDE(16, 64) -SMOOTH_V_NXM_WIDE(32, 8) SMOOTH_V_NXM_WIDE(32, 16) SMOOTH_V_NXM_WIDE(32, 32) SMOOTH_V_NXM_WIDE(32, 64) -SMOOTH_V_NXM_WIDE(64, 16) SMOOTH_V_NXM_WIDE(64, 32) SMOOTH_V_NXM_WIDE(64, 64) @@ -2822,13 +2880,15 @@ smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +SMOOTH_H_NXM(4, 16) +SMOOTH_H_NXM(8, 32) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_H_NXM(4, 4) SMOOTH_H_NXM(4, 8) -SMOOTH_H_NXM(4, 16) SMOOTH_H_NXM(8, 4) SMOOTH_H_NXM(8, 8) SMOOTH_H_NXM(8, 16) -SMOOTH_H_NXM(8, 32) #undef SMOOTH_H_NXM @@ -2920,16 +2980,18 @@ smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_H_NXM_WIDE(16, 4) +SMOOTH_H_NXM_WIDE(16, 64) +SMOOTH_H_NXM_WIDE(32, 8) +SMOOTH_H_NXM_WIDE(64, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER SMOOTH_H_NXM_WIDE(16, 8) SMOOTH_H_NXM_WIDE(16, 16) SMOOTH_H_NXM_WIDE(16, 32) -SMOOTH_H_NXM_WIDE(16, 64) -SMOOTH_H_NXM_WIDE(32, 8) SMOOTH_H_NXM_WIDE(32, 16) SMOOTH_H_NXM_WIDE(32, 32) SMOOTH_H_NXM_WIDE(32, 64) -SMOOTH_H_NXM_WIDE(64, 16) SMOOTH_H_NXM_WIDE(64, 32) SMOOTH_H_NXM_WIDE(64, 64) @@ -2997,15 +3059,16 @@ paeth_4or8_x_h_neon(dst, stride, above, left, W, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +PAETH_NXM(4, 16) +PAETH_NXM(8, 32) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER PAETH_NXM(4, 4) PAETH_NXM(4, 8) PAETH_NXM(8, 4) PAETH_NXM(8, 8) PAETH_NXM(8, 16) -PAETH_NXM(4, 16) -PAETH_NXM(8, 32) - // Calculate X distance <= TopLeft distance and pack the resulting mask into // uint8x8_t. static inline uint8x16_t x_le_top_left(const uint8x16_t x_dist, @@ -3138,6 +3201,12 @@ paeth16_plus_x_h_neon(dst, stride, above, left, W, H); \ } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER +PAETH_NXM_WIDE(16, 4) +PAETH_NXM_WIDE(16, 64) +PAETH_NXM_WIDE(32, 8) +PAETH_NXM_WIDE(64, 16) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER PAETH_NXM_WIDE(16, 8) PAETH_NXM_WIDE(16, 16) PAETH_NXM_WIDE(16, 32) @@ -3146,8 +3215,3 @@ PAETH_NXM_WIDE(32, 64) PAETH_NXM_WIDE(64, 32) PAETH_NXM_WIDE(64, 64) - -PAETH_NXM_WIDE(16, 4) -PAETH_NXM_WIDE(16, 64) -PAETH_NXM_WIDE(32, 8) -PAETH_NXM_WIDE(64, 16)
diff --git a/aom_dsp/intrapred.c b/aom_dsp/intrapred.c index ad7a25c..6affefe 100644 --- a/aom_dsp/intrapred.c +++ b/aom_dsp/intrapred.c
@@ -297,6 +297,7 @@ dc_predictor_rect(dst, stride, 8, 4, above, left, 2, DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 4, 16, above, left, 2, DC_MULTIPLIER_1X4); @@ -306,6 +307,7 @@ const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 16, 4, above, left, 2, DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -317,6 +319,7 @@ dc_predictor_rect(dst, stride, 16, 8, above, left, 3, DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 8, 32, above, left, 3, DC_MULTIPLIER_1X4); @@ -326,6 +329,7 @@ const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 32, 8, above, left, 3, DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -337,6 +341,7 @@ dc_predictor_rect(dst, stride, 32, 16, above, left, 4, DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 16, 64, above, left, 4, DC_MULTIPLIER_1X4); @@ -346,6 +351,7 @@ const uint8_t *above, const uint8_t *left) { dc_predictor_rect(dst, stride, 64, 16, above, left, 4, DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -620,6 +626,7 @@ HIGHBD_DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_4x16_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd) { @@ -633,6 +640,7 @@ highbd_dc_predictor_rect(dst, stride, 16, 4, above, left, bd, 2, HIGHBD_DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_8x16_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, @@ -648,6 +656,7 @@ HIGHBD_DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_8x32_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd) { @@ -661,6 +670,7 @@ highbd_dc_predictor_rect(dst, stride, 32, 8, above, left, bd, 3, HIGHBD_DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_16x32_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, @@ -676,6 +686,7 @@ HIGHBD_DC_MULTIPLIER_1X2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_16x64_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd) { @@ -689,6 +700,7 @@ highbd_dc_predictor_rect(dst, stride, 64, 16, above, left, bd, 4, HIGHBD_DC_MULTIPLIER_1X4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_highbd_dc_predictor_32x64_c(uint16_t *dst, ptrdiff_t stride, const uint16_t *above, @@ -730,6 +742,25 @@ #endif // CONFIG_AV1_HIGHBITDEPTH /* clang-format off */ +#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER +#define intra_pred_rectangular(type) \ + intra_pred_sized(type, 4, 8) \ + intra_pred_sized(type, 8, 4) \ + intra_pred_sized(type, 8, 16) \ + intra_pred_sized(type, 16, 8) \ + intra_pred_sized(type, 16, 32) \ + intra_pred_sized(type, 32, 16) \ + intra_pred_sized(type, 32, 64) \ + intra_pred_sized(type, 64, 32) \ + intra_pred_highbd_sized(type, 4, 8) \ + intra_pred_highbd_sized(type, 8, 4) \ + intra_pred_highbd_sized(type, 8, 16) \ + intra_pred_highbd_sized(type, 16, 8) \ + intra_pred_highbd_sized(type, 16, 32) \ + intra_pred_highbd_sized(type, 32, 16) \ + intra_pred_highbd_sized(type, 32, 64) \ + intra_pred_highbd_sized(type, 64, 32) +#else #define intra_pred_rectangular(type) \ intra_pred_sized(type, 4, 8) \ intra_pred_sized(type, 8, 4) \ @@ -759,6 +790,7 @@ intra_pred_highbd_sized(type, 32, 8) \ intra_pred_highbd_sized(type, 16, 64) \ intra_pred_highbd_sized(type, 64, 16) +#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER #define intra_pred_above_4x4(type) \ intra_pred_sized(type, 8, 8) \
diff --git a/aom_dsp/x86/intrapred_avx2.c b/aom_dsp/x86/intrapred_avx2.c index 7a41618..f6c5422 100644 --- a/aom_dsp/x86/intrapred_avx2.c +++ b/aom_dsp/x86/intrapred_avx2.c
@@ -135,6 +135,7 @@ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff } }; +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void highbd_transpose16x4_8x8_sse2(__m128i *x, __m128i *d) { __m128i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15; @@ -199,6 +200,7 @@ d[2] = _mm256_unpacklo_epi64(ww0, ww1); // 02 12 22 32 42 52 62 72 d[3] = _mm256_unpackhi_epi64(ww0, ww1); // 03 13 23 33 43 53 63 73 } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void highbd_transpose8x16_16x8_avx2(__m256i *x, __m256i *d) { __m256i w0, w1, w2, w3, ww0, ww1; @@ -471,6 +473,7 @@ row_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m256i sum_above = dc_sum_64(above); @@ -482,6 +485,7 @@ const __m256i row = _mm256_set1_epi8((int8_t)sum); row_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -539,6 +543,7 @@ row_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -552,6 +557,7 @@ __m256i row = _mm256_shuffle_epi8(sum, zero); row_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -610,6 +616,7 @@ row_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -624,6 +631,7 @@ const __m256i row = _mm256_inserti128_si256(_mm256_castsi128_si256(r), r, 1); row_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -661,6 +669,7 @@ row_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -669,6 +678,7 @@ const __m256i row = _mm256_set1_epi8((int8_t)0x80); row_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -700,6 +710,7 @@ row_store_32x2xh(&row0, &row1, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m256i row0 = _mm256_loadu_si256((const __m256i *)above); @@ -707,6 +718,7 @@ (void)left; row_store_32x2xh(&row0, &row1, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // PAETH_PRED @@ -826,6 +838,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_16x64_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m256i tl16 = _mm256_set1_epi16((int16_t)above[-1]); @@ -845,6 +858,7 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Return 32 8-bit pixels in one row (__m256i) static inline __m256i paeth_32x1_pred(const __m256i *left, const __m256i *top0, @@ -1012,6 +1026,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m256i t0 = get_top_vector(above); @@ -1041,6 +1056,7 @@ rep = _mm256_add_epi16(rep, one); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if CONFIG_AV1_HIGHBITDEPTH @@ -3027,6 +3043,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void highbd_dr_prediction_z3_4x16_avx2(uint16_t *dst, ptrdiff_t stride, const uint16_t *left, int upsample_left, int dy, @@ -3139,6 +3156,7 @@ _mm_storeu_si128((__m128i *)(dst + i * stride + 24), d[i + 24]); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void highbd_dr_prediction_z3_16x16_avx2(uint16_t *dst, ptrdiff_t stride, const uint16_t *left, @@ -3282,6 +3300,7 @@ return; } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void highbd_dr_prediction_z3_16x64_avx2(uint16_t *dst, ptrdiff_t stride, const uint16_t *left, int upsample_left, int dy, @@ -3315,6 +3334,7 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw, int bh, const uint16_t *above, @@ -3371,6 +3391,7 @@ } } else { switch (bw) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: highbd_dr_prediction_z3_4x16_avx2(dst, stride, left, upsample_left, dy, bd); @@ -3383,6 +3404,7 @@ highbd_dr_prediction_z3_16x64_avx2(dst, stride, left, upsample_left, dy, bd); break; +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } } else { @@ -3407,6 +3429,7 @@ } } else { switch (bh) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: highbd_dr_prediction_z3_16x4_avx2(dst, stride, left, upsample_left, dy, bd); @@ -3419,6 +3442,7 @@ highbd_dr_prediction_z3_64x16_avx2(dst, stride, left, upsample_left, dy, bd); break; +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } } @@ -4428,6 +4452,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_4x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -4506,6 +4531,7 @@ _mm_storeu_si128((__m128i *)(dst + i * stride + 16), d[i + 8]); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x16_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, @@ -4597,6 +4623,7 @@ return; } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x64_avx2(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -4618,6 +4645,7 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, @@ -4664,6 +4692,7 @@ } } else { switch (bw) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: dr_prediction_z3_4x16_avx2(dst, stride, left, upsample_left, dy); break; @@ -4673,6 +4702,7 @@ case 16: dr_prediction_z3_16x64_avx2(dst, stride, left, upsample_left, dy); break; +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } } else { @@ -4693,6 +4723,7 @@ } } else { switch (bh) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: dr_prediction_z3_16x4_avx2(dst, stride, left, upsample_left, dy); break; @@ -4702,6 +4733,7 @@ case 16: dr_prediction_z3_64x16_avx2(dst, stride, left, upsample_left, dy); break; +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } }
diff --git a/aom_dsp/x86/intrapred_sse2.c b/aom_dsp/x86/intrapred_sse2.c index 16ef471..595f45a 100644 --- a/aom_dsp/x86/intrapred_sse2.c +++ b/aom_dsp/x86/intrapred_sse2.c
@@ -121,6 +121,7 @@ dc_store_4xh(pred, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i sum_left = dc_sum_16_sse2(left); @@ -135,6 +136,7 @@ const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(row); dc_store_4xh(pred, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -163,6 +165,7 @@ dc_store_8xh(&row, 16, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i sum_left = dc_sum_32_sse2(left); @@ -188,6 +191,7 @@ const __m128i row = _mm_set1_epi8((int8_t)sum); dc_store_16xh(&row, 4, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -215,6 +219,7 @@ dc_store_16xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i sum_left = dc_sum_64(left); @@ -240,6 +245,7 @@ const __m128i row = _mm_set1_epi8((int8_t)sum); dc_store_32xh(&row, 8, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -293,6 +299,7 @@ dc_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { __m128i sum_above = dc_sum_64(above); @@ -305,6 +312,7 @@ const __m128i row = _mm_set1_epi8((int8_t)sum); dc_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // DC_TOP @@ -323,6 +331,7 @@ dc_store_4xh(pred, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; @@ -336,6 +345,7 @@ const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(sum_above); dc_store_4xh(pred, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -361,6 +371,7 @@ dc_store_8xh(&row, 16, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; @@ -385,6 +396,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above); dc_store_16xh(&row, 4, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -413,6 +425,7 @@ dc_store_16xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -439,6 +452,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above); dc_store_32xh(&row, 8, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -496,6 +510,7 @@ dc_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_top_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -509,6 +524,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above); dc_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // DC_LEFT @@ -527,6 +543,7 @@ dc_store_4xh(pred, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -541,6 +558,7 @@ const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(sum_left); dc_store_4xh(pred, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -567,6 +585,7 @@ dc_store_8xh(&row, 16, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -593,6 +612,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left); dc_store_16xh(&row, 4, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -622,6 +642,7 @@ dc_store_16xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -649,6 +670,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left); dc_store_32xh(&row, 8, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -706,6 +728,7 @@ dc_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_left_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -719,6 +742,7 @@ const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left); dc_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // DC_128 @@ -731,6 +755,7 @@ dc_store_4xh(pred, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; @@ -738,6 +763,7 @@ const uint32_t pred = 0x80808080; dc_store_4xh(pred, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -755,6 +781,7 @@ dc_store_8xh(&row, 16, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; @@ -770,6 +797,7 @@ const __m128i row = _mm_set1_epi8((int8_t)128); dc_store_16xh(&row, 4, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -788,6 +816,7 @@ dc_store_16xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -804,6 +833,7 @@ const __m128i row = _mm_set1_epi8((int8_t)128); dc_store_32xh(&row, 8, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -841,6 +871,7 @@ dc_store_64xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_dc_128_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -849,6 +880,7 @@ const __m128i row = _mm_set1_epi8((int8_t)128); dc_store_64xh(&row, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // V_PRED @@ -860,12 +892,14 @@ dc_store_4xh(pred, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const uint32_t pred = *(uint32_t *)above; (void)left; dc_store_4xh(pred, 16, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -881,6 +915,7 @@ dc_store_8xh(&row, 16, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i row = _mm_loadl_epi64((__m128i const *)above); @@ -894,6 +929,7 @@ (void)left; dc_store_16xh(&row, 4, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -909,12 +945,14 @@ dc_store_16xh(&row, 32, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i row = _mm_load_si128((__m128i const *)above); (void)left; dc_store_16xh(&row, 64, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void v_predictor_32xh(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, int height) { @@ -927,11 +965,13 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_32x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; v_predictor_32xh(dst, stride, above, 8); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -972,11 +1012,13 @@ v_predictor_64xh(dst, stride, above, 32); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_v_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)left; v_predictor_64xh(dst, stride, above, 16); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // H_PRED @@ -1012,6 +1054,7 @@ *(int *)dst = _mm_cvtsi128_si32(row3); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; @@ -1072,6 +1115,7 @@ dst += stride; *(int *)dst = _mm_cvtsi128_si32(row3); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -1162,10 +1206,12 @@ h_predictor_8x16xc(dst, stride, above, left, 1); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { h_predictor_8x16xc(dst, stride, above, left, 2); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void h_pred_store_16xh(const __m128i *row, int h, uint8_t *dst, ptrdiff_t stride) { @@ -1218,6 +1264,7 @@ h_pred_store_16xh(row, 4, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_16x4_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; @@ -1225,6 +1272,7 @@ const __m128i left_col_8p = _mm_unpacklo_epi8(left_col, left_col); h_prediction_16x8_1(&left_col_8p, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -1264,11 +1312,13 @@ h_predictor_16xh(dst, stride, left, 2); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; h_predictor_16xh(dst, stride, left, 4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void h_pred_store_32xh(const __m128i *row, int h, uint8_t *dst, ptrdiff_t stride) { @@ -1298,6 +1348,7 @@ h_pred_store_32xh(row, 4, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_32x8_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { __m128i left_col, left_col_8p; @@ -1310,6 +1361,7 @@ dst += stride << 2; h_prediction_32x8_2(&left_col_8p, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -1404,8 +1456,10 @@ h_predictor_64xh(dst, stride, left, 32); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_h_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { (void)above; h_predictor_64xh(dst, stride, left, 16); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
diff --git a/aom_dsp/x86/intrapred_sse4.c b/aom_dsp/x86/intrapred_sse4.c index ebe7724..34408d0 100644 --- a/aom_dsp/x86/intrapred_sse4.c +++ b/aom_dsp/x86/intrapred_sse4.c
@@ -1021,6 +1021,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_4x16_sse4_1(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -1100,6 +1101,7 @@ _mm_storeu_si128((__m128i *)(dst + i * stride + 16), d[i + 8]); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x16_sse4_1(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, @@ -1190,6 +1192,7 @@ return; } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void dr_prediction_z3_16x64_sse4_1(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, int upsample_left, int dy) { @@ -1211,6 +1214,7 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, @@ -1259,6 +1263,7 @@ } } else { switch (bw) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: dr_prediction_z3_4x16_sse4_1(dst, stride, left, upsample_left, dy); break; @@ -1269,6 +1274,7 @@ dr_prediction_z3_16x64_sse4_1(dst, stride, left, upsample_left, dy); break; default: assert(0 && "Invalid block size"); +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } } else { @@ -1290,6 +1296,7 @@ } } else { switch (bh) { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER case 4: dr_prediction_z3_16x4_sse4_1(dst, stride, left, upsample_left, dy); break; @@ -1300,6 +1307,7 @@ dr_prediction_z3_64x16_sse4_1(dst, stride, left, upsample_left, dy); break; default: assert(0 && "Invalid block size"); +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER } } }
diff --git a/aom_dsp/x86/intrapred_ssse3.c b/aom_dsp/x86/intrapred_ssse3.c index 20a149a..302da29 100644 --- a/aom_dsp/x86/intrapred_ssse3.c +++ b/aom_dsp/x86/intrapred_ssse3.c
@@ -83,6 +83,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_4x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { __m128i l = _mm_load_si128((const __m128i *)left); @@ -102,6 +103,7 @@ rep = _mm_add_epi16(rep, one); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_8x4_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -166,6 +168,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_8x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { const __m128i t = _mm_loadl_epi64((const __m128i *)above); @@ -187,6 +190,7 @@ } } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Return 16 8-bit pixels in one row static inline __m128i paeth_16x1_pred(const __m128i *left, const __m128i *top0, @@ -197,6 +201,7 @@ return _mm_packus_epi16(p0, p1); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_16x4_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { __m128i l = _mm_cvtsi32_si128(((const int *)left)[0]); @@ -217,6 +222,7 @@ rep = _mm_add_epi16(rep, one); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -298,6 +304,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_16x64_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -348,6 +355,7 @@ rep = _mm_add_epi16(rep, one); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -538,6 +546,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_paeth_predictor_64x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -577,6 +586,7 @@ rep = _mm_add_epi16(rep, one); } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // ----------------------------------------------------------------------------- // SMOOTH_PRED @@ -686,6 +696,7 @@ smooth_pred_4xh(pixels, wh, ww, 8, dst, stride, 0); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_4x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -699,6 +710,7 @@ dst += stride << 3; smooth_pred_4xh(pixels, &wh[2], ww, 8, dst, stride, 1); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // pixels[0]: above and below_pred interleave vector, first half // pixels[1]: above and below_pred interleave vector, second half @@ -865,6 +877,7 @@ smooth_pred_8xh(pixels, &wh[2], ww, 8, dst, stride, 1); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_8x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -882,6 +895,7 @@ dst += stride << 3; smooth_pred_8xh(&pixels[4], &wh[6], ww, 8, dst, stride, 1); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // TODO(slavarnway): Visual Studio only supports restrict when /std:c11 // (available in 2019+) or greater is specified; __restrict can be used in that @@ -998,11 +1012,13 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_16x4_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { smooth_predictor_wxh(dst, stride, above, left, 16, 4); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -1022,6 +1038,7 @@ smooth_predictor_wxh(dst, stride, above, left, 16, 32); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_16x64_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { @@ -1033,6 +1050,7 @@ const uint8_t *left) { smooth_predictor_wxh(dst, stride, above, left, 32, 8); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -1052,11 +1070,13 @@ smooth_predictor_wxh(dst, stride, above, left, 32, 64); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_64x16_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left) { smooth_predictor_wxh(dst, stride, above, left, 64, 16); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_predictor_64x32_ssse3(uint8_t *dst, ptrdiff_t stride, const uint8_t *above, @@ -1198,6 +1218,7 @@ write_smooth_vertical4xh(&pixels, weights, 8, dst, stride); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_4x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -1212,6 +1233,7 @@ dst += stride << 3; write_smooth_vertical4xh(&pixels, &weights[2], 8, dst, stride); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_8x4_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -1311,6 +1333,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_8x32_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -1419,6 +1442,7 @@ scaled_bottom_left_y, scaled_bottom_left_y, round); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_16x8_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -1561,6 +1585,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_16x64_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -1639,6 +1664,7 @@ dst += stride; } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_32x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -1832,6 +1858,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_64x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -1901,6 +1928,7 @@ dst += stride; } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_v_predictor_64x32_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -2178,6 +2206,7 @@ &round); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_4x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -2259,6 +2288,7 @@ write_smooth_horizontal_sum4(dst, &left_y, &weights, &scaled_top_right, &round); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // For SMOOTH_H, |pixels| is the repeated left value for the row. For SMOOTH_V, // |pixels| is a segment of the top row or the whole top row, and |weights| is @@ -2343,6 +2373,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_8x32_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -2424,6 +2455,7 @@ write_smooth_directional_sum16(dst, left_y, left_y, weights1, weights2, scaled_top_right1, scaled_top_right2, round); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_16x8_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -2535,6 +2567,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_16x64_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -2600,6 +2633,7 @@ dst += stride; } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_32x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, @@ -2757,6 +2791,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_64x16_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride, const uint8_t *LIBAOM_RESTRICT top_row, @@ -2829,6 +2864,7 @@ dst += stride; } } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void aom_smooth_h_predictor_64x32_ssse3( uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
diff --git a/av1/av1.cmake b/av1/av1.cmake index 14873da..9a0dff8 100644 --- a/av1/av1.cmake +++ b/av1/av1.cmake
@@ -548,6 +548,46 @@ endif() if(CONFIG_REALTIME_ONLY) + if(NOT CONFIG_AV1_DECODER) + list(REMOVE_ITEM AOM_AV1_COMMON_SOURCES + "${AOM_ROOT}/av1/common/restoration.c" + "${AOM_ROOT}/av1/common/restoration.h" + "${AOM_ROOT}/av1/common/warped_motion.c" + "${AOM_ROOT}/av1/common/warped_motion.h" + "${AOM_ROOT}/av1/common/warp_plane_sve.c") + + list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE2 + "${AOM_ROOT}/av1/common/x86/warp_plane_sse2.c" + "${AOM_ROOT}/av1/common/x86/wiener_convolve_sse2.c") + + list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE4_1 + "${AOM_ROOT}/av1/common/x86/highbd_warp_plane_sse4.c" + "${AOM_ROOT}/av1/common/x86/selfguided_sse4.c" + "${AOM_ROOT}/av1/common/x86/warp_plane_sse4.c") + + list( + REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSSE3 + "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_ssse3.c") + + list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_AVX2 + "${AOM_ROOT}/av1/common/x86/highbd_warp_affine_avx2.c" + "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_avx2.c" + "${AOM_ROOT}/av1/common/x86/selfguided_avx2.c" + "${AOM_ROOT}/av1/common/x86/warp_plane_avx2.c" + "${AOM_ROOT}/av1/common/x86/wiener_convolve_avx2.c") + + list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_NEON + "${AOM_ROOT}/av1/common/arm/highbd_warp_plane_neon.c" + "${AOM_ROOT}/av1/common/arm/highbd_wiener_convolve_neon.c" + "${AOM_ROOT}/av1/common/arm/selfguided_neon.c" + "${AOM_ROOT}/av1/common/arm/warp_plane_neon.c" + "${AOM_ROOT}/av1/common/arm/warp_plane_neon.h" + "${AOM_ROOT}/av1/common/arm/wiener_convolve_neon.c") + + list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_NEON_I8MM + "${AOM_ROOT}/av1/common/arm/warp_plane_neon_i8mm.c") + endif() + list(REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_SSE2 "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_sse2.c" "${AOM_ROOT}/av1/encoder/x86/temporal_filter_sse2.c")
diff --git a/av1/common/alloccommon.c b/av1/common/alloccommon.c index 2a28c30..38b9e64 100644 --- a/av1/common/alloccommon.c +++ b/av1/common/alloccommon.c
@@ -294,6 +294,7 @@ cdef_info->allocated_mi_rows); } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Allocate buffers which are independent of restoration_unit_size void av1_alloc_restoration_buffers(AV1_COMMON *cm, bool is_sgr_enabled) { const int num_planes = av1_num_planes(cm); @@ -364,6 +365,7 @@ aom_free_frame_buffer(&cm->rst_frame); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_free_above_context_buffers(CommonContexts *above_contexts) { int i;
diff --git a/av1/common/alloccommon.h b/av1/common/alloccommon.h index ccbf757..7b74ee0 100644 --- a/av1/common/alloccommon.h +++ b/av1/common/alloccommon.h
@@ -50,8 +50,10 @@ void av1_free_cdef_buffers(struct AV1Common *const cm, struct AV1CdefWorker **cdef_worker, struct AV1CdefSyncData *cdef_sync); +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_alloc_restoration_buffers(struct AV1Common *cm, bool is_sgr_enabled); void av1_free_restoration_buffers(struct AV1Common *cm); +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER int av1_alloc_state_buffers(struct AV1Common *cm, int width, int height); void av1_free_state_buffers(struct AV1Common *cm);
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl index a8a01f1..ec85e2a 100644 --- a/av1/common/av1_rtcd_defs.pl +++ b/av1/common/av1_rtcd_defs.pl
@@ -104,12 +104,17 @@ add_proto qw/void av1_highbd_convolve_horiz_rs/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd"; specialize qw/av1_highbd_convolve_horiz_rs sse4_1 neon/; - add_proto qw/void av1_highbd_wiener_convolve_add_src/, "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, const WienerConvolveParams *conv_params, int bd"; - specialize qw/av1_highbd_wiener_convolve_add_src ssse3 avx2 neon/; + if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || + (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + add_proto qw/void av1_highbd_wiener_convolve_add_src/, "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, const WienerConvolveParams *conv_params, int bd"; + specialize qw/av1_highbd_wiener_convolve_add_src ssse3 avx2 neon/; + } } -add_proto qw/void av1_wiener_convolve_add_src/, "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, const WienerConvolveParams *conv_params"; -specialize qw/av1_wiener_convolve_add_src sse2 avx2 neon/; +if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + add_proto qw/void av1_wiener_convolve_add_src/, "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, const WienerConvolveParams *conv_params"; + specialize qw/av1_wiener_convolve_add_src sse2 avx2 neon/; +} # directional intra predictor functions add_proto qw/void av1_dr_prediction_z1/, "uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy"; @@ -516,7 +521,9 @@ } # WARPED_MOTION / GLOBAL_MOTION functions -if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") { +if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes" && + ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || + (aom_config("CONFIG_AV1_DECODER") eq "yes"))) { add_proto qw/void av1_highbd_warp_affine/, "const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta"; specialize qw/av1_highbd_warp_affine sse4_1 avx2 neon sve/; } @@ -527,17 +534,21 @@ add_proto qw/void av1_resize_horz_dir/, "const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filtered_length, int width2"; specialize qw/av1_resize_horz_dir sse2 avx2/; -add_proto qw/void av1_warp_affine/, "const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta"; -specialize qw/av1_warp_affine sse4_1 avx2 neon neon_i8mm sve/; +if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + add_proto qw/void av1_warp_affine/, "const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta"; + specialize qw/av1_warp_affine sse4_1 avx2 neon neon_i8mm sve/; +} # LOOP_RESTORATION functions -add_proto qw/int av1_apply_selfguided_restoration/, "const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd"; -specialize qw/av1_apply_selfguided_restoration sse4_1 avx2 neon/; +if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) { + add_proto qw/int av1_apply_selfguided_restoration/, "const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd"; + specialize qw/av1_apply_selfguided_restoration sse4_1 avx2 neon/; -add_proto qw/int av1_selfguided_restoration/, "const uint8_t *dgd8, int width, int height, - int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride, - int sgr_params_idx, int bit_depth, int highbd"; -specialize qw/av1_selfguided_restoration sse4_1 avx2 neon/; + add_proto qw/int av1_selfguided_restoration/, "const uint8_t *dgd8, int width, int height, + int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride, + int sgr_params_idx, int bit_depth, int highbd"; + specialize qw/av1_selfguided_restoration sse4_1 avx2 neon/; +} # CONVOLVE_ROUND/COMPOUND_ROUND functions
diff --git a/av1/common/convolve.c b/av1/common/convolve.c index 46270cd..ad22f90 100644 --- a/av1/common/convolve.c +++ b/av1/common/convolve.c
@@ -1314,6 +1314,7 @@ // --((128 - 1) * 32 + 15) >> 4 + 8 = 263. #define WIENER_MAX_EXT_SIZE 263 +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline int horz_scalar_product(const uint8_t *a, const int16_t *b) { int sum = 0; for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k] * b[k]; @@ -1427,8 +1428,10 @@ MAX_SB_SIZE, dst, dst_stride, filters_y, y0_q4, y_step_q4, w, h, conv_params->round_1); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if CONFIG_AV1_HIGHBITDEPTH +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static void highbd_convolve_add_src_horiz_hip( const uint8_t *src8, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *x_filters, int x0_q4, @@ -1507,4 +1510,5 @@ temp + MAX_SB_SIZE * (SUBPEL_TAPS / 2 - 1), MAX_SB_SIZE, dst, dst_stride, filters_y, y0_q4, y_step_q4, w, h, conv_params->round_1, bd); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // CONFIG_AV1_HIGHBITDEPTH
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index eec2343..12da732 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -68,6 +68,10 @@ if (allow_warp(mi, warp_types, &xd->global_motion[mi->ref_frame[ref]], 0, inter_pred_params->scale_factors, &inter_pred_params->warp_params)) { +#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER + aom_internal_error(xd->error_info, AOM_CODEC_UNSUP_FEATURE, + "Warped motion is disabled in realtime only build."); +#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER inter_pred_params->mode = WARP_PRED; } } @@ -103,6 +107,7 @@ inter_pred_params->interp_filter_params); #endif } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // TODO(jingning): av1_warp_plane() can be further cleaned up. else if (inter_pred_params->mode == WARP_PRED) { av1_warp_plane( @@ -115,7 +120,9 @@ inter_pred_params->block_width, inter_pred_params->block_height, dst_stride, inter_pred_params->subsampling_x, inter_pred_params->subsampling_y, &inter_pred_params->conv_params); - } else { + } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER + else { assert(0 && "Unsupported inter_pred_params->mode"); } }
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c index 58a7ca8..e2a7510 100644 --- a/av1/common/reconintra.c +++ b/av1/common/reconintra.c
@@ -464,6 +464,17 @@ static void init_intra_predictors_internal(void) { assert(NELEMENTS(mode_to_angle_map) == INTRA_MODES); +#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER +#define INIT_RECTANGULAR(p, type) \ + p[TX_4X8] = aom_##type##_predictor_4x8; \ + p[TX_8X4] = aom_##type##_predictor_8x4; \ + p[TX_8X16] = aom_##type##_predictor_8x16; \ + p[TX_16X8] = aom_##type##_predictor_16x8; \ + p[TX_16X32] = aom_##type##_predictor_16x32; \ + p[TX_32X16] = aom_##type##_predictor_32x16; \ + p[TX_32X64] = aom_##type##_predictor_32x64; \ + p[TX_64X32] = aom_##type##_predictor_64x32; +#else #define INIT_RECTANGULAR(p, type) \ p[TX_4X8] = aom_##type##_predictor_4x8; \ p[TX_8X4] = aom_##type##_predictor_8x4; \ @@ -479,6 +490,7 @@ p[TX_32X8] = aom_##type##_predictor_32x8; \ p[TX_16X64] = aom_##type##_predictor_16x64; \ p[TX_64X16] = aom_##type##_predictor_64x16; +#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER #define INIT_NO_4X4(p, type) \ p[TX_8X8] = aom_##type##_predictor_8x8; \
diff --git a/av1/common/thread_common.c b/av1/common/thread_common.c index 7efed99..0ff6238 100644 --- a/av1/common/thread_common.c +++ b/av1/common/thread_common.c
@@ -42,6 +42,7 @@ return 8; } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline int get_lr_sync_range(int width) { #if 0 // nsync numbers are picked by testing. For example, for 4k @@ -59,6 +60,7 @@ return 1; #endif } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Allocate memory for lf row synchronization void av1_loop_filter_alloc(AV1LfSync *lf_sync, AV1_COMMON *cm, int rows, @@ -519,6 +521,7 @@ } } +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER static inline void lr_sync_read(void *const lr_sync, int r, int c, int plane) { #if CONFIG_MULTITHREAD AV1LrSync *const loop_res_sync = (AV1LrSync *)lr_sync; @@ -991,6 +994,7 @@ foreach_rest_unit_in_planes_mt(loop_rest_ctxt, workers, num_workers, lr_sync, cm, do_extend_border); } +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER // Initializes cdef_sync parameters. static inline void reset_cdef_job_info(AV1CdefSync *const cdef_sync) {
diff --git a/av1/common/thread_common.h b/av1/common/thread_common.h index 90b869b..1f2557a 100644 --- a/av1/common/thread_common.h +++ b/av1/common/thread_common.h
@@ -188,6 +188,7 @@ AVxWorker *workers, int num_workers, AV1LfSync *lf_sync, int lpf_opt_level); +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER void av1_loop_restoration_filter_frame_mt(YV12_BUFFER_CONFIG *frame, struct AV1Common *cm, int optimized_lr, AVxWorker *workers, @@ -197,6 +198,8 @@ void av1_loop_restoration_alloc(AV1LrSync *lr_sync, AV1_COMMON *cm, int num_workers, int num_rows_lr, int num_planes, int width); +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER + int av1_get_intrabc_extra_top_right_sb_delay(const AV1_COMMON *cm); void av1_thread_loop_filter_rows(
diff --git a/test/av1_fwd_txfm2d_test.cc b/test/av1_fwd_txfm2d_test.cc index d93d59a..95b2151 100644 --- a/test/av1_fwd_txfm2d_test.cc +++ b/test/av1_fwd_txfm2d_test.cc
@@ -660,7 +660,7 @@ TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32, #if !CONFIG_REALTIME_ONLY TX_4X16, TX_16X4, TX_8X32, TX_32X8, TX_16X64, TX_64X16, -#endif +#endif // !CONFIG_REALTIME_ONLY }; INSTANTIATE_TEST_SUITE_P(SSE4_1, AV1HighbdFwdTxfm2dTest, @@ -679,8 +679,10 @@ #if HAVE_NEON static TX_SIZE Highbd_fwd_txfm_for_neon[] = { TX_4X4, TX_8X8, TX_16X16, TX_32X32, TX_64X64, TX_4X8, TX_8X4, - TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32, TX_4X16, - TX_16X4, TX_8X32, TX_32X8, TX_16X64, TX_64X16 + TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32, +#if !CONFIG_REALTIME_ONLY + TX_4X16, TX_16X4, TX_8X32, TX_32X8, TX_16X64, TX_64X16 +#endif // !CONFIG_REALTIME_ONLY }; INSTANTIATE_TEST_SUITE_P(NEON, AV1HighbdFwdTxfm2dTest,
diff --git a/test/intrapred_test.cc b/test/intrapred_test.cc index 1371c7d..bf9ab75 100644 --- a/test/intrapred_test.cc +++ b/test/intrapred_test.cc
@@ -292,6 +292,7 @@ &aom_highbd_##type##_predictor_##width##x##height##_c, width, height, \ bd) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #define highbd_intrapred(type, opt, bd) \ highbd_entry(type, 4, 4, opt, bd), highbd_entry(type, 4, 8, opt, bd), \ highbd_entry(type, 4, 16, opt, bd), highbd_entry(type, 8, 4, opt, bd), \ @@ -305,6 +306,18 @@ highbd_entry(type, 32, 64, opt, bd), \ highbd_entry(type, 64, 16, opt, bd), \ highbd_entry(type, 64, 32, opt, bd), highbd_entry(type, 64, 64, opt, bd) +#else +#define highbd_intrapred(type, opt, bd) \ + highbd_entry(type, 4, 4, opt, bd), highbd_entry(type, 4, 8, opt, bd), \ + highbd_entry(type, 8, 4, opt, bd), highbd_entry(type, 8, 8, opt, bd), \ + highbd_entry(type, 8, 16, opt, bd), highbd_entry(type, 16, 8, opt, bd), \ + highbd_entry(type, 16, 16, opt, bd), \ + highbd_entry(type, 16, 32, opt, bd), \ + highbd_entry(type, 32, 16, opt, bd), \ + highbd_entry(type, 32, 32, opt, bd), \ + highbd_entry(type, 32, 64, opt, bd), \ + highbd_entry(type, 64, 32, opt, bd), highbd_entry(type, 64, 64, opt, bd) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // CONFIG_AV1_HIGHBITDEPTH // --------------------------------------------------------------------------- @@ -315,6 +328,7 @@ &aom_##type##_predictor_##width##x##height##_c, \ width, height, 8) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #define lowbd_intrapred(type, opt) \ lowbd_entry(type, 4, 4, opt), lowbd_entry(type, 4, 8, opt), \ lowbd_entry(type, 4, 16, opt), lowbd_entry(type, 8, 4, opt), \ @@ -326,6 +340,16 @@ lowbd_entry(type, 32, 32, opt), lowbd_entry(type, 32, 64, opt), \ lowbd_entry(type, 64, 16, opt), lowbd_entry(type, 64, 32, opt), \ lowbd_entry(type, 64, 64, opt) +#else +#define lowbd_intrapred(type, opt) \ + lowbd_entry(type, 4, 4, opt), lowbd_entry(type, 4, 8, opt), \ + lowbd_entry(type, 8, 4, opt), lowbd_entry(type, 8, 8, opt), \ + lowbd_entry(type, 8, 16, opt), lowbd_entry(type, 16, 8, opt), \ + lowbd_entry(type, 16, 16, opt), lowbd_entry(type, 16, 32, opt), \ + lowbd_entry(type, 32, 16, opt), lowbd_entry(type, 32, 32, opt), \ + lowbd_entry(type, 32, 64, opt), lowbd_entry(type, 64, 32, opt), \ + lowbd_entry(type, 64, 64, opt) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 const IntraPredFunc<IntraPred> LowbdIntraPredTestVector[] = { @@ -365,6 +389,7 @@ #if HAVE_AVX2 const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorAvx2[] = { +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER lowbd_entry(dc, 32, 16, avx2), lowbd_entry(dc, 32, 32, avx2), lowbd_entry(dc, 32, 64, avx2), lowbd_entry(dc, 64, 16, avx2), lowbd_entry(dc, 64, 32, avx2), lowbd_entry(dc, 64, 64, avx2), @@ -388,10 +413,37 @@ lowbd_entry(h, 32, 32, avx2), lowbd_entry(paeth, 16, 8, avx2), lowbd_entry(paeth, 16, 16, avx2), - lowbd_entry(paeth, 16, 32, avx2), lowbd_entry(paeth, 16, 64, avx2), - lowbd_entry(paeth, 32, 16, avx2), lowbd_entry(paeth, 32, 32, avx2), - lowbd_entry(paeth, 32, 64, avx2), lowbd_entry(paeth, 64, 16, avx2), + lowbd_entry(paeth, 16, 32, avx2), lowbd_entry(paeth, 32, 16, avx2), + lowbd_entry(paeth, 32, 32, avx2), lowbd_entry(paeth, 32, 64, avx2), lowbd_entry(paeth, 64, 32, avx2), lowbd_entry(paeth, 64, 64, avx2), +#else + lowbd_entry(dc, 32, 16, avx2), lowbd_entry(dc, 32, 32, avx2), + lowbd_entry(dc, 32, 64, avx2), lowbd_entry(dc, 64, 32, avx2), + lowbd_entry(dc, 64, 64, avx2), + + lowbd_entry(dc_top, 32, 16, avx2), lowbd_entry(dc_top, 32, 32, avx2), + lowbd_entry(dc_top, 32, 64, avx2), lowbd_entry(dc_top, 64, 32, avx2), + lowbd_entry(dc_top, 64, 64, avx2), + + lowbd_entry(dc_left, 32, 16, avx2), lowbd_entry(dc_left, 32, 32, avx2), + lowbd_entry(dc_left, 32, 64, avx2), lowbd_entry(dc_left, 64, 32, avx2), + lowbd_entry(dc_left, 64, 64, avx2), + + lowbd_entry(dc_128, 32, 16, avx2), lowbd_entry(dc_128, 32, 32, avx2), + lowbd_entry(dc_128, 32, 64, avx2), lowbd_entry(dc_128, 64, 32, avx2), + lowbd_entry(dc_128, 64, 64, avx2), + + lowbd_entry(v, 32, 16, avx2), lowbd_entry(v, 32, 32, avx2), + lowbd_entry(v, 32, 64, avx2), lowbd_entry(v, 64, 32, avx2), + lowbd_entry(v, 64, 64, avx2), + + lowbd_entry(h, 32, 32, avx2), + + lowbd_entry(paeth, 16, 8, avx2), lowbd_entry(paeth, 16, 16, avx2), + lowbd_entry(paeth, 16, 32, avx2), lowbd_entry(paeth, 32, 16, avx2), + lowbd_entry(paeth, 32, 32, avx2), lowbd_entry(paeth, 32, 64, avx2), + lowbd_entry(paeth, 64, 32, avx2), lowbd_entry(paeth, 64, 64, avx2), +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER }; INSTANTIATE_TEST_SUITE_P(AVX2, LowbdIntraPredTest,
diff --git a/test/test.cmake b/test/test.cmake index 7f0123e..fac95e8 100644 --- a/test/test.cmake +++ b/test/test.cmake
@@ -156,6 +156,13 @@ "${AOM_ROOT}/test/simd_cmp_impl.inc" "${AOM_ROOT}/test/simd_impl.h") + if(CONFIG_REALTIME_ONLY AND NOT CONFIG_AV1_DECODER) + list(REMOVE_ITEM AOM_UNIT_TEST_COMMON_SOURCES + "${AOM_ROOT}/test/hiprec_convolve_test.cc" + "${AOM_ROOT}/test/hiprec_convolve_test_util.cc" + "${AOM_ROOT}/test/hiprec_convolve_test_util.h") + endif() + if(HAVE_SSE2) list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_SSE2 "${AOM_ROOT}/test/simd_cmp_sse2.cc")
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc index b4849ed..65468d9 100644 --- a/test/test_intra_pred_speed.cc +++ b/test/test_intra_pred_speed.cc
@@ -421,13 +421,14 @@ aom_v_predictor_4x8_c, aom_h_predictor_4x8_c, aom_paeth_predictor_4x8_c, aom_smooth_predictor_4x8_c, aom_smooth_v_predictor_4x8_c, aom_smooth_h_predictor_4x8_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(C, TX_4X16, aom_dc_predictor_4x16_c, aom_dc_left_predictor_4x16_c, aom_dc_top_predictor_4x16_c, aom_dc_128_predictor_4x16_c, aom_v_predictor_4x16_c, aom_h_predictor_4x16_c, aom_paeth_predictor_4x16_c, aom_smooth_predictor_4x16_c, aom_smooth_v_predictor_4x16_c, aom_smooth_h_predictor_4x16_c) - +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 INTRA_PRED_TEST(SSE2, TX_4X4, aom_dc_predictor_4x4_sse2, aom_dc_left_predictor_4x4_sse2, aom_dc_top_predictor_4x4_sse2, @@ -437,10 +438,12 @@ aom_dc_left_predictor_4x8_sse2, aom_dc_top_predictor_4x8_sse2, aom_dc_128_predictor_4x8_sse2, aom_v_predictor_4x8_sse2, aom_h_predictor_4x8_sse2, nullptr, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSE2, TX_4X16, aom_dc_predictor_4x16_sse2, aom_dc_left_predictor_4x16_sse2, aom_dc_top_predictor_4x16_sse2, aom_dc_128_predictor_4x16_sse2, aom_v_predictor_4x16_sse2, aom_h_predictor_4x16_sse2, nullptr, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSE2 #if HAVE_SSSE3 @@ -454,11 +457,13 @@ aom_smooth_predictor_4x8_ssse3, aom_smooth_v_predictor_4x8_ssse3, aom_smooth_h_predictor_4x8_ssse3) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSSE3, TX_4X16, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_4x16_ssse3, aom_smooth_predictor_4x16_ssse3, aom_smooth_v_predictor_4x16_ssse3, aom_smooth_h_predictor_4x16_ssse3) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSSE3 #if HAVE_NEON @@ -474,6 +479,7 @@ aom_h_predictor_4x8_neon, aom_paeth_predictor_4x8_neon, aom_smooth_predictor_4x8_neon, aom_smooth_v_predictor_4x8_neon, aom_smooth_h_predictor_4x8_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(NEON, TX_4X16, aom_dc_predictor_4x16_neon, aom_dc_left_predictor_4x16_neon, aom_dc_top_predictor_4x16_neon, aom_dc_128_predictor_4x16_neon, aom_v_predictor_4x16_neon, @@ -481,6 +487,7 @@ aom_smooth_predictor_4x16_neon, aom_smooth_v_predictor_4x16_neon, aom_smooth_h_predictor_4x16_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -503,12 +510,14 @@ aom_h_predictor_8x16_c, aom_paeth_predictor_8x16_c, aom_smooth_predictor_8x16_c, aom_smooth_v_predictor_8x16_c, aom_smooth_h_predictor_8x16_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(C, TX_8X32, aom_dc_predictor_8x32_c, aom_dc_left_predictor_8x32_c, aom_dc_top_predictor_8x32_c, aom_dc_128_predictor_8x32_c, aom_v_predictor_8x32_c, aom_h_predictor_8x32_c, aom_paeth_predictor_8x32_c, aom_smooth_predictor_8x32_c, aom_smooth_v_predictor_8x32_c, aom_smooth_h_predictor_8x32_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 INTRA_PRED_TEST(SSE2, TX_8X8, aom_dc_predictor_8x8_sse2, @@ -523,10 +532,12 @@ aom_dc_left_predictor_8x16_sse2, aom_dc_top_predictor_8x16_sse2, aom_dc_128_predictor_8x16_sse2, aom_v_predictor_8x16_sse2, aom_h_predictor_8x16_sse2, nullptr, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSE2, TX_8X32, aom_dc_predictor_8x32_sse2, aom_dc_left_predictor_8x32_sse2, aom_dc_top_predictor_8x32_sse2, aom_dc_128_predictor_8x32_sse2, aom_v_predictor_8x32_sse2, aom_h_predictor_8x32_sse2, nullptr, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSE2 #if HAVE_SSSE3 @@ -545,11 +556,13 @@ aom_smooth_predictor_8x16_ssse3, aom_smooth_v_predictor_8x16_ssse3, aom_smooth_h_predictor_8x16_ssse3) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSSE3, TX_8X32, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_8x32_ssse3, aom_smooth_predictor_8x32_ssse3, aom_smooth_v_predictor_8x32_ssse3, aom_smooth_h_predictor_8x32_ssse3) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSSE3 #if HAVE_NEON @@ -572,6 +585,7 @@ aom_smooth_predictor_8x16_neon, aom_smooth_v_predictor_8x16_neon, aom_smooth_h_predictor_8x16_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(NEON, TX_8X32, aom_dc_predictor_8x32_neon, aom_dc_left_predictor_8x32_neon, aom_dc_top_predictor_8x32_neon, aom_dc_128_predictor_8x32_neon, aom_v_predictor_8x32_neon, @@ -579,6 +593,7 @@ aom_smooth_predictor_8x32_neon, aom_smooth_v_predictor_8x32_neon, aom_smooth_h_predictor_8x32_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -602,6 +617,7 @@ aom_h_predictor_16x32_c, aom_paeth_predictor_16x32_c, aom_smooth_predictor_16x32_c, aom_smooth_v_predictor_16x32_c, aom_smooth_h_predictor_16x32_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(C, TX_16X4, aom_dc_predictor_16x4_c, aom_dc_left_predictor_16x4_c, aom_dc_top_predictor_16x4_c, aom_dc_128_predictor_16x4_c, aom_v_predictor_16x4_c, @@ -614,6 +630,7 @@ aom_h_predictor_16x64_c, aom_paeth_predictor_16x64_c, aom_smooth_predictor_16x64_c, aom_smooth_v_predictor_16x64_c, aom_smooth_h_predictor_16x64_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 INTRA_PRED_TEST(SSE2, TX_16X16, aom_dc_predictor_16x16_sse2, @@ -630,6 +647,7 @@ aom_dc_top_predictor_16x32_sse2, aom_dc_128_predictor_16x32_sse2, aom_v_predictor_16x32_sse2, aom_h_predictor_16x32_sse2, nullptr, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSE2, TX_16X64, aom_dc_predictor_16x64_sse2, aom_dc_left_predictor_16x64_sse2, aom_dc_top_predictor_16x64_sse2, @@ -639,6 +657,7 @@ aom_dc_left_predictor_16x4_sse2, aom_dc_top_predictor_16x4_sse2, aom_dc_128_predictor_16x4_sse2, aom_v_predictor_16x4_sse2, aom_h_predictor_16x4_sse2, nullptr, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSE2 #if HAVE_SSSE3 @@ -657,6 +676,7 @@ aom_smooth_predictor_16x32_ssse3, aom_smooth_v_predictor_16x32_ssse3, aom_smooth_h_predictor_16x32_ssse3) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSSE3, TX_16X64, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_16x64_ssse3, aom_smooth_predictor_16x64_ssse3, @@ -667,6 +687,7 @@ aom_smooth_predictor_16x4_ssse3, aom_smooth_v_predictor_16x4_ssse3, aom_smooth_h_predictor_16x4_ssse3) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSSE3 #if HAVE_AVX2 @@ -679,9 +700,11 @@ INTRA_PRED_TEST(AVX2, TX_16X32, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_16x32_avx2, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(AVX2, TX_16X64, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_16x64_avx2, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_AVX2 #if HAVE_NEON @@ -708,6 +731,7 @@ aom_smooth_predictor_16x32_neon, aom_smooth_v_predictor_16x32_neon, aom_smooth_h_predictor_16x32_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(NEON, TX_16X4, aom_dc_predictor_16x4_neon, aom_dc_left_predictor_16x4_neon, aom_dc_top_predictor_16x4_neon, aom_dc_128_predictor_16x4_neon, aom_v_predictor_16x4_neon, @@ -723,6 +747,7 @@ aom_smooth_predictor_16x64_neon, aom_smooth_v_predictor_16x64_neon, aom_smooth_h_predictor_16x64_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -746,12 +771,14 @@ aom_h_predictor_32x64_c, aom_paeth_predictor_32x64_c, aom_smooth_predictor_32x64_c, aom_smooth_v_predictor_32x64_c, aom_smooth_h_predictor_32x64_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(C, TX_32X8, aom_dc_predictor_32x8_c, aom_dc_left_predictor_32x8_c, aom_dc_top_predictor_32x8_c, aom_dc_128_predictor_32x8_c, aom_v_predictor_32x8_c, aom_h_predictor_32x8_c, aom_paeth_predictor_32x8_c, aom_smooth_predictor_32x8_c, aom_smooth_v_predictor_32x8_c, aom_smooth_h_predictor_32x8_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 INTRA_PRED_TEST(SSE2, TX_32X32, aom_dc_predictor_32x32_sse2, @@ -769,10 +796,12 @@ aom_dc_top_predictor_32x64_sse2, aom_dc_128_predictor_32x64_sse2, aom_v_predictor_32x64_sse2, aom_h_predictor_32x64_sse2, nullptr, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSE2, TX_32X8, aom_dc_predictor_32x8_sse2, aom_dc_left_predictor_32x8_sse2, aom_dc_top_predictor_32x8_sse2, aom_dc_128_predictor_32x8_sse2, aom_v_predictor_32x8_sse2, aom_h_predictor_32x8_sse2, nullptr, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSE2 #if HAVE_SSSE3 @@ -791,11 +820,13 @@ aom_smooth_predictor_32x64_ssse3, aom_smooth_v_predictor_32x64_ssse3, aom_smooth_h_predictor_32x64_ssse3) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSSE3, TX_32X8, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_32x8_ssse3, aom_smooth_predictor_32x8_ssse3, aom_smooth_v_predictor_32x8_ssse3, aom_smooth_h_predictor_32x8_ssse3) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_SSSE3 #if HAVE_AVX2 @@ -844,6 +875,7 @@ aom_smooth_predictor_32x64_neon, aom_smooth_v_predictor_32x64_neon, aom_smooth_h_predictor_32x64_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(NEON, TX_32X8, aom_dc_predictor_32x8_neon, aom_dc_left_predictor_32x8_neon, aom_dc_top_predictor_32x8_neon, aom_dc_128_predictor_32x8_neon, aom_v_predictor_32x8_neon, @@ -851,6 +883,7 @@ aom_smooth_predictor_32x8_neon, aom_smooth_v_predictor_32x8_neon, aom_smooth_h_predictor_32x8_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -868,12 +901,14 @@ aom_h_predictor_64x32_c, aom_paeth_predictor_64x32_c, aom_smooth_predictor_64x32_c, aom_smooth_v_predictor_64x32_c, aom_smooth_h_predictor_64x32_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(C, TX_64X16, aom_dc_predictor_64x16_c, aom_dc_left_predictor_64x16_c, aom_dc_top_predictor_64x16_c, aom_dc_128_predictor_64x16_c, aom_v_predictor_64x16_c, aom_h_predictor_64x16_c, aom_paeth_predictor_64x16_c, aom_smooth_predictor_64x16_c, aom_smooth_v_predictor_64x16_c, aom_smooth_h_predictor_64x16_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 INTRA_PRED_TEST(SSE2, TX_64X64, aom_dc_predictor_64x64_sse2, @@ -886,11 +921,13 @@ aom_dc_top_predictor_64x32_sse2, aom_dc_128_predictor_64x32_sse2, aom_v_predictor_64x32_sse2, aom_h_predictor_64x32_sse2, nullptr, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSE2, TX_64X16, aom_dc_predictor_64x16_sse2, aom_dc_left_predictor_64x16_sse2, aom_dc_top_predictor_64x16_sse2, aom_dc_128_predictor_64x16_sse2, aom_v_predictor_64x16_sse2, aom_h_predictor_64x16_sse2, nullptr, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif #if HAVE_SSSE3 @@ -904,11 +941,13 @@ aom_smooth_predictor_64x32_ssse3, aom_smooth_v_predictor_64x32_ssse3, aom_smooth_h_predictor_64x32_ssse3) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(SSSE3, TX_64X16, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aom_paeth_predictor_64x16_ssse3, aom_smooth_predictor_64x16_ssse3, aom_smooth_v_predictor_64x16_ssse3, aom_smooth_h_predictor_64x16_ssse3) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif #if HAVE_AVX2 @@ -924,12 +963,14 @@ aom_dc_128_predictor_64x32_avx2, aom_v_predictor_64x32_avx2, nullptr, aom_paeth_predictor_64x32_avx2, nullptr, nullptr, nullptr) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(AVX2, TX_64X16, aom_dc_predictor_64x16_avx2, aom_dc_left_predictor_64x16_avx2, aom_dc_top_predictor_64x16_avx2, aom_dc_128_predictor_64x16_avx2, aom_v_predictor_64x16_avx2, nullptr, aom_paeth_predictor_64x16_avx2, nullptr, nullptr, nullptr) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif #if HAVE_NEON @@ -949,6 +990,7 @@ aom_smooth_predictor_64x32_neon, aom_smooth_v_predictor_64x32_neon, aom_smooth_h_predictor_64x32_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER INTRA_PRED_TEST(NEON, TX_64X16, aom_dc_predictor_64x16_neon, aom_dc_left_predictor_64x16_neon, aom_dc_top_predictor_64x16_neon, @@ -957,6 +999,7 @@ aom_smooth_predictor_64x16_neon, aom_smooth_v_predictor_64x16_neon, aom_smooth_h_predictor_64x16_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON #if CONFIG_AV1_HIGHBITDEPTH @@ -1280,6 +1323,8 @@ aom_highbd_h_predictor_4x8_c, aom_highbd_paeth_predictor_4x8_c, aom_highbd_smooth_predictor_4x8_c, aom_highbd_smooth_v_predictor_4x8_c, aom_highbd_smooth_h_predictor_4x8_c) + +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST( C, TX_4X16, aom_highbd_dc_predictor_4x16_c, aom_highbd_dc_left_predictor_4x16_c, aom_highbd_dc_top_predictor_4x16_c, @@ -1287,6 +1332,8 @@ aom_highbd_h_predictor_4x16_c, aom_highbd_paeth_predictor_4x16_c, aom_highbd_smooth_predictor_4x16_c, aom_highbd_smooth_v_predictor_4x16_c, aom_highbd_smooth_h_predictor_4x16_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER + #if HAVE_SSE2 HIGHBD_INTRA_PRED_TEST(SSE2, TX_4X4, aom_highbd_dc_predictor_4x4_sse2, aom_highbd_dc_left_predictor_4x4_sse2, @@ -1304,6 +1351,7 @@ aom_highbd_h_predictor_4x8_sse2, nullptr, nullptr, nullptr, nullptr) #endif + #if HAVE_NEON HIGHBD_INTRA_PRED_TEST(NEON, TX_4X4, aom_highbd_dc_predictor_4x4_neon, aom_highbd_dc_left_predictor_4x4_neon, @@ -1325,6 +1373,7 @@ aom_highbd_smooth_predictor_4x8_neon, aom_highbd_smooth_v_predictor_4x8_neon, aom_highbd_smooth_h_predictor_4x8_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST(NEON, TX_4X16, aom_highbd_dc_predictor_4x16_neon, aom_highbd_dc_left_predictor_4x16_neon, aom_highbd_dc_top_predictor_4x16_neon, @@ -1335,6 +1384,7 @@ aom_highbd_smooth_predictor_4x16_neon, aom_highbd_smooth_v_predictor_4x16_neon, aom_highbd_smooth_h_predictor_4x16_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -1361,6 +1411,7 @@ aom_highbd_h_predictor_8x16_c, aom_highbd_paeth_predictor_8x16_c, aom_highbd_smooth_predictor_8x16_c, aom_highbd_smooth_v_predictor_8x16_c, aom_highbd_smooth_h_predictor_8x16_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST( C, TX_8X32, aom_highbd_dc_predictor_8x32_c, aom_highbd_dc_left_predictor_8x32_c, aom_highbd_dc_top_predictor_8x32_c, @@ -1368,6 +1419,7 @@ aom_highbd_h_predictor_8x32_c, aom_highbd_paeth_predictor_8x32_c, aom_highbd_smooth_predictor_8x32_c, aom_highbd_smooth_v_predictor_8x32_c, aom_highbd_smooth_h_predictor_8x32_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 HIGHBD_INTRA_PRED_TEST(SSE2, TX_8X8, aom_highbd_dc_predictor_8x8_sse2, @@ -1429,6 +1481,7 @@ aom_highbd_smooth_predictor_8x16_neon, aom_highbd_smooth_v_predictor_8x16_neon, aom_highbd_smooth_h_predictor_8x16_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST(NEON, TX_8X32, aom_highbd_dc_predictor_8x32_neon, aom_highbd_dc_left_predictor_8x32_neon, aom_highbd_dc_top_predictor_8x32_neon, @@ -1439,6 +1492,7 @@ aom_highbd_smooth_predictor_8x32_neon, aom_highbd_smooth_v_predictor_8x32_neon, aom_highbd_smooth_h_predictor_8x32_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -1465,6 +1519,7 @@ aom_highbd_h_predictor_16x32_c, aom_highbd_paeth_predictor_16x32_c, aom_highbd_smooth_predictor_16x32_c, aom_highbd_smooth_v_predictor_16x32_c, aom_highbd_smooth_h_predictor_16x32_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST( C, TX_16X4, aom_highbd_dc_predictor_16x4_c, aom_highbd_dc_left_predictor_16x4_c, aom_highbd_dc_top_predictor_16x4_c, @@ -1479,6 +1534,7 @@ aom_highbd_h_predictor_16x64_c, aom_highbd_paeth_predictor_16x64_c, aom_highbd_smooth_predictor_16x64_c, aom_highbd_smooth_v_predictor_16x64_c, aom_highbd_smooth_h_predictor_16x64_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 HIGHBD_INTRA_PRED_TEST(SSE2, TX_16X16, aom_highbd_dc_predictor_16x16_sse2, @@ -1551,6 +1607,7 @@ aom_highbd_smooth_predictor_16x32_neon, aom_highbd_smooth_v_predictor_16x32_neon, aom_highbd_smooth_h_predictor_16x32_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST(NEON, TX_16X4, aom_highbd_dc_predictor_16x4_neon, aom_highbd_dc_left_predictor_16x4_neon, aom_highbd_dc_top_predictor_16x4_neon, @@ -1571,6 +1628,7 @@ aom_highbd_smooth_predictor_16x64_neon, aom_highbd_smooth_v_predictor_16x64_neon, aom_highbd_smooth_h_predictor_16x64_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -1597,6 +1655,7 @@ aom_highbd_h_predictor_32x64_c, aom_highbd_paeth_predictor_32x64_c, aom_highbd_smooth_predictor_32x64_c, aom_highbd_smooth_v_predictor_32x64_c, aom_highbd_smooth_h_predictor_32x64_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST( C, TX_32X8, aom_highbd_dc_predictor_32x8_c, aom_highbd_dc_left_predictor_32x8_c, aom_highbd_dc_top_predictor_32x8_c, @@ -1604,6 +1663,7 @@ aom_highbd_h_predictor_32x8_c, aom_highbd_paeth_predictor_32x8_c, aom_highbd_smooth_predictor_32x8_c, aom_highbd_smooth_v_predictor_32x8_c, aom_highbd_smooth_h_predictor_32x8_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_SSE2 HIGHBD_INTRA_PRED_TEST(SSE2, TX_32X32, aom_highbd_dc_predictor_32x32_sse2, @@ -1666,6 +1726,7 @@ aom_highbd_smooth_predictor_32x64_neon, aom_highbd_smooth_v_predictor_32x64_neon, aom_highbd_smooth_h_predictor_32x64_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST(NEON, TX_32X8, aom_highbd_dc_predictor_32x8_neon, aom_highbd_dc_left_predictor_32x8_neon, aom_highbd_dc_top_predictor_32x8_neon, @@ -1676,6 +1737,7 @@ aom_highbd_smooth_predictor_32x8_neon, aom_highbd_smooth_v_predictor_32x8_neon, aom_highbd_smooth_h_predictor_32x8_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // ----------------------------------------------------------------------------- @@ -1695,6 +1757,7 @@ aom_highbd_h_predictor_64x32_c, aom_highbd_paeth_predictor_64x32_c, aom_highbd_smooth_predictor_64x32_c, aom_highbd_smooth_v_predictor_64x32_c, aom_highbd_smooth_h_predictor_64x32_c) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST( C, TX_64X16, aom_highbd_dc_predictor_64x16_c, aom_highbd_dc_left_predictor_64x16_c, aom_highbd_dc_top_predictor_64x16_c, @@ -1702,6 +1765,7 @@ aom_highbd_h_predictor_64x16_c, aom_highbd_paeth_predictor_64x16_c, aom_highbd_smooth_predictor_64x16_c, aom_highbd_smooth_v_predictor_64x16_c, aom_highbd_smooth_h_predictor_64x16_c) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #if HAVE_NEON HIGHBD_INTRA_PRED_TEST(NEON, TX_64X64, aom_highbd_dc_predictor_64x64_neon, @@ -1724,6 +1788,7 @@ aom_highbd_smooth_predictor_64x32_neon, aom_highbd_smooth_v_predictor_64x32_neon, aom_highbd_smooth_h_predictor_64x32_neon) +#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER HIGHBD_INTRA_PRED_TEST(NEON, TX_64X16, aom_highbd_dc_predictor_64x16_neon, aom_highbd_dc_left_predictor_64x16_neon, aom_highbd_dc_top_predictor_64x16_neon, @@ -1734,6 +1799,7 @@ aom_highbd_smooth_predictor_64x16_neon, aom_highbd_smooth_v_predictor_64x16_neon, aom_highbd_smooth_h_predictor_64x16_neon) +#endif // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER #endif // HAVE_NEON // -----------------------------------------------------------------------------