summaryrefslogtreecommitdiff
path: root/indra/llwebrtc
AgeCommit message (Collapse)Author
2025-10-30Merge tag 'Second_Life_Release#5a0ba25d-2025.08' into 2025.08Erik Kundiman
2025-10-28Fix issue where mac was crashing during an attempt to unplug or replug ↵Roxanne Skelly
microphone. (#4897) The mac audio device manager was being "helpful" by restarting playout and recording if the Default device was changed, assuming the application wouldn't care. However, we received an update of device change, and attempted to stop and start playout anyway, causing a conflict. The fix was simply to not deploy new devices when the device id didn't change.
2025-10-25Merge tag 'Second_Life_Release#01823996-2025.08' into 2025.08Erik Kundiman
2025-10-22Merge tag 'Second_Life_Release#57a9e513-2025.07' into 2025.07Erik Kundiman
2025-10-17Merge remote-tracking branch 'origin/main' into geenz/main-to-developJonathan "Geenz" Goodman
2025-10-13#4819 WebRTC crashes after a failed loginAndrey Kleshchev
2025-10-09#4777 Fix crash on missing factoryAndrey Kleshchev
2025-10-08#4796 Preferences' mic volume slider had no effect.Andrey Kleshchev
2025-10-07A fix for the linking errors to CM's WebRTC 137Erik Kundiman
Somehow there would be undefined references to webrtc::RtpStreamConfig::Rtx::Rtx() and webrtc::LossBasedBweV2::Config::Config() Rtx definition is not found in "call/rtp_config.h", there's only the declarations there. And Config definition either in "modules/congestion_controller/goog_cc/loss_based_bwe_v2.h" So, for now, we define those somewhere in llwebrtc code, may not be ideal at all since they're empty, for now, but at least it builds now and WebRTC seems to be working (I tested in a WebRTC Voice region, but this needs to be really tested with microphones and at least 2 people).
2025-10-03#4777 Fix webrtc crashing in worker threads on shutdownAndrey Kleshchev
2025-10-03Omit some WebRTC function override on Crow MisiaErik Kundiman
which are SetObserver, GetPlayoutDevice and GetRecordingDevice.
2025-10-03Merge tag 'Second_Life_Test#3ff16388-2025.07' into 2025.07Erik Kundiman
2025-10-03Merge tag 'Second_Life_Release#c743ea2b-2025.07' into 2025.07Erik Kundiman
2025-10-01Merge tag 'Second_Life_Release#a6d4c1d3-2025.07' into 2025.07Erik Kundiman
2025-09-20#4695 Fix missing voice cleanupAndrey Kleshchev
Cleanup is in LLVoiceClient::terminate() gWebRTCImpl was never deleted Added mDeviceModule security
2025-09-16Fix indexing problem with mac devices (#4676)Roxanne Skelly
* Fix indexing problem with mac devices This resulted in the wrong device being selected. Also, fix a shutdown crash where recording was not being stopped, hence the recording thread was still running on shutdown and crashed because it lost access to resources. Fix an issue with p2p calls where they're coming up muted even though the button indicates they are unmuted. * Always refresh device list on notification of device changes Even when the selected device doesn't change, we need to re-deploy it as it might have had characteristics (sampling rate, etc.) changed. Also, we need to redeploy when the Default device has changed
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-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-18Revert "LL_WEBRTC for marking WebRTC supporting platforms"Erik Kundiman
This reverts commit a8dfeed4632aad0233ff08d1efd950b620fd1be7.
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-07-08LL_WEBRTC for marking WebRTC supporting platformsErik Kundiman
so we don't have to keep adding unsupporting ones to the preprocessors in llvoiceclient. Note that CM_WEBRTC is complementary to LL_WEBRTC, which means its purpose is not to be XOR-ed. Any WebRTC supporting (either using LL's or CM's build) will have LL_WEBRTC set to ON, but *only* ones that use CM builds will have CM_WEBRTC set to ON *too*.
2025-06-06Make the viewer installable & runnable on WindowsErik Kundiman
Turns out the CMAKE_BUILD_TYPE setting is necessary, otherwise it would be built in RelWithDebInfo configuration. Reorganise the contributors generation and general CPack settings in indra/newview/CMakeLists.txt. Running sed when cross-comping for Linux, on FreeBSD, doesn't need to use Linux's sed, so no need for ${CMAKE_SYSROOT}/usr/bin prefix, this way that section can be reused for Windows. I still couldn't get CPack to make NSIS not use the version numbers as part of the default installation destination. Using TARGETS for installing llwebrtc would cause the .lib to be installed too, which isn't necessary, that's why we use PROGRAMS. contributors.txt still gets generated wrongly. The executable icon is still SL's test icon. ColladaDOM's failure to link to Boost throw_exception, from its use of Boost Regex, is not fixed yet. I got to this stage by temporarily removing the offending lines in daeURI.cpp (which are the lines where Boost Regex is used).
2025-05-22Merge tag 'Second_Life_Release#a31b7ae2-Second_Life_Release#a31b7ae-2025.04' ↵Erik Kundiman
into 2025.04
2025-05-13Not rely on (LL_)USESYSTEMLIBS macro & CMake settingErik Kundiman
but the fact that we keep on using as many system libraries as we can (and only resort to other sources in certain cases), hasn't changed, of course. Also stop having to set USE_AUTOBUILD_3P to OFF. Lines are reindented, and when a system library can be found for a dependency, then that should be the way. If later we find out that using some other way is better, than stick to that. So, one option at a time, whichever is best for the situation. GLEXT hasn't been used, and in order to be not having to hack its .cmake file, we bypass it and refer to GLH (which is still used) right away in LLWindow. CMake commands that need to be bypassed, if it's a one-liner then it's just commented out, but if it's multiple lines, then scope them with if (FALSE) to minimise difference.
2025-05-10#3542 Microphone doesn't switch after plugging in an audio deviceAndrey Kleshchev
2025-04-07Make it build & install, USING Portage, on GentooErik Kundiman
Gentoo uses lib64, just like Fedora, and has libexec too. The necessary step to install dependencies is part of the ebuild script now (tracked in another repo, ebuild.git). One thing I forgot to mention on the commit in that ebuild repo is, unzip.h is provided on Gentoo only by minizip, and not minizip-ng cause somehow the (minizip) "compat" USE flag couldn't be turned on somehow, and there was no "minizip" (without -ng) package on Gentoo, but it was achievable by setting the "minizip" USE flag on the zlib (again, without -ng) package. The queue header inclusion is needed cause its absence would cause the compiling to fail on Portage (though it compiled when building the viewer manually without Portage). Also, using the prebuilt Meshoptimizer caused some linking errors when using Portage (though, again, it linked when building the viewer manually without Portage), hence Meshoptimizer is built from source as part of the CMake configuration on Gentoo, differing from fellow Linux distros. Now Collada DOM, firstly the unpack destination directory is moved to inside the build directory now, to make it uniform with other 3rd-party files, just for less confusion. Secondly, since the patching that takes effect is the one done by Portage, it would kill the process when there are offending failed patchings (ones that generate .rej, reject files), and they are the vcxproj patchings which aren't used anyway. Thirdly, the hash checking on the downloaded file, that would fail anyway since Portage doesn't allow any downloading that isn't part of the ebuild, unfortunately has to be skipped so the emerge process wouldn't be killed just because of it. Ebuild has its own sum checking (though this means this particular file is not checked on other platforms, but other files aren't checked either anyway yet). Last but not least, the XDG Application category is removed because it's considered deprecated by Portage, though not fatal, but the viewer is already shown well in the Internet (Network) submenu anyway on unix desktops.
2025-02-11Update dependencies with support for apple siliconRye
2024-12-31Decide lib64 or x86_64-linux-gnu based on distroErik Kundiman
Some builders might just have their installation somehow customised to have both.
2024-10-20Working Arch port but CEF & WebRTC are still brokenErik Kundiman
I've tried using FMOD instead, but CEF didn't work either. At first I used crow-misia's WebRTC build but it would cause a segmentation fault, but LL's build seems to break CEF. Gotta find a way so CM's build doesn't crash the viewer. PKGBUILD should be moved to indra/newview as an .in to be configured by CMake for dynamic version numbers, and adjust the instruction too to run makepkg -R from the folder where the generated PKGBUILD will be.
2024-09-27Make linking to ll::webrtc more genericErik Kundiman
for platforms other than Windows, macOS, and GNU/Linux, except for FreeBSD.
2024-09-16Merge branch 'main' into 2024.08-DeltaFPSErik Kundiman
2024-09-16WebRTC on Fedora & openSUSE without breaking CEFErik Kundiman
Thanks to the Linux x86-64 WebRTC binary from Zenichi Amano (crow-misia). https://megapahit.com/show_bug.cgi?id=64 Haven't been tested on openSUSE, but it should work.
2024-09-01Merge remote-tracking branch 'secondlife/release/2024.08-DeltaFPS' into ↵Erik Kundiman
2024.08-DeltaFPS
2024-08-28Fix left out & error-causing from previous commitErik Kundiman
2024-08-20Merge remote-tracking branch 'origin/release/2024.06-atlasaurus' into developBrad Linden
# Conflicts: # autobuild.xml # indra/newview/llvoicewebrtc.cpp
2024-08-20Merge remote-tracking branch 'secondlife/release/2024.06-atlasaurus' into ↵Erik Kundiman
2024.06-atlasaurus
2024-08-19Merge remote-tracking branch 'secondlife/release/2024.06-atlasaurus' into ↵Erik Kundiman
2024.06-atlasaurus
2024-08-18Merge branch 'roxie/webrtc-airpod-fixes' of github.com:secondlife/viewer ↵Roxie Linden
into roxie/webrtc-airpod-fixes
2024-08-18Use the release build of webrtc to avoid pedantic asserts which are handled ↵Roxie Linden
properly anyway.
2024-08-18Update webrtc to fix loss of stereo in bluetooth issue.Roxie Linden
When transitioning from mic-on hands-free mode to mic off, it's expected that the audio stream would return to stereo. Inproper logic in the mac device code in webrtc was preventing that.
2024-08-17Microphone was being prematurely enabled on login for a short period.Roxie Linden
The microphone issue was causing a short moment of sound, and was causing bluetooth headsets to switch to hands-free/one channel mode which is disruptive. Also, update webrtc to deal with issue where airpods were garbled after coming out of hands-free mode.
2024-08-17Fixes to managing device start/stop playout/recording.Roxie Linden
Fixes prevent attempting to start playout/recording before the devices are set up, to prevent restarting playout/recording, to prevent attempts to stop when not playing/recording, and so on... This should address the case where audio device changes can cause an assert. It should also address the case where audio was unnecessarily played or transmitted when connecting. And, when voice is disabled, the audio devices are not set up to play/record so there should be no disruption of bluetooth music from other apps.
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-08CR fixesRoxie Linden
2024-08-07build debug symbols for llwebrtc even for releaseRoxie Linden
2024-08-07Add Windows multi-pdb upload capabilityRoxie Linden
2024-08-06Build an xcarchive for mac symbol upload.Roxie Linden