On Wed, Feb 2, 2011 at 12:48 PM, Stefan Kost
<ensonic@hora-obscura.de> wrote:
Sorry for the very late reply. One thing to mention is that the CPU load for
pulse is going wown quite a bit when plugin headphones. Otherwise it runs some
extra processing needed to accomodate the speakers.
Since there is a lot of extra audio processing going on, would employing a library like "nova-simd", announced below, help out with the situation -- e.g. writing the handset speaker-equalization and some of the audio mixing functionality using more efficient instructions? What looks interesting is the claimed support for both ARM Neon, Altivec, and Atom: See
http://tim.klingt.org/code/projects/nova-simd/repository and forwarded announcement below.
....
Architecturally, the system seems inverted, especially since you have to go back out to ALSA for bluetooth. Why not keep it all in kernel space??
Or better yet: employ analog mixing and multiple DAC's -- only one or two needing to be "hi-fi" and the others for notifications and telephony can be quite cheap low-rate, low-accuracy DAC's and ADC's. Yes analog mixing and routing is hard to do in a mixed signal environment; but is the power consumption of a few DACs and op-amps even close to that of needing a fraction of the CPU running constantly just to do what a few resistors and an op-amp can do? To say nothing about the potential sound quality improvement of not needing to resample any of the mixed outputs, nor worry about synchronizing or locking rates between different subsystems, and all the other benefits of analog summing:
http://emusician.com/mag/emusic_sum_tracks/ ... (hopefully the flamewars that will ensue about this controversial topic will cancel out the flamewars on pulseaudio :-) ) .
What I'm proposing for the low-power/handset world isn't that far off from the audio system needed back when CPU's had computational power that made digital mixing for notifications, telephony, or music playback unthinkable: the analog mixing built into the
http://en.wikipedia.org/wiki/AC'97 spec (and associated hardware), but updated for the handset world. I'm sure that's not going to happen anytime soon, but I can dream?
...........
Anyways, here's the announcement:
......................
[andraudio] nova-simd suite updated for arm neon
Dan Stowell
Thu Feb 3 04:48:36 EST 2011
Hi -
"nova-simd" is a C++ header-only template library for taking advantage
of SIMD instructions in the kind of DSP processes used in audio
processing (i.e. not just basic stuff like vectorised mul+add and loop
unrolling, but also some more audio-specific things like ramps,
distortions).
It's created by Tim Blechmann and it lives here:
It was originally implemented for SSE and SSE2 - we use it in
SuperCollider and it gives us massive performance improvements on
intel chips. We've just added NEON (and Altivec) implementations too,
so we should be able to boost performance on android and ios.
The ARM NEON support is new and doesn't yet implement all the
speedups, but should be useful for anyone wanting to implement C++ DSP
for Android devices with SIMD speedups - especially if you're thinking
about cross-platform code since the API is implemented for other chips
too.
Dan
.................
Niels
http://nielsmayer.com