[pulseaudio-discuss] module-alsa-source latency is 1199291857647 ms

Dr. Adrian Wrigley mail at adrianwrigley.com
Tue Jan 18 09:54:20 PST 2011


Hi all,

I'm now having problems with latency.

I'm trying to send the analog input on Machine2 to the speakers on
Machine1.  I'm currenty trying with esd protocol and module-esound-sink
on Macine2.

(Unfortunately, native tcp protocol doesn't work for me.  It produces only silence
or brief bursts of sound unless I am running pavucontrol on Machine2 at the
same time, when it works fine (weird).  Also, the CPU usage is excessive on the machine
receiving the audio - about 12%, which then requires fan cooling (650MHz Pentium laptop).
The latency on native tcp protocol is fine.  Why is native tcp need 10x the CPU of esd?)

The latency with esd I hear is about 1500ms.  I'd like under 200ms.

The three key modules I load on Machine2 are:

load-module module-alsa-source source_name=wireloop
load-module module-tunnel-sink server=192.168.1.4:16001
load-module module-loopback source=wireloop sink=tunnel.192.168.1.4

The latency appears to arise in module-loopback source:

  I: module-loopback.c: Loopback overall latency is 168.72 ms + 18.98 ms + 397976985213.03 ms = 397976985400.72 ms

But the problems seem to start with the alsa source.  Here is a transcript:

 >>> list-sources
2 source(s) available.
     index: 0
	name: <wireloop>
	driver: <module-alsa-source.c>
	flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
	state: RUNNING
	suspend cause:
	priority: 9950
	volume: 0: 100% 1: 100%
	        0: 0.00 dB 1: 0.00 dB
	        balance 0.00
	base volume: 100%
	             0.00 dB
	volume steps: 65537
	muted: no
	current latency: 1199291857647.26 ms
	max rewind: 0 KiB
	sample spec: s16le 2ch 48000Hz
	channel map: front-left,front-right
	             Stereo
	used by: 1
	linked by: 1
	configured latency: 33.33 ms; range is 0.50 .. 341.33 ms
	module: 0
	properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "NVidia CK804"
		alsa.id = "Intel ICH"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "NVidia CK804"
		alsa.long_card_name = "NVidia CK804 with ALC655 at irq 22"
		alsa.driver_name = "snd_intel8x0"
		device.bus_path = "pci-0000:00:04.0"
		sysfs.path = "/devices/pci0000:00/0000:00:04.0/sound/card0"
		device.bus = "pci"
		device.vendor.id = "10de"
		device.vendor.name = "nVidia Corporation"
		device.product.id = "0059"
		device.product.name = "CK804 AC'97 Audio Controller"
		device.form_factor = "internal"
		device.string = "default"
		device.buffering.buffer_size = "65536"
		device.buffering.fragment_size = "4096"
		device.access_mode = "mmap+timer"
		device.description = "Internal Audio"
		device.icon_name = "audio-input-microphone-pci"
<...>
I: module-loopback.c: Loopback overall latency is 0.00 ms + 397.09 ms + 1199291754581.43 ms = 1199291754978.52 ms
I: module-loopback.c: Should buffer 32792 bytes, buffered at minimum 31516 bytes
I: module-loopback.c: Old rate 44126 Hz, new rate 44069 Hz

I'm using 0.9.21 on amd64 Debian Squeeze with 100Mbps Ethernet on Machine2
Linux version 2.6.32.  Using high resolution timers and realtime privileges.

My questions:
1)  The reported latency of 38 years must reflect a bug!(?)  Can this be fixed?
2)  Is my configuration for listening to the ALSA source sensible? is there a better way?
3)  Where does my 1.5 second latency come from?  How can I reduce it?
4)  Why does native tcp protocol (module-tunnel-sink) need pavucontrol running to work?

A work-around for the moment is to bypass Pulse by running this command on Machine2
arecord -f S16_LE -c 2 -r 44100 | /usr/bin/esdcat   # Lower latency transmit to Machine1

Using Puleaudio adds 1.5 seconds in the path.

Thanks again for any helpful comments!
--
Adrian Wrigley



More information about the pulseaudio-discuss mailing list