[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [RESEND PATCH 1/3] pulseaudio: process 1/4 buffer max a
From: |
malc |
Subject: |
[Qemu-devel] Re: [RESEND PATCH 1/3] pulseaudio: process 1/4 buffer max at once |
Date: |
Tue, 25 Jan 2011 19:57:32 +0300 (MSK) |
User-agent: |
Alpine 2.00 (LNX 1167 2008-08-23) |
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:address@hidden