Index: talk/media/webrtc/webrtcvoiceengine.h |
diff --git a/talk/media/webrtc/webrtcvoiceengine.h b/talk/media/webrtc/webrtcvoiceengine.h |
index d9caf085be034b4eeade84bc8d041b73d1cf5a82..b9b50bb93d47fc3bf97bfabb7d53d686c5bbeae5 100644 |
--- a/talk/media/webrtc/webrtcvoiceengine.h |
+++ b/talk/media/webrtc/webrtcvoiceengine.h |
@@ -37,6 +37,7 @@ |
#include "talk/media/webrtc/webrtccommon.h" |
#include "talk/media/webrtc/webrtcvoe.h" |
#include "talk/session/media/channel.h" |
+#include "webrtc/audio_state.h" |
#include "webrtc/base/buffer.h" |
#include "webrtc/base/byteorder.h" |
#include "webrtc/base/logging.h" |
@@ -57,9 +58,7 @@ class WebRtcVoiceMediaChannel; |
// WebRtcVoiceEngine is a class to be used with CompositeMediaEngine. |
// It uses the WebRtc VoiceEngine library for audio handling. |
-class WebRtcVoiceEngine |
- : public webrtc::VoiceEngineObserver, |
- public webrtc::TraceCallback { |
+class WebRtcVoiceEngine final : public webrtc::TraceCallback { |
friend class WebRtcVoiceMediaChannel; |
public: |
@@ -70,7 +69,7 @@ class WebRtcVoiceEngine |
bool Init(rtc::Thread* worker_thread); |
void Terminate(); |
- webrtc::VoiceEngine* GetVoE() { return voe()->engine(); } |
+ rtc::scoped_refptr<webrtc::AudioState> GetAudioState() const; |
VoiceMediaChannel* CreateChannel(webrtc::Call* call, |
const AudioOptions& options); |
@@ -133,9 +132,6 @@ class WebRtcVoiceEngine |
// webrtc::TraceCallback: |
void Print(webrtc::TraceLevel level, const char* trace, int length) override; |
- // webrtc::VoiceEngineObserver: |
- void CallbackOnError(int channel_id, int errCode) override; |
- |
// Given the device type, name, and id, find device id. Return true and |
// set the output parameter rtc_id if successful. |
bool FindWebRtcAudioDeviceId( |
@@ -146,25 +142,26 @@ class WebRtcVoiceEngine |
static const int kDefaultLogSeverity = rtc::LS_WARNING; |
+ rtc::ThreadChecker signal_thread_checker_; |
+ rtc::ThreadChecker worker_thread_checker_; |
+ |
// The primary instance of WebRtc VoiceEngine. |
rtc::scoped_ptr<VoEWrapper> voe_wrapper_; |
rtc::scoped_ptr<VoETraceWrapper> tracing_; |
+ rtc::scoped_refptr<webrtc::AudioState> audio_state_; |
// The external audio device manager |
- webrtc::AudioDeviceModule* adm_; |
+ webrtc::AudioDeviceModule* adm_ = nullptr; |
int log_filter_; |
std::string log_options_; |
- bool is_dumping_aec_; |
+ bool is_dumping_aec_ = false; |
std::vector<AudioCodec> codecs_; |
std::vector<RtpHeaderExtension> rtp_header_extensions_; |
std::vector<WebRtcVoiceMediaChannel*> channels_; |
- // channels_ can be read from WebRtc callback thread. We need a lock on that |
- // callback as well as the RegisterChannel/UnregisterChannel. |
- rtc::CriticalSection channels_cs_; |
webrtc::AgcConfig default_agc_config_; |
webrtc::Config voe_config_; |
- bool initialized_; |
+ bool initialized_ = false; |
AudioOptions options_; |
// Cache received extended_filter_aec, delay_agnostic_aec and experimental_ns |
@@ -180,8 +177,8 @@ class WebRtcVoiceEngine |
// WebRtcVoiceMediaChannel is an implementation of VoiceMediaChannel that uses |
// WebRtc Voice Engine. |
-class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
- public webrtc::Transport { |
+class WebRtcVoiceMediaChannel final : public VoiceMediaChannel, |
+ public webrtc::Transport { |
public: |
WebRtcVoiceMediaChannel(WebRtcVoiceEngine* engine, |
const AudioOptions& options, |
@@ -243,8 +240,6 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
return VoiceMediaChannel::SendRtcp(&packet, rtc::PacketOptions()); |
} |
- void OnError(int error); |
- |
int GetReceiveChannelId(uint32_t ssrc) const; |
int GetSendChannelId(uint32_t ssrc) const; |
@@ -267,7 +262,6 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
const std::vector<AudioCodec>& all_codecs, |
webrtc::CodecInst* send_codec); |
bool SetPlayout(int channel, bool playout); |
- static Error WebRtcErrorToChannelError(int err_code); |
typedef int (webrtc::VoERTP_RTCP::* ExtensionSetterFunction)(int, bool, |
unsigned char); |
@@ -300,23 +294,22 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
int channel_id, |
const std::vector<RtpHeaderExtension>& extensions); |
- rtc::ThreadChecker thread_checker_; |
+ rtc::ThreadChecker worker_thread_checker_; |
- WebRtcVoiceEngine* const engine_; |
+ WebRtcVoiceEngine* const engine_ = nullptr; |
std::vector<AudioCodec> recv_codecs_; |
std::vector<AudioCodec> send_codecs_; |
rtc::scoped_ptr<webrtc::CodecInst> send_codec_; |
- bool send_bitrate_setting_; |
- int send_bitrate_bps_; |
+ bool send_bitrate_setting_ = false; |
+ int send_bitrate_bps_ = 0; |
AudioOptions options_; |
- bool dtmf_allowed_; |
- bool desired_playout_; |
- bool nack_enabled_; |
- bool playout_; |
- bool typing_noise_detected_; |
- SendFlags desired_send_; |
- SendFlags send_; |
- webrtc::Call* const call_; |
+ bool dtmf_allowed_ = false; |
+ bool desired_playout_ = false; |
+ bool nack_enabled_ = false; |
+ bool playout_ = false; |
+ SendFlags desired_send_ = SEND_NOTHING; |
+ SendFlags send_ = SEND_NOTHING; |
+ webrtc::Call* const call_ = nullptr; |
// SSRC of unsignalled receive stream, or -1 if there isn't one. |
int64_t default_recv_ssrc_ = -1; |
@@ -342,7 +335,6 @@ class WebRtcVoiceMediaChannel : public VoiceMediaChannel, |
RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WebRtcVoiceMediaChannel); |
}; |
- |
} // namespace cricket |
#endif // TALK_MEDIA_WEBRTCVOICEENGINE_H_ |