Re: [pulseaudio-discuss] Rate/Timing issues when streaming over BT from iPhone.....
This is a known issue with module-loopback. If you look at this part of the log, you'll see that there's something really wrong with how the sample-rate is set: I: module-loopback.c: Old rate 43236 Hz, new rate 43300 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 806.05 ms + 39.69 ms = 945.71 ms I: module-loopback.c: Should buffer 34640 bytes, buffered at minimum 69240 bytes I: module-loopback.c: Old rate 43300 Hz, new rate 44965 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 781.78 ms + 40.83 ms = 922.60 ms I: module-loopback.c: Should buffer 35976 bytes, buffered at minimum 134708 bytes I: module-loopback.c: Old rate 44965 Hz, new rate 46568 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 429.80 ms + 40.62 ms = 570.40 ms I: module-loopback.c: Should buffer 37256 bytes, buffered at minimum 79028 bytes I: module-loopback.c: Old rate 46568 Hz, new rate 45144 Hz I: module-loopback.c: Loopback overall latency is 100.00 ms + 409.27 ms + 41.85 ms = 551.11 ms I: module-loopback.c: Should buffer 36120 bytes, buffered at minimum 73904 bytes I: module-loopback.c: Old rate 45144 Hz, new rate 45044 Hz By changing the sample-rate so often you end-up with cracks/noises. I had similar problems when using an RTP link, the oscillations on the sample-rate are not good. Fundamentally I think there's something wrong with the logic Lennart added to my original code. Every 5s or so, a timer fires, and a message LATENCY_SNAPSHOT is sent to the input and output thread. Then once both answers are received, the code determines what the sampling rate should be. What I think is flawed is that this is not an atomic way of getting the latency on both sides, and since we receive packets the latency varies by large steps unlike for ALSA sinks/sources. Without some filtering you end-up with too many variations of the sampling rate. Bottomline: this loopback code deserves some love, unfortunately I don't have time to look into this. I had some success by limiting the sample-rate oscilllations to 100Hz around the nominal value. -Pierre ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] Rate/Timing issues when streaming over BT from iPhone.....
Script: #!/usr/bin/pulseaudio -vvvnF load-module module-alsa-sink device=default:CARD=Live sink_name=output rate=48000 load-module module-bluetooth-device address=XX:XX:XX:XX:XX:XX path=/org/bluez/1662/hci0/dev_XX_XX_XX_XX_XX_XX profile=a2dp_source auto_connect=yes name=input rate=44100 load-module module-loopback source=1 sink=0 rate=44100 It's not clear to me why you have two different rates. If you know the incoming rate is 44.1kHz you could avoid resampling. I think we also have a fundamental issue with the way the incoming frequency is calculated in PulseAudio using latency estimates. I ran a set of similar tests a while back with RTP streaming and the sampling frequency estimated with the latency estimates varied wildly, by as much as 10kHz. I had a patch to prevent variations of more than 1% (which is already a lot), but that wasn't enough to remove all frequency shifts introduced by the resampler. We need to have some kind of long-term smoothing of these variations, adjusting the sampling frequency with such variations isn't going to work. Partial output: I: main.c: Daemon startup complete. I: module-loopback.c: Loopback overall latency is 100.04 ms + 0.00 ms + 39.51 ms = 139.55 ms I: module-loopback.c: Should buffer 35280 bytes, buffered at minimum 0 bytes I: module-loopback.c: Old rate 44100 Hz, new rate 43218 Hz D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged I: main.c: Got signal SIGUSR2. I: module.c: Loaded module-cli-protocol-unix (index: #3; argument: ). I: module-loopback.c: Loopback overall latency is 99.98 ms + 0.00 ms + 39.51 ms = 139.49 ms I: module-loopback.c: Should buffer 34576 bytes, buffered at minimum 0 bytes I: module-loopback.c: Old rate 43218 Hz, new rate 43236 Hz I: client.c: Created 0 UNIX socket client D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged I: module-loopback.c: Loopback overall latency is 99.99 ms + 400.66 ms + 42.02 ms = 542.67 ms I: module-loopback.c: Should buffer 34592 bytes, buffered at minimum 2560 bytes I: module-loopback.c: Old rate 43236 Hz, new rate 43300 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 806.05 ms + 39.69 ms = 945.71 ms I: module-loopback.c: Should buffer 34640 bytes, buffered at minimum 69240 bytes I: module-loopback.c: Old rate 43300 Hz, new rate 44965 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 781.78 ms + 40.83 ms = 922.60 ms I: module-loopback.c: Should buffer 35976 bytes, buffered at minimum 134708 bytes I: module-loopback.c: Old rate 44965 Hz, new rate 46568 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 429.80 ms + 40.62 ms = 570.40 ms I: module-loopback.c: Should buffer 37256 bytes, buffered at minimum 79028 bytes I: module-loopback.c: Old rate 46568 Hz, new rate 45144 Hz I: module-loopback.c: Loopback overall latency is 100.00 ms + 409.27 ms + 41.85 ms = 551.11 ms I: module-loopback.c: Should buffer 36120 bytes, buffered at minimum 73904 bytes I: module-loopback.c: Old rate 45144 Hz, new rate 45044 Hz I: main.c: Daemon shutdown initiated. Thanks in advance Alex a...@apics.co.uk Homer Simpson: Facts are meaningless. You could use facts to prove anything that's even remotely true! ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] Rate/Timing issues when streaming over BT from iPhone.....
Hi All, Hopefully everyone isn't receiving this twice, I think the first one was blocked due to being to large (I've trimmed the output below, hopefully not too much though!) Apologies if this is duplicated. Alex Hi All, I've setup pulse audio to stream music from my iPhone (connected using BlueTooth) and output it, using module-loopback This is working fine, the only issue I have appears to be related the bitrate/timing etc... The music is very crackly, and is playing back too slowly I've tried changing a number of options, but haven't been able to resolve it. I've tried lots of different combinations of the 'rate' option, but none helped... Any help really would be much appreciated, please find debug output below, along with the script I'm executing: Script: #!/usr/bin/pulseaudio -vvvnF load-module module-alsa-sink device=default:CARD=Live sink_name=output rate=48000 load-module module-bluetooth-device address=XX:XX:XX:XX:XX:XX path=/org/bluez/1662/hci0/dev_XX_XX_XX_XX_XX_XX profile=a2dp_source auto_connect=yes name=input rate=44100 load-module module-loopback source=1 sink=0 rate=44100 Partial output: I: main.c: Daemon startup complete. I: module-loopback.c: Loopback overall latency is 100.04 ms + 0.00 ms + 39.51 ms = 139.55 ms I: module-loopback.c: Should buffer 35280 bytes, buffered at minimum 0 bytes I: module-loopback.c: Old rate 44100 Hz, new rate 43218 Hz D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged I: main.c: Got signal SIGUSR2. I: module.c: Loaded module-cli-protocol-unix (index: #3; argument: ). I: module-loopback.c: Loopback overall latency is 99.98 ms + 0.00 ms + 39.51 ms = 139.49 ms I: module-loopback.c: Should buffer 34576 bytes, buffered at minimum 0 bytes I: module-loopback.c: Old rate 43218 Hz, new rate 43236 Hz I: client.c: Created 0 UNIX socket client D: bluetooth-util.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged D: module-bluetooth-device.c: dbus: interface=org.bluez.AudioSource, path=/org/bluez/1662/hci0/dev_64_B9_E8_19_DD_FA, member=PropertyChanged I: module-loopback.c: Loopback overall latency is 99.99 ms + 400.66 ms + 42.02 ms = 542.67 ms I: module-loopback.c: Should buffer 34592 bytes, buffered at minimum 2560 bytes I: module-loopback.c: Old rate 43236 Hz, new rate 43300 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 806.05 ms + 39.69 ms = 945.71 ms I: module-loopback.c: Should buffer 34640 bytes, buffered at minimum 69240 bytes I: module-loopback.c: Old rate 43300 Hz, new rate 44965 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 781.78 ms + 40.83 ms = 922.60 ms I: module-loopback.c: Should buffer 35976 bytes, buffered at minimum 134708 bytes I: module-loopback.c: Old rate 44965 Hz, new rate 46568 Hz I: module-loopback.c: Loopback overall latency is 99.98 ms + 429.80 ms + 40.62 ms = 570.40 ms I: module-loopback.c: Should buffer 37256 bytes, buffered at minimum 79028 bytes I: module-loopback.c: Old rate 46568 Hz, new rate 45144 Hz I: module-loopback.c: Loopback overall latency is 100.00 ms + 409.27 ms + 41.85 ms = 551.11 ms I: module-loopback.c: Should buffer 36120 bytes, buffered at minimum 73904 bytes I: module-loopback.c: Old rate 45144 Hz, new rate 45044 Hz I: main.c: Daemon shutdown initiated. Thanks in advance Alex a...@apics.co.uk Homer Simpson: Facts are meaningless. You could use facts to prove anything that's even remotely true!___ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss