With the current code, the user can request any end-to-end latency. Because there is no protection against underruns, setting the latency too small will result in repetitive underruns.
This patch tries to mitigate the problem by calculating the minimum possible latency for the current combination of source and sink. The actual calculation has been put in a separate function so it can easily be changed. To keep the values up to date, changes in the latency ranges have to be tracked.
The calculated minimum latency is used to limit the configured latency. The minimum latency is only a "best guess", so the actual minimum may be much larger (for example for USB devices) or much smaller than the calculated value.
Changes of the port latency offsets are not yet handled, this will be done in a separate patch.
c936aa2 loopback: Calculate and track minimum possible latency
src/modules/module-loopback.c | 215 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 205 insertions(+), 10 deletions(-)