[pulseaudio-discuss] Transporting sound from 'mpd' server to laptop
kugel at rockbox.org
Sun Oct 20 18:23:50 CEST 2013
Am 20.10.2013 18:08, schrieb Paul LeoNerd Evans:
> On Sun, 20 Oct 2013 07:25:23 +0100
> Tanu Kaskinen <tanu.kaskinen at linux.intel.com> wrote:
>> Latency can only increase only if there is some buffer that is
>> growing. module-tunnel doesn't have such buffer. It sounds like MPD
>> is working so that it writes at a constant pace to an internal
>> buffer, and reads from the buffer at the rate that PulseAudio asks
>> for more data. If network glitches occur, PulseAudio will ask less
>> often, so MPD's buffer will get larger and larger. If this
>> speculation is true, then MPD should be fixed. It should define some
>> maximum size for the buffer. 30 seconds is silly. And if you're
>> playing local files, this whole problem shouldn't exist, because MPD
>> should decode the files at the rate PulseAudio is consuming the data,
>> not at a constant wall-clock rate.
> In fact, I have just used tcpdump to prove this isn't the case.
> Because the TCP tunnel contains pure uncompressed PCM audio, a tcpdump
> with hexdump of the raw TCP segments contains pure zeroes during
> silence. With mpd paused, I see lots of zeroes go by.
> The /moment/ I unpause mpd, those zeros turn into varying numbers,
> containing real audio data. Yet my speakers remain silent... a number
> of seconds afterwards, sound now comes out. So then I hit pause.
> Instantly, those numbers in tcpdump are all zeroes again, but yet it
> takes a number of seconds for the sound to stop coming out of the
> This latency is occurring entirely with the tunnel receiver in my
> laptop, and not mpd.
Interesting find. That indeed proves pulseaudio at the receiving end
accumulates latency. I have always felt it must be that way because the
progressbars of all media players I have tried correspond to where the
app is at decoding (and not what the speaker output).
I wonder if it's really in the tunnel module or somewhere deeper. I also
wonder if this works differently with the rewritten tunnel module (this
year's GSoC brought it, it's in git master but not released yet).
More information about the pulseaudio-discuss