Before login, when the user shows voice device preferences,
the dropdowns were not populated. This is because WebRTC's view
of the main queue was not configured.
When parcel voice permissions and region/parcel-only voice
settings change, a callback will be made to the viewer with
new voice credential information. For webrtc, this means
either just the uuid of the voice channel, or nothing if
voice is disabled.
This change looks at that callback and the channel id,
and sets the appropriate flags on the parcel/region as needed
which will cause voice to be renegotiated.
Also, there was a race condition if the voice connect attempt
was made before caps were retrieved, which would have resulted
in full renegotiate attempts. Now, just wait until the cap
comes in and continue.
There is a case where the custom audio processor, which is used to
determine audio levels, was disabled on connection shutdown even
when another connection was established.
This issue has been patched in the webrtc library.
The simulator will send a chatterbox notification that
voice is no longer in use for a given channel, and
the viewer should take that as a case where the peer
does not want voice, hence it's a decline.
When the server sends up a notification that a peer is not doing
voice in adhoc-style p2p chat, shut down the voice call and
notify the user the peer has declined.
When declining a P2P voice call for webrtc, instead of relying
on vivox to stop "ringing," we need to send an explicit decline
message from the peer through the server infrastructure.
Windows and Mac/Linux behave slightly differently with respect
to Default devices, in that mac/linux (I think) simply assumes
the device at index 0 is the default one, and windows has a
separate API for enabling the default device.
* sampling rate was set to 8khz for audio processing, which was
causing a 'bands' mismatch with the echo cancler.
* Some funnybusiness with lambdas and captures and such was causing
a heap crash with respect to function parameters.
Plumb audio settings through from webrtc to the sound preferences
UI (still needs some tweaking, of course.)
Also, choose stun servers based on grid. Ultimately, the stun
stun servers will be passed up via login or something.
Coroutine yields can end after shutdown is requested and
voice connections are removed, so we need to check that
a shutdown hasn't occured before attempting to touch
connection objects.
(CR issue)