Symptoms:
The Vivox SDK status code VxErrorUnableToOpenCaptureDevice (5021)
can occur when connecting to a Vivox channel with audio capability.
Depending on your log level, a number of successive errors might print in the logs similar to the following:
ERROR: check_hresult(38), m_AudioClient->Initialize() failed: hResult=-2147024809,hResultToString(hResult).c_str()=The parameter is incorrect. ERROR: VivoxMediaVxa::VxaCaptureDevice::Open(102), vxa_capture_device_open failed: status=1 ERROR: VivoxClient::VoiceProcessor::OpenAudioUnit(855), OpenAudioUnit() failed this=0x2a75d220080,captureDeviceId=DeviceId m_displayName='Microphone (High Definition Audio Device)' m_internalName='{0.0.1.00000000}.{9111a9f8-685d-4f5e-a22a-72373eb51a14}',renderDeviceId=DeviceId m_displayName='????????? (High Definition Audio Device)' m_internalName='{0.0.0.00000000}.{166a988b-c1c6-4dbb-9c41-384794753187}',vr=5021
Cause:
Vivox has found that Kaspersky Antivirus and similar software can sometimes interfere as Vivox tries to establish an RTP stream with Vivox audio servers. This is to notify and protect users from having microphone audio streamed over the network without their authorization. When joining the an audio channel, this software might display a dialog box which asks if the process can accept an audio stream (the below image shows an example of this).
If you select Block now, then VxErrorUnableToOpenCaptureDevice (5021)
and accompanying errors can occur. When the RTP Stream is blocked this way, the user will typically be disconnected from the channel by the server soon after with status code VxErrorRtpTimeout (1058)
and the message "RTP Timeout."
Resolution:
If you or your users see the above pop up or a similar one seeking to establish an audio stream with Vivox audio servers, select Allow now to authorize the connection.