Update on using Speex on Windows Mobile, FYI. ---------- Forwarded message ---------- From: Benny Prijono <bennylp@xxxxxxxxx> Date: Fri, May 23, 2008 at 2:11 PM Subject: Re: [Speex-dev] Speex realtime encoding/decoding "Real world" usage for Windows Mobile / Symbian device To: "Fabio Pietrosanti (naif)" <lists at infosecurity.ch> Cc: speex-dev at xiph.org On Thu, May 22, 2008 at 4:26 PM, Fabio Pietrosanti (naif) <lists at infosecurity.ch> wrote: > > I got the feedback that Speex require too much computation power to run > on Symbian OS and Windows Mobile devices doing encoding/decoding in > realtime with all the Narrowband-enabled features. > > I crawled the mailing list archive and the internet and i was not able > to find out a precise answer to my doubt. > I was once one of the people who are convinced that Speex is unable to run on "mobile" platforms. But I was curious with this issue again because of this thread so I decided to have it another go. And my conclusion so far, yes it can (!). I can get good quality voice call on my PDA (PocketPC 2003, Intel PXA270 312 MHz). Turns out that this has been my mistake with setting both Speex quality/complexity value and the compiler optimization settings. I apologize to Jean-Marc and the speex community if speex got bad publication because of my software. So my settings now (I use embeded Visual C++ 4 latest SP): - plain C (not ARM assembly), fixed point version of speex (r12832) - quality/complexity set to 5 (previously it was 0-1). 3-4 is also okay, but obviously quality is not as good. - compiler set to optimize for maximum speed (/Oxt flag, previously it was default, which is mapped to /O2). (yeah I know those were silly mistakes) I tried with narrowband only, and audio is good. I also tried with adding compiler flags which I thought would be appropriate for my processor ("/QRarch5T /QRdsp /QRxscale" options), but lacking a good CPU monitor I don't how much improvement I got. My task manager showed that the CPU usage for my app is 3%, obviously this is wrong. If anyone else can share their optimization tips that would be great. Then we can put all the info together in the wiki. Cheers Benny