Merge pull request #2328 from secondlife/roxie/webrtc-airpod-fixes
commit
1c7bc351d6
|
|
@ -745,18 +745,6 @@
|
|||
</map>
|
||||
<key>glm</key>
|
||||
<map>
|
||||
<key>canonical_repo</key>
|
||||
<string>https://github.com/secondlife/3p-glm</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2005 - G-Truc Creation</string>
|
||||
<key>description</key>
|
||||
<string>OpenGL Mathematics</string>
|
||||
<key>license</key>
|
||||
<string>MIT</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/glm_license.txt</string>
|
||||
<key>name</key>
|
||||
<string>glm</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>common</key>
|
||||
|
|
@ -774,16 +762,28 @@
|
|||
<string>common</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>source_type</key>
|
||||
<string>git</string>
|
||||
<key>license</key>
|
||||
<string>MIT</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/glm_license.txt</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2005 - G-Truc Creation</string>
|
||||
<key>version</key>
|
||||
<string>v1.0.1</string>
|
||||
<key>name</key>
|
||||
<string>glm</string>
|
||||
<key>vcs_branch</key>
|
||||
<string>refs/tags/v1.0.1-r1</string>
|
||||
<key>vcs_revision</key>
|
||||
<string>399cd5ba57a9267a560ce07e50a0f8c5fe3dc66f</string>
|
||||
<key>vcs_url</key>
|
||||
<string>git://github.com/secondlife/3p-glm.git</string>
|
||||
<key>version</key>
|
||||
<string>v1.0.1</string>
|
||||
<key>canonical_repo</key>
|
||||
<string>https://github.com/secondlife/3p-glm</string>
|
||||
<key>description</key>
|
||||
<string>OpenGL Mathematics</string>
|
||||
<key>source_type</key>
|
||||
<string>git</string>
|
||||
</map>
|
||||
<key>gstreamer</key>
|
||||
<map>
|
||||
|
|
@ -1418,14 +1418,6 @@
|
|||
</map>
|
||||
<key>llphysicsextensions_source</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2010, Linden Research, Inc.</string>
|
||||
<key>license</key>
|
||||
<string>internal</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/llphysicsextensions.txt</string>
|
||||
<key>name</key>
|
||||
<string>llphysicsextensions_source</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin64</key>
|
||||
|
|
@ -1477,8 +1469,16 @@
|
|||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
<string>internal</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/llphysicsextensions.txt</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2010, Linden Research, Inc.</string>
|
||||
<key>version</key>
|
||||
<string>1.0.b8b1f73</string>
|
||||
<key>name</key>
|
||||
<string>llphysicsextensions_source</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_stub</key>
|
||||
<map>
|
||||
|
|
@ -2008,16 +2008,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
</map>
|
||||
<key>openal</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) 1999-2007 by authors.</string>
|
||||
<key>description</key>
|
||||
<string>OpenAL Soft is a software implementation of the OpenAL 3D audio API.</string>
|
||||
<key>license</key>
|
||||
<string>LGPL2</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/openal-soft.txt</string>
|
||||
<key>name</key>
|
||||
<string>openal</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin64</key>
|
||||
|
|
@ -2063,8 +2053,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
<string>LGPL2</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/openal-soft.txt</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) 1999-2007 by authors.</string>
|
||||
<key>version</key>
|
||||
<string>1.23.1</string>
|
||||
<key>name</key>
|
||||
<string>openal</string>
|
||||
<key>description</key>
|
||||
<string>OpenAL Soft is a software implementation of the OpenAL 3D audio API.</string>
|
||||
</map>
|
||||
<key>openjpeg</key>
|
||||
<map>
|
||||
|
|
@ -2793,11 +2793,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>194b4f5957c9f003c46e61a434e23a7c3d1180d6</string>
|
||||
<string>3570b6442d472cd97bad8622c2ec2571d72218a0</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-darwin64-10377605436.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-darwin64-10444682919.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -2807,11 +2807,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>38e0c7d30b4c40eb04e60ab199440b847cc7c6cf</string>
|
||||
<string>eadf6aa99313940ded11801d42c11375669f1628</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-linux64-10377605436.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-linux64-10444682919.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2821,11 +2821,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>053fb5c873df9192e34cddcf2db1c5fdcff76ba1</string>
|
||||
<string>0081fd35290adbc8e66dd366535fb6cd8a966f1e</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-windows64-10377605436.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-windows64-10444682919.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -2838,7 +2838,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>copyright</key>
|
||||
<string>Copyright (c) 2011, The WebRTC project authors. All rights reserved.</string>
|
||||
<key>version</key>
|
||||
<string>m114.5735.08.70-debug.10377605436</string>
|
||||
<string>m114.5735.08.72-test.10444682919</string>
|
||||
<key>name</key>
|
||||
<string>webrtc</string>
|
||||
<key>vcs_branch</key>
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ add_library (llwebrtc SHARED ${llwebrtc_SOURCE_FILES})
|
|||
set_target_properties(llwebrtc PROPERTIES PUBLIC_HEADER llwebrtc.h)
|
||||
|
||||
if (WINDOWS)
|
||||
cmake_policy(SET CMP0091 NEW)
|
||||
set_target_properties(llwebrtc
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/debug /LARGEADDRESSAWARE"
|
||||
|
|
@ -42,7 +43,10 @@ if (WINDOWS)
|
|||
wmcodecdspuuid
|
||||
msdmo
|
||||
strmiids
|
||||
iphlpapi)
|
||||
iphlpapi
|
||||
libcmt)
|
||||
# as the webrtc libraries are release, build this binary as release as well.
|
||||
target_compile_options(llwebrtc PRIVATE "/MT")
|
||||
if (USE_BUGSPLAT)
|
||||
set_target_properties(llwebrtc PROPERTIES PDB_OUTPUT_DIRECTORY "${SYMBOLS_STAGING_DIR}")
|
||||
endif (USE_BUGSPLAT)
|
||||
|
|
|
|||
|
|
@ -206,10 +206,10 @@ void LLWebRTCImpl::init()
|
|||
mTuningDeviceModule->SetAudioDeviceSink(this);
|
||||
mTuningDeviceModule->InitMicrophone();
|
||||
mTuningDeviceModule->InitSpeaker();
|
||||
mTuningDeviceModule->SetStereoRecording(false);
|
||||
mTuningDeviceModule->SetStereoPlayout(true);
|
||||
mTuningDeviceModule->InitRecording();
|
||||
mTuningDeviceModule->InitPlayout();
|
||||
mTuningDeviceModule->SetStereoRecording(true);
|
||||
mTuningDeviceModule->SetStereoPlayout(true);
|
||||
updateDevices();
|
||||
});
|
||||
|
||||
|
|
@ -227,10 +227,6 @@ void LLWebRTCImpl::init()
|
|||
mPeerDeviceModule->EnableBuiltInAEC(false);
|
||||
mPeerDeviceModule->InitMicrophone();
|
||||
mPeerDeviceModule->InitSpeaker();
|
||||
mPeerDeviceModule->InitRecording();
|
||||
mPeerDeviceModule->InitPlayout();
|
||||
mPeerDeviceModule->SetStereoRecording(true);
|
||||
mPeerDeviceModule->SetStereoPlayout(true);
|
||||
});
|
||||
|
||||
// The custom processor allows us to retrieve audio data (and levels)
|
||||
|
|
@ -251,8 +247,9 @@ void LLWebRTCImpl::init()
|
|||
apm_config.noise_suppression.level = webrtc::AudioProcessing::Config::NoiseSuppression::kVeryHigh;
|
||||
apm_config.transient_suppression.enabled = true;
|
||||
apm_config.pipeline.multi_channel_render = true;
|
||||
apm_config.pipeline.multi_channel_capture = true;
|
||||
apm_config.pipeline.multi_channel_capture = true;
|
||||
apm_config.pipeline.multi_channel_capture = false;
|
||||
|
||||
mAudioProcessingModule->ApplyConfig(apm_config);
|
||||
|
||||
webrtc::ProcessingConfig processing_config;
|
||||
processing_config.input_stream().set_num_channels(2);
|
||||
|
|
@ -264,10 +261,8 @@ void LLWebRTCImpl::init()
|
|||
processing_config.reverse_output_stream().set_num_channels(2);
|
||||
processing_config.reverse_output_stream().set_sample_rate_hz(48000);
|
||||
|
||||
mAudioProcessingModule->ApplyConfig(apm_config);
|
||||
mAudioProcessingModule->Initialize(processing_config);
|
||||
|
||||
|
||||
mPeerConnectionFactory = webrtc::CreatePeerConnectionFactory(mNetworkThread.get(),
|
||||
mWorkerThread.get(),
|
||||
mSignalingThread.get(),
|
||||
|
|
@ -279,7 +274,6 @@ void LLWebRTCImpl::init()
|
|||
nullptr /* audio_mixer */,
|
||||
mAudioProcessingModule);
|
||||
|
||||
mWorkerThread->BlockingCall([this]() { mPeerDeviceModule->StartPlayout(); });
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::terminate()
|
||||
|
|
@ -331,6 +325,8 @@ void LLWebRTCImpl::setRecording(bool recording)
|
|||
{
|
||||
if (recording)
|
||||
{
|
||||
mPeerDeviceModule->SetStereoRecording(false);
|
||||
mPeerDeviceModule->InitRecording();
|
||||
mPeerDeviceModule->StartRecording();
|
||||
}
|
||||
else
|
||||
|
|
@ -340,6 +336,24 @@ void LLWebRTCImpl::setRecording(bool recording)
|
|||
});
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::setPlayout(bool playing)
|
||||
{
|
||||
mWorkerThread->PostTask(
|
||||
[this, playing]()
|
||||
{
|
||||
if (playing)
|
||||
{
|
||||
mPeerDeviceModule->SetStereoPlayout(true);
|
||||
mPeerDeviceModule->InitPlayout();
|
||||
mPeerDeviceModule->StartPlayout();
|
||||
}
|
||||
else
|
||||
{
|
||||
mPeerDeviceModule->StopPlayout();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::setAudioConfig(LLWebRTCDeviceInterface::AudioConfig config)
|
||||
{
|
||||
webrtc::AudioProcessing::Config apm_config;
|
||||
|
|
@ -402,7 +416,6 @@ 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 WEBRTC_WIN
|
||||
if (device < 0)
|
||||
{
|
||||
|
|
@ -417,10 +430,9 @@ void ll_set_device_module_capture_device(rtc::scoped_refptr<webrtc::AudioDeviceM
|
|||
// has it at 0
|
||||
device_module->SetRecordingDevice(device + 1);
|
||||
#endif
|
||||
device_module->SetStereoRecording(false);
|
||||
device_module->InitMicrophone();
|
||||
device_module->InitRecording();
|
||||
device_module->SetStereoRecording(false);
|
||||
device_module->StartRecording();
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::setCaptureDevice(const std::string &id)
|
||||
|
|
@ -444,18 +456,32 @@ void LLWebRTCImpl::setCaptureDevice(const std::string &id)
|
|||
mRecordingDevice = recordingDevice;
|
||||
if (mTuningMode)
|
||||
{
|
||||
mWorkerThread->PostTask([this, recordingDevice]() { ll_set_device_module_capture_device(mTuningDeviceModule, recordingDevice); });
|
||||
mWorkerThread->PostTask([this, recordingDevice]()
|
||||
{
|
||||
ll_set_device_module_capture_device(mTuningDeviceModule, recordingDevice);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
mWorkerThread->PostTask([this, recordingDevice]() { ll_set_device_module_capture_device(mPeerDeviceModule, recordingDevice); });
|
||||
mWorkerThread->PostTask([this, recordingDevice]()
|
||||
{
|
||||
bool recording = mPeerDeviceModule->Recording();
|
||||
if (recording)
|
||||
{
|
||||
mPeerDeviceModule->StopRecording();
|
||||
}
|
||||
ll_set_device_module_capture_device(mPeerDeviceModule, recordingDevice);
|
||||
if (recording)
|
||||
{
|
||||
mPeerDeviceModule->StartRecording();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceModule> device_module, int16_t device)
|
||||
{
|
||||
device_module->StopPlayout();
|
||||
#if WEBRTC_WIN
|
||||
if (device < 0)
|
||||
{
|
||||
|
|
@ -468,9 +494,9 @@ void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceMo
|
|||
#else
|
||||
device_module->SetPlayoutDevice(device + 1);
|
||||
#endif
|
||||
device_module->SetStereoPlayout(true);
|
||||
device_module->InitSpeaker();
|
||||
device_module->InitPlayout();
|
||||
device_module->SetStereoPlayout(true);
|
||||
}
|
||||
|
||||
void LLWebRTCImpl::setRenderDevice(const std::string &id)
|
||||
|
|
@ -506,8 +532,16 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
|
|||
mWorkerThread->PostTask(
|
||||
[this, playoutDevice]()
|
||||
{
|
||||
bool playing = mPeerDeviceModule->Playing();
|
||||
if (playing)
|
||||
{
|
||||
mPeerDeviceModule->StopPlayout();
|
||||
}
|
||||
ll_set_device_module_render_device(mPeerDeviceModule, playoutDevice);
|
||||
mPeerDeviceModule->StartPlayout();
|
||||
if (playing)
|
||||
{
|
||||
mPeerDeviceModule->StartPlayout();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -592,6 +626,8 @@ void LLWebRTCImpl::setTuningMode(bool enable)
|
|||
//mTuningDeviceModule->StopPlayout();
|
||||
ll_set_device_module_render_device(mPeerDeviceModule, mPlayoutDevice);
|
||||
ll_set_device_module_capture_device(mPeerDeviceModule, mRecordingDevice);
|
||||
mPeerDeviceModule->SetStereoPlayout(true);
|
||||
mPeerDeviceModule->SetStereoRecording(false);
|
||||
mPeerDeviceModule->InitPlayout();
|
||||
mPeerDeviceModule->InitRecording();
|
||||
mPeerDeviceModule->StartPlayout();
|
||||
|
|
@ -635,6 +671,11 @@ LLWebRTCPeerConnectionInterface *LLWebRTCImpl::newPeerConnection()
|
|||
|
||||
mPeerConnections.emplace_back(peerConnection);
|
||||
peerConnection->enableSenderTracks(!mMute);
|
||||
if (mPeerConnections.empty())
|
||||
{
|
||||
setRecording(true);
|
||||
setPlayout(true);
|
||||
}
|
||||
return peerConnection.get();
|
||||
}
|
||||
|
||||
|
|
@ -649,6 +690,7 @@ void LLWebRTCImpl::freePeerConnection(LLWebRTCPeerConnectionInterface* peer_conn
|
|||
if (mPeerConnections.empty())
|
||||
{
|
||||
setRecording(false);
|
||||
setPlayout(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -662,7 +704,7 @@ void LLWebRTCImpl::freePeerConnection(LLWebRTCPeerConnectionInterface* peer_conn
|
|||
LLWebRTCPeerConnectionImpl::LLWebRTCPeerConnectionImpl() :
|
||||
mWebRTCImpl(nullptr),
|
||||
mPeerConnection(nullptr),
|
||||
mMute(false),
|
||||
mMute(true),
|
||||
mAnswerReceived(false)
|
||||
{
|
||||
}
|
||||
|
|
@ -684,8 +726,8 @@ void LLWebRTCPeerConnectionImpl::init(LLWebRTCImpl * webrtc_impl)
|
|||
}
|
||||
void LLWebRTCPeerConnectionImpl::terminate()
|
||||
{
|
||||
mWebRTCImpl->PostSignalingTask(
|
||||
[=]()
|
||||
mWebRTCImpl->SignalingBlockingCall(
|
||||
[this]()
|
||||
{
|
||||
if (mPeerConnection)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -278,6 +278,8 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
|
|||
// enables/disables capture via the capture device
|
||||
void setRecording(bool recording);
|
||||
|
||||
void setPlayout(bool playing);
|
||||
|
||||
protected:
|
||||
LLWebRTCLogSink* mLogSink;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue