Replies: 3 comments 3 replies
-
Hi! Good question. First of all, so far we have not made any serious testing on latencies below 100ms, but this is definitely must be done. The short-term plans are: control protocols, more audio encodings, and then adaptive streaming & investigating and reducing latency. If you want to help with this, you're welcome. The overall latency is decomposed into the following components:
The input or output latency (io latency) depends on the audio system being used:
The pipeline latency, off the top of my head, consists of:
There are also two important factors:
Here are the command-line options of interest:
Most of these options are also available via the C API and PulseAudio modules parameters. Currently, the defaults are:
So, to reduce the latency, you can try this (I'd suggest to do it step-by-step):
It would be interesting to see the results of your experiments. BTW, how did you measure the latency? |
Beta Was this translation helpful? Give feedback.
-
Attached are some mp3 output examples of my setup, which consists of a wired connection between a source and sink, with ping times between hosts of .5 ms. Source is using sox alsa roc driver, which receives sounds via pulseaudio monitor of system output. Receiver uses wav output, frame size of 128 at varying session latencies, and resampling is not explicitly disabled (note my filenames have this wrong -- but doesn't make a noticeable difference). Notice the artifacts when the repair port is not supplied (FEC disabled), happening on both latency examples. Also getting similar overrun counts at 20ms with and without repair port. Let me know if I've missed something in this setup, or if I can provide any log data that could be helpful. For this test I've built the v0.1.3 tag. |
Beta Was this translation helpful? Give feedback.
-
@davex25 Thanks. Could you attach exact commands you've run and roc-recv output with |
Beta Was this translation helpful? Give feedback.
-
What combination of settings would produce the lowest latency? Using Alsa with an external line-in input via roc across a LAN and outputting to a roc receiver and line-out produces a minimum of 100-250 milliseconds of latencey. How can this be improved to something comparable to jackd of about 4ms?
Beta Was this translation helpful? Give feedback.
All reactions