Commit Graph

219 Commits (1a80805ef8dba3d09eabf1e96be8b644733f8b6c)

Author SHA1 Message Date
Ansariel 1a80805ef8 Merge branch 'release/2025.08' of https://github.com/secondlife/viewer 2025-10-22 13:52:45 +02:00
Andrey Kleshchev 9a2ff1657d #4871 Fix webrtc crash on tuningGetEnergy 2025-10-21 14:57:32 +03:00
Ansariel 36217e7cb3 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	autobuild.xml
#	indra/llwebrtc/llwebrtc.cpp
#	indra/llwebrtc/llwebrtc_impl.h
#	indra/newview/llvoicewebrtc.cpp
#	indra/newview/llvoicewebrtc.h
2025-10-18 12:33:24 +02:00
Jonathan "Geenz" Goodman bbc2ad8fc5 Merge remote-tracking branch 'origin/main' into geenz/main-to-develop 2025-10-17 17:06:39 -04:00
Andrey Kleshchev dc54661b3a #4819 WebRTC crashes after a failed login 2025-10-14 10:04:56 +02:00
Andrey Kleshchev 57a9e51360 #4819 WebRTC crashes after a failed login 2025-10-13 21:19:24 +03:00
Andrey Kleshchev ee43165bad #4695 Fix device update causing a crash 2025-10-12 16:35:11 +10:00
Andrey Kleshchev 5a8dfe2d19 #4691 Log WebRTC termination
for diagnostic purposes
2025-10-12 16:34:35 +10:00
Roxanne Skelly d070b996bd [WebRTC] Rework device handling sequence so that we can handle 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-10-12 16:32:18 +10:00
Ansariel e7b3d68cab Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	autobuild.xml
#	indra/cmake/LLPhysicsExtensions.cmake
#	indra/llprimitive/CMakeLists.txt
#	indra/newview/CMakeLists.txt
#	indra/newview/lltexturectrl.cpp
#	indra/newview/llviewerobject.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvovolume.cpp
#	indra/newview/skins/default/xui/en/floater_marketplace.xml
#	indra/newview/skins/default/xui/en/floater_model_preview.xml
#	indra/newview/skins/default/xui/en/floater_search.xml
2025-10-11 18:51:03 +02:00
Andrey Kleshchev f846861f04 #4777 Fix webrtc crashing in worker threads on shutdown 2025-10-03 19:07:00 +03:00
Ansariel 3717122cb9 Merge branch 'release/2025.07' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llappviewer.cpp
2025-09-23 10:01:04 +02:00
Andrey Kleshchev 1d9f87df4f #4695 Fix device update causing a crash 2025-09-22 22:02:45 +03:00
Andrey Kleshchev bf0f60039b #4691 Log WebRTC termination
for diagnostic purposes
2025-09-17 17:54:35 +03:00
Ansariel 5fdef7863e Merge branch 'release/2025.07' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/skins/default/xui/en/menu_inventory.xml
2025-09-16 18:33:02 +02:00
Roxanne Skelly a6d4c1d394
[WebRTC] Rework device handling sequence so that we can handle 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-09-12 20:07:51 -04:00
Ansariel efe97b9940 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	indra/cmake/00-Common.cmake
#	scripts/packages-formatter.py
2025-09-09 19:52:09 +02:00
PanteraPolnocy 7766a98d11 Add a switch to not connect to neighbouring regions
- An experimental and not officially supported function (therefore not exposed in preferences), may or may not stay in the source; Potentially addresses FIRE-2325 and its duplicates
- Prevents the viewer from connecting to neighbouring regions. When enabled, only the current region (login/teleport destination) is connected, while adjacent simulators are ignored. This effectively isolates the region, similar to how private estates behave.
- This may improve performance for users with weaker computers or slower connections, reduce unintended neighbour interactions, and assist multi-region event setups by lowering client overhead. It can also be useful for residents who prefer not to see or interact with neighbouring land.
- Limitations: region crossings will not function normally, as neighbouring regions are not visible or connected. Only direct teleports and logins to regions will work reliably. The sense of world scale and continuity is reduced, and travellers or explorers may find it unsuitable.
- TO-DO: Detect when avatar is crossing by foot/vehicle and load only that one region?
- I was not able to find an equivalent of WebRTC's updateNeighboringRegions() in Vivox code; updatePosition() is not that helpful, and channelFromRegion() seems to be detached?
2025-09-06 14:46:38 +02:00
Ansariel b99cf9fb86 Merge branch 'project/mac_universal' of https://github.com/secondlife/viewer
# Conflicts:
#	autobuild.xml
#	indra/cmake/00-Common.cmake
#	indra/cmake/APR.cmake
#	indra/cmake/Audio.cmake
#	indra/cmake/Boost.cmake
#	indra/cmake/Copy3rdPartyLibs.cmake
#	indra/cmake/LLKDU.cmake
#	indra/cmake/LLPrimitive.cmake
#	indra/cmake/Meshoptimizer.cmake
#	indra/cmake/NGHTTP2.cmake
#	indra/cmake/OPENAL.cmake
#	indra/llaudio/llvorbisencode.cpp
#	indra/llcommon/linden_common.h
#	indra/llcommon/llcommon.cpp
#	indra/llcommon/llfasttimer.cpp
#	indra/llcommon/llfasttimer.h
#	indra/llcommon/llfile.cpp
#	indra/llcommon/llmemory.h
#	indra/llcommon/llprofiler.h
#	indra/llcommon/llthreadsafequeue.h
#	indra/llfilesystem/lldir_win32.cpp
#	indra/llkdu/llimagej2ckdu.cpp
#	indra/llkdu/llimagej2ckdu.h
#	indra/llkdu/llkdumem.h
#	indra/llplugin/slplugin/CMakeLists.txt
#	indra/llrender/llfontfreetype.cpp
#	indra/llrender/llfontfreetype.h
#	indra/llwindow/CMakeLists.txt
#	indra/llwindow/llopenglview-objc.mm
#	indra/llwindow/llwindowmacosx-objc.h
#	indra/llwindow/llwindowwin32.cpp
#	indra/media_plugins/cef/CMakeLists.txt
#	indra/newview/CMakeLists.txt
#	indra/newview/llappviewer.cpp
#	indra/newview/llface.cpp
#	indra/newview/pipeline.cpp
#	indra/newview/viewer_manifest.py
2025-09-05 14:55:37 +02:00
Rye ba30737d8f Merge branch 'develop' of github.com:secondlife/viewer into rye/infinitemac 2025-08-20 18:04:55 -04:00
Ansariel 6491cb0307 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm-202506 2025-08-14 20:08:01 +02:00
Andrey Kleshchev 6f072c2121
Merge 2025.06 into develop
Merge 2025.06 into develop
2025-08-14 11:17:35 +03:00
Ansariel 478a51f8e3 Merge branch 'release/2025.06' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llxml/llcontrol.cpp
#	indra/newview/llfloaterpreference.cpp
#	indra/newview/lllogchat.cpp
#	indra/newview/llreflectionmap.h
2025-08-13 20:52:47 +02:00
Ansariel 440c7f214e Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm 2025-08-13 20:31:56 +02:00
Ansariel b0b8328c5c Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llrender/llrendertarget.cpp
#	indra/newview/gltf/asset.cpp
#	indra/newview/llagentcamera.cpp
#	indra/newview/lldrawpoolwater.cpp
#	indra/newview/llstartup.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoicewebrtc.cpp
#	indra/newview/viewer_manifest.py
2025-08-12 22:50:51 +02:00
Roxie Linden f7f06063c7 Fix issue where p2p calls were coming up muted even thought the UI said they were not. 2025-08-12 20:32:09 +03:00
Ansariel b9559762bc Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm 2025-08-12 18:31:29 +02:00
Ansariel f03cd219a9 Fix clang compiler issues due to unused variables 2025-08-12 14:09:53 +00:00
Beq ebc2679892 More set but not used avoidance 2025-08-10 16:37:04 +01:00
Roxie Linden bab2c12d04 Straighten out muting to prevent echo when crossing from vivox to webrtc 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-08 14:37:46 -07:00
Ansariel a4e8af0dce Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	.github/pull_request_template.md
#	CONTRIBUTING.md
#	indra/newview/CMakeLists.txt
#	indra/newview/app_settings/settings.xml
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloaterimagepreview.cpp
#	indra/newview/llfloatersettingsdebug.cpp
#	indra/newview/llfloatersettingsdebug.h
#	indra/newview/llstatusbar.cpp
#	indra/newview/llstatusbar.h
#	indra/newview/res/viewerRes.rc
#	indra/newview/skins/default/xui/de/panel_login_first.xml
#	indra/newview/skins/default/xui/en/notifications.xml
#	indra/newview/skins/default/xui/en/panel_login_first.xml
#	indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
#	indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
#	indra/newview/skins/default/xui/en/panel_status_bar.xml
#	indra/newview/skins/default/xui/es/panel_login_first.xml
#	indra/newview/skins/default/xui/fr/panel_login_first.xml
#	indra/newview/skins/default/xui/it/panel_login_first.xml
#	indra/newview/skins/default/xui/ja/panel_login_first.xml
#	indra/newview/skins/default/xui/pl/panel_login_first.xml
#	indra/newview/skins/default/xui/pt/panel_login_first.xml
#	indra/newview/skins/default/xui/ru/panel_login_first.xml
#	indra/newview/skins/default/xui/tr/panel_login_first.xml
#	indra/newview/skins/default/xui/zh/panel_login_first.xml
#	indra/newview/viewer_manifest.py
2025-07-30 10:52:39 +02:00
Andrey Kleshchev be04175579 #4358 Fix 'Microphone in use' task bar icon
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-16 20:05:23 +03:00
Ansariel 355a80ab91 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llimagej2coj/llimagej2coj.cpp
#	indra/newview/llfloaterworldmap.cpp
#	indra/newview/llfloaterworldmap.h
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/skins/default/xui/en/floater_world_map.xml
2025-05-23 13:13:24 +02:00
Seth Alves 4cff6997a1 reuse region variable instead of multiple calls to gAgent.getRegion() 2025-05-09 09:54:47 -07:00
Seth Alves be0fff8121 adjust which webrtc tracks are enabled when the avatar crosses a region border 2025-05-09 09:14:46 -07:00
Jonathan "Geenz" Goodman 52cca995cc Merge branch 'release/2025.04' into rye/forevermac 2025-04-15 13:55:01 -04:00
Ansariel 1243de5d84 Merge branch 'release/2025.03' of https://github.com/secondlife/viewer 2025-04-03 23:08:03 +02:00
Andrey Kleshchev 6ac1d4f3e3 #3829 WebRTC crash OnDataReceivedImpl 2025-03-27 21:29:31 +02:00
minerjr b47d3c3ef5 Fix float typos
There were five files which had float values assigned which were missing the "f" on them so they are in fact a doubles.
These get treated as errors when you change the floating point compile options from Fast to Precise or Strict as the fast path turns them from doubles to floats and suppresses the warnings.
2025-03-22 19:15:03 -03:00
Ansariel 5bf1f485f3 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llqueuedthread.cpp
2025-02-13 21:24:29 +01:00
Andrey Lihatskiy ddbe1ff981 Fix xcode16 build errors 2025-02-13 17:30:08 +02:00
Rye 635c34a17b Fix build with C++20 including nat's changes to fsyspath 2025-02-11 05:04:04 -05:00
Ansariel 7e7e19ee35 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llinventorymodel.h
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/llvoiceclient.cpp
#	indra/newview/pipeline.cpp
2025-02-07 19:38:29 +01:00
Maxim Nikolenko 1924241f04
viewer-private#375 add more logging in attempt to get more info 2025-02-07 19:00:20 +02:00
Ansariel 8ed4989c34 Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llvoicevivox.cpp
2024-11-07 18:02:38 +01:00
Andrey Kleshchev 0114be2c15 viewer#2985 Odd crash when notifying voice observers
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-11-01 17:54:05 +02:00
Ansariel 193fb1627f Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llappviewer.cpp
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewermedia.cpp
2024-09-19 23:04:19 +02:00
Roxie Linden 743a1a6d8e fix trailing whitespace 2024-09-18 14:14:26 -07:00
Roxie Linden 52091a6097 Mute other / set volume level for other is not working.
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-18 13:01:43 -07:00
Ansariel 1cca913ba7 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/cmake/CMakeLists.txt
#	indra/llprimitive/lldaeloader.cpp
#	indra/llprimitive/llmodelloader.cpp
#	indra/llrender/llgl.h
#	indra/llrender/llrender.h
#	indra/llui/llurlentry.cpp
#	indra/llui/llurlentry.h
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llvoavatar.cpp
2024-09-13 18:54:12 +02:00