Bug 1265641: Move AEC tail length and delay-agnostic settings to getUserMedia r=padenot

MozReview-Commit-ID: 6vHQlmt9lxR
This commit is contained in:
Randell Jesup 2016-04-19 20:20:45 -04:00
Родитель cc6d1d9827
Коммит 90f6a18287
5 изменённых файлов: 24 добавлений и 21 удалений

Просмотреть файл

@ -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;