NetEq4: Making a few more members scoped_ptrs

This CL converts a few members in NetEqImpl form regular pointers
to scoped_ptrs.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2245004

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4783 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/modules/audio_coding/neteq4/neteq_impl.cc b/modules/audio_coding/neteq4/neteq_impl.cc
index 77bb77e..be934ab 100644
--- a/modules/audio_coding/neteq4/neteq_impl.cc
+++ b/modules/audio_coding/neteq4/neteq_impl.cc
@@ -117,19 +117,13 @@
 
 NetEqImpl::~NetEqImpl() {
   LOG(LS_INFO) << "Deleting NetEqImpl object.";
-  delete algorithm_buffer_;
-  delete sync_buffer_;
-  delete background_noise_;
-  delete expand_;
-  delete comfort_noise_;
-  delete crit_sect_;
 }
 
 int NetEqImpl::InsertPacket(const WebRtcRTPHeader& rtp_header,
                             const uint8_t* payload,
                             int length_bytes,
                             uint32_t receive_timestamp) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   NETEQ_LOG_VERBOSE << "InsertPacket: ts=" << rtp_header.header.timestamp <<
       ", sn=" << rtp_header.header.sequenceNumber <<
       ", pt=" << static_cast<int>(rtp_header.header.payloadType) <<
@@ -148,7 +142,7 @@
 int NetEqImpl::GetAudio(size_t max_length, int16_t* output_audio,
                         int* samples_per_channel, int* num_channels,
                         NetEqOutputType* type) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   NETEQ_LOG_VERBOSE << "GetAudio";
   int error = GetAudioInternal(max_length, output_audio, samples_per_channel,
                                num_channels);
@@ -167,7 +161,7 @@
 
 int NetEqImpl::RegisterPayloadType(enum NetEqDecoder codec,
                                    uint8_t rtp_payload_type) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   LOG_API2(static_cast<int>(rtp_payload_type), codec);
   int ret = decoder_database_->RegisterPayload(rtp_payload_type, codec);
   if (ret != DecoderDatabase::kOK) {
@@ -194,7 +188,7 @@
                                        enum NetEqDecoder codec,
                                        int sample_rate_hz,
                                        uint8_t rtp_payload_type) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   LOG_API2(static_cast<int>(rtp_payload_type), codec);
   if (!decoder) {
     LOG(LS_ERROR) << "Cannot register external decoder with NULL pointer";
@@ -230,7 +224,7 @@
 }
 
 int NetEqImpl::RemovePayloadType(uint8_t rtp_payload_type) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   LOG_API1(static_cast<int>(rtp_payload_type));
   int ret = decoder_database_->Remove(rtp_payload_type);
   if (ret == DecoderDatabase::kOK) {
@@ -245,7 +239,7 @@
 }
 
 bool NetEqImpl::SetMinimumDelay(int delay_ms) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (delay_ms >= 0 && delay_ms < 10000) {
     assert(delay_manager_.get());
     return delay_manager_->SetMinimumDelay(delay_ms);
@@ -254,7 +248,7 @@
 }
 
 bool NetEqImpl::SetMaximumDelay(int delay_ms) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (delay_ms >= 0 && delay_ms < 10000) {
     assert(delay_manager_.get());
     return delay_manager_->SetMaximumDelay(delay_ms);
@@ -263,13 +257,13 @@
 }
 
 int NetEqImpl::LeastRequiredDelayMs() const {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   assert(delay_manager_.get());
   return delay_manager_->least_required_delay_ms();
 }
 
 void NetEqImpl::SetPlayoutMode(NetEqPlayoutMode mode) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (!decision_logic_.get() || mode != decision_logic_->playout_mode()) {
     // The reset() method calls delete for the old object.
     decision_logic_.reset(DecisionLogic::Create(fs_hz_, output_size_samples_,
@@ -282,13 +276,13 @@
 }
 
 NetEqPlayoutMode NetEqImpl::PlayoutMode() const {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   assert(decision_logic_.get());
   return decision_logic_->playout_mode();
 }
 
 int NetEqImpl::NetworkStatistics(NetEqNetworkStatistics* stats) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   assert(decoder_database_.get());
   const int total_samples_in_buffers = packet_buffer_->NumSamplesInBuffer(
       decoder_database_.get(), decoder_frame_length_) +
@@ -302,57 +296,57 @@
 }
 
 void NetEqImpl::WaitingTimes(std::vector<int>* waiting_times) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   stats_.WaitingTimes(waiting_times);
 }
 
 void NetEqImpl::GetRtcpStatistics(RtcpStatistics* stats) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (stats) {
     rtcp_.GetStatistics(false, stats);
   }
 }
 
 void NetEqImpl::GetRtcpStatisticsNoReset(RtcpStatistics* stats) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (stats) {
     rtcp_.GetStatistics(true, stats);
   }
 }
 
 void NetEqImpl::EnableVad() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   assert(vad_.get());
   vad_->Enable();
 }
 
 void NetEqImpl::DisableVad() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   assert(vad_.get());
   vad_->Disable();
 }
 
 uint32_t NetEqImpl::PlayoutTimestamp() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   return timestamp_scaler_->ToExternal(playout_timestamp_);
 }
 
 int NetEqImpl::LastError() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   return error_code_;
 }
 
 int NetEqImpl::LastDecoderError() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   return decoder_error_code_;
 }
 
 void NetEqImpl::FlushBuffers() {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   LOG_API0();
   packet_buffer_->Flush();
-  assert(sync_buffer_);
-  assert(expand_);
+  assert(sync_buffer_.get());
+  assert(expand_.get());
   sync_buffer_->Flush();
   sync_buffer_->set_next_index(sync_buffer_->next_index() -
                                expand_->overlap_length());
@@ -364,13 +358,13 @@
                                        int* max_num_packets,
                                        int* current_memory_size_bytes,
                                        int* max_memory_size_bytes) const {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   packet_buffer_->BufferStat(current_num_packets, max_num_packets,
                              current_memory_size_bytes, max_memory_size_bytes);
 }
 
 int NetEqImpl::DecodedRtpInfo(int* sequence_number, uint32_t* timestamp) {
-  CriticalSectionScoped lock(crit_sect_);
+  CriticalSectionScoped lock(crit_sect_.get());
   if (decoded_packet_sequence_number_ < 0)
     return -1;
   *sequence_number = decoded_packet_sequence_number_;
@@ -799,7 +793,7 @@
   packet_buffer_->IncrementWaitingTimes();
   stats_.IncreaseCounter(output_size_samples_, fs_hz_);
 
-  assert(sync_buffer_);
+  assert(sync_buffer_.get());
   uint32_t end_timestamp = sync_buffer_->end_timestamp();
   if (!new_codec_) {
     packet_buffer_->DiscardOldPackets(end_timestamp);
@@ -826,7 +820,7 @@
     }
   }
 
-  assert(expand_);
+  assert(expand_.get());
   const int samples_left = sync_buffer_->FutureLength() -
       expand_->overlap_length();
   if (last_mode_ == kModeAccelerateSuccess ||
@@ -845,8 +839,8 @@
   }
 
   // Get instruction.
-  assert(sync_buffer_);
-  assert(expand_);
+  assert(sync_buffer_.get());
+  assert(expand_.get());
   *operation = decision_logic_->GetDecision(*sync_buffer_,
                                             *expand_,
                                             decoder_frame_length_,
@@ -1223,7 +1217,7 @@
   assert(normal_.get());
   assert(mute_factor_array_.get());
   normal_->Process(decoded_buffer, decoded_length, last_mode_,
-                   mute_factor_array_.get(), algorithm_buffer_);
+                   mute_factor_array_.get(), algorithm_buffer_.get());
   if (decoded_length != 0) {
     last_mode_ = kModeNormal;
   }
@@ -1246,7 +1240,8 @@
   assert(mute_factor_array_.get());
   assert(merge_.get());
   int new_length = merge_->Process(decoded_buffer, decoded_length,
-                                   mute_factor_array_.get(), algorithm_buffer_);
+                                   mute_factor_array_.get(),
+                                   algorithm_buffer_.get());
 
   // Update in-call and post-call statistics.
   if (expand_->MuteFactor(0) == 0) {
@@ -1272,7 +1267,7 @@
   while ((sync_buffer_->FutureLength() - expand_->overlap_length()) <
       static_cast<size_t>(output_size_samples_)) {
     algorithm_buffer_->Clear();
-    int return_value = expand_->Process(algorithm_buffer_);
+    int return_value = expand_->Process(algorithm_buffer_.get());
     int length = algorithm_buffer_->Size();
 
     // Update in-call and post-call statistics.
@@ -1319,10 +1314,9 @@
   }
 
   int16_t samples_removed;
-  Accelerate::ReturnCodes return_code = accelerate_->Process(decoded_buffer,
-                                                             decoded_length,
-                                                             algorithm_buffer_,
-                                                             &samples_removed);
+  Accelerate::ReturnCodes return_code = accelerate_->Process(
+      decoded_buffer, decoded_length, algorithm_buffer_.get(),
+      &samples_removed);
   stats_.AcceleratedSamples(samples_removed);
   switch (return_code) {
     case Accelerate::kSuccess:
@@ -1401,7 +1395,7 @@
   int16_t samples_added;
   PreemptiveExpand::ReturnCodes return_code = preemptive_expand_->Process(
       decoded_buffer, decoded_length, old_borrowed_samples_per_channel,
-      algorithm_buffer_, &samples_added);
+      algorithm_buffer_.get(), &samples_added);
   stats_.PreemptiveExpandedSamples(samples_added);
   switch (return_code) {
     case PreemptiveExpand::kSuccess:
@@ -1478,7 +1472,7 @@
     }
   }
   int cn_return = comfort_noise_->Generate(output_size_samples_,
-                                           algorithm_buffer_);
+                                           algorithm_buffer_.get());
   expand_->Reset();
   last_mode_ = kModeRfc3389Cng;
   if (!play_dtmf) {
@@ -1507,7 +1501,7 @@
   }
   assert(mute_factor_array_.get());
   normal_->Process(decoded_buffer, length, last_mode_, mute_factor_array_.get(),
-                   algorithm_buffer_);
+                   algorithm_buffer_.get());
   last_mode_ = kModeCodecInternalCng;
   expand_->Reset();
 }
@@ -1540,7 +1534,7 @@
   if (dtmf_return_value == 0) {
     // Generate DTMF signal.
     dtmf_return_value = dtmf_tone_generator_->Generate(output_size_samples_,
-                                                       algorithm_buffer_);
+                                                       algorithm_buffer_.get());
   }
 
   if (dtmf_return_value < 0) {
@@ -1756,49 +1750,34 @@
   vad_->Init();
 
   // Delete algorithm buffer and create a new one.
-  if (algorithm_buffer_) {
-    delete algorithm_buffer_;
-  }
-  algorithm_buffer_ = new AudioMultiVector<int16_t>(channels);
+  algorithm_buffer_.reset(new AudioMultiVector<int16_t>(channels));
 
   // Delete sync buffer and create a new one.
-  if (sync_buffer_) {
-    delete sync_buffer_;
-  }
-  sync_buffer_ = new SyncBuffer(channels, kSyncBufferSize * fs_mult_);
+  sync_buffer_.reset(new SyncBuffer(channels, kSyncBufferSize * fs_mult_));
 
   // Delete BackgroundNoise object and create a new one.
-  if (background_noise_) {
-    delete background_noise_;
-  }
-  background_noise_ = new BackgroundNoise(channels);
+  background_noise_.reset(new BackgroundNoise(channels));
 
   // Reset random vector.
   random_vector_.Reset();
 
   // Delete Expand object and create a new one.
-  if (expand_) {
-    delete expand_;
-  }
-  expand_ = new Expand(background_noise_, sync_buffer_, &random_vector_, fs_hz,
-                       channels);
+  expand_.reset(new Expand(background_noise_.get(), sync_buffer_.get(),
+                           &random_vector_, fs_hz, channels));
   // Move index so that we create a small set of future samples (all 0).
   sync_buffer_->set_next_index(sync_buffer_->next_index() -
                                expand_->overlap_length());
 
   normal_.reset(new Normal(fs_hz, decoder_database_.get(), *background_noise_,
-                           expand_));
-  merge_.reset(new Merge(fs_hz, channels, expand_, sync_buffer_));
+                           expand_.get()));
+  merge_.reset(new Merge(fs_hz, channels, expand_.get(), sync_buffer_.get()));
   accelerate_.reset(new Accelerate(fs_hz, channels, *background_noise_));
   preemptive_expand_.reset(new PreemptiveExpand(fs_hz, channels,
                                                 *background_noise_));
 
   // Delete ComfortNoise object and create a new one.
-  if (comfort_noise_) {
-    delete comfort_noise_;
-  }
-  comfort_noise_ = new ComfortNoise(fs_hz, decoder_database_.get(),
-                                    sync_buffer_);
+  comfort_noise_.reset(new ComfortNoise(fs_hz, decoder_database_.get(),
+                                        sync_buffer_.get()));
 
   // Verify that |decoded_buffer_| is long enough.
   if (decoded_buffer_length_ < kMaxFrameSize * channels) {
@@ -1814,7 +1793,7 @@
 
 NetEqOutputType NetEqImpl::LastOutputType() {
   assert(vad_.get());
-  assert(expand_);
+  assert(expand_.get());
   if (last_mode_ == kModeCodecInternalCng || last_mode_ == kModeRfc3389Cng) {
     return kOutputCNG;
   } else if (vad_->running() && !vad_->active_speech()) {
diff --git a/modules/audio_coding/neteq4/neteq_impl.h b/modules/audio_coding/neteq4/neteq_impl.h
index d504a11..60e644f 100644
--- a/modules/audio_coding/neteq4/neteq_impl.h
+++ b/modules/audio_coding/neteq4/neteq_impl.h
@@ -288,7 +288,7 @@
   // GetAudio().
   NetEqOutputType LastOutputType();
 
-  BackgroundNoise* background_noise_;
+  scoped_ptr<BackgroundNoise> background_noise_;
   scoped_ptr<BufferLevelFilter> buffer_level_filter_;
   scoped_ptr<DecoderDatabase> decoder_database_;
   scoped_ptr<DelayManager> delay_manager_;
@@ -300,15 +300,15 @@
   scoped_ptr<TimestampScaler> timestamp_scaler_;
   scoped_ptr<DecisionLogic> decision_logic_;
   scoped_ptr<PostDecodeVad> vad_;
-  AudioMultiVector<int16_t>* algorithm_buffer_;
-  SyncBuffer* sync_buffer_;
-  Expand* expand_;
+  scoped_ptr<AudioMultiVector<int16_t> > algorithm_buffer_;
+  scoped_ptr<SyncBuffer> sync_buffer_;
+  scoped_ptr<Expand> expand_;
   scoped_ptr<Normal> normal_;
   scoped_ptr<Merge> merge_;
   scoped_ptr<Accelerate> accelerate_;
   scoped_ptr<PreemptiveExpand> preemptive_expand_;
   RandomVector random_vector_;
-  ComfortNoise* comfort_noise_;
+  scoped_ptr<ComfortNoise> comfort_noise_;
   Rtcp rtcp_;
   StatisticsCalculator stats_;
   int fs_hz_;
@@ -329,7 +329,7 @@
   bool first_packet_;
   int error_code_;  // Store last error code.
   int decoder_error_code_;
-  CriticalSectionWrapper* crit_sect_;
+  scoped_ptr<CriticalSectionWrapper> crit_sect_;
 
   // These values are used by NACK module to estimate time-to-play of
   // a missing packet. Occasionally, NetEq might decide to decode more