summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llwebrtc/llwebrtc.cpp30
-rw-r--r--indra/llwebrtc/llwebrtc_impl.h1
2 files changed, 25 insertions, 6 deletions
diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp
index 7570bb4434..57130bb734 100644
--- a/indra/llwebrtc/llwebrtc.cpp
+++ b/indra/llwebrtc/llwebrtc.cpp
@@ -26,7 +26,6 @@
#include "llwebrtc_impl.h"
#include <algorithm>
-#include <format>
#include <string.h>
#include "api/audio_codecs/audio_decoder_factory.h"
@@ -389,7 +388,7 @@ void LLWebRTCImpl::unsetDevicesObserver(LLWebRTCDevicesObserver *observer)
void ll_set_device_module_capture_device(rtc::scoped_refptr<webrtc::AudioDeviceModule> device_module, int16_t device)
{
device_module->StopRecording();
-#if LL_WINDOWS
+#if WEBRTC_WIN
if (device < 0)
{
device_module->SetRecordingDevice(webrtc::AudioDeviceModule::kDefaultDevice);
@@ -442,7 +441,7 @@ void LLWebRTCImpl::setCaptureDevice(const std::string &id)
void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceModule> device_module, int16_t device)
{
device_module->StopPlayout();
-#if LL_WINDOWS
+#if WEBRTC_WIN
if (device < 0)
{
device_module->SetPlayoutDevice(webrtc::AudioDeviceModule::kDefaultDevice);
@@ -501,10 +500,10 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
// updateDevices needs to happen on the worker thread.
void LLWebRTCImpl::updateDevices()
{
- int16_t renderDeviceCount = mTuningDeviceModule->PlayoutDevices();
+ int16_t renderDeviceCount = mTuningDeviceModule->PlayoutDevices();
mPlayoutDeviceList.clear();
-#if LL_WINDOWS
+#if WEBRTC_WIN
int16_t index = 0;
#else
// index zero is always "Default" for darwin/linux,
@@ -516,13 +515,23 @@ void LLWebRTCImpl::updateDevices()
char name[webrtc::kAdmMaxDeviceNameSize];
char guid[webrtc::kAdmMaxGuidSize];
mTuningDeviceModule->PlayoutDeviceName(index, name, guid);
+
+#if WEBRTC_LINUX
+ // Linux audio implementation (pulse and alsa)
+ // return empty strings for the guid, so
+ // use the name for the guid
+ if (!strcmp(guid, ""))
+ {
+ strcpy(guid, name);
+ }
+#endif // WEBRTC_LINUX
mPlayoutDeviceList.emplace_back(name, guid);
}
int16_t captureDeviceCount = mTuningDeviceModule->RecordingDevices();
mRecordingDeviceList.clear();
-#if LL_WINDOWS
+#if WEBRTC_WIN
index = 0;
#else
// index zero is always "Default" for darwin/linux,
@@ -534,6 +543,15 @@ void LLWebRTCImpl::updateDevices()
char name[webrtc::kAdmMaxDeviceNameSize];
char guid[webrtc::kAdmMaxGuidSize];
mTuningDeviceModule->RecordingDeviceName(index, name, guid);
+#if WEBRTC_LINUX
+ // Linux audio implementation (pulse and alsa)
+ // return empty strings for the guid, so
+ // use the name for the guid
+ if (!strcmp(guid, ""))
+ {
+ strcpy(guid, name);
+ }
+#endif // WEBRTC_LINUX
mRecordingDeviceList.emplace_back(name, guid);
}
diff --git a/indra/llwebrtc/llwebrtc_impl.h b/indra/llwebrtc/llwebrtc_impl.h
index 78ae6b4444..e1031099c7 100644
--- a/indra/llwebrtc/llwebrtc_impl.h
+++ b/indra/llwebrtc/llwebrtc_impl.h
@@ -35,6 +35,7 @@
#define WEBRTC_POSIX 1
#elif __linux__
#define WEBRTC_LINUX 1
+#define WEBRTC_POSIX 1
#endif
#include "llwebrtc.h"