| Age | Commit message (Collapse) | Author |
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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).
|
|
|
|
which are SetObserver, GetPlayoutDevice and GetRecordingDevice.
|
|
|
|
|
|
|
|
Cleanup is in LLVoiceClient::terminate()
gWebRTCImpl was never deleted
Added mDeviceModule security
|
|
* 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
|
|
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
|
|
|
|
|
|
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.
|
|
|
|
This reverts commit a8dfeed4632aad0233ff08d1efd950b620fd1be7.
|
|
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
|
|
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*.
|
|
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).
|
|
into 2025.04
|
|
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.
|
|
|
|
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.
|
|
|
|
Some builders might just have their installation somehow customised to
have both.
|
|
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.
|
|
for platforms other than Windows, macOS, and GNU/Linux, except for
FreeBSD.
|
|
|
|
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.08-DeltaFPS
|
|
|
|
# Conflicts:
# autobuild.xml
# indra/newview/llvoicewebrtc.cpp
|
|
2024.06-atlasaurus
|
|
2024.06-atlasaurus
|
|
into roxie/webrtc-airpod-fixes
|
|
properly anyway.
|
|
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.
|
|
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.
|
|
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.
|
|
# Conflicts:
# .github/workflows/build.yaml
# indra/llui/llscrolllistctrl.cpp
|
|
|
|
|
|
|
|
|