Enable lowest OPUS framesize not only for <64 samples buffer. #3040
Replies: 3 comments 16 replies
-
There are four sets of buffers:
I'll skip the jitter buffers - they're in multiples of the network buffer size, as far as I'm aware but beyond that... I get a bit lost. It's down to the client to pick the audio buffer size most appropriate to their system capabilities. The server has to coordinate clients using network buffers of either 64 or 128 samples. Basically, it takes two 64 sample buffers from a client using that size buffer to queue to all clients using 128 sample buffers and sends 64 sample buffers as soon as it can to clients using them. Say network buffers of 32 samples were introduced. The server would collect four such buffers from a client using that buffer size before queuing for mixing with other clients. The mix for that client would then be a 128 sample block sent as four 32 sample buffers. So there wouldn't be any time saving within the server. So whilst the mix from the server would start to arrive sooner, it wouldn't have left any sooner. (But with more codec and network overhead.) The main point is that the server mixes in 128 sample blocks - nothing related to OPUS, just to keeping all clients in line and vaguely synchronised. |
Beta Was this translation helpful? Give feedback.
-
Wouldn't the main reason be that OPUS is only designed to use 128 samples buffers by default? |
Beta Was this translation helpful? Give feedback.
-
So, from the developers perspective, is this something that is possible to do? |
Beta Was this translation helpful? Give feedback.
-
Is there a reason why the lowest OPUS framesize are not enabled when using other than <64 samples of latency buffer? I believe that being able to achieve the lowest delay even if you do not or can't use 64 samples is important to make the Jamulus experience as good as it can get.
These are the numbers I get when setting Jamulus' local
and server buffers to 1 and 1, enabling "Enable Small
Network Buffers" and excluding the ping time from the
delay value.
This means that on top of the audio interface's
latencies:
Imagine if we instead could have these Jamulus delay
times:
Some of these numbers are approximates and/or rounded
up or down to a whole number.
If I am wrong, which I potentially might be, then
please correct me.
Beta Was this translation helpful? Give feedback.
All reactions