summaryrefslogtreecommitdiff
path: root/indra/newview/llvoicewebrtc.cpp
AgeCommit message (Collapse)Author
2025-10-01Merge tag 'Second_Life_Release#a6d4c1d3-2025.07' into 2025.07Erik Kundiman
2025-09-15Merge tag 'Second_Life_Release#17540023-2025.07' into 2025.07Erik Kundiman
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
2025-08-20Merge branch 'develop' of github.com:secondlife/viewer into rye/infinitemacRye
2025-08-15Merge tag 'Second_Life_Release#922d2324-2025.06' into 2025.06Erik Kundiman
2025-08-14Merge 2025.06 into developAndrey Kleshchev
Merge 2025.06 into develop
2025-08-12Fix issue where p2p calls were coming up muted even thought the UI said they ↵Roxie Linden
were not.
2025-08-12Fix clang compiler issues due to unused variablesAnsariel
2025-08-09Merge tag 'Second_Life_Release#5b1c783b-2025.06' into 2025.06Erik Kundiman
2025-08-08Straighten out muting to prevent echo when crossing from vivox to webrtc ↵Roxie Linden
regions. Muting was a bit random in the code, so it's now been straightened out and should prevent echo. Also, code was added to not attempt connection to non-webrtc regions in the webrtc code.
2025-08-08Merge tag 'Second_Life_Release#55f1c8b9-2025.06' into 2025.06Erik Kundiman
2025-07-16#4358 Fix 'Microphone in use' task bar iconAndrey Kleshchev
1. set_enabled(false) failed to apply, force set it to trigger observers and remove the icon 2. Don't set audio devices if voice was disabled
2025-05-23Merge tag 'Second_Life_Release#fe55c781-2025.04' into 2025.04Erik Kundiman
2025-05-19reuse region variable instead of multiple calls to gAgent.getRegion()Seth Alves
2025-05-19adjust which webrtc tracks are enabled when the avatar crosses a region borderSeth Alves
2025-05-12Have unencapsulated Expat headers in any conditionErik Kundiman
The only condition where Expat headers would be encapsulated is when using LL's Autobuild-based prebuilt libraries, and we're never using any of LL's prebuilt binary for Expat on desktop, since Expat is practically available on any supported desktop platform. The system Expat headers are never encapsulated in any of those platforms. This is the beginning of not relying on the LL_USESYSTEMLIBS macro any more (eventually not relying on the custom USESYSTEMLIBS CMake setting either). Keeping the build system still flexible to have the option to use LL's prebuilt libraries *fully* (we still use some of them in cases where the platform may not have the related system library or for convenience, so the term USESYSTEMLIBS may not always be consistent), is getting harder to maintain. The way it's done is using #if 1, in order to minimise difference from upstream.
2025-05-09reuse region variable instead of multiple calls to gAgent.getRegion()Seth Alves
2025-05-09adjust which webrtc tracks are enabled when the avatar crosses a region borderSeth Alves
2025-04-15Merge branch 'release/2025.04' into rye/forevermacJonathan "Geenz" Goodman
2025-03-27#3829 WebRTC crash OnDataReceivedImplAndrey Kleshchev
2025-02-13Fix xcode16 build errorsAndrey Lihatskiy
2025-02-11Fix build with C++20 including nat's changes to fsyspathRye
2025-02-07viewer-private#375 add more logging in attempt to get more infoMaxim Nikolenko
2024-11-01viewer#2985 Odd crash when notifying voice observersAndrey Kleshchev
Crash points at enableDisableCallBtn, but button's floater was cleaned earlier and has a removeObserver call so an observer record should be long gone. Likely something else is going on. Went over various callbacks and made sure they are cleaned. But in case floater somehow remained, added mSession = nullptr.
2024-09-18fix trailing whitespaceRoxie Linden
2024-09-18Mute other / set volume level for other is not working.Roxie Linden
As part of the boost::json conversion, the json that mutes and sets peer gain was not being formed correctly. Also, tweaked the peer gain default.
2024-09-12Merge pull request #2543 from secondlife/roxie/webrtc-285Roxanne Skelly
mute icons were not showing during group call when user was muted
2024-09-11Fix issue with improper reporting as to whether voice is working.Roxie Linden
This fixes #1436, an issue where the 'call button' sometimes got greyed out when it shouldn't have been. Vivox is now 'working' (and the call button can be enabled) when it's logged in. WebRTC is 'working' (and the call button can be enabled) when the coroutine is active.
2024-09-10mute icons were not showing during group call when user was mutedRoxie Linden
This fixes: https://github.com/secondlife/viewer-private/issues/285 When processing messages from the voice server, the volume and not the mute status was being checked with respect to retrieving the mute status.
2024-09-09Voice bars of self and as seen by others do not appear the same.Roxie Linden
The voice server sends up the float power level of peers as an integer multiplied by 128, in order to save character count as the voice power level will likely be only 3 digits, instead of many for a full float. The client was not taking this into account.
2024-09-04Fix some race conditions on connection shutdown.Roxie Linden
In a few locations, there were cases where connection shutdown would stall, leaving the connection in place. This was due to bad handling of the outstanding operations counter.
2024-08-22Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into ↵Brad Linden
release/2024.08-DeltaFPS # Conflicts: # indra/newview/featuretable_mac.txt
2024-08-20removed unnecessary commentRoxie Linden
2024-08-20Fix hang when incoming p2p or group calls throw up dialog.Roxie Linden
There were changes in atlasaurus that resulted in a hang for incoming p2p and group calls which throw up dialogs. The changes revolved around mutex, coroutines, job queues, and such. The fix was to do any processing that may result in callbacks from the webrtc code in a queued job instead of a coroutine.
2024-08-20Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into developBrad Linden
# Conflicts: # autobuild.xml # indra/newview/llvoicewebrtc.cpp
2024-08-16Log WebRTC devices on webrtc initialization.Roxie Linden
2024-08-15Merge remote-tracking branch 'origin/release/webrtc-voice' into ↵Brad Linden
release/2024.06-atlasaurus # Conflicts: # indra/newview/llpanelpeople.cpp
2024-08-14Don't call virtual functions in a derived class constructorRoxie Linden
2024-08-14Voice dot not always visible after crossing region boundaries.Roxie Linden
For issue #2064 The connection to the voice server was not upgraded/downgraded to primary/secondary when crossing region boundaries, so the server sent the wrong value and the viewer chose not to display a voice dot.
2024-08-14viewer#2204 crash at connectionStateMachineAndrey Kleshchev
2024-08-13viewer-private#262 webrtc crashes on shutdown #2Andrey Kleshchev
2024-08-09Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into developBrad Linden
# Conflicts: # .github/workflows/build.yaml # indra/llui/llscrolllistctrl.cpp
2024-08-09Merge remote-tracking branch 'origin/release/webrtc-voice' into ↵Brad Linden
release/2024.06-atlasaurus # Conflicts: # .github/workflows/build.yaml # indra/newview/CMakeLists.txt # indra/newview/llspeakers.cpp # indra/newview/llvoicechannel.cpp # indra/newview/llvoicechannel.h # indra/newview/llvoiceclient.cpp # indra/newview/llvoiceclient.h # indra/newview/llvoicewebrtc.cpp
2024-08-07viewer-private#262 viewer crashes on exit if the call is not completedAndrey Kleshchev
2024-08-07Replace boost::shared_ptr with std in voice classesAndrey Kleshchev
2024-08-07viewer#2203 Crash at breakVoiceConnectionCoroAndrey Kleshchev
bar webrtc's coroutines from necromancy
2024-08-01Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into developBrad Linden
2024-08-01Merge remote-tracking branch 'origin/release/webrtc-voice' into ↵Brad Linden
release/2024.06-atlasaurus
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-30viewer-private#255 p2p outgoing calls did not work correctly #2Andrey Kleshchev