зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1265641: Move AEC tail length and delay-agnostic settings to getUserMedia r=padenot
MozReview-Commit-ID: 6vHQlmt9lxR
This commit is contained in:
Родитель
cc6d1d9827
Коммит
90f6a18287
|
@ -1416,6 +1416,8 @@ MediaManager::MediaManager()
|
|||
mPrefs.mAecOn = false;
|
||||
mPrefs.mAgcOn = false;
|
||||
mPrefs.mNoiseOn = false;
|
||||
mPrefs.mExtendedFilter = true;
|
||||
mPrefs.mDelayAgnostic = true;
|
||||
#ifdef MOZ_WEBRTC
|
||||
mPrefs.mAec = webrtc::kEcUnchanged;
|
||||
mPrefs.mAgc = webrtc::kAgcUnchanged;
|
||||
|
@ -1437,10 +1439,12 @@ MediaManager::MediaManager()
|
|||
}
|
||||
LOG(("%s: default prefs: %dx%d @%dfps (min %d), %dHz test tones, aec: %s,"
|
||||
"agc: %s, noise: %s, aec level: %d, agc level: %d, noise level: %d,"
|
||||
"playout delay: %d, %sfull_duplex", __FUNCTION__, mPrefs.mWidth, mPrefs.mHeight,
|
||||
"playout delay: %d, %sfull_duplex, extended aec %s, delay_agnostic %s",
|
||||
__FUNCTION__, mPrefs.mWidth, mPrefs.mHeight,
|
||||
mPrefs.mFPS, mPrefs.mMinFPS, mPrefs.mFreq, mPrefs.mAecOn ? "on" : "off",
|
||||
mPrefs.mAgcOn ? "on": "off", mPrefs.mNoiseOn ? "on": "off", mPrefs.mAec,
|
||||
mPrefs.mAgc, mPrefs.mNoise, mPrefs.mPlayoutDelay, mPrefs.mFullDuplex ? "" : "not "));
|
||||
mPrefs.mAgc, mPrefs.mNoise, mPrefs.mPlayoutDelay, mPrefs.mFullDuplex ? "" : "not ",
|
||||
mPrefs.mExtendedFilter ? "on" : "off", mPrefs.mDelayAgnostic ? "on" : "off"));
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(MediaManager, nsIMediaManagerService, nsIObserver)
|
||||
|
@ -2559,6 +2563,8 @@ MediaManager::GetPrefs(nsIPrefBranch *aBranch, const char *aData)
|
|||
GetPref(aBranch, "media.getusermedia.agc", aData, &mPrefs.mAgc);
|
||||
GetPref(aBranch, "media.getusermedia.noise", aData, &mPrefs.mNoise);
|
||||
GetPref(aBranch, "media.getusermedia.playout_delay", aData, &mPrefs.mPlayoutDelay);
|
||||
GetPrefBool(aBranch, "media.getusermedia.aec_extended_filter", aData, &mPrefs.mExtendedFilter);
|
||||
GetPrefBool(aBranch, "media.getusermedia.aec_aec_delay_agnostic", aData, &mPrefs.mDelayAgnostic);
|
||||
#endif
|
||||
GetPrefBool(aBranch, "media.navigator.audio.full_duplex", aData, &mPrefs.mFullDuplex);
|
||||
}
|
||||
|
|
|
@ -222,6 +222,8 @@ public:
|
|||
, mNoise(0)
|
||||
, mPlayoutDelay(0)
|
||||
, mFullDuplex(false)
|
||||
, mExtendedFilter(false)
|
||||
, mDelayAgnostic(false)
|
||||
{}
|
||||
|
||||
int32_t mWidth;
|
||||
|
@ -237,6 +239,8 @@ public:
|
|||
int32_t mNoise;
|
||||
int32_t mPlayoutDelay;
|
||||
bool mFullDuplex;
|
||||
bool mExtendedFilter;
|
||||
bool mDelayAgnostic;
|
||||
|
||||
// mWidth and/or mHeight may be zero (=adaptive default), so use functions.
|
||||
|
||||
|
|
|
@ -106,7 +106,9 @@ MediaEngineWebRTC::MediaEngineWebRTC(MediaEnginePrefs &aPrefs)
|
|||
mVoiceEngine(nullptr),
|
||||
mAudioInput(nullptr),
|
||||
mAudioEngineInit(false),
|
||||
mFullDuplex(aPrefs.mFullDuplex)
|
||||
mFullDuplex(aPrefs.mFullDuplex),
|
||||
mExtendedFilter(aPrefs.mExtendedFilter),
|
||||
mDelayAgnostic(aPrefs.mDelayAgnostic)
|
||||
{
|
||||
#ifndef MOZ_B2G_CAMERA
|
||||
nsCOMPtr<nsIComponentRegistrar> compMgr;
|
||||
|
@ -320,7 +322,10 @@ MediaEngineWebRTC::EnumerateAudioDevices(dom::MediaSourceEnum aMediaSource,
|
|||
#endif
|
||||
|
||||
if (!mVoiceEngine) {
|
||||
mVoiceEngine = webrtc::VoiceEngine::Create();
|
||||
mConfig.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(mExtendedFilter));
|
||||
mConfig.Set<webrtc::DelayAgnostic>(new webrtc::DelayAgnostic(mDelayAgnostic));
|
||||
|
||||
mVoiceEngine = webrtc::VoiceEngine::Create(mConfig);
|
||||
if (!mVoiceEngine) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "webrtc/voice_engine/include/voe_volume_control.h"
|
||||
#include "webrtc/voice_engine/include/voe_external_media.h"
|
||||
#include "webrtc/voice_engine/include/voe_audio_processing.h"
|
||||
#include "webrtc/modules/audio_processing/include/audio_processing.h"
|
||||
|
||||
// Video Engine
|
||||
// conflicts with #include of scoped_ptr.h
|
||||
|
@ -569,9 +570,12 @@ private:
|
|||
// gUM runnables can e.g. Enumerate from multiple threads
|
||||
Mutex mMutex;
|
||||
webrtc::VoiceEngine* mVoiceEngine;
|
||||
webrtc::Config mConfig;
|
||||
RefPtr<mozilla::AudioInput> mAudioInput;
|
||||
bool mAudioEngineInit;
|
||||
bool mFullDuplex;
|
||||
bool mExtendedFilter;
|
||||
bool mDelayAgnostic;
|
||||
bool mHasTabVideoSource;
|
||||
|
||||
// Store devices we've already seen in a hashtable for quick return.
|
||||
|
|
|
@ -237,25 +237,9 @@ MediaConduitErrorCode WebrtcAudioConduit::Init()
|
|||
return kMediaConduitSessionNotInited;
|
||||
}
|
||||
#endif
|
||||
webrtc::Config config;
|
||||
bool aec_extended_filter = true; // Always default to the extended filter length
|
||||
#if !defined(MOZILLA_EXTERNAL_LINKAGE)
|
||||
bool aec_delay_agnostic = false;
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
prefs->GetBoolPref("media.getusermedia.aec_extended_filter", &aec_extended_filter);
|
||||
rv = prefs->GetBoolPref("media.getusermedia.aec_delay_agnostic", &aec_delay_agnostic);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
// Only override platform setting if pref is defined.
|
||||
config.Set<webrtc::DelayAgnostic>(new webrtc::DelayAgnostic(aec_delay_agnostic));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
config.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(aec_extended_filter));
|
||||
|
||||
// Per WebRTC APIs below function calls return nullptr on failure
|
||||
if(!(mVoiceEngine = webrtc::VoiceEngine::Create(config)))
|
||||
if(!(mVoiceEngine = webrtc::VoiceEngine::Create()))
|
||||
{
|
||||
CSFLogError(logTag, "%s Unable to create voice engine", __FUNCTION__);
|
||||
return kMediaConduitSessionNotInited;
|
||||
|
|
Загрузка…
Ссылка в новой задаче