Does anyone know of a simple, clean, ALSA-output ogg-vorbis audio player that links (statically or otherwise) against the tremor integer-only vorbis decoder? Here's why i want it:
I recently got a Linksys NSLU2
which i'm happily running debian etch on (with the sid kernel, thanks a
million to the debian arm team!). “igor
” is tiny, slow, fanless,
silent, low-power ARM-based NIC/USB platform. It's plugged into a USB
disk, and hooked into my network, NFS-mounting my music from a different
server.
I recently added a USB audio adapter, which is working for basic stereo output. (getting the other 4 audo channels and the buttons on the USB device to work hasn't happened yet, but that's another weblog post, probably).
I can easily and simply play back the mp3s that i have stored, but i found i couldn't play back my ogg vorbis-formatted audio. Watching the state of the system with
vmstat 1
showed that playing mp3s (via alsaplayer
, via libmad
), \~25% of the
CPU is spent in userland, and \~25% is spent in the kernel, leaving
\~50% free for whatever else i want to do with igor
. Not too bad for a
wimpy 266Mhz machine with 32 MB of RAM.
However, when i try to play ogg vorbis files, the vmstat
output is
nasty: \~97% kernel, and the rest in userland. only the choppiest audio
comes out. It's unacceptable, basically. On further review, i'm pretty
sure that the problem is that libvorbis
is using floating-point math,
while libmad
uses integer math. i think the NSLU2 lacks a hardware
FPU, and does floating-point emulation in the kernel, which would
account for the stats i've been seeing.
Enter Tremor, the
integer-math-only ogg vorbis decoder. It appears that tremor isn't
packaged for debian yet, though i could get the
source to build pretty easily on
igor
. I'm willing to take a crack at packaging tremor for debian
(though i don't know anything about library packaging), but i want to
test it out first! i don't have any example players that link against
it. My preferred simple CLI audio player these days is alsaplayer
, but
it links directly against libvorbis
, and doesn't appear to know
anything about tremor in the code.
Should i try to modify alsaplayer
? Is there a simple tremor demo app
that plays via alsa? Is there an alsaplayer
patchset that i just
missed in my web searches? I'll probably try to dig into this in the
next couple of weeks, but if anyone has any suggestions, i'd appreciate
hearing about them.