Merge branch 'DRTVWR-516-maint' of https://bitbucket.org/lindenlab/viewer

meow-7.2.2
Ansariel 2021-05-13 23:26:52 +02:00
commit 9826ae6967
6 changed files with 154 additions and 28 deletions

View File

@ -814,9 +814,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>a0dd76112ade26f5bcc47b801ca28d5f</string>
<string>856ba0e5b7be4bf683cf2849bce845e0</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80065/756313/dullahan-1.10.0.202104131525_89.0.17_ge7bbb1d_chromium-89.0.4389.114-darwin64-558200.tar.bz2</string>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72458/699860/dullahan-1.7.0.202011160759_81.3.10_gb223419_chromium-81.0.4044.138-darwin64-552313.tar.bz2</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -826,9 +826,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>520bafbf2d7f660297390d46632cce89</string>
<string>9a586d333b3c35389b29c7e8c7ebcc8f</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80066/756326/dullahan-1.10.0.202104131537_89.0.17_ge7bbb1d_chromium-89.0.4389.114-windows-558200.tar.bz2</string>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202011211324_81.3.10_gb223419_chromium-81.0.4044.138-windows-203261227.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -838,9 +838,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>37d579ff1f13b2a07b696e09cddc486d</string>
<string>698e79226d0fb3b935509769a36bffd4</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80067/756330/dullahan-1.10.0.202104131537_89.0.17_ge7bbb1d_chromium-89.0.4389.114-windows64-558200.tar.bz2</string>
<string>http://3p.firestormviewer.org/dullahan-1.8.0.202011211324_81.3.10_gb223419_chromium-81.0.4044.138-windows64-203261222.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
@ -859,7 +859,7 @@
</map>
</map>
<key>version</key>
<string>1.10.0.202104131537_89.0.17_ge7bbb1d_chromium-89.0.4389.114</string>
<string>1.7.0.202011161603_81.3.10_gb223419_chromium-81.0.4044.138</string>
</map>
<key>elfio</key>
<map>

View File

@ -526,16 +526,6 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
dullahan::dullahan_settings settings;
#if LL_WINDOWS
// As of CEF version 83+, for Windows versions, we need to tell CEF
// where the host helper process is since this DLL is not in the same
// dir as the executable that loaded it (SLPlugin.exe). The code in
// Dullahan that tried to figure out the location automatically uses
// the location of the exe which isn't helpful so we tell it explicitly.
char cur_dir_str[MAX_PATH];
GetCurrentDirectoryA(MAX_PATH, cur_dir_str);
settings.host_process_path = std::string(cur_dir_str);
#endif
settings.accept_language_list = mHostLanguage;
settings.background_color = 0xffffffff;
settings.cache_enabled = true;
@ -984,7 +974,7 @@ void MediaPluginCEF::checkEditState()
void MediaPluginCEF::setVolume()
{
//mVolumeCatcher.setVolume(mCurVolume);
#if 0// (DULLAHAN_VERSION_MAJOR*100 + DULLAHAN_VERSION_MINOR) >= 108
#if (DULLAHAN_VERSION_MAJOR*100 + DULLAHAN_VERSION_MINOR) >= 108
mCEFLib->setVolume(mCurVolume);
#else
mVolumeCatcher.setVolume(mCurVolume);

View File

@ -18033,6 +18033,51 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Backup</key>
<integer>0</integer>
</map>
<key>VivoxVadAuto</key>
<map>
<key>Comment</key>
<string>A flag indicating if the automatic VAD is enabled (1) or disabled (0). The individual settings are ignored if the auto-mode is enabled</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>VivoxVadHangover</key>
<map>
<key>Comment</key>
<string>The time (in milliseconds) that it takes or the VAD to switch back to silence from speech mode after the last speech frame has been detected</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>2000</integer>
</map>
<key>VivoxVadNoiseFloor</key>
<map>
<key>Comment</key>
<string>A dimensionless value between 0 and 20000 (default 576) that controls the maximum level at which the noise floor may be set at by the VAD's noise tracking</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>576</integer>
</map>
<key>VivoxVadSensitivity</key>
<map>
<key>Comment</key>
<string>
A dimensionless value between 0 and 100, indicating the 'sensitivity of the VAD'. Increasing this value corresponds to decreasing the sensitivity of the VAD and 0 is turned off altogether</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>VoiceCallsRejectGroup</key>
<map>
<key>Comment</key>

View File

@ -703,7 +703,6 @@ void LLVivoxVoiceClient::idle(void* user_data)
{
}
//=========================================================================
// the following are methods to support the coroutine implementation of the
// voice connection and processing. They should only be called in the context
@ -735,7 +734,22 @@ void LLVivoxVoiceClient::voiceControlCoro()
bool success = startAndConnectSession();
if (success)
{
if (mTuningMode)
// enable/disable the automatic VAD and explicitly set the initial values of
// the VAD variables ourselves when it is off - see SL-15072 for more details
// note: we set the other parameters too even if the auto VAD is on which is ok
unsigned int vad_auto = gSavedSettings.getU32("VivoxVadAuto");
unsigned int vad_hangover = gSavedSettings.getU32("VivoxVadHangover");
unsigned int vad_noise_floor = gSavedSettings.getU32("VivoxVadNoiseFloor");
unsigned int vad_sensitivity = gSavedSettings.getU32("VivoxVadSensitivity");
setupVADParams(vad_auto, vad_hangover, vad_noise_floor, vad_sensitivity);
// watch for changes to the VAD settings via Debug Settings UI and act on them accordingly
gSavedSettings.getControl("VivoxVadAuto")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this));
gSavedSettings.getControl("VivoxVadHangover")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this));
gSavedSettings.getControl("VivoxVadNoiseFloor")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this));
gSavedSettings.getControl("VivoxVadSensitivity")->getSignal()->connect(boost::bind(&LLVivoxVoiceClient::onVADSettingsChange, this));
if (mTuningMode)
{
performMicTuning();
}
@ -782,7 +796,6 @@ void LLVivoxVoiceClient::voiceControlCoro()
LL_INFOS("Voice") << "exiting" << LL_ENDL;
}
bool LLVivoxVoiceClient::startAndConnectSession()
{
bool ok = false;
@ -3340,6 +3353,73 @@ void LLVivoxVoiceClient::sendLocalAudioUpdates()
}
}
/**
* Because of the recurring voice cutout issues (SL-15072) we are going to try
* to disable the automatic VAD (Voice Activity Detection) and set the associated
* parameters directly. We will expose them via Debug Settings and that should
* let us iterate on a collection of values that work for us. Hopefully!
*
* From the VIVOX Docs:
*
* VadAuto: A flag indicating if the automatic VAD is enabled (1) or disabled (0)
*
* VadHangover: The time (in milliseconds) that it takes
* for the VAD to switch back to silence from speech mode after the last speech
* frame has been detected.
*
* VadNoiseFloor: A dimensionless value between 0 and
* 20000 (default 576) that controls the maximum level at which the noise floor
* may be set at by the VAD's noise tracking. Too low of a value will make noise
* tracking ineffective (A value of 0 disables noise tracking and the VAD then
* relies purely on the sensitivity property). Too high of a value will make
* long speech classifiable as noise.
*
* VadSensitivity: A dimensionless value between 0 and
* 100, indicating the 'sensitivity of the VAD'. Increasing this value corresponds
* to decreasing the sensitivity of the VAD (i.e. '0' is most sensitive,
* while 100 is 'least sensitive')
*/
void LLVivoxVoiceClient::setupVADParams(unsigned int vad_auto,
unsigned int vad_hangover,
unsigned int vad_noise_floor,
unsigned int vad_sensitivity)
{
std::ostringstream stream;
LL_INFOS("Voice") << "Setting the automatic VAD to "
<< (vad_auto ? "True" : "False")
<< " and discrete values to"
<< " VadHangover = " << vad_hangover
<< ", VadSensitivity = " << vad_sensitivity
<< ", VadNoiseFloor = " << vad_noise_floor
<< LL_ENDL;
// Create a request to set the VAD parameters:
stream << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetVadProperties.1\">"
<< "<VadAuto>" << vad_auto << "</VadAuto>"
<< "<VadHangover>" << vad_hangover << "</VadHangover>"
<< "<VadSensitivity>" << vad_sensitivity << "</VadSensitivity>"
<< "<VadNoiseFloor>" << vad_noise_floor << "</VadNoiseFloor>"
<< "</Request>\n\n\n";
if (!stream.str().empty())
{
writeString(stream.str());
}
}
void LLVivoxVoiceClient::onVADSettingsChange()
{
// pick up the VAD variables (one of which was changed)
unsigned int vad_auto = gSavedSettings.getU32("VivoxVadAuto");
unsigned int vad_hangover = gSavedSettings.getU32("VivoxVadHangover");
unsigned int vad_noise_floor = gSavedSettings.getU32("VivoxVadNoiseFloor");
unsigned int vad_sensitivity = gSavedSettings.getU32("VivoxVadSensitivity");
// build a VAD params change request and send it to SLVoice
setupVADParams(vad_auto, vad_hangover, vad_noise_floor, vad_sensitivity);
}
/////////////////////////////
// Response/Event handlers
@ -7730,6 +7810,18 @@ void LLVivoxProtocolParser::processResponse(std::string tag)
{
LLVivoxVoiceClient::getInstance()->accountGetTemplateFontsResponse(statusCode, statusString);
}
else if (!stricmp(actionCstr, "Aux.SetVadProperties.1"))
{
// both values of statusCode (old and more recent) indicate valid requests
if (statusCode != 0 && statusCode != 200)
{
LL_WARNS("Voice") << "Aux.SetVadProperties.1 request failed: "
<< "statusCode: " << statusCode
<< " and "
<< "statusString: " << statusString
<< LL_ENDL;
}
}
/*
else if (!stricmp(actionCstr, "Account.ChannelGetList.1"))
{

View File

@ -456,7 +456,6 @@ protected:
// local audio updates, mic mute, speaker mute, mic volume and speaker volumes
void sendLocalAudioUpdates();
/////////////////////////////
// Response/Event handlers
void connectorCreateResponse(int statusCode, std::string &statusString, std::string &connectorHandle, std::string &versionID);
@ -482,6 +481,12 @@ protected:
void muteListChanged();
/////////////////////////////
// VAD changes
// disable auto-VAD and configure VAD parameters explicitly
void setupVADParams(unsigned int vad_auto, unsigned int vad_hangover, unsigned int vad_noise_floor, unsigned int vad_sensitivity);
void onVADSettingsChange();
/////////////////////////////
// Sending updates of current state
void updatePosition(void);

View File

@ -712,12 +712,6 @@ class WindowsManifest(ViewerManifest):
self.path("msvcp140.dll")
self.path("vcruntime140.dll")
# as of CEF 88, this (apparently software rendering support)
# folder is required - likely a Chromium bug - but including
# for now until the root cause is found - it's tiny
with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
self.path("swiftshader/")
# CEF files common to all configurations
with self.prefix(src=os.path.join(pkgdir, 'resources')):
self.path("cef.pak")