On Mon, 24 Jan 2011, Gerd Hoffmann wrote:

> Limit the size of data pieces processed by the pulseaudio worker
> threads.  Never ever process more than 1/4 of the buffer at once.
> 
> Background: The buffer area currently processed by the pulseaudio thread
> is blocked, i.e. the main thread (or iothread) can't fill in more data
> there.  The buffer processing time is roughly real-time due to the
> pa_simple_write() call blocking when the output queue to the pulse
> server is full.  Thus processing big chunks at once means blocking
> a large part of the buffer for a long time.  This brings high latency
> and can lead to dropouts.
> 
> When processing the buffer in smaller chunks the rpos handling becomes a
> problem though.  The thread reads hw->rpos without knowing whenever
> qpa_run_out has already seen the last (small) chunk processed and
> updated rpos accordingly.  There is no point in reading hw->rpos though,
> pa->rpos can be used instead.  We just need to take care to initialize
> pa->rpos before kicking the thread.
> 
[..snip...]

Thanks, applied.

-- 
mailto:av1...@comtv.ru

Reply via email to