summaryrefslogtreecommitdiff
path: root/indra/llwebrtc
AgeCommit message (Collapse)Author
14 daysNot use address size suffix for Flatpak library dirErik Kundiman
so upstream dullahan_host's rpath, which is meant to have $ORIGIN/../lib, would correctly refer to the library dir (where libcef.so is), without having to manipulate dullahan_host (cause Flatpak SDK doesn't have patchelf). But Dullahan/CEF is still not working on Flatpak just yet (LibVLC does, now, after I changed the prebuilt package from Debian 13 binaries to Fedora 44 binaries, where libvlccore links to libidn with the same compatibility version.
14 daysStrip viewer binaries on GCC and ClangErik Kundiman
but excluding AppleClang.
2026-06-22Flatpak supportErik Kundiman
Still uses prebuilt GLU, could be improved by using the glu shared module. Still uses prebuilt OpenAL, could be improved by separating the ALUT dependency (which isn't available on the runtime) from it, so we could use runtime's OpenAL. Still uses prebuilt LibXML2, could be improved by separating the Minizip & ColladaDOM from it (which aren't available on the runtime) from it, so we could use runtime's LibXML2 but have ColladaDOM built against it (and a still non-runtime Minizip). Still uses FLTK 1.3, when I tried using 1.4, it still had linking errors (might need to just add Cairo libraries to the target_link_libraries). VLC plugins are installed in vlc/plugins path relative to the vlc & vlccore libraries, the way they are in the distro I got the binaries from (Debian), cause I think it's the libraries that are compiled with that path. Still uses prebuilt dependencies in general, could be improved by having them as modules to be built. _FORTIFY_SOURCE needs to be skipped to avoid redefinition cause Flatpak build system already defines it. The conditionals for deciding installation paths need to be reorganised to accomodate installation that doesn't require an encapsulating namespace (because the installed files are already encapsulated in the app sandbox). The library directory naming scheme used here is lib64. The libGLESv2.so & libvulkan.so.1 installed are still copies, not links yet, because I'm still not familiar yet with the runtime hierarchies (they might reside just in /usr/lib/x86_64-linux-gnu).
2026-05-28Fix previous commit for Debian & UbuntuErik Kundiman
2026-05-28Fix media plugins installed to the wrong place on macOSErik Kundiman
2026-05-26Install dynamic libs, etc in folder on Linux & BSDErik Kundiman
This includes files of WebRTC, Discord, VLC & CEF and their media plugins & resources. This is so they won't clash just in case some other packages install files with the same names in system library directories. Furthermore, this seems to prevent Dullahan/CEF from breaking in general. The path to this encapsulating folder needs to be added as a runtime path to especially dullahan_host & libmedia_plugin_cef.so so they can find libcef.so etc, also for the viewer to find libllwebrtc.so & libdiscord_partner_sdk.so. And that's why `patchelf` needs to be made sure it's installed.
2026-05-02Merge tag 'Second_Life_Release#7719e6c1-26.2' into 2026.02Erik Kundiman
2026-04-27Fix P2P text chat timeout on WebRTC regions and delay voice renegotiation on ↵Roxanne Skelly
disconnect (#5706) * Fix P2P text chat timeout on WebRTC regions and delay voice renegotiation on disconnect Text chat: On WebRTC regions, getOutgoingCallInterface() returns nullptr, causing mP2PAsAdhocCall to be true for all P2P sessions including text-only IMs. This routed text chat through startP2PVoiceCoro which sent a "start p2p voice" request and waited for a server reply that never came, resulting in a 30-second session initialization timeout. Fix by gating the p2p-as-adhoc server init on mStartedAsIMCall so text-only sessions initialize immediately. WebRTC: Split kFailed and kDisconnected handling in OnConnectionChange. kFailed still renegotiates immediately. kDisconnected now waits 10 seconds before renegotiating, giving the connection time to recover on its own. Uses a sequence counter to ensure only the most recent disconnect transition can trigger renegotiation, preventing stale delayed tasks from firing early after disconnect/reconnect cycles. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Revert im-change for not using the voice subsystem when doing a text-only IM --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18Merge tag 'Second_Life_Release#f4bc7652-26.2' into 2026.02Erik Kundiman
2026-03-26#5575 fix incoming webRTC voice audio being disrupted after editing audio ↵Maxim Nikolenko
settings (#5581)
2026-03-07Merge tag 'Second_Life_Release#3529bc5f-2026.02' into 2026.02Erik Kundiman
2026-02-10Merge pull request #5401 from secondlife/project/voice_moderationJonathan "Geenz" Goodman
Voice moderation -> 26.2
2026-02-04Merge branch 'release/2026.01' into project/voice_moderationMnikolenko Productengine
2026-01-29Merge tag 'Second_Life_Release#e42ec63b-2026.01' into 2026.01Erik Kundiman
2026-01-26#5314 fix WebRTC voice being muted after quickly toggling the Speak buttonMaxim Nikolenko
2026-01-23Fix failure to reconnect after disconnect and occasional dropout issue (#5322)Roxanne Skelly
* Fix failure to reconnect after disconnect and occasional dropout issue We were occasionally seeing dropouts which may have been caused by ICE renegotiate requests. The code is there to reconnect in that case, but there were a few bugs, some of which were likely due to the webrtc upgrade. Also, we were seeing failures to reconnect after voice server restart. There were some issues with the PTT button that came up after the above issue was fixed. * Added a clarification as part of CR * We need to set mute state for p2p/adhoc/group calls as well
2025-12-10Fix failure to reconnect after disconnect and occasional dropout issue (#5126)Roxanne Skelly
* Fix failure to reconnect after disconnect and occasional dropout issue We were occasionally seeing dropouts which may have been caused by ICE renegotiate requests. The code is there to reconnect in that case, but there were a few bugs, some of which were likely due to the webrtc upgrade. Also, we were seeing failures to reconnect after voice server restart. There were some issues with the PTT button that came up after the above issue was fixed. * We need to set mute state for p2p/adhoc/group calls as well
2025-12-08Merge branch 'release/2026.01' into maxim/voice-moderationMnikolenko Productengine
# Conflicts: # indra/newview/llviewerstats.h
2025-12-04Merge remote-tracking branch 'secondlife/release/2026.01' into 2026.01Erik Kundiman
2025-12-03Merge pull request #5094 from secondlife/mainJonathan "Geenz" Goodman
2025.08 -> Develop
2025-12-01Merge branch 'develop' into maxim/voice-moderationMnikolenko Productengine
2025-11-26#5018 mac build fixMnikolenko Productengine
2025-11-26#5018 add webrtc connection statisticsMnikolenko Productengine
2025-11-17#4948 Crash at webrtc's initializeConnectionAndrey Kleshchev
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-26Revert "Improve switching of webrtc devices"Andrey Kleshchev
Wrong approach. Might need to split workerDeployDevices into separate recording and rendering variants. This partiall reverts commit bb26aa3c2cb8ff961668cf0ad8180d3e9c57f941, I left log lines.
2025-10-25Merge tag 'Second_Life_Release#01823996-2025.08' into 2025.08Erik Kundiman
2025-10-22#4652 Improve switching of webrtc devicesAndrey Kleshchev
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*.