Bug 1243857 - Enable duplex audio for Windows/WASAPI. r=jesup

MozReview-Commit-ID: 4h1JTGSHr2v
This commit is contained in:
Paul Adenot 2016-03-30 17:21:16 +02:00
Родитель 8728cc55d6
Коммит 850cb41501
3 изменённых файлов: 19 добавлений и 3 удалений

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

@ -12,6 +12,9 @@
#include "prenv.h"
#include "mozilla/Logging.h"
#ifdef XP_WIN
#include "mozilla/WindowsVersion.h"
#endif
static mozilla::LogModule*
GetUserMediaLog()
@ -290,6 +293,16 @@ MediaEngineWebRTC::EnumerateVideoDevices(dom::MediaSourceEnum aMediaSource,
#endif
}
bool
MediaEngineWebRTC::SupportsDuplex()
{
#ifndef XP_WIN
return mFullDuplex;
#else
return IsVistaOrLater() && mFullDuplex;
#endif
}
void
MediaEngineWebRTC::EnumerateAudioDevices(dom::MediaSourceEnum aMediaSource,
nsTArray<RefPtr<MediaEngineAudioSource> >* aASources)
@ -339,7 +352,7 @@ MediaEngineWebRTC::EnumerateAudioDevices(dom::MediaSourceEnum aMediaSource,
}
if (!mAudioInput) {
if (mFullDuplex) {
if (SupportsDuplex()) {
// The platform_supports_full_duplex.
mAudioInput = new mozilla::AudioInputCubeb(mVoiceEngine);
} else {
@ -383,7 +396,7 @@ MediaEngineWebRTC::EnumerateAudioDevices(dom::MediaSourceEnum aMediaSource,
aASources->AppendElement(aSource.get());
} else {
AudioInput* audioinput = mAudioInput;
if (mFullDuplex) {
if (SupportsDuplex()) {
// The platform_supports_full_duplex.
// For cubeb, it has state (the selected ID)

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

@ -551,6 +551,9 @@ public:
// before invoking Shutdown on this class.
void Shutdown() override;
// Returns whether the host supports duplex audio stream.
bool SupportsDuplex();
void EnumerateVideoDevices(dom::MediaSourceEnum,
nsTArray<RefPtr<MediaEngineVideoSource>>*) override;
void EnumerateAudioDevices(dom::MediaSourceEnum,

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

@ -446,7 +446,7 @@ pref("media.navigator.audio.full_duplex", false);
#elif defined(XP_WIN)
pref("media.peerconnection.capture_delay", 50);
pref("media.getusermedia.playout_delay", 40);
pref("media.navigator.audio.full_duplex", false);
pref("media.navigator.audio.full_duplex", true);
#elif defined(ANDROID)
pref("media.peerconnection.capture_delay", 100);
pref("media.getusermedia.playout_delay", 100);