aacenc: add SIMD optimizations for abs_pow34 and quantization
authorRostislav Pehlivanov <atomnuker@gmail.com>
Sat, 8 Oct 2016 14:59:14 +0000 (15:59 +0100)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Tue, 18 Oct 2016 20:41:18 +0000 (21:41 +0100)
commitd2ae5f77c61a29c3c63cc4c41c74ccfca4167649
treebd615f22e6807e025da052c411e12e9a7be0852e
parent3b02f6dd7be880fd6c1bcaf2fd0c1314dcee7aa6
aacenc: add SIMD optimizations for abs_pow34 and quantization

Performance improvements:

quant_bands:
with:     681 decicycles in quant_bands, 8388453 runs,    155 skips
without: 1190 decicycles in quant_bands, 8388386 runs,    222 skips
Around 42% for the function

Twoloop coder:

abs_pow34:
with/without: 7.82s/8.17s
Around 4% for the entire encoder

Both:
with/without: 7.15s/8.17s
Around 12% for the entire encoder

Fast coder:

abs_pow34:
with/without: 3.40s/3.77s
Around 10% for the entire encoder

Both:
with/without: 3.02s/3.77s
Around 20% faster for the entire encoder

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Tested-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: James Almer <jamrial@gmail.com>
13 files changed:
libavcodec/aaccoder.c
libavcodec/aaccoder_trellis.h
libavcodec/aaccoder_twoloop.h
libavcodec/aacenc.c
libavcodec/aacenc.h
libavcodec/aacenc_is.c
libavcodec/aacenc_ltp.c
libavcodec/aacenc_pred.c
libavcodec/aacenc_quantization.h
libavcodec/aacenc_utils.h
libavcodec/x86/Makefile
libavcodec/x86/aacencdsp.asm [new file with mode: 0644]
libavcodec/x86/aacencdsp_init.c [new file with mode: 0644]