summaryrefslogtreecommitdiff
path: root/indra/llwebrtc/llwebrtc.h
AgeCommit message (Collapse)Author
2025-09-12[WebRTC] Rework device handling sequence so that we can handle ↵Roxanne Skelly
unplugging/re-plugging devices (#4593) * [WebRTC] Rework device handling sequence so that we can handle unplugging/re-plugging devices The device handling was not processing device updates in the proper sequence as things like AEC use both input and output devices. Devices like headsets are both so unplugging them resulted in various mute conditions and sometimes even a crash. Now, we update both capture and render devices at once in the proper sequence. Test Guidance: * Bring two users in the same place in webrtc regions. * The 'listening' one should have a headset or something set oas 'Default' * Press 'talk' on one, and verify the other can hear. * Unplug the headset from the listening one. * Validate that audio changes from the headset to the speakers. * Plug the headset back in. * Validate that audio changes from speakers to headset. * Do the same type of test with the headset viewer talking. * The microphone used should switch from the headset to the computer (it should have one) Do other various device tests, such as setting devices explicitly, messing with the device selector, etc. * Fix race condition when multiple change device requests might come in at once * Update to m137 The primary feature of this commit is to update libwebrtc from m114 to m137. This is needed to make webrtc buildable, as m114 is not buildable by the current toolset. m137 had some changes to the API, which required renaming or changing namespace of some of the calls. Additionally, this PR moves from a callback mechanism for gathering the energy levels for tuning to a wrapper AudioDeviceModule, which gives us more control over the audio stream. Finally, the new m137-based webrtc has been updated to allow for 192khz audio streams. * Properly pass the observer setting into the inner audio device module * Update to m137 and get rid of some noise This change updates to m137 from m114, which required a few API changes. Additionally, this fixes the hiss that happens shortly after someone unmutes: https://github.com/secondlife/server/issues/2094 There was also an issue with a slight amount of repeated after unmuting if there was audio right before unmuting. This is because the audio processing and buffering still had audio from the previous speaking session. Now, we inject nearly a half second of silence into the audio buffers/processor after unmuting to flush things. * Install nsis on windows * Use the newer digital AGC pipeline m137 improved the AGC pipeline and the existing analog style is going away so move to the new digital pipeline. Also, some tweaking for audio levels so that we don't see inworld bars when tuning, so one's own bars seem a reasonable size, etc. * Install NSIS during windows sisgning and package build step * Try pinning the packaging to windows 2022 to deal with missing nsis * Adjust gain calculation and audio level calculations for tuning and peer connections * Update with mac universal webrtc build * Tuning of voice indicators for both tuning mode and inworld for self. * Redo device deployment to handle cases where multiple deploy requests pile up Also, mute when leaving webrtc-enabled regions or parcels, and unmute when voice comes back. * pre commit issue
2024-07-31Implement a Logging Sink for WebRTCRoxie Linden
WebRTC logs now pass out of the webrtc library into a logging sink, which converts them into SecondLife.log compatable logging calls. This includes fatal errors and asserts, which are now logged into SecondLife.log, and should be available in the crash logger.
2024-07-29Fix trailing whitespaces in webrtc code to pass pre-commitAndrey Lihatskiy
2024-06-24[WebRTC] control microphone gain via custom audio processor.Roxie Linden
Previously, there were two places audio gain could be controlled: - the device manager - the audio track The device manager audio gain control sets the system gain for all applications, not just the webrtc application. The audio track gain happens well after the audio processing where we want it to happen. So, gain control was added to the existing custom audio processor, which previously only handled calculating and retrieving the audio levels. After these changes, the microphone gain slider does impact the audio volume heard by peers.
2024-05-16Race condition resulted in close causing removal of peer connection while ↵Roxie Linden
other jobs might be using it.
2024-04-07CR suggestionsRoxie Linden
2024-03-30Fix windows crashesRoxie Linden
* 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.
2024-03-30Add UI for managing echo cancellation, AGC, and noise control.Roxie Linden
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.
2024-03-19Simplify workqueue calls. Fix issue with webrtc blocking on destruction.Roxie Linden
2024-03-14Refactor device selection logicRoxie Linden
This refactor fixed a few bugs. There is an annoying 'click' when changing devices, however. This will be addressed in the future.
2024-03-10Remove trailing spaces. Other code cleanup.Roxie Linden
2024-03-09code beautification/commentsRoxie Linden
2024-03-05The response from the provision account call was being called twice for some ↵Roxie Linden
reason
2024-02-08Handle 'device changed' callbackRoxie Linden
2024-02-08Better renegotiation support for parcel voiceRoxie Linden
Better handle starting up and shutting down WebRTC connections simultaneously.
2024-02-08Using the device module to set speaker/mic volume set the system mic/volumeRoxie Linden
for all applications. Instead, modify the volume on the various streams.
2024-02-08Refactor/clean-up WebRTC voice to handle multiple voice streamsRoxie Linden
This is useful for cross-region voice, quick voice switching, etc.
2024-02-08SL-20543 - voice over region boundaries.Roxie Linden
This commit includes code to allow the llwebrtc.dll/dylib to allow multiple connections at once.
2024-02-08Improve reconnection logic and allow device setting when connected or not ↵Roxie Linden
connected
2024-02-08Fix shutdown crash issue.Roxie Linden
2024-02-08send a message to the server when we're ready for data channel dataRoxie Linden
2024-02-08Stream audio levels to and from viewers via DataChannelsRoxie Linden
2024-02-08add datachannel supportRoxie Linden
2024-02-08Hook up speaker volume.Roxie Linden
2024-02-08do some thread safety to prevent webrtc threads from conflicting with viewer ↵Roxie Linden
threads.
2024-02-08coding policy fixesRoxie Linden
2024-02-08Checkpoint WebRTC VoiceRoxie Linden