From 81da488ab6c9c79e4a74e29d18c574285312241f Mon Sep 17 00:00:00 2001 From: aleloi Date: Tue, 8 Nov 2016 04:26:30 -0800 Subject: [PATCH] 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} --- webrtc/api/BUILD.gn | 1 + webrtc/api/api.gyp | 1 + webrtc/api/call/audio_state.h | 6 ++++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/webrtc/api/BUILD.gn b/webrtc/api/BUILD.gn index 8a7ca03608..cf3073d500 100644 --- a/webrtc/api/BUILD.gn +++ b/webrtc/api/BUILD.gn @@ -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", diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp index b50dfd5683..70efb5a27e 100644 --- a/webrtc/api/api.gyp +++ b/webrtc/api/api.gyp @@ -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', diff --git a/webrtc/api/call/audio_state.h b/webrtc/api/call/audio_state.h index ac912773aa..1941cbf7bc 100644 --- a/webrtc/api/call/audio_state.h +++ b/webrtc/api/call/audio_state.h @@ -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 audio_mixer; }; // TODO(solenberg): Replace scoped_refptr with shared_ptr once we can use it.