[speex-dev] XScale realtime encoding possible?
mal at komcept.com
Fri Nov 7 08:08:00 PST 2003
Jean-Marc Valin wrote:
> I have replaced most (but not all) of the float operations by integer
> operations, but it seems like the remaining ones take a long long time
> when emulated in kernel space (hence high system time). The other
> problem is that I don't have access to an ARM-based device (anyone wants
> to send me one?), so I'm doing all this blind... If you'd like to help,
> it can also accelerate things.
> The other thing is that you're probably pushing a bit too much with 44.1
> kHz, which would probably require around 250 MIPS even with the
> fixed-point completed. It could probably run in real-time but it would
> take lots of CPU and require asm optimizations. I suggest you try
> something like 16 kHz. I'm sure the quality will still be enough for you
> (much better than MP3 at 24 kbps anyway :)
> Last thing, can you try the code that's in CVS right now? I removed many
> float ops since 1.1.1, so it may already work better.
Current CVS, on a 16kHz, 16 bit, mono, 60 second sample:
# time speexenc -w --quality 0 --abr 28800 --comp 0 -V
Encoding 16000 Hz audio using wideband (sub-band CELP) mode (mono)
Bitrate is use: 35800 bps (average 28564 bps)
I got the usage of --abr wrong before, (28 = 28 bits per second :)
I'm also assuming quality=0/comp=0 produces a reasonable output.
3 mins, 39 seconds is still a way off realtime, for a 60 second clip,
but it's a lot closer than 1.1.1 got.
What still worries me though, is that even if I forget the 2 mins spent
in the kernel, emulating the floating point, there's 1 min 29 secs of
userspace time, which is still greater than 60 secs clip. Are compiler
optimisations going to shave off those 29 (or more) secs?
My current configure command is:
CFLAGS="-O3 -funroll-loops -ffast-math" CC=arm-linux-gcc
CPP=arm-linux-cpp LD=arm-linux-ld RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip ./autogen.sh --host=arm-linux --prefix=/usr
I will of course try without ffast-math and funroll-loops, as they can
decrease speed in some circumstances, but i'm open for further suggestions.
The machine it's running on has an XScale-PXA255 processor at 400MHz,
with a 200MHz bus.
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'speex-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body. No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.
More information about the Speex-dev