Index: talk/media/webrtc/webrtcvoiceengine.cc |
diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc |
index c81ecdf78e3bc61e1ae1ab58cab4fd0bd32188b2..721990a036bdf95a30f3013bfc5872d5af2147eb 100644 |
--- a/talk/media/webrtc/webrtcvoiceengine.cc |
+++ b/talk/media/webrtc/webrtcvoiceengine.cc |
@@ -55,10 +55,17 @@ |
#include "webrtc/common.h" |
#include "webrtc/modules/audio_processing/include/audio_processing.h" |
#include "webrtc/system_wrappers/include/field_trial.h" |
+#include "webrtc/system_wrappers/include/trace.h" |
namespace cricket { |
namespace { |
+const int kDefaultTraceFilter = webrtc::kTraceNone | webrtc::kTraceTerseInfo | |
+ webrtc::kTraceWarning | webrtc::kTraceError | |
+ webrtc::kTraceCritical; |
+const int kElevatedTraceFilter = kDefaultTraceFilter | webrtc::kTraceStateInfo | |
+ webrtc::kTraceInfo; |
+ |
const int kMaxNumPacketSize = 6; |
struct CodecPref { |
const char* name; |
@@ -185,25 +192,6 @@ void LogMultiline(rtc::LoggingSeverity sev, char* text) { |
} |
} |
-// Severity is an integer because it comes is assumed to be from command line. |
-int SeverityToFilter(int severity) { |
- int filter = webrtc::kTraceNone; |
- switch (severity) { |
- case rtc::LS_VERBOSE: |
- filter |= webrtc::kTraceAll; |
- FALLTHROUGH(); |
- case rtc::LS_INFO: |
- filter |= (webrtc::kTraceStateInfo | webrtc::kTraceInfo); |
- FALLTHROUGH(); |
- case rtc::LS_WARNING: |
- filter |= (webrtc::kTraceTerseInfo | webrtc::kTraceWarning); |
- FALLTHROUGH(); |
- case rtc::LS_ERROR: |
- filter |= (webrtc::kTraceError | webrtc::kTraceCritical); |
- } |
- return filter; |
-} |
- |
bool IsCodec(const AudioCodec& codec, const char* ref_name) { |
return (_stricmp(codec.name.c_str(), ref_name) == 0); |
} |
@@ -386,10 +374,6 @@ AudioOptions GetDefaultEngineOptions() { |
return options; |
} |
-std::string GetEnableString(bool enable) { |
- return enable ? "enable" : "disable"; |
-} |
- |
webrtc::AudioState::Config MakeAudioStateConfig(VoEWrapper* voe_wrapper) { |
webrtc::AudioState::Config config; |
config.voice_engine = voe_wrapper->engine(); |
@@ -413,30 +397,24 @@ std::vector<webrtc::RtpExtension> FindAudioRtpHeaderExtensions( |
WebRtcVoiceEngine::WebRtcVoiceEngine() |
: voe_wrapper_(new VoEWrapper()), |
- tracing_(new VoETraceWrapper()), |
- audio_state_(webrtc::AudioState::Create(MakeAudioStateConfig(voe()))), |
- log_filter_(SeverityToFilter(kDefaultLogSeverity)) { |
+ audio_state_(webrtc::AudioState::Create(MakeAudioStateConfig(voe()))) { |
Construct(); |
} |
-WebRtcVoiceEngine::WebRtcVoiceEngine(VoEWrapper* voe_wrapper, |
- VoETraceWrapper* tracing) |
- : voe_wrapper_(voe_wrapper), |
- tracing_(tracing), |
- log_filter_(SeverityToFilter(kDefaultLogSeverity)) { |
+WebRtcVoiceEngine::WebRtcVoiceEngine(VoEWrapper* voe_wrapper) |
+ : voe_wrapper_(voe_wrapper) { |
Construct(); |
} |
void WebRtcVoiceEngine::Construct() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
+ LOG(LS_VERBOSE) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
+ |
signal_thread_checker_.DetachFromThread(); |
std::memset(&default_agc_config_, 0, sizeof(default_agc_config_)); |
- SetTraceFilter(log_filter_); |
- LOG(LS_VERBOSE) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
- SetTraceOptions(""); |
- if (tracing_->SetTraceCallback(this) == -1) { |
- LOG_RTCERR0(SetTraceCallback); |
- } |
+ |
+ webrtc::Trace::set_level_filter(kDefaultTraceFilter); |
+ webrtc::Trace::SetTraceCallback(this); |
// Load our audio codec list. |
ConstructCodecs(); |
@@ -533,8 +511,7 @@ WebRtcVoiceEngine::~WebRtcVoiceEngine() { |
adm_->Release(); |
adm_ = NULL; |
} |
- |
- tracing_->SetTraceCallback(NULL); |
+ webrtc::Trace::SetTraceCallback(nullptr); |
} |
bool WebRtcVoiceEngine::Init(rtc::Thread* worker_thread) { |
@@ -554,20 +531,12 @@ bool WebRtcVoiceEngine::Init(rtc::Thread* worker_thread) { |
bool WebRtcVoiceEngine::InitInternal() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
// Temporarily turn logging level up for the Init call |
- int old_filter = log_filter_; |
- int extended_filter = log_filter_ | SeverityToFilter(rtc::LS_INFO); |
- SetTraceFilter(extended_filter); |
- SetTraceOptions(""); |
- |
- // Init WebRtc VoiceEngine. |
+ webrtc::Trace::set_level_filter(kElevatedTraceFilter); |
if (voe_wrapper_->base()->Init(adm_) == -1) { |
LOG_RTCERR0_EX(Init, voe_wrapper_->error()); |
- SetTraceFilter(old_filter); |
return false; |
} |
- |
- SetTraceFilter(old_filter); |
- SetTraceOptions(log_options_); |
+ webrtc::Trace::set_level_filter(kDefaultTraceFilter); |
// Log the VoiceEngine version info |
char buffer[1024] = ""; |
@@ -1142,78 +1111,11 @@ WebRtcVoiceEngine::rtp_header_extensions() const { |
return rtp_header_extensions_; |
} |
-void WebRtcVoiceEngine::SetLogging(int min_sev, const char* filter) { |
- RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
- // if min_sev == -1, we keep the current log level. |
- if (min_sev >= 0) { |
- SetTraceFilter(SeverityToFilter(min_sev)); |
- } |
- log_options_ = filter; |
- SetTraceOptions(initialized_ ? log_options_ : ""); |
-} |
- |
int WebRtcVoiceEngine::GetLastEngineError() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
return voe_wrapper_->error(); |
} |
-void WebRtcVoiceEngine::SetTraceFilter(int filter) { |
- RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
- log_filter_ = filter; |
- tracing_->SetTraceFilter(filter); |
-} |
- |
-// We suppport three different logging settings for VoiceEngine: |
-// 1. Observer callback that goes into talk diagnostic logfile. |
-// Use --logfile and --loglevel |
-// |
-// 2. Encrypted VoiceEngine log for debugging VoiceEngine. |
-// Use --voice_loglevel --voice_logfilter "tracefile file_name" |
-// |
-// 3. EC log and dump for debugging QualityEngine. |
-// Use --voice_loglevel --voice_logfilter "recordEC file_name" |
-// |
-// For more details see: "https://sites.google.com/a/google.com/wavelet/Home/ |
-// Magic-Flute--RTC-Engine-/Magic-Flute-Command-Line-Parameters" |
-void WebRtcVoiceEngine::SetTraceOptions(const std::string& options) { |
- RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
- // Set encrypted trace file. |
- std::vector<std::string> opts; |
- rtc::tokenize(options, ' ', '"', '"', &opts); |
- std::vector<std::string>::iterator tracefile = |
- std::find(opts.begin(), opts.end(), "tracefile"); |
- if (tracefile != opts.end() && ++tracefile != opts.end()) { |
- // Write encrypted debug output (at same loglevel) to file |
- // EncryptedTraceFile no longer supported. |
- if (tracing_->SetTraceFile(tracefile->c_str()) == -1) { |
- LOG_RTCERR1(SetTraceFile, *tracefile); |
- } |
- } |
- |
- // Allow trace options to override the trace filter. We default |
- // it to log_filter_ (as a translation of libjingle log levels) |
- // elsewhere, but this allows clients to explicitly set webrtc |
- // log levels. |
- std::vector<std::string>::iterator tracefilter = |
- std::find(opts.begin(), opts.end(), "tracefilter"); |
- if (tracefilter != opts.end() && ++tracefilter != opts.end()) { |
- if (!tracing_->SetTraceFilter(rtc::FromString<int>(*tracefilter))) { |
- LOG_RTCERR1(SetTraceFilter, *tracefilter); |
- } |
- } |
- |
- // Set AEC dump file |
- std::vector<std::string>::iterator recordEC = |
- std::find(opts.begin(), opts.end(), "recordEC"); |
- if (recordEC != opts.end()) { |
- ++recordEC; |
- if (recordEC != opts.end()) |
- StartAecDump(recordEC->c_str()); |
- else |
- StopAecDump(); |
- } |
-} |
- |
void WebRtcVoiceEngine::Print(webrtc::TraceLevel level, const char* trace, |
int length) { |
// Note: This callback can happen on any thread! |
@@ -1809,7 +1711,7 @@ bool WebRtcVoiceMediaChannel::SetSendCodecs( |
// Set Opus internal DTX. |
LOG(LS_INFO) << "Attempt to " |
- << GetEnableString(enable_opus_dtx) |
+ << (enable_opus_dtx ? "enable" : "disable") |
<< " Opus DTX on channel " |
<< channel; |
if (engine()->voe()->codec()->SetOpusDtx(channel, enable_opus_dtx)) { |