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