From eb524d997b877ba9b0bcaf8c85eae52bd40c37e3 Mon Sep 17 00:00:00 2001 From: "andrew@webrtc.org" Date: Mon, 23 Sep 2013 23:02:24 +0000 Subject: [PATCH] Remove deprecated AudioCodingModule::Destroy. Have Channel hold a pointer rather than reference, and shorten the name. TESTED=trybots R=turaj@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2256004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4820 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../main/acm2/acm_receiver_unittest.cc | 5 +- .../main/acm2/audio_coding_module.cc | 5 - .../main/interface/audio_coding_module.h | 5 +- webrtc/modules/utility/source/coder.cc | 1 - webrtc/modules/utility/source/coder.h | 3 +- webrtc/voice_engine/channel.cc | 139 +++++++++--------- webrtc/voice_engine/channel.h | 30 +--- 7 files changed, 78 insertions(+), 110 deletions(-) diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc index 6fa6743ba0..e03029b068 100644 --- a/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc +++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc @@ -49,7 +49,7 @@ class AcmReceiverTest : public AudioPacketizationCallback, void SetUp() { ASSERT_TRUE(receiver_.get() != NULL); - ASSERT_TRUE(acm_ != NULL); + ASSERT_TRUE(acm_.get() != NULL); for (int n = 0; n < ACMCodecDB::kNumCodecs; n++) { ASSERT_EQ(0, ACMCodecDB::Codec(n, &codecs_[n])); } @@ -69,7 +69,6 @@ class AcmReceiverTest : public AudioPacketizationCallback, } void TearDown() { - AudioCodingModule::Destroy(acm_); } void InsertOnePacketOfSilence(int codec_id) { @@ -145,7 +144,7 @@ class AcmReceiverTest : public AudioPacketizationCallback, scoped_ptr receiver_; CodecInst codecs_[ACMCodecDB::kMaxNumCodecs]; - AudioCodingModule* acm_; + scoped_ptr acm_; WebRtcRTPHeader rtp_header_; uint32_t timestamp_; bool packet_sent_; // Set when SendData is called reset when inserting audio. diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc index afb692037c..7acd49bdf5 100644 --- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc +++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc @@ -28,11 +28,6 @@ AudioCodingModule* AudioCodingModule::Create(int id, Clock* clock) { return new acm1::AudioCodingModuleImpl(id, clock); } -// Destroy module -void AudioCodingModule::Destroy(AudioCodingModule* module) { - delete module; -} - // Get number of supported codecs int AudioCodingModule::NumberOfCodecs() { return ACMCodecDB::kNumCodecs; diff --git a/webrtc/modules/audio_coding/main/interface/audio_coding_module.h b/webrtc/modules/audio_coding/main/interface/audio_coding_module.h index 007480945b..2f4776d754 100644 --- a/webrtc/modules/audio_coding/main/interface/audio_coding_module.h +++ b/webrtc/modules/audio_coding/main/interface/audio_coding_module.h @@ -82,16 +82,13 @@ class AudioCodingModule: public Module { // Creation and destruction of a ACM. // // The second method is used for testing where a simulated clock can be - // injected into ACM. ACM will take the owner ship of the object clock and + // injected into ACM. ACM will take the ownership of the object clock and // delete it when destroyed. // static AudioCodingModule* Create(int id); static AudioCodingModule* Create(int id, Clock* clock); virtual ~AudioCodingModule() {}; - // TODO(ajm): Deprecated. Remove all calls to this unneeded method. - static void Destroy(AudioCodingModule* module); - /////////////////////////////////////////////////////////////////////////// // Utility functions // diff --git a/webrtc/modules/utility/source/coder.cc b/webrtc/modules/utility/source/coder.cc index 86ed6c45c9..11a462abac 100644 --- a/webrtc/modules/utility/source/coder.cc +++ b/webrtc/modules/utility/source/coder.cc @@ -28,7 +28,6 @@ AudioCoder::AudioCoder(uint32_t instanceID) AudioCoder::~AudioCoder() { - AudioCodingModule::Destroy(_acm); } int32_t AudioCoder::SetEncodeCodec(const CodecInst& codecInst, diff --git a/webrtc/modules/utility/source/coder.h b/webrtc/modules/utility/source/coder.h index 07ede062da..ead1e22345 100644 --- a/webrtc/modules/utility/source/coder.h +++ b/webrtc/modules/utility/source/coder.h @@ -13,6 +13,7 @@ #include "webrtc/common_types.h" #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h" +#include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/typedefs.h" namespace webrtc { @@ -49,7 +50,7 @@ protected: const RTPFragmentationHeader* fragmentation); private: - AudioCodingModule* _acm; + scoped_ptr _acm; CodecInst _receiveCodec; diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index eda0ddcf49..0702d85bdd 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -469,11 +469,11 @@ Channel::OnInitializeDecoder( receiveCodec.rate = rate; strncpy(receiveCodec.plname, payloadName, RTP_PAYLOAD_NAME_SIZE - 1); - _audioCodingModule.Codec(payloadName, &dummyCodec, frequency, channels); + audio_coding_->Codec(payloadName, &dummyCodec, frequency, channels); receiveCodec.pacsize = dummyCodec.pacsize; // Register the new codec to the ACM - if (_audioCodingModule.RegisterReceiveCodec(receiveCodec) == -1) + if (audio_coding_->RegisterReceiveCodec(receiveCodec) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), @@ -625,9 +625,9 @@ Channel::OnReceivedPayloadData(const uint8_t* payloadData, } // Push the incoming payload (parsed and ready for decoding) into the ACM - if (_audioCodingModule.IncomingPacket(payloadData, - payloadSize, - *rtpHeader) != 0) + if (audio_coding_->IncomingPacket(payloadData, + payloadSize, + *rtpHeader) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceWarning, @@ -643,7 +643,7 @@ Channel::OnReceivedPayloadData(const uint8_t* payloadData, _rtpRtcpModule->RTT(rtp_receiver_->SSRC(), &round_trip_time, NULL, NULL, NULL); - std::vector nack_list = _audioCodingModule.GetNackList( + std::vector nack_list = audio_coding_->GetNackList( round_trip_time); if (!nack_list.empty()) { // Can't use nack_list.data() since it's not supported by all @@ -674,8 +674,8 @@ int32_t Channel::GetAudioFrame(int32_t id, AudioFrame& audioFrame) "Channel::GetAudioFrame(id=%d)", id); // Get 10ms raw PCM data from the ACM (mixer limits output frequency) - if (_audioCodingModule.PlayoutData10Ms(audioFrame.sample_rate_hz_, - &audioFrame) == -1) + if (audio_coding_->PlayoutData10Ms(audioFrame.sample_rate_hz_, + &audioFrame) == -1) { WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,_channelId), @@ -782,12 +782,12 @@ Channel::NeededFrequency(int32_t id) int highestNeeded = 0; // Determine highest needed receive frequency - int32_t receiveFrequency = _audioCodingModule.ReceiveFrequency(); + int32_t receiveFrequency = audio_coding_->ReceiveFrequency(); // Return the bigger of playout and receive frequency in the ACM. - if (_audioCodingModule.PlayoutFrequency() > receiveFrequency) + if (audio_coding_->PlayoutFrequency() > receiveFrequency) { - highestNeeded = _audioCodingModule.PlayoutFrequency(); + highestNeeded = audio_coding_->PlayoutFrequency(); } else { @@ -917,7 +917,7 @@ Channel::Channel(int32_t channelId, VoEModuleId(instanceId, channelId), Clock::GetRealTimeClock(), this, this, this, rtp_payload_registry_.get())), telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()), - _audioCodingModule(*config.Get().Create( + audio_coding_(config.Get().Create( VoEModuleId(instanceId, channelId))), _rtpDumpIn(*RtpDump::CreateRtpDump()), _rtpDumpOut(*RtpDump::CreateRtpDump()), @@ -1071,14 +1071,14 @@ Channel::~Channel() // 1. De-register callbacks in modules // 2. De-register modules in process thread // 3. Destroy modules - if (_audioCodingModule.RegisterTransportCallback(NULL) == -1) + if (audio_coding_->RegisterTransportCallback(NULL) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,_channelId), "~Channel() failed to de-register transport callback" " (Audio coding module)"); } - if (_audioCodingModule.RegisterVADCallback(NULL) == -1) + if (audio_coding_->RegisterVADCallback(NULL) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,_channelId), @@ -1092,10 +1092,6 @@ Channel::~Channel() VoEId(_instanceId,_channelId), "~Channel() failed to deregister RTP/RTCP module"); } - - // Destroy modules - AudioCodingModule::Destroy(&_audioCodingModule); - // End of modules shutdown // Delete other objects @@ -1140,12 +1136,12 @@ Channel::Init() } // --- ACM initialization - if ((_audioCodingModule.InitializeReceiver() == -1) || + if ((audio_coding_->InitializeReceiver() == -1) || #ifdef WEBRTC_CODEC_AVT // out-of-band Dtmf tones are played out by default - (_audioCodingModule.SetDtmfPlayoutStatus(true) == -1) || + (audio_coding_->SetDtmfPlayoutStatus(true) == -1) || #endif - (_audioCodingModule.InitializeSender() == -1)) + (audio_coding_->InitializeSender() == -1)) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1172,8 +1168,8 @@ Channel::Init() // --- Register all permanent callbacks const bool fail = - (_audioCodingModule.RegisterTransportCallback(this) == -1) || - (_audioCodingModule.RegisterVADCallback(this) == -1); + (audio_coding_->RegisterTransportCallback(this) == -1) || + (audio_coding_->RegisterVADCallback(this) == -1); if (fail) { @@ -1192,7 +1188,7 @@ Channel::Init() for (int idx = 0; idx < nSupportedCodecs; idx++) { // Open up the RTP/RTCP receiver for all supported codecs - if ((_audioCodingModule.Codec(idx, &codec) == -1) || + if ((audio_coding_->Codec(idx, &codec) == -1) || (rtp_receiver_->RegisterReceivePayload( codec.plname, codec.pltype, @@ -1227,7 +1223,7 @@ Channel::Init() if (!STR_CASE_CMP(codec.plname, "telephone-event")) { if ((_rtpRtcpModule->RegisterSendPayload(codec) == -1) || - (_audioCodingModule.RegisterReceiveCodec(codec) == -1)) + (audio_coding_->RegisterReceiveCodec(codec) == -1)) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,_channelId), @@ -1239,8 +1235,8 @@ Channel::Init() if (!STR_CASE_CMP(codec.plname, "CN")) { - if ((_audioCodingModule.RegisterSendCodec(codec) == -1) || - (_audioCodingModule.RegisterReceiveCodec(codec) == -1) || + if ((audio_coding_->RegisterSendCodec(codec) == -1) || + (audio_coding_->RegisterReceiveCodec(codec) == -1) || (_rtpRtcpModule->RegisterSendPayload(codec) == -1)) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, @@ -1255,7 +1251,7 @@ Channel::Init() // We will not receive an OnInitializeDecoder() callback for RED. if (!STR_CASE_CMP(codec.plname, "RED")) { - if (_audioCodingModule.RegisterReceiveCodec(codec) == -1) + if (audio_coding_->RegisterReceiveCodec(codec) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,_channelId), @@ -1537,7 +1533,7 @@ Channel::SetNetEQPlayoutMode(NetEqModes mode) playoutMode = off; break; } - if (_audioCodingModule.SetPlayoutMode(playoutMode) != 0) + if (audio_coding_->SetPlayoutMode(playoutMode) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1550,7 +1546,7 @@ Channel::SetNetEQPlayoutMode(NetEqModes mode) int32_t Channel::GetNetEQPlayoutMode(NetEqModes& mode) { - const AudioPlayoutMode playoutMode = _audioCodingModule.PlayoutMode(); + const AudioPlayoutMode playoutMode = audio_coding_->PlayoutMode(); switch (playoutMode) { case voice: @@ -1655,13 +1651,13 @@ Channel::DeRegisterVoiceEngineObserver() int32_t Channel::GetSendCodec(CodecInst& codec) { - return (_audioCodingModule.SendCodec(&codec)); + return (audio_coding_->SendCodec(&codec)); } int32_t Channel::GetRecCodec(CodecInst& codec) { - return (_audioCodingModule.ReceiveCodec(&codec)); + return (audio_coding_->ReceiveCodec(&codec)); } int32_t @@ -1670,7 +1666,7 @@ Channel::SetSendCodec(const CodecInst& codec) WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::SetSendCodec()"); - if (_audioCodingModule.RegisterSendCodec(codec) != 0) + if (audio_coding_->RegisterSendCodec(codec) != 0) { WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,_channelId), "SetSendCodec() failed to register codec to ACM"); @@ -1707,7 +1703,7 @@ Channel::SetVADStatus(bool enableVAD, ACMVADMode mode, bool disableDTX) "Channel::SetVADStatus(mode=%d)", mode); // To disable VAD, DTX must be disabled too disableDTX = ((enableVAD == false) ? true : disableDTX); - if (_audioCodingModule.SetVAD(!disableDTX, enableVAD, mode) != 0) + if (audio_coding_->SetVAD(!disableDTX, enableVAD, mode) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1722,7 +1718,7 @@ Channel::GetVADStatus(bool& enabledVAD, ACMVADMode& mode, bool& disabledDTX) { WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::GetVADStatus"); - if (_audioCodingModule.VAD(&disabledDTX, &enabledVAD, &mode) != 0) + if (audio_coding_->VAD(&disabledDTX, &enabledVAD, &mode) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1779,7 +1775,7 @@ Channel::SetRecPayloadType(const CodecInst& codec) "failed"); return -1; } - if (_audioCodingModule.UnregisterReceiveCodec(rxCodec.pltype) != 0) + if (audio_coding_->UnregisterReceiveCodec(rxCodec.pltype) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1811,10 +1807,10 @@ Channel::SetRecPayloadType(const CodecInst& codec) return -1; } } - if (_audioCodingModule.RegisterReceiveCodec(codec) != 0) + if (audio_coding_->RegisterReceiveCodec(codec) != 0) { - _audioCodingModule.UnregisterReceiveCodec(codec.pltype); - if (_audioCodingModule.RegisterReceiveCodec(codec) != 0) + audio_coding_->UnregisterReceiveCodec(codec.pltype); + if (audio_coding_->RegisterReceiveCodec(codec) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1904,7 +1900,7 @@ Channel::SetSendCNPayloadType(int type, PayloadFrequencies frequency) else if (frequency == kFreq16000Hz) samplingFreqHz = 16000; - if (_audioCodingModule.Codec("CN", &codec, samplingFreqHz, kMono) == -1) + if (audio_coding_->Codec("CN", &codec, samplingFreqHz, kMono) == -1) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1916,7 +1912,7 @@ Channel::SetSendCNPayloadType(int type, PayloadFrequencies frequency) // Modify the payload type (must be set to dynamic range) codec.pltype = type; - if (_audioCodingModule.RegisterSendCodec(codec) != 0) + if (audio_coding_->RegisterSendCodec(codec) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -1946,7 +1942,7 @@ Channel::SetISACInitTargetRate(int rateBps, bool useFixedFrameSize) "Channel::SetISACInitTargetRate()"); CodecInst sendCodec; - if (_audioCodingModule.SendCodec(&sendCodec) == -1) + if (audio_coding_->SendCodec(&sendCodec) == -1) { _engineStatisticsPtr->SetLastError( VE_CODEC_ERROR, kTraceError, @@ -1995,7 +1991,7 @@ Channel::SetISACInitTargetRate(int rateBps, bool useFixedFrameSize) initFrameSizeMsec = (uint8_t)(sendCodec.pacsize / 32); // 30ms } - if (_audioCodingModule.ConfigISACBandwidthEstimator( + if (audio_coding_->ConfigISACBandwidthEstimator( initFrameSizeMsec, rateBps, useFixedFrameSize) == -1) { _engineStatisticsPtr->SetLastError( @@ -2014,7 +2010,7 @@ Channel::SetISACMaxRate(int rateBps) "Channel::SetISACMaxRate()"); CodecInst sendCodec; - if (_audioCodingModule.SendCodec(&sendCodec) == -1) + if (audio_coding_->SendCodec(&sendCodec) == -1) { _engineStatisticsPtr->SetLastError( VE_CODEC_ERROR, kTraceError, @@ -2061,7 +2057,7 @@ Channel::SetISACMaxRate(int rateBps) // Set the maximum instantaneous rate of iSAC (works for both adaptive // and non-adaptive mode) - if (_audioCodingModule.SetISACMaxRate(rateBps) == -1) + if (audio_coding_->SetISACMaxRate(rateBps) == -1) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -2078,7 +2074,7 @@ Channel::SetISACMaxPayloadSize(int sizeBytes) WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::SetISACMaxPayloadSize()"); CodecInst sendCodec; - if (_audioCodingModule.SendCodec(&sendCodec) == -1) + if (audio_coding_->SendCodec(&sendCodec) == -1) { _engineStatisticsPtr->SetLastError( VE_CODEC_ERROR, kTraceError, @@ -2122,7 +2118,7 @@ Channel::SetISACMaxPayloadSize(int sizeBytes) return -1; } - if (_audioCodingModule.SetISACMaxPayloadSize(sizeBytes) == -1) + if (audio_coding_->SetISACMaxPayloadSize(sizeBytes) == -1) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -3151,7 +3147,7 @@ Channel::SetDtmfPlayoutStatus(bool enable) { WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::SetDtmfPlayoutStatus()"); - if (_audioCodingModule.SetDtmfPlayoutStatus(enable) != 0) + if (audio_coding_->SetDtmfPlayoutStatus(enable) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceWarning, @@ -3164,7 +3160,7 @@ Channel::SetDtmfPlayoutStatus(bool enable) bool Channel::DtmfPlayoutStatus() const { - return _audioCodingModule.DtmfPlayoutStatus(); + return audio_coding_->DtmfPlayoutStatus(); } int @@ -3962,8 +3958,7 @@ Channel::GetRTPStatistics( "RTP/RTCP module"); } - const int32_t playoutFrequency = - _audioCodingModule.PlayoutFrequency(); + const int32_t playoutFrequency = audio_coding_->PlayoutFrequency(); if (playoutFrequency > 0) { // Scale RTP statistics given the current playout frequency @@ -4169,7 +4164,7 @@ int Channel::SetFECStatus(bool enable, int redPayloadtype) { } } - if (_audioCodingModule.SetFECStatus(enable) != 0) { + if (audio_coding_->SetFECStatus(enable) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, "SetFECStatus() failed to set FEC state in the ACM"); @@ -4181,7 +4176,7 @@ int Channel::SetFECStatus(bool enable, int redPayloadtype) { int Channel::GetFECStatus(bool& enabled, int& redPayloadtype) { - enabled = _audioCodingModule.FECStatus(); + enabled = audio_coding_->FECStatus(); if (enabled) { int8_t payloadType(0); @@ -4211,9 +4206,9 @@ void Channel::SetNACKStatus(bool enable, int maxNumberOfPackets) { rtp_receive_statistics_->SetMaxReorderingThreshold(maxNumberOfPackets); rtp_receiver_->SetNACKStatus(enable ? kNackRtcp : kNackOff); if (enable) - _audioCodingModule.EnableNack(maxNumberOfPackets); + audio_coding_->EnableNack(maxNumberOfPackets); else - _audioCodingModule.DisableNack(); + audio_coding_->DisableNack(); } // Called when we are missing one or more packets. @@ -4525,7 +4520,7 @@ Channel::EncodeAndSend() // The ACM resamples internally. _audioFrame.timestamp_ = _timeStamp; - if (_audioCodingModule.Add10MsData((AudioFrame&)_audioFrame) != 0) + if (audio_coding_->Add10MsData((AudioFrame&)_audioFrame) != 0) { WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::EncodeAndSend() ACM encoding failed"); @@ -4538,7 +4533,7 @@ Channel::EncodeAndSend() // This call will trigger AudioPacketizationCallback::SendData if encoding // is done and payload is ready for packetization and transmission. - return _audioCodingModule.Process(); + return audio_coding_->Process(); } int Channel::RegisterExternalMediaProcessing( @@ -4702,7 +4697,7 @@ Channel::GetNetworkStatistics(NetworkStatistics& stats) WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::GetNetworkStatistics()"); ACMNetworkStatistics acm_stats; - int return_value = _audioCodingModule.NetworkStatistics(&acm_stats); + int return_value = audio_coding_->NetworkStatistics(&acm_stats); if (return_value >= 0) { memcpy(&stats, &acm_stats, sizeof(NetworkStatistics)); } @@ -4736,7 +4731,7 @@ int Channel::SetInitialPlayoutDelay(int delay_ms) "SetInitialPlayoutDelay() invalid min delay"); return -1; } - if (_audioCodingModule.SetInitialPlayoutDelay(delay_ms) != 0) + if (audio_coding_->SetInitialPlayoutDelay(delay_ms) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -4760,7 +4755,7 @@ Channel::SetMinimumPlayoutDelay(int delayMs) "SetMinimumPlayoutDelay() invalid min delay"); return -1; } - if (_audioCodingModule.SetMinimumPlayoutDelay(delayMs) != 0) + if (audio_coding_->SetMinimumPlayoutDelay(delayMs) != 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, @@ -4773,7 +4768,7 @@ Channel::SetMinimumPlayoutDelay(int delayMs) void Channel::UpdatePlayoutTimestamp(bool rtcp) { uint32_t playout_timestamp = 0; - if (_audioCodingModule.PlayoutTimestamp(&playout_timestamp) == -1) { + if (audio_coding_->PlayoutTimestamp(&playout_timestamp) == -1) { WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId,_channelId), "Channel::UpdatePlayoutTimestamp() failed to read playout" " timestamp from the ACM"); @@ -4794,9 +4789,9 @@ void Channel::UpdatePlayoutTimestamp(bool rtcp) { return; } - int32_t playout_frequency = _audioCodingModule.PlayoutFrequency(); + int32_t playout_frequency = audio_coding_->PlayoutFrequency(); CodecInst current_recive_codec; - if (_audioCodingModule.ReceiveCodec(¤t_recive_codec) == 0) { + if (audio_coding_->ReceiveCodec(¤t_recive_codec) == 0) { if (STR_CASE_CMP("G722", current_recive_codec.plname) == 0) { playout_frequency = 8000; } else if (STR_CASE_CMP("opus", current_recive_codec.plname) == 0) { @@ -5132,15 +5127,15 @@ void Channel::UpdatePacketDelay(uint32_t rtp_timestamp, rtp_timestamp, sequence_number); // Get frequency of last received payload - int rtp_receive_frequency = _audioCodingModule.ReceiveFrequency(); + int rtp_receive_frequency = audio_coding_->ReceiveFrequency(); CodecInst current_receive_codec; - if (_audioCodingModule.ReceiveCodec(¤t_receive_codec) != 0) { + if (audio_coding_->ReceiveCodec(¤t_receive_codec) != 0) { return; } // Update the least required delay. - least_required_delay_ms_ = _audioCodingModule.LeastRequiredDelayMs(); + least_required_delay_ms_ = audio_coding_->LeastRequiredDelayMs(); if (STR_CASE_CMP("G722", current_receive_codec.plname) == 0) { // Even though the actual sampling rate for G.722 audio is @@ -5202,7 +5197,7 @@ Channel::RegisterReceiveCodecsToRTPModule() for (int idx = 0; idx < nSupportedCodecs; idx++) { // Open up the RTP/RTCP receiver for all supported codecs - if ((_audioCodingModule.Codec(idx, &codec) == -1) || + if ((audio_coding_->Codec(idx, &codec) == -1) || (rtp_receiver_->RegisterReceivePayload( codec.plname, codec.pltype, @@ -5265,7 +5260,7 @@ int Channel::SetSecondarySendCodec(const CodecInst& codec, "SetSecondarySendCodec() Failed to register RED ACM"); return -1; } - if (_audioCodingModule.RegisterSecondarySendCodec(codec) < 0) { + if (audio_coding_->RegisterSecondarySendCodec(codec) < 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, "SetSecondarySendCodec() Failed to register secondary send codec in " @@ -5277,11 +5272,11 @@ int Channel::SetSecondarySendCodec(const CodecInst& codec, } void Channel::RemoveSecondarySendCodec() { - _audioCodingModule.UnregisterSecondarySendCodec(); + audio_coding_->UnregisterSecondarySendCodec(); } int Channel::GetSecondarySendCodec(CodecInst* codec) { - if (_audioCodingModule.SecondarySendCodec(codec) < 0) { + if (audio_coding_->SecondarySendCodec(codec) < 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, "GetSecondarySendCodec() Failed to get secondary sent codec from ACM"); @@ -5298,7 +5293,7 @@ int Channel::SetRedPayloadType(int red_payload_type) { // Get default RED settings from the ACM database const int num_codecs = AudioCodingModule::NumberOfCodecs(); for (int idx = 0; idx < num_codecs; idx++) { - _audioCodingModule.Codec(idx, &codec); + audio_coding_->Codec(idx, &codec); if (!STR_CASE_CMP(codec.plname, "RED")) { found_red = true; break; @@ -5313,7 +5308,7 @@ int Channel::SetRedPayloadType(int red_payload_type) { } codec.pltype = red_payload_type; - if (_audioCodingModule.RegisterSendCodec(codec) < 0) { + if (audio_coding_->RegisterSendCodec(codec) < 0) { _engineStatisticsPtr->SetLastError( VE_AUDIO_CODING_MODULE_ERROR, kTraceError, "SetRedPayloadType() RED registration in ACM module failed"); diff --git a/webrtc/voice_engine/channel.h b/webrtc/voice_engine/channel.h index 48e57469a8..2e5ac5317b 100644 --- a/webrtc/voice_engine/channel.h +++ b/webrtc/voice_engine/channel.h @@ -33,8 +33,8 @@ #include "webrtc/voice_engine/include/voe_dtmf.h" #endif -namespace webrtc -{ +namespace webrtc { + class AudioDeviceModule; class Config; class CriticalSectionWrapper; @@ -56,8 +56,8 @@ struct CallStatistics; struct ReportBlock; struct SenderInfo; -namespace voe -{ +namespace voe { + class Statistics; class TransmitMixer; class OutputMixer; @@ -77,7 +77,6 @@ class Channel: public: enum {KNumSocketThreads = 1}; enum {KNumberOfSocketBuffers = 8}; -public: virtual ~Channel(); static int32_t CreateChannel(Channel*& channel, int32_t channelId, @@ -95,7 +94,6 @@ public: CriticalSectionWrapper* callbackCritSect); int32_t UpdateLocalTimeStamp(); -public: // API methods // VoEBase @@ -288,7 +286,6 @@ public: unsigned short payloadSize); uint32_t LastRemoteTimeStamp() { return _lastRemoteTimeStamp; } -public: // From AudioPacketizationCallback in the ACM int32_t SendData(FrameType frameType, uint8_t payloadType, @@ -299,10 +296,8 @@ public: // From ACMVADCallback in the ACM int32_t InFrameType(int16_t frameType); -public: int32_t OnRxVadDetected(int vadDecision); -public: // From RtpData in the RTP/RTCP module int32_t OnReceivedPayloadData(const uint8_t* payloadData, uint16_t payloadSize, @@ -310,7 +305,6 @@ public: bool OnRecoveredPacket(const uint8_t* packet, int packet_length); -public: // From RtpFeedback in the RTP/RTCP module int32_t OnInitializeDecoder( int32_t id, @@ -335,7 +329,6 @@ public: void ResetStatistics(uint32_t ssrc); -public: // From RtcpFeedback in the RTP/RTCP module void OnApplicationDataReceived(int32_t id, uint8_t subType, @@ -343,7 +336,6 @@ public: uint16_t length, const uint8_t* data); -public: // From RtpAudioFeedback in the RTP/RTCP module void OnReceivedTelephoneEvent(int32_t id, uint8_t event, @@ -354,21 +346,17 @@ public: uint16_t lengthMs, uint8_t volume); -public: // From Transport (called by the RTP/RTCP module) int SendPacket(int /*channel*/, const void *data, int len); int SendRTCPPacket(int /*channel*/, const void *data, int len); -public: // From MixerParticipant int32_t GetAudioFrame(int32_t id, AudioFrame& audioFrame); int32_t NeededFrequency(int32_t id); -public: // From MonitorObserver void OnPeriodicProcess(); -public: // From FileCallback void PlayNotification(int32_t id, uint32_t durationMs); @@ -377,7 +365,6 @@ public: void PlayFileEnded(int32_t id); void RecordFileEnded(int32_t id); -public: uint32_t InstanceId() const { return _instanceId; @@ -457,23 +444,21 @@ private: int ApmProcessRx(AudioFrame& audioFrame); int SetRedPayloadType(int red_payload_type); -private: + CriticalSectionWrapper& _fileCritSect; CriticalSectionWrapper& _callbackCritSect; uint32_t _instanceId; int32_t _channelId; -private: scoped_ptr rtp_header_parser_; scoped_ptr rtp_payload_registry_; scoped_ptr rtp_receive_statistics_; scoped_ptr rtp_receiver_; TelephoneEventHandler* telephone_event_handler_; scoped_ptr _rtpRtcpModule; - AudioCodingModule& _audioCodingModule; + scoped_ptr audio_coding_; RtpDump& _rtpDumpIn; RtpDump& _rtpDumpOut; -private: AudioLevel _outputAudioLevel; bool _externalTransport; AudioFrame _audioFrame; @@ -509,7 +494,6 @@ private: uint16_t send_sequence_number_; uint8_t restored_packet_[kVoiceEngineMaxIpPacketSizeBytes]; - private: // uses Statistics* _engineStatisticsPtr; OutputMixer* _outputMixerPtr; @@ -527,7 +511,6 @@ private: int32_t _sendFrameType; // Send data is voice, 1-voice, 0-otherwise VoERTPObserver* _rtpObserverPtr; VoERTCPObserver* _rtcpObserverPtr; -private: // VoEBase bool _outputIsOnHold; bool _externalPlayout; @@ -581,7 +564,6 @@ private: }; } // namespace voe - } // namespace webrtc #endif // WEBRTC_VOICE_ENGINE_CHANNEL_H