[pulseaudio-discuss] Google ChromeOS reinventing the wheel, ignoring PulseAudio

Colin Guthrie gmane at colin.guthr.ie
Mon Oct 10 01:41:09 PDT 2011


Hi,

[I'm just concerned that Taylor is not on the PA mailing list so we need
to keep them CC'ed. Dylan is registered but CC'ing for completeness :)

This message just quotes Pierre-Louis's mail in full below (which is
certainly worth reading!)

This is my only comment]


'Twas brillig, and Pierre-Louis Bossart at 07/10/11 22:31 did gyre and
gimble:
>> Makes sense, I'll take a look at what pacat is actually filling the
>> buffer attributes with and see if I can track this down. 
> 
> here are some additional explanations. Hang on to your hat, this isn't
> simple stuff:
> 
> pacat has this 'process-time-msec' parameter which defines the min_req
> value (not a very good parameter name I agree). I just tried on my
> fedora15 box and I can get a latency below 20ms without any issues:
> 
> paplay -v --latency-msec=20 --process-time-msec=1 viol-1mn.wav 
> Time: 3.703 sec; Latency: 15173 usec.   
> 
> The log also shows:
> Final latency 20.00 ms = 9.00 ms + 2*1.00 ms + 9.00 ms
> 
> Indeed if you don't specify a value for minreq this parameter will be
> set to 20ms, and then there's some logic in protocol-native.c to make
> sure the latency is 2x the minreq buffer, hence the results you saw. Not
> a bug but a feature I'd say...
> 
> If you want to control the audio latency in a meaningful way for speech
> processing integration, and I guess this is what you are after, you
> should start with the desired interval between audio wakes, say 5ms.
> This means that a buffering of 10ms in the ALSA ring buffer, and there
> will be an additional 10ms buffer in the server. Then you add 2* minreq
> to find the total latency.
> 
> If you take the reverse path, if you set minreq to 1ms and tlength to
> 10ms, this means you will have an audio event every 2ms (10-2*1)/2/2.
> Note that this logic doesn't apply for larger buffers, this only works
> when the latency is below the default watermark level.
> 
> Will try to look into cpu usage. One good pointer is to look at
> pytimechart (http://gitorious.org/pytimechart), it's a very useful tool
> to see graphically what goes on in the system. You can capture a frace
> and look at it on your development system. Everyone I know at Intel uses
> it to find spurious wakes and silly system behavior. I actually verified
> the interval between audio wakes with this tool.
> 
>>         Also in default.pa you load the alsa-sink/source by hand yet
>>         use
>>         module-detect. This looks odd, it's either one or the other?
>> hand loading was just a quick hack to avoid using the alsa "default"
>> interface which was going through dmix and wasting cycles.  It's weird
>> but I don't think it should hurt performance once it's up and running.
> 
> Yes there are issues when using the alsa-lib devices. You will face the
> same problem with the 'front' device. If you are using alsa mixer
> profiles, I suggest you remove the 'front' device and hard-coded to
> hw:0, this will remove the need for changes in init files.


-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited http://www.tribalogic.net/
Open Source:
  Mageia Contributor http://www.mageia.org/
  PulseAudio Hacker http://www.pulseaudio.org/
  Trac Hacker http://trac.edgewall.org/


More information about the pulseaudio-discuss mailing list