VoE: cleanup VoEBaseImpl
Changes:
1. Removed _voiceEngineObserver boolean flag, because its value is equal to (_voiceEngineObserverPtr != NULL).
2. Removed WEBRTC_TRACE macro usage wherever it was unnecessary to log. Replaced its usage with LOG_F (new and preferred way to log messages) wherever it is useful to log.
3. Replaced asserts with CHECKs.
Discussion:
To make it easier to review the changes, I didn't reformat the code to make it compliant to the new coding standards. It is up for debate how much reformatting to do: the whole file/class or just the methods that I have touched. My vote - go for the whole class.
R=henrika@webrtc.org, kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/51579004
Cr-Commit-Position: refs/heads/master@{#8983}
diff --git a/webrtc/voice_engine/voe_base_impl.cc b/webrtc/voice_engine/voe_base_impl.cc
index 72bbad8..ef253ec 100644
--- a/webrtc/voice_engine/voe_base_impl.cc
+++ b/webrtc/voice_engine/voe_base_impl.cc
@@ -10,6 +10,7 @@
#include "webrtc/voice_engine/voe_base_impl.h"
+#include "webrtc/base/checks.h"
#include "webrtc/common.h"
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
#include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
@@ -17,7 +18,7 @@
#include "webrtc/modules/audio_processing/include/audio_processing.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/file_wrapper.h"
-#include "webrtc/system_wrappers/interface/trace.h"
+#include "webrtc/system_wrappers/interface/logging.h"
#include "webrtc/voice_engine/channel.h"
#include "webrtc/voice_engine/include/voe_errors.h"
#include "webrtc/voice_engine/output_mixer.h"
@@ -42,78 +43,55 @@
VoEBaseImpl::VoEBaseImpl(voe::SharedData* shared) :
_voiceEngineObserverPtr(NULL),
_callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
- _voiceEngineObserver(false), _shared(shared)
+ _shared(shared)
{
- WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl() - ctor");
}
VoEBaseImpl::~VoEBaseImpl()
{
- WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "~VoEBaseImpl() - dtor");
-
TerminateInternal();
-
delete &_callbackCritSect;
}
void VoEBaseImpl::OnErrorIsReported(ErrorCode error)
{
CriticalSectionScoped cs(&_callbackCritSect);
- if (_voiceEngineObserver)
+ int errCode = 0;
+ if (error == AudioDeviceObserver::kRecordingError)
{
- if (_voiceEngineObserverPtr)
- {
- int errCode(0);
- if (error == AudioDeviceObserver::kRecordingError)
- {
- errCode = VE_RUNTIME_REC_ERROR;
- WEBRTC_TRACE(kTraceInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::OnErrorIsReported() => VE_RUNTIME_REC_ERROR");
- }
- else if (error == AudioDeviceObserver::kPlayoutError)
- {
- errCode = VE_RUNTIME_PLAY_ERROR;
- WEBRTC_TRACE(kTraceInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::OnErrorIsReported() => "
- "VE_RUNTIME_PLAY_ERROR");
- }
- // Deliver callback (-1 <=> no channel dependency)
- _voiceEngineObserverPtr->CallbackOnError(-1, errCode);
- }
+ errCode = VE_RUNTIME_REC_ERROR;
+ LOG_F(LS_ERROR) << "VE_RUNTIME_REC_ERROR";
+ }
+ else if (error == AudioDeviceObserver::kPlayoutError)
+ {
+ errCode = VE_RUNTIME_PLAY_ERROR;
+ LOG_F(LS_ERROR) << "VE_RUNTIME_PLAY_ERROR";
+ }
+ if (_voiceEngineObserverPtr)
+ {
+ // Deliver callback (-1 <=> no channel dependency)
+ _voiceEngineObserverPtr->CallbackOnError(-1, errCode);
}
}
void VoEBaseImpl::OnWarningIsReported(WarningCode warning)
{
CriticalSectionScoped cs(&_callbackCritSect);
- if (_voiceEngineObserver)
+ int warningCode = 0;
+ if (warning == AudioDeviceObserver::kRecordingWarning)
{
- if (_voiceEngineObserverPtr)
- {
- int warningCode(0);
- if (warning == AudioDeviceObserver::kRecordingWarning)
- {
- warningCode = VE_RUNTIME_REC_WARNING;
- WEBRTC_TRACE(kTraceInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::OnErrorIsReported() => "
- "VE_RUNTIME_REC_WARNING");
- }
- else if (warning == AudioDeviceObserver::kPlayoutWarning)
- {
- warningCode = VE_RUNTIME_PLAY_WARNING;
- WEBRTC_TRACE(kTraceInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::OnErrorIsReported() => "
- "VE_RUNTIME_PLAY_WARNING");
- }
- // Deliver callback (-1 <=> no channel dependency)
- _voiceEngineObserverPtr->CallbackOnError(-1, warningCode);
- }
+ warningCode = VE_RUNTIME_REC_WARNING;
+ LOG_F(LS_WARNING) << "VE_RUNTIME_REC_WARNING";
+ }
+ else if (warning == AudioDeviceObserver::kPlayoutWarning)
+ {
+ warningCode = VE_RUNTIME_PLAY_WARNING;
+ LOG_F(LS_WARNING) << "VE_RUNTIME_PLAY_WARNING";
+ }
+ if (_voiceEngineObserverPtr)
+ {
+ // Deliver callback (-1 <=> no channel dependency)
+ _voiceEngineObserverPtr->CallbackOnError(-1, warningCode);
}
}
@@ -129,16 +107,9 @@
bool keyPressed,
uint32_t& newMicLevel)
{
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::RecordedDataIsAvailable(nSamples=%u, "
- "nBytesPerSample=%u, nChannels=%u, samplesPerSec=%u, "
- "totalDelayMS=%u, clockDrift=%d, micLevel=%u)",
- nSamples, nBytesPerSample, nChannels, samplesPerSec,
- totalDelayMS, clockDrift, micLevel);
newMicLevel = static_cast<uint32_t>(ProcessRecordedDataWithAPM(
NULL, 0, audioSamples, samplesPerSec, nChannels, nSamples,
totalDelayMS, clockDrift, micLevel, keyPressed));
-
return 0;
}
@@ -152,18 +123,11 @@
int64_t* elapsed_time_ms,
int64_t* ntp_time_ms)
{
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::NeedMorePlayData(nSamples=%u, "
- "nBytesPerSample=%d, nChannels=%d, samplesPerSec=%u)",
- nSamples, nBytesPerSample, nChannels, samplesPerSec);
-
GetPlayoutData(static_cast<int>(samplesPerSec),
static_cast<int>(nChannels),
static_cast<int>(nSamples), true, audioSamples,
elapsed_time_ms, ntp_time_ms);
-
nSamplesOut = _audioFrame.samples_per_channel_;
-
return 0;
}
@@ -177,14 +141,6 @@
int volume,
bool key_pressed,
bool need_audio_processing) {
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::OnDataAvailable(number_of_voe_channels=%d, "
- "sample_rate=%d, number_of_channels=%d, number_of_frames=%d, "
- "audio_delay_milliseconds=%d, volume=%d, "
- "key_pressed=%d, need_audio_processing=%d)",
- number_of_voe_channels, sample_rate, number_of_channels,
- number_of_frames, audio_delay_milliseconds, volume,
- key_pressed, need_audio_processing);
if (number_of_voe_channels == 0)
return 0;
@@ -239,8 +195,8 @@
void* audio_data,
int64_t* elapsed_time_ms,
int64_t* ntp_time_ms) {
- assert(bits_per_sample == 16);
- assert(number_of_frames == static_cast<int>(sample_rate / 100));
+ CHECK_EQ(bits_per_sample, 16);
+ CHECK_EQ(number_of_frames, static_cast<int>(sample_rate / 100));
GetPlayoutData(sample_rate, number_of_channels, number_of_frames, false,
audio_data, elapsed_time_ms, ntp_time_ms);
@@ -248,8 +204,6 @@
int VoEBaseImpl::RegisterVoiceEngineObserver(VoiceEngineObserver& observer)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "RegisterVoiceEngineObserver(observer=0x%d)", &observer);
CriticalSectionScoped cs(&_callbackCritSect);
if (_voiceEngineObserverPtr)
{
@@ -266,17 +220,12 @@
}
_shared->transmit_mixer()->RegisterVoiceEngineObserver(observer);
-
_voiceEngineObserverPtr = &observer;
- _voiceEngineObserver = true;
-
return 0;
}
int VoEBaseImpl::DeRegisterVoiceEngineObserver()
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "DeRegisterVoiceEngineObserver()");
CriticalSectionScoped cs(&_callbackCritSect);
if (!_voiceEngineObserverPtr)
{
@@ -285,7 +234,6 @@
return 0;
}
- _voiceEngineObserver = false;
_voiceEngineObserverPtr = NULL;
// Deregister the observer in all active channels
@@ -301,8 +249,6 @@
int VoEBaseImpl::Init(AudioDeviceModule* external_adm,
AudioProcessing* audioproc)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "Init(external_adm=0x%p)", external_adm);
CriticalSectionScoped cs(_shared->crit_sec());
WebRtcSpl_Init();
@@ -336,8 +282,8 @@
{
// Use the already existing external ADM implementation.
_shared->set_audio_device(external_adm);
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "An external ADM implementation will be used in VoiceEngine");
+ LOG_F(LS_INFO) <<
+ "An external ADM implementation will be used in VoiceEngine";
}
// Register the ADM to the process thread, which will drive the error
@@ -480,15 +426,11 @@
int VoEBaseImpl::Terminate()
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "Terminate()");
CriticalSectionScoped cs(_shared->crit_sec());
return TerminateInternal();
}
int VoEBaseImpl::CreateChannel() {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "CreateChannel()");
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized()) {
_shared->SetLastError(VE_NOT_INITED, kTraceError);
@@ -496,7 +438,6 @@
}
voe::ChannelOwner channel_owner = _shared->channel_manager().CreateChannel();
-
return InitializeChannel(&channel_owner);
}
@@ -540,18 +481,12 @@
return -1;
}
- WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "CreateChannel() => %d", channel_owner->channel()->ChannelId());
return channel_owner->channel()->ChannelId();
}
int VoEBaseImpl::DeleteChannel(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "DeleteChannel(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
-
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
@@ -586,8 +521,6 @@
int VoEBaseImpl::StartReceive(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StartReceive(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -607,8 +540,6 @@
int VoEBaseImpl::StopReceive(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StopListen(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -628,8 +559,6 @@
int VoEBaseImpl::StartPlayout(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StartPlayout(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -659,8 +588,6 @@
int VoEBaseImpl::StopPlayout(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StopPlayout(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -677,17 +604,14 @@
}
if (channelPtr->StopPlayout() != 0)
{
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StopPlayout() failed to stop playout for channel %d", channel);
+ LOG_F(LS_WARNING)
+ << "StopPlayout() failed to stop playout for channel " << channel;
}
return StopPlayout();
}
int VoEBaseImpl::StartSend(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StartSend(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -717,8 +641,6 @@
int VoEBaseImpl::StopSend(int channel)
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StopSend(channel=%d)", channel);
CriticalSectionScoped cs(_shared->crit_sec());
if (!_shared->statistics().Initialized())
{
@@ -735,18 +657,15 @@
}
if (channelPtr->StopSend() != 0)
{
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StopSend() failed to stop sending for channel %d", channel);
+ LOG_F(LS_WARNING)
+ << "StopSend() failed to stop sending for channel " << channel;
}
return StopSend();
}
int VoEBaseImpl::GetVersion(char version[1024])
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "GetVersion(version=?)");
- assert(kVoiceEngineVersionMaxMessageSize == 1024);
+ CHECK_EQ(kVoiceEngineVersionMaxMessageSize, 1024);
if (version == NULL)
{
@@ -767,7 +686,7 @@
}
versionPtr += len;
accLen += len;
- assert(accLen < kVoiceEngineVersionMaxMessageSize);
+ CHECK_LT(accLen, kVoiceEngineVersionMaxMessageSize);
#ifdef WEBRTC_EXTERNAL_TRANSPORT
len = AddExternalTransportBuild(versionPtr);
@@ -777,7 +696,7 @@
}
versionPtr += len;
accLen += len;
- assert(accLen < kVoiceEngineVersionMaxMessageSize);
+ CHECK_LT(accLen, kVoiceEngineVersionMaxMessageSize);
#endif
memcpy(version, versionBuf, accLen);
@@ -785,8 +704,6 @@
// to avoid the truncation in the trace, split the string into parts
char partOfVersion[256];
- WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1), "GetVersion() =>");
for (int partStart = 0; partStart < accLen;)
{
memset(partOfVersion, 0, sizeof(partOfVersion));
@@ -804,8 +721,6 @@
memcpy(partOfVersion, &version[partStart], accLen - partStart);
}
partStart = partEnd;
- WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
- VoEId(_shared->instance_id(), -1), "%s", partOfVersion);
}
return 0;
@@ -825,15 +740,11 @@
int VoEBaseImpl::LastError()
{
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "LastError()");
return (_shared->statistics().LastError());
}
int32_t VoEBaseImpl::StartPlayout()
{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::StartPlayout()");
if (_shared->audio_device()->Playing())
{
return 0;
@@ -842,16 +753,12 @@
{
if (_shared->audio_device()->InitPlayout() != 0)
{
- WEBRTC_TRACE(kTraceError, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StartPlayout() failed to initialize playout");
+ LOG_F(LS_ERROR) << "Failed to initialize playout";
return -1;
}
if (_shared->audio_device()->StartPlayout() != 0)
{
- WEBRTC_TRACE(kTraceError, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StartPlayout() failed to start playout");
+ LOG_F(LS_ERROR) << "Failed to start playout";
return -1;
}
}
@@ -859,10 +766,6 @@
}
int32_t VoEBaseImpl::StopPlayout() {
- WEBRTC_TRACE(kTraceInfo,
- kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::StopPlayout()");
// Stop audio-device playing if no channel is playing out
if (_shared->NumOfPlayingChannels() == 0) {
if (_shared->audio_device()->StopPlayout() != 0) {
@@ -877,8 +780,6 @@
int32_t VoEBaseImpl::StartSend()
{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::StartSend()");
if (_shared->audio_device()->Recording())
{
return 0;
@@ -887,16 +788,12 @@
{
if (_shared->audio_device()->InitRecording() != 0)
{
- WEBRTC_TRACE(kTraceError, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StartSend() failed to initialize recording");
+ LOG_F(LS_ERROR) << "Failed to initialize recording";
return -1;
}
if (_shared->audio_device()->StartRecording() != 0)
{
- WEBRTC_TRACE(kTraceError, kTraceVoice,
- VoEId(_shared->instance_id(), -1),
- "StartSend() failed to start recording");
+ LOG_F(LS_ERROR) << "Failed to start recording";
return -1;
}
}
@@ -906,9 +803,6 @@
int32_t VoEBaseImpl::StopSend()
{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::StopSend()");
-
if (_shared->NumOfSendingChannels() == 0 &&
!_shared->transmit_mixer()->IsRecordingMic())
{
@@ -927,9 +821,6 @@
int32_t VoEBaseImpl::TerminateInternal()
{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "VoEBaseImpl::TerminateInternal()");
-
// Delete any remaining channel objects
_shared->channel_manager().DestroyAllChannels();
@@ -991,8 +882,8 @@
int32_t clock_drift,
uint32_t volume,
bool key_pressed) {
- assert(_shared->transmit_mixer() != NULL);
- assert(_shared->audio_device() != NULL);
+ CHECK(_shared->transmit_mixer());
+ CHECK(_shared->audio_device());
uint32_t max_volume = 0;
uint16_t voe_mic_level = 0;
@@ -1059,7 +950,7 @@
void* audio_data,
int64_t* elapsed_time_ms,
int64_t* ntp_time_ms) {
- assert(_shared->output_mixer() != NULL);
+ CHECK(_shared->output_mixer());
// TODO(andrew): if the device is running in mono, we should tell the mixer
// here so that it will only request mono from AudioCodingModule.
@@ -1073,8 +964,8 @@
_shared->output_mixer()->GetMixedAudio(sample_rate, number_of_channels,
&_audioFrame);
- assert(number_of_frames == _audioFrame.samples_per_channel_);
- assert(sample_rate == _audioFrame.sample_rate_hz_);
+ CHECK_EQ(number_of_frames, _audioFrame.samples_per_channel_);
+ CHECK_EQ(sample_rate, _audioFrame.sample_rate_hz_);
// Deliver audio (PCM) samples to the ADM
memcpy(audio_data, _audioFrame.data_,
diff --git a/webrtc/voice_engine/voe_base_impl.h b/webrtc/voice_engine/voe_base_impl.h
index 2f37736..de6b44b 100644
--- a/webrtc/voice_engine/voe_base_impl.h
+++ b/webrtc/voice_engine/voe_base_impl.h
@@ -157,7 +157,6 @@
VoiceEngineObserver* _voiceEngineObserverPtr;
CriticalSectionWrapper& _callbackCritSect;
- bool _voiceEngineObserver;
AudioFrame _audioFrame;
voe::SharedData* _shared;
};