jamulussoftware / jamulus

Jamulus enables musicians to perform real-time jam sessions over the internet.
https://jamulus.io
Other
997 stars 222 forks source link

Improve Jitter Buffer Auto Mode (Initial Auto) #1404

Closed techtalktoll closed 3 years ago

techtalktoll commented 3 years ago

I would like to add a fixed value to the send and receive buffer and a jitter tolerance value when in automatic. Normally the Automatic works well but in order to ensure no jitter - after the connection settles I drop to manual and raise the send buffer by a value of two to four. I only do this if I see jitter within a seven second interval (jitter tolerance value). If there is still jitter then I raise the receive buffer by one. This normally lowers the latency by 1 to 4 milliseconds. The jitter usually only will happen after the adjustment when a real internet jitter occurs. I have tested this on all platforms and it works well. Just a box next to each slider excepting a value of 0 to 9 and jitter tolerance value beside Auto check mark with value 0 to 9 would be fine where zero means ignore. Once the value is added after one minute then the auto is turned off. At disconnect from server the auto is reenabled for the next server. Note that on receiving jitter within a set period the send buffer would be increased by the set value and Auto turned off. The next reception of jitter within the same time period would just increment the receive buffer by set value. Most times these values would not change, but due to ISP and other common routing issues these values are different for each Client site.

hoffie commented 3 years ago

Thanks for opening this issue. I'm wondering if this is closely related to the discussion at #1054? If so, would you mind closing the issue for now and commenting there? Once there is agreement if/how to tackle this, someone could work on a specific PR...?

techtalktoll commented 3 years ago

Problem with the discussion 1054 is that it deals with how can Jamulus deal with the shortcomings of the internet. I just would like a tool that can help minimize jitter while realizing that jitter will always be present. By introducing a relatively simple addition to an already well working function means that something may well get improved without re-engineering the whole concept. Discussion 1054 has been going since July without results. Maybe see how many people would want this feature or something simpler and once it gets to complex then outright reject it. This is not a fix - it is just a tool to reduce jitter at the client level.