Commit Graph

7 Commits

Author SHA1 Message Date
Marc-André Lureau
8e544e0dac sbc: provide implementation info as a readable string
This is mainly useful for logging and debugging.
2009-02-17 23:54:45 +02:00
Siarhei Siamashka
a563c8ed5a SBC encoder scale factors calculation optimized with __builtin_clz
Count leading zeros operation is often implemented using a special
instruction for it on various architectures (at least this is true
for ARM and x86). Using __builtin_clz gcc intrinsic allows to
eliminate innermost loop in scale factors calculation and improve
performance. Also scale factors calculation can be optimized even
more using SIMD instructions.
2009-01-29 08:25:50 +01:00
Siarhei Siamashka
19af3c49e6 Performance optimizations for input data processing in SBC encoder
Channels deinterleaving, endian conversion and samples reordering
is done in one pass, avoiding the use of intermediate buffer. Also
this code is implemented as a new "performance primitive", which
allows further platform specific optimizations (ARMv6 and ARM NEON
should gain quite a lot from assembly optimizations here).
2009-01-28 06:42:10 +01:00
Siarhei Siamashka
c90eb5ba7e Use of -funroll-loops option to improve SBC encoder performance
Added the use of -funroll-loops gcc option for SBC. Also in
order to gain better effect, 'sbc_pack_frame' function
body moved to an inline function, which gets instantiated
for 4 different subbands/channels combinations. So that
'frame_subbands' and 'frame_channels' arguments become compile
time constants and can be better optimized by the compiler.
2009-01-23 21:15:38 +02:00
Johan Hedberg
1fb5ffff0b Fix indentation to use only tabs 2009-01-16 20:29:43 +02:00
Siarhei Siamashka
82d00972c9 SBC arrays and constant tables aligned at 16 byte boundary for SIMD
Most SIMD instruction sets benefit from data being naturally aligned.
And even if it is not strictly required, performance is usually better
with the aligned data. ARM NEON and SSE2 have different instruction
variants for aligned/unaligned memory accesses.
2009-01-16 08:23:19 +01:00
Siarhei Siamashka
9e31e7dde6 SIMD-friendly variant of SBC encoder analysis filter
Added SIMD-friendly C implementation of SBC analysis filter (the
structure of code had to be changed a bit and constants in the
tables reordered). This code can be used as a reference for
developing platform specific SIMD optimizations. These functions
are put into a new file 'sbc_primitives.c', which is going to
contain all the basic stuff for SBC codec.
2009-01-16 00:28:32 +01:00