diff --git a/Engine/Build/Commit.gitdeps.xml b/Engine/Build/Commit.gitdeps.xml index cfc7ec7e2798..af2353910d43 100644 --- a/Engine/Build/Commit.gitdeps.xml +++ b/Engine/Build/Commit.gitdeps.xml @@ -39578,7 +39578,7 @@ - + @@ -42872,6 +42872,7 @@ + @@ -64114,7 +64115,6 @@ - @@ -69657,7 +69657,6 @@ - @@ -71867,6 +71866,7 @@ + diff --git a/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.cpp b/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.cpp index 941bc77ff4a8..5279030c6dfd 100644 --- a/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.cpp +++ b/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.cpp @@ -42,6 +42,8 @@ bool FIOSVivoxVoiceChat::Initialize() } } + vx_set_platform_aec_enabled(1); + bInBackground = false; bShouldReconnect = false; bIsRecording = false; @@ -127,6 +129,11 @@ void FIOSVivoxVoiceChat::OnVoiceChatDisconnectComplete(const FVoiceChatResult& R } } +void FIOSVivoxVoiceChat::SetVivoxSdkConfigHints(vx_sdk_config_t &Hints) +{ + Hints.dynamic_voice_processing_switching = 0; +} + void FIOSVivoxVoiceChat::HandleApplicationWillEnterBackground() { UE_LOG(LogVivoxVoiceChat, Log, TEXT("OnApplicationWillEnterBackgroundDelegate")); diff --git a/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.h b/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.h index e1535caf12c4..17284d167e62 100644 --- a/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.h +++ b/Engine/Plugins/Online/VoiceChat/VivoxVoiceChat/Source/Private/IOS/IOSVivoxVoiceChat.h @@ -22,6 +22,8 @@ protected: virtual void onConnectCompleted(const VivoxClientApi::Uri& Server) override; virtual void onDisconnected(const VivoxClientApi::Uri& Server, const VivoxClientApi::VCSStatus& Status) override; // ~End DebugClientApiEventHandler Interface + + void SetVivoxSdkConfigHints(vx_sdk_config_t &Hints) override; private: void OnVoiceChatConnectComplete(const FVoiceChatResult& Result); diff --git a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/Vxc.h b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/Vxc.h index bfc8471a0f62..0e8528b70e59 100644 --- a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/Vxc.h +++ b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/Vxc.h @@ -2808,6 +2808,68 @@ typedef enum { VIVOXSDK_DLLEXPORT char *vx_get_path(unsigned int path_id); +/** + * Gets current value of dynamic voice processing switching enabled setting + * + * @return - 0 if disabled, 1 if enabled. + */ +VIVOXSDK_DLLEXPORT int vx_get_dynamic_voice_processing_switching_enabled(); + +/** + * Enables and disables dynamic voice processing switching + * + * @param enabled - 0 to disable, 1 to enable dynamic voice processing switching + * @return - 0 if successful, non-zero if failed (SDK not initialized). + */ +VIVOXSDK_DLLEXPORT int vx_set_dynamic_voice_processing_switching_enabled(int enabled); + +/** + * Returns whether platform-provided AEC is being used. + * + * @return - 0 if disabled, 1 if enabled. + */ +VIVOXSDK_DLLEXPORT int vx_get_platform_aec_enabled(); + +/** + * Enables and disables platform-provided AEC + * This function is only effective if dynamic voice processing switching is off. + * + * @param enabled - 0 to disable, 1 to enable platform AEC + * @return - 0 if successful, non-zero if failed (SDK not initialized). + */ +VIVOXSDK_DLLEXPORT int vx_set_platform_aec_enabled(int enabled); + +/** + * Enable/disable SDK's internal AEC. Enabling does not force AEC usage, but alows SDK to use + * the AEC when it is required. + * + * @return 0 if successful, non-zero if failed (SDK not initialized, internal AEC is not supported). + */ +VIVOXSDK_DLLEXPORT int vx_set_vivox_aec_enabled(int enabled); + +/** + * Get the internal AEC enabled/disabled state. Enabling does not force AEC usage, but alows SDK to use + * the AEC when it is required. + * + * @return 0 if successful, non-zero if failed (SDK not initialized, internal AEC is not supported). + */ +VIVOXSDK_DLLEXPORT int vx_get_vivox_aec_enabled(int *enabled); + +/** + * Enable/disable SDK's internal AGC. Enabling does not force AGC usage, but alows SDK to use + * the AGC when it is required. + * + * @return 0 if successful, non-zero if failed (SDK not initialized, internal AGC is not supported). + */ +VIVOXSDK_DLLEXPORT int vx_set_agc_enabled(int enabled); + +/** + * Get the internal AGC enabled/disabled state. Enabling does not force AGC usage, but alows SDK to use + * the AGC when it is required. + * + * @return 0 if successful, non-zero if failed (SDK not initialized, internal AGC is not supported). + */ +VIVOXSDK_DLLEXPORT int vx_get_agc_enabled(int *enabled); #ifdef __cplusplus } diff --git a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcRequests.h b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcRequests.h index 052e93d46c3f..2e8991425260 100644 --- a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcRequests.h +++ b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcRequests.h @@ -4256,12 +4256,16 @@ VIVOXSDK_DLLEXPORT int vx_req_aux_get_vad_properties_create(vx_req_aux_get_vad_p #endif /** - * This method is used to set the connector VAD (Voice Activity Detector) properties. - * It can only be invoked successfully if neither the capture audio thread or the msopenal are active. - * - * \see vx_req_aux_set_vad_properties - * \ingroup devices - */ +* This method is used to set the connector VAD (Voice Activity Detector) properties. +* Most properties will update while capture audio is active. +* Properties that require capture audio restart (i.e. rejoining a voice channel): +* vad_noise_floor +* Properties that update while capture audio is active: +* vad_hangover, vad_sensitivity, vad_auto +* +* \see vx_req_aux_set_vad_properties +* \ingroup devices +*/ typedef struct vx_req_aux_set_vad_properties { /** * The common properties for all requests. @@ -4278,11 +4282,15 @@ typedef struct vx_req_aux_set_vad_properties { */ int vad_sensitivity; /** - * The 'vad noise floor' - A dimensionless value between 0 and 20000 (default 576) that controls how the vad separates speech from background noise + * The 'vad noise floor' - 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. */ int vad_noise_floor; /** - * VAD Automatic Parameter Selection - If this mode is 1 (enabled), then vad_hangover, vad_sensitivity, and vad_noise_floor will be ignored and the VAD will optimize parameters automatically + * VAD Automatic Parameter Selection - If this mode is 1 (enabled), then vad_hangover, vad_sensitivity, + * and vad_noise_floor will be ignored and the VAD will optimize parameters automatically. */ int vad_auto; } vx_req_aux_set_vad_properties_t; diff --git a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcTypes.h b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcTypes.h index aaf03e13a0a2..39f9d068a06e 100644 --- a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcTypes.h +++ b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/VxcTypes.h @@ -401,6 +401,13 @@ typedef struct vx_sdk_config { * Currently this function is called only on specific platforms. Please contact Vivox for more information. */ int (*pf_request_permission_for_network)(void); + + /** + * Enable Dynamic Voice Processing Switching. Default value is 1. + * If enabled, the SDK will automatically switch between hardware and software AECs. + * To disable set value to 0. + */ + int dynamic_voice_processing_switching; } vx_sdk_config_t; #ifdef __cplusplus diff --git a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/vivox-config.h b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/vivox-config.h index 49dda5d0645d..e0965ea44f3e 100644 --- a/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/vivox-config.h +++ b/Engine/Source/ThirdParty/Vivox/vivox-sdk/Include/vivox-config.h @@ -23,13 +23,13 @@ */ #pragma once -#define SDK_VERSION "4.9.0002.31944" +#define SDK_VERSION "4.9.0002.32020" #define SDK_BRANCH "HEAD" #define VERSION_MAJOR 4 #define VERSION_MINOR 9 /* so VERSION_MICRO (.e.g. 0008) is not interpreted as octal */ #define VERSION_MICRO (10002 - 10000) -#define VERSION_BUILD 31944 +#define VERSION_BUILD 32020 -#define VERSION_HASH "cd26a60b" +#define VERSION_HASH "43e5c38d"