The Audio/Video client class
A flag to track whether the current user is actively broadcasting their microphone.
Flag to determine if we are connected to the signalling server or not. This is required for synchronization between connection and reconnection attempts.
Connect to the Audio/Video client.
Was the connection attempt successful?
Disconnect from the Audio/Video client.
Whether an existing connection was terminated?
Callback actions to take when the user becomes disconnected from the server.
A user can broadcast audio if the AV mode is compatible and if they are allowed to broadcast.
A user can share audio if they are allowed to broadcast and if they have not muted themselves or been blocked.
A user can broadcast video if the AV mode is compatible and if they are allowed to broadcast.
A user can share video if they are allowed to broadcast and if they have not hidden themselves or been blocked.
Trigger a change in the audio broadcasting state when using a push-to-talk workflow.
The user's intent to broadcast. Whether an actual broadcast occurs will depend on whether or not the user has muted their audio feed.
Activate voice detection tracking for a userId on a provided MediaStream. Currently only a MediaStream is supported because MediaStreamTrack processing is not yet supported cross-browser.
The MediaStream which corresponds to that User
Actions which the orchestration layer should take when a peer user disconnects from the audio/video service.
Resets the speaking history of a user If the user was considered speaking, then mark them as not speaking
Handle activation of a push-to-talk key or button.
The context data of the event
Handle deactivation of a push-to-talk key or button.
The context data of the event
Render the audio/video streams to the CameraViews UI. Assign each connected user to the correct video frame element.
Respond to changes which occur to AV Settings. Changes are handled in descending order of impact.
The object of changed AV settings
Initialize the local broadcast state.
Set up audio level listeners to handle voice activation detection workflow.
The currently selected voice broadcasting mode
Periodic notification of user audio level
This function uses the audio level (in dB) of the audio stream to determine if the user is speaking or not and notifies the UI of such changes.
The User is considered speaking if they are above the decibel threshold in any of the history values. This marks them as speaking as soon as they have a high enough volume, and marks them as not speaking only after they drop below the threshold in all histories (last 4 volumes = for 200 ms).
There can be more optimal ways to do this and which uses whether the user was already considered speaking before or not, in order to eliminate short bursts of audio (coughing for example).
The audio level in decibels of the user within the last 50ms
The master Audio/Video controller instance. This is available as the singleton game.webrtc
The Audio/Video settings to use