Yaroslav Halchenko wrote:
>> I'm trying to improve mediaplayer, and a big part of that is improving 
>> performance.  If you figure out why pulseaudio eats 6% CPU, that'd be 
>> great!  Also, it mysteriously eats much more than that when music is 
>> being played back.
> well -- whenever it is playing my wild guess is that it resamples it
> from 44100 to hardware supported 48000, or smth like that... for that I
> guess it would need some cpu cycles

Right, but why so many more than gstreamer + alsa?  Pulseaudio says it's 
using floating point for the resampler, but the docs say it supports 
fixed point resampling.

> 
> the mystery in my case is that pulseaudio doesn't play anything but does
> consume significant amount of cpu cycles
> 

There is a configuration setting that tells it to constantly send '0' to 
the sound card even when there's no input.  This lowers the latency of 
playback, and might prevent clicking an popping.   I haven't played with it.

I think it's turned on right now.  I don't understand why doing that 
takes 6% of the CPU.  I'd think it would just repeatedly toss the same 
pointer into alsa without touching memory...  Maybe context switches are 
more expensive than I'd guess.

>> My theory is that it's doing unnecessary signal resampling and 
>> int->float->int conversions.  Having mediaplayer bypass pulseaudio and 
>> talk directly to alsa saves a lot of CPU.
> ie it works like that for sure (ie have you tried it)?
> 

Yes.  It's much faster.  I posted a patch.

On figuring out the float conversion stuff, GStreamer definitely 
converts to floats before going to pulse.  It doesn't to do this for ALSA.

The "theory" part is that it's unnecessary given pulse's current 
plugins, etc; I forced mine to keep everything fixed point, and it got 
*much* slower.

The logs I base this on are here:

https://docs.openmoko.org/trac/ticket/1614#comment:3

-Rusty

_______________________________________________
support mailing list
support@lists.openmoko.org
https://lists.openmoko.org/mailman/listinfo/support

Reply via email to