Added audio mixer and removed audio device module in AudioState::Config.

The audio_device_module field was currently unused. The audio_mixer
field is going to be used to pass an AudioMixer to AudioState.

In the hopefully-not-very-far future, the toplevel WebRTC API will allow passing
a custom AudioMixer, e.g. for spatialized audio (audio in space). If no
mixer is passed, a default mixer is created (the one in modules/audio_mixer).

The only object which will have a permanent reference to the mixer is AudioState.
AudioState is created in WebRTCVoiceEngine with a configuration object,
which already contains a VoiceEngine pointer. In this CL, we extend this
config object with a mixer pointer.

In summary: in an upcoming CL, a mixer will be either created in or passed to
WebRTCVoiceEngine. This mixer will be passed to the ctor of AudioState in a
config struct.

BUG=webrtc:6346
NOTRY=True

Review-Url: https://codereview.webrtc.org/2456363002
Cr-Commit-Position: refs/heads/master@{#14973}
This commit is contained in:
aleloi 2016-11-08 04:26:30 -08:00 committed by Commit bot
parent 40532a1646
commit 81da488ab6
3 changed files with 6 additions and 2 deletions

View File

@ -36,6 +36,7 @@ rtc_source_set("call_api") {
deps = [
# TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
":audio_mixer_api",
"..:webrtc_common",
"../base:rtc_base_approved",
"../modules/audio_coding:audio_encoder_interface",

View File

@ -99,6 +99,7 @@
'type': 'static_library',
'dependencies': [
# TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
':audio_mixer_api',
'<(webrtc_root)/base/base.gyp:rtc_base_approved',
'<(webrtc_root)/common.gyp:webrtc_common',
'<(webrtc_root)/modules/modules.gyp:audio_encoder_interface',

View File

@ -10,6 +10,7 @@
#ifndef WEBRTC_API_CALL_AUDIO_STATE_H_
#define WEBRTC_API_CALL_AUDIO_STATE_H_
#include "webrtc/api/audio/audio_mixer.h"
#include "webrtc/base/refcount.h"
#include "webrtc/base/scoped_ref_ptr.h"
@ -33,8 +34,9 @@ class AudioState : public rtc::RefCountInterface {
// the AudioState itself.
VoiceEngine* voice_engine = nullptr;
// The AudioDeviceModule associated with the Calls.
AudioDeviceModule* audio_device_module = nullptr;
// The audio mixer connected to active receive streams. One per
// AudioState.
rtc::scoped_refptr<AudioMixer> audio_mixer;
};
// TODO(solenberg): Replace scoped_refptr with shared_ptr once we can use it.