diff options
author | Siarhei Siamashka <siarhei.siamashka@nokia.com> | 2010-07-02 15:25:42 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-07-29 19:48:29 -0700 |
commit | d234952da8effc48c9c6098806ba5df3b93f7394 (patch) | |
tree | 9463c9ed85c9f1fbe94cb0d4702b87f7fdb1ac17 /sbc/sbc_primitives.c | |
parent | 8cc093dcead3b97ac50b0e80c31c22c384b11652 (diff) | |
download | sbc-d234952da8effc48c9c6098806ba5df3b93f7394.tar.gz |
sbc: ARMv6 optimized version of analysis filter for SBC encoder
The optimized filter gets enabled when the code is compiled
with -mcpu=/-march options set to target the processors which
support ARMv6 instructions. This code is also disabled when
NEON is used (which is a lot better alternative). For additional
safety ARM EABI is required and thumb mode should not be used.
Benchmarks from ARM11:
== 8 subbands ==
$ time ./sbcenc -b53 -s8 -j test.au > /dev/null
real 0m 35.65s
user 0m 34.17s
sys 0m 1.28s
$ time ./sbcenc.armv6 -b53 -s8 -j test.au > /dev/null
real 0m 17.29s
user 0m 15.47s
sys 0m 0.67s
== 4 subbands ==
$ time ./sbcenc -b53 -s4 -j test.au > /dev/null
real 0m 25.28s
user 0m 23.76s
sys 0m 1.32s
$ time ./sbcenc.armv6 -b53 -s4 -j test.au > /dev/null
real 0m 18.64s
user 0m 15.78s
sys 0m 2.22s
Diffstat (limited to 'sbc/sbc_primitives.c')
-rw-r--r-- | sbc/sbc_primitives.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sbc/sbc_primitives.c b/sbc/sbc_primitives.c index c73fb1c..f87fb5a 100644 --- a/sbc/sbc_primitives.c +++ b/sbc/sbc_primitives.c @@ -34,6 +34,7 @@ #include "sbc_primitives.h" #include "sbc_primitives_mmx.h" #include "sbc_primitives_neon.h" +#include "sbc_primitives_armv6.h" /* * A reference C code of analysis filter with SIMD-friendly tables @@ -540,6 +541,9 @@ void sbc_init_primitives(struct sbc_encoder_state *state) #endif /* ARM optimizations */ +#ifdef SBC_BUILD_WITH_ARMV6_SUPPORT + sbc_init_primitives_armv6(state); +#endif #ifdef SBC_BUILD_WITH_NEON_SUPPORT sbc_init_primitives_neon(state); #endif |