Changing non-const reference arguments to pointers, ACM

Part of refactoring of ACM, and recent lint-warnings.
This CL changes non-const references in the ACM API to pointers.

BUG=issue1372

Committed: https://code.google.com/p/webrtc/source/detail?r=3543

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3555 4adac7df-926f-26a2-2b94-8c16560cd09d
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 236c077..11c2556 100644
--- a/webrtc/modules/audio_coding/main/interface/audio_coding_module.h
+++ b/webrtc/modules/audio_coding/main/interface/audio_coding_module.h
@@ -111,7 +111,7 @@
   //   -1 if the list number (list_id) is invalid.
   //    0 if succeeded.
   //
-  static WebRtc_Word32 Codec(const WebRtc_UWord8 list_id, CodecInst& codec);
+  static WebRtc_Word32 Codec(WebRtc_UWord8 list_id, CodecInst* codec);
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 Codec()
@@ -132,7 +132,7 @@
   //   -1 if no codec matches the given parameters.
   //    0 if succeeded.
   //
-  static WebRtc_Word32 Codec(const char* payload_name, CodecInst& codec,
+  static WebRtc_Word32 Codec(const char* payload_name, CodecInst* codec,
                              int sampling_freq_hz, int channels);
 
   ///////////////////////////////////////////////////////////////////////////
@@ -264,7 +264,7 @@
   //   -1 if failed to get send codec,
   //    0 if succeeded.
   //
-  virtual WebRtc_Word32 SendCodec(CodecInst& current_send_codec) const = 0;
+  virtual WebRtc_Word32 SendCodec(CodecInst* current_send_codec) const = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // int SecondarySendCodec()
@@ -441,8 +441,8 @@
   //   -1 if fails to retrieve the setting of DTX/VAD,
   //    0 if succeeded.
   //
-  virtual WebRtc_Word32 VAD(bool& dtx_enabled, bool& vad_enabled,
-                            ACMVADMode& vad_mode) const = 0;
+  virtual WebRtc_Word32 VAD(bool* dtx_enabled, bool* vad_enabled,
+                            ACMVADMode* vad_mode) const = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 ReplaceInternalDTXWithWebRtc()
@@ -476,7 +476,7 @@
   //    0 if succeeded.
   //
   virtual WebRtc_Word32 IsInternalDTXReplacedWithWebRtc(
-      bool& uses_webrtc_dtx) = 0;
+      bool* uses_webrtc_dtx) = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 RegisterVADCallback()
@@ -589,7 +589,7 @@
   //   -1 if failed to retrieve the codec,
   //    0 if the codec is successfully retrieved.
   //
-  virtual WebRtc_Word32 ReceiveCodec(CodecInst& curr_receive_codec) const = 0;
+  virtual WebRtc_Word32 ReceiveCodec(CodecInst* curr_receive_codec) const = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 IncomingPacket()
@@ -729,7 +729,8 @@
   //    0 if the output is a valid mode.
   //   -1 if ACM failed to output a valid mode.
   //
-  virtual WebRtc_Word32 BackgroundNoiseMode(ACMBackgroundNoiseMode& mode) = 0;
+  // TODO(tlegrand): Change function to return the mode.
+  virtual WebRtc_Word32 BackgroundNoiseMode(ACMBackgroundNoiseMode* mode) = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 PlayoutTimestamp()
@@ -744,8 +745,8 @@
   //    0 if the output is a correct timestamp.
   //   -1 if failed to output the correct timestamp.
   //
-  //
-  virtual WebRtc_Word32 PlayoutTimestamp(WebRtc_UWord32& timestamp) = 0;
+  // TODO(tlegrand): Change function to return the timestamp.
+  virtual WebRtc_Word32 PlayoutTimestamp(WebRtc_UWord32* timestamp) = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   // WebRtc_Word32 DecoderEstimatedBandwidth()
@@ -817,9 +818,8 @@
   //   -1 if the function fails,
   //    0 if the function succeeds.
   //
-  virtual WebRtc_Word32
-      PlayoutData10Ms(const WebRtc_Word32 desired_freq_hz,
-                      AudioFrame &audio_frame) = 0;
+  virtual WebRtc_Word32 PlayoutData10Ms(WebRtc_Word32 desired_freq_hz,
+                                        AudioFrame* audio_frame) = 0;
 
   ///////////////////////////////////////////////////////////////////////////
   //   (CNG) Comfort Noise Generation
@@ -939,7 +939,7 @@
   //    0 if statistics are set successfully.
   //
   virtual WebRtc_Word32 NetworkStatistics(
-      ACMNetworkStatistics& network_statistics) const = 0;
+      ACMNetworkStatistics* network_statistics) const = 0;
 
   //
   // Set an initial delay for playout.
diff --git a/webrtc/modules/audio_coding/main/source/audio_coding_module.cc b/webrtc/modules/audio_coding/main/source/audio_coding_module.cc
index dc69762..91620b3 100644
--- a/webrtc/modules/audio_coding/main/source/audio_coding_module.cc
+++ b/webrtc/modules/audio_coding/main/source/audio_coding_module.cc
@@ -34,15 +34,15 @@
 }
 
 // Get supported codec param with id
-WebRtc_Word32 AudioCodingModule::Codec(const WebRtc_UWord8 list_id,
-                                       CodecInst& codec) {
+WebRtc_Word32 AudioCodingModule::Codec(WebRtc_UWord8 list_id,
+                                       CodecInst* codec) {
   // Get the codec settings for the codec with the given list ID
-  return ACMCodecDB::Codec(list_id, &codec);
+  return ACMCodecDB::Codec(list_id, codec);
 }
 
 // Get supported codec Param with name, frequency and number of channels.
 WebRtc_Word32 AudioCodingModule::Codec(const char* payload_name,
-                                       CodecInst& codec, int sampling_freq_hz,
+                                       CodecInst* codec, int sampling_freq_hz,
                                        int channels) {
   int codec_id;
 
@@ -51,20 +51,20 @@
   if (codec_id < 0) {
     // We couldn't find a matching codec, set the parameterss to unacceptable
     // values and return.
-    codec.plname[0] = '\0';
-    codec.pltype = -1;
-    codec.pacsize = 0;
-    codec.rate = 0;
-    codec.plfreq = 0;
+    codec->plname[0] = '\0';
+    codec->pltype = -1;
+    codec->pacsize = 0;
+    codec->rate = 0;
+    codec->plfreq = 0;
     return -1;
   }
 
   // Get default codec settings.
-  ACMCodecDB::Codec(codec_id, &codec);
+  ACMCodecDB::Codec(codec_id, codec);
 
   // Keep the number of channels from the function call. For most codecs it
   // will be the same value as in defaul codec settings, but not for all.
-  codec.channels = channels;
+  codec->channels = channels;
 
   return 0;
 }
diff --git a/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.cc b/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.cc
index 4211be8..ba7bde1 100644
--- a/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.cc
+++ b/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.cc
@@ -1171,11 +1171,12 @@
 
 // Get current send codec.
 WebRtc_Word32 AudioCodingModuleImpl::SendCodec(
-    CodecInst& current_codec) const {
+    CodecInst* current_codec) const {
   WEBRTC_TRACE(webrtc::kTraceStream, webrtc::kTraceAudioCoding, id_,
                "SendCodec()");
   CriticalSectionScoped lock(acm_crit_sect_);
 
+  assert(current_codec);
   if (!send_codec_registered_) {
     WEBRTC_TRACE(webrtc::kTraceStream, webrtc::kTraceAudioCoding, id_,
                  "SendCodec Failed, no codec is registered");
@@ -1185,7 +1186,7 @@
   WebRtcACMCodecParams encoder_param;
   codecs_[current_send_codec_idx_]->EncoderParams(&encoder_param);
   encoder_param.codec_inst.pltype = send_codec_inst_.pltype;
-  memcpy(&current_codec, &(encoder_param.codec_inst), sizeof(CodecInst));
+  memcpy(current_codec, &(encoder_param.codec_inst), sizeof(CodecInst));
 
   return 0;
 }
@@ -1597,13 +1598,14 @@
 }
 
 // Get VAD/DTX settings.
-WebRtc_Word32 AudioCodingModuleImpl::VAD(bool& dtx_enabled, bool& vad_enabled,
-                                         ACMVADMode& mode) const {
+// TODO(tlegrand): Change this method to void.
+WebRtc_Word32 AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled,
+                                         ACMVADMode* mode) const {
   CriticalSectionScoped lock(acm_crit_sect_);
 
-  dtx_enabled = dtx_enabled_;
-  vad_enabled = vad_enabled_;
-  mode = vad_mode_;
+  *dtx_enabled = dtx_enabled_;
+  *vad_enabled = vad_enabled_;
+  *mode = vad_mode_;
 
   return 0;
 }
@@ -1931,7 +1933,7 @@
 
 // Get current received codec.
 WebRtc_Word32 AudioCodingModuleImpl::ReceiveCodec(
-    CodecInst& current_codec) const {
+    CodecInst* current_codec) const {
   WebRtcACMCodecParams decoder_param;
   CriticalSectionScoped lock(acm_crit_sect_);
 
@@ -1940,7 +1942,7 @@
       if (codecs_[id]->DecoderInitialized()) {
         if (codecs_[id]->DecoderParams(&decoder_param,
                                        last_recv_audio_codec_pltype_)) {
-          memcpy(&current_codec, &decoder_param.codec_inst,
+          memcpy(current_codec, &decoder_param.codec_inst,
                  sizeof(CodecInst));
           return 0;
         }
@@ -1950,7 +1952,7 @@
 
   // If we are here then we haven't found any codec. Set codec pltype to -1 to
   // indicate that the structure is invalid and return -1.
-  current_codec.pltype = -1;
+  current_codec->pltype = -1;
   return -1;
 }
 
@@ -2222,10 +2224,10 @@
 // Get 10 milliseconds of raw audio data to play out.
 // Automatic resample to the requested frequency.
 WebRtc_Word32 AudioCodingModuleImpl::PlayoutData10Ms(
-    const WebRtc_Word32 desired_freq_hz, AudioFrame& audio_frame) {
+    WebRtc_Word32 desired_freq_hz, AudioFrame* audio_frame) {
   bool stereo_mode;
 
-  if (GetSilence(desired_freq_hz, &audio_frame))
+  if (GetSilence(desired_freq_hz, audio_frame))
      return 0;  // Silence is generated, return.
 
   // RecOut always returns 10 ms.
@@ -2235,9 +2237,9 @@
     return -1;
   }
 
-  audio_frame.num_channels_ = audio_frame_.num_channels_;
-  audio_frame.vad_activity_ = audio_frame_.vad_activity_;
-  audio_frame.speech_type_ = audio_frame_.speech_type_;
+  audio_frame->num_channels_ = audio_frame_.num_channels_;
+  audio_frame->vad_activity_ = audio_frame_.vad_activity_;
+  audio_frame->speech_type_ = audio_frame_.speech_type_;
 
   stereo_mode = (audio_frame_.num_channels_ > 1);
   // For stereo playout:
@@ -2256,7 +2258,7 @@
     if ((receive_freq != desired_freq_hz) && (desired_freq_hz != -1)) {
       // Resample payload_data.
       WebRtc_Word16 temp_len = output_resampler_.Resample10Msec(
-          audio_frame_.data_, receive_freq, audio_frame.data_,
+          audio_frame_.data_, receive_freq, audio_frame->data_,
           desired_freq_hz, audio_frame_.num_channels_);
 
       if (temp_len < 0) {
@@ -2266,40 +2268,40 @@
       }
 
       // Set the payload data length from the resampler.
-      audio_frame.samples_per_channel_ = (WebRtc_UWord16) temp_len;
+      audio_frame->samples_per_channel_ = (WebRtc_UWord16) temp_len;
       // Set the sampling frequency.
-      audio_frame.sample_rate_hz_ = desired_freq_hz;
+      audio_frame->sample_rate_hz_ = desired_freq_hz;
     } else {
-      memcpy(audio_frame.data_, audio_frame_.data_,
-             audio_frame_.samples_per_channel_ * audio_frame.num_channels_
+      memcpy(audio_frame->data_, audio_frame_.data_,
+             audio_frame_.samples_per_channel_ * audio_frame->num_channels_
              * sizeof(WebRtc_Word16));
       // Set the payload length.
-      audio_frame.samples_per_channel_ =
+      audio_frame->samples_per_channel_ =
           audio_frame_.samples_per_channel_;
       // Set the sampling frequency.
-      audio_frame.sample_rate_hz_ = receive_freq;
+      audio_frame->sample_rate_hz_ = receive_freq;
     }
 
     // Tone detection done for master channel.
     if (dtmf_detector_ != NULL) {
       // Dtmf Detection.
-      if (audio_frame.sample_rate_hz_ == 8000) {
-        // Use audio_frame.data_ then Dtmf detector doesn't
+      if (audio_frame->sample_rate_hz_ == 8000) {
+        // Use audio_frame->data_ then Dtmf detector doesn't
         // need resampling.
         if (!stereo_mode) {
-          dtmf_detector_->Detect(audio_frame.data_,
-                                 audio_frame.samples_per_channel_,
-                                 audio_frame.sample_rate_hz_, tone_detected,
+          dtmf_detector_->Detect(audio_frame->data_,
+                                 audio_frame->samples_per_channel_,
+                                 audio_frame->sample_rate_hz_, tone_detected,
                                  tone);
         } else {
           // We are in 8 kHz so the master channel needs only 80 samples.
           WebRtc_Word16 master_channel[80];
           for (int n = 0; n < 80; n++) {
-            master_channel[n] = audio_frame.data_[n << 1];
+            master_channel[n] = audio_frame->data_[n << 1];
           }
           dtmf_detector_->Detect(master_channel,
-                                 audio_frame.samples_per_channel_,
-                                 audio_frame.sample_rate_hz_, tone_detected,
+                                 audio_frame->samples_per_channel_,
+                                 audio_frame->sample_rate_hz_, tone_detected,
                                  tone);
         }
       } else {
@@ -2346,9 +2348,9 @@
     }
   }
 
-  audio_frame.id_ = id_;
-  audio_frame.energy_ = -1;
-  audio_frame.timestamp_ = 0;
+  audio_frame->id_ = id_;
+  audio_frame->energy_ = -1;
+  audio_frame->timestamp_ = 0;
 
   return 0;
 }
@@ -2373,9 +2375,9 @@
 //
 
 WebRtc_Word32 AudioCodingModuleImpl::NetworkStatistics(
-    ACMNetworkStatistics& statistics) const {
+    ACMNetworkStatistics* statistics) const {
   WebRtc_Word32 status;
-  status = neteq_.NetworkStatistics(&statistics);
+  status = neteq_.NetworkStatistics(statistics);
   return status;
 }
 
@@ -2594,13 +2596,13 @@
 }
 
 WebRtc_Word32 AudioCodingModuleImpl::IsInternalDTXReplacedWithWebRtc(
-    bool& uses_webrtc_dtx) {
+    bool* uses_webrtc_dtx) {
   CriticalSectionScoped lock(acm_crit_sect_);
 
   if (!HaveValidEncoder("IsInternalDTXReplacedWithWebRtc")) {
     return -1;
   }
-  if (codecs_[current_send_codec_idx_]->IsInternalDTXReplaced(&uses_webrtc_dtx)
+  if (codecs_[current_send_codec_idx_]->IsInternalDTXReplaced(uses_webrtc_dtx)
       < 0) {
     return -1;
   }
@@ -2655,19 +2657,19 @@
 }
 
 WebRtc_Word32 AudioCodingModuleImpl::BackgroundNoiseMode(
-    ACMBackgroundNoiseMode& mode) {
-  return neteq_.BackgroundNoiseMode(mode);
+    ACMBackgroundNoiseMode* mode) {
+  return neteq_.BackgroundNoiseMode(*mode);
 }
 
 WebRtc_Word32 AudioCodingModuleImpl::PlayoutTimestamp(
-    WebRtc_UWord32& timestamp) {
+    WebRtc_UWord32* timestamp) {
   WEBRTC_TRACE(webrtc::kTraceStream, webrtc::kTraceAudioCoding, id_,
                "PlayoutTimestamp()");
   if (track_neteq_buffer_) {
-    timestamp = playout_ts_;
+    *timestamp = playout_ts_;
     return 0;
   } else {
-    return neteq_.PlayoutTimestamp(timestamp);
+    return neteq_.PlayoutTimestamp(*timestamp);
   }
 }
 
diff --git a/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.h b/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.h
index 53ea461..6fb40d5 100644
--- a/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.h
+++ b/webrtc/modules/audio_coding/main/source/audio_coding_module_impl.h
@@ -68,7 +68,7 @@
   int SecondarySendCodec(CodecInst* secondary_codec) const;
 
   // Get current send codec.
-  WebRtc_Word32 SendCodec(CodecInst& current_codec) const;
+  WebRtc_Word32 SendCodec(CodecInst* current_codec) const;
 
   // Get current send frequency.
   WebRtc_Word32 SendFrequency() const;
@@ -99,7 +99,7 @@
   WebRtc_Word32 SetBackgroundNoiseMode(const ACMBackgroundNoiseMode mode);
 
   // Get current background noise mode.
-  WebRtc_Word32 BackgroundNoiseMode(ACMBackgroundNoiseMode& mode);
+  WebRtc_Word32 BackgroundNoiseMode(ACMBackgroundNoiseMode* mode);
 
   /////////////////////////////////////////
   // (FEC) Forward Error Correction
@@ -121,8 +121,8 @@
                        const bool enable_vad = false,
                        const ACMVADMode mode = VADNormal);
 
-  WebRtc_Word32 VAD(bool& dtx_enabled, bool& vad_enabled,
-                    ACMVADMode& mode) const;
+  WebRtc_Word32 VAD(bool* dtx_enabled, bool* vad_enabled,
+                    ACMVADMode* mode) const;
 
   WebRtc_Word32 RegisterVADCallback(ACMVADCallback* vad_callback);
 
@@ -153,7 +153,7 @@
   WebRtc_Word32 RegisterReceiveCodec(const CodecInst& receive_codec);
 
   // Get current received codec.
-  WebRtc_Word32 ReceiveCodec(CodecInst& current_codec) const;
+  WebRtc_Word32 ReceiveCodec(CodecInst* current_codec) const;
 
   // Incoming packet from network parsed and ready for decode.
   WebRtc_Word32 IncomingPacket(const WebRtc_UWord8* incoming_payload,
@@ -189,18 +189,18 @@
   AudioPlayoutMode PlayoutMode() const;
 
   // Get playout timestamp.
-  WebRtc_Word32 PlayoutTimestamp(WebRtc_UWord32& timestamp);
+  WebRtc_Word32 PlayoutTimestamp(WebRtc_UWord32* timestamp);
 
   // Get 10 milliseconds of raw audio data to play out, and
   // automatic resample to the requested frequency if > 0.
-  WebRtc_Word32 PlayoutData10Ms(const WebRtc_Word32 desired_freq_hz,
-                                AudioFrame &audio_frame);
+  WebRtc_Word32 PlayoutData10Ms(WebRtc_Word32 desired_freq_hz,
+                                AudioFrame* audio_frame);
 
   /////////////////////////////////////////
   //   Statistics
   //
 
-  WebRtc_Word32 NetworkStatistics(ACMNetworkStatistics& statistics) const;
+  WebRtc_Word32 NetworkStatistics(ACMNetworkStatistics* statistics) const;
 
   void DestructEncoderInst(void* inst);
 
@@ -221,7 +221,7 @@
 
   WebRtc_Word32 ReplaceInternalDTXWithWebRtc(const bool use_webrtc_dtx);
 
-  WebRtc_Word32 IsInternalDTXReplacedWithWebRtc(bool& uses_webrtc_dtx);
+  WebRtc_Word32 IsInternalDTXReplacedWithWebRtc(bool* uses_webrtc_dtx);
 
   WebRtc_Word32 SetISACMaxRate(const WebRtc_UWord32 max_bit_per_sec);
 
diff --git a/webrtc/modules/audio_coding/main/test/APITest.cc b/webrtc/modules/audio_coding/main/test/APITest.cc
index 3cf9bc1..81e2668 100644
--- a/webrtc/modules/audio_coding/main/test/APITest.cc
+++ b/webrtc/modules/audio_coding/main/test/APITest.cc
@@ -182,7 +182,7 @@
     WebRtc_Word16 numCodecs = _acmA->NumberOfCodecs();
     for(WebRtc_UWord8 n = 0; n < numCodecs; n++)
     {
-        AudioCodingModule::Codec(n, dummyCodec);
+        AudioCodingModule::Codec(n, &dummyCodec);
         if((STR_CASE_CMP(dummyCodec.plname, "CN") == 0) &&
             (dummyCodec.plfreq == 32000))
         {
@@ -205,7 +205,7 @@
             // test if re-registration works;
             CodecInst nextCodec;
             int currentPayloadType = dummyCodec.pltype;
-            AudioCodingModule::Codec(n + 1, nextCodec);
+            AudioCodingModule::Codec(n + 1, &nextCodec);
             dummyCodec.pltype = nextCodec.pltype;
             if(!FixedPayloadTypeCodec(nextCodec.plname))
             {
@@ -218,7 +218,7 @@
         {
             // test if un-registration works;
             CodecInst nextCodec;
-            AudioCodingModule::Codec(n + 1, nextCodec);
+            AudioCodingModule::Codec(n + 1, &nextCodec);
             nextCodec.pltype = dummyCodec.pltype;
             if(!FixedPayloadTypeCodec(nextCodec.plname))
             {
@@ -248,11 +248,11 @@
     _thereIsDecoderB = true;
 
     // Register Send Codec
-    AudioCodingModule::Codec((WebRtc_UWord8)_codecCntrA, dummyCodec);
+    AudioCodingModule::Codec((WebRtc_UWord8)_codecCntrA, &dummyCodec);
     CHECK_ERROR_MT(_acmA->RegisterSendCodec(dummyCodec));
     _thereIsEncoderA = true;
     //
-    AudioCodingModule::Codec((WebRtc_UWord8)_codecCntrB, dummyCodec);
+    AudioCodingModule::Codec((WebRtc_UWord8)_codecCntrB, &dummyCodec);
     CHECK_ERROR_MT(_acmB->RegisterSendCodec(dummyCodec));
     _thereIsEncoderB = true;
 
@@ -410,7 +410,7 @@
 {
     _pullEventA->Wait(100);
     AudioFrame audioFrame;
-    if(_acmA->PlayoutData10Ms(_outFreqHzA, audioFrame) < 0)
+    if(_acmA->PlayoutData10Ms(_outFreqHzA, &audioFrame) < 0)
     {
         bool thereIsDecoder;
         {
@@ -438,7 +438,7 @@
 {
     _pullEventB->Wait(100);
     AudioFrame audioFrame;
-    if(_acmB->PlayoutData10Ms(_outFreqHzB, audioFrame) < 0)
+    if(_acmB->PlayoutData10Ms(_outFreqHzB, &audioFrame) < 0)
     {
         bool thereIsDecoder;
         {
@@ -794,7 +794,7 @@
 
     if(side == 'A')
     {
-        _acmA->VAD(dtxEnabled, vadEnabled, vadMode);
+        _acmA->VAD(&dtxEnabled, &vadEnabled, &vadMode);
         _acmA->RegisterVADCallback(NULL);
         _vadCallbackA->Reset();
         _acmA->RegisterVADCallback(_vadCallbackA);
@@ -838,7 +838,7 @@
     }
     else
     {
-        _acmB->VAD(dtxEnabled, vadEnabled, vadMode);
+        _acmB->VAD(&dtxEnabled, &vadEnabled, &vadMode);
 
         _acmB->RegisterVADCallback(NULL);
         _vadCallbackB->Reset();
@@ -920,7 +920,7 @@
 
 
     inTimestamp = myChannel->LastInTimestamp();
-    CHECK_ERROR_MT(myACM->PlayoutTimestamp(outTimestamp));
+    CHECK_ERROR_MT(myACM->PlayoutTimestamp(&outTimestamp));
 
     if(!_randomTest)
     {
@@ -932,7 +932,7 @@
             myEvent->Wait(1000);
 
             inTimestamp = myChannel->LastInTimestamp();
-            CHECK_ERROR_MT(myACM->PlayoutTimestamp(outTimestamp));
+            CHECK_ERROR_MT(myACM->PlayoutTimestamp(&outTimestamp));
 
             //std::cout << outTimestamp << std::endl << std::flush;
             estimDelay = (double)((WebRtc_UWord32)(inTimestamp - outTimestamp)) /
@@ -968,7 +968,7 @@
     *myMinDelay = (rand() % 1000) + 1;
 
     ACMNetworkStatistics networkStat;
-    CHECK_ERROR_MT(myACM->NetworkStatistics(networkStat));
+    CHECK_ERROR_MT(myACM->NetworkStatistics(&networkStat));
 
     if(!_randomTest)
     {
@@ -1039,9 +1039,9 @@
     }
 
     CodecInst myCodec;
-    if(sendACM->SendCodec(myCodec) < 0)
+    if(sendACM->SendCodec(&myCodec) < 0)
     {
-        AudioCodingModule::Codec(_codecCntrA, myCodec);
+        AudioCodingModule::Codec(_codecCntrA, &myCodec);
     }
 
     if(!_randomTest)
@@ -1332,7 +1332,7 @@
 
     if(side == 'A')
     {
-        AudioCodingModule::Codec(_codecCntrA, myCodec);
+        AudioCodingModule::Codec(_codecCntrA, &myCodec);
         vad = &_sendVADA;
         dtx = &_sendDTXA;
         mode = &_sendVADModeA;
@@ -1341,7 +1341,7 @@
     }
     else
     {
-        AudioCodingModule::Codec(_codecCntrB, myCodec);
+        AudioCodingModule::Codec(_codecCntrB, &myCodec);
         vad = &_sendVADB;
         dtx = &_sendDTXB;
         mode = &_sendVADModeB;
@@ -1408,11 +1408,11 @@
     CodecInst myCodec;
     if(side == 'A')
     {
-        _acmA->SendCodec(myCodec);
+        _acmA->SendCodec(&myCodec);
     }
     else
     {
-        _acmB->SendCodec(myCodec);
+        _acmB->SendCodec(&myCodec);
     }
 
     if(!_randomTest)
@@ -1493,11 +1493,11 @@
             Wait(1000);
 
             // After Initialization CN is lost, re-register them
-            if(AudioCodingModule::Codec("CN", myCodec, 8000, 1) >= 0)
+            if(AudioCodingModule::Codec("CN", &myCodec, 8000, 1) >= 0)
             {
                 CHECK_ERROR_MT(myACM->RegisterSendCodec(myCodec));
             }
-            if(AudioCodingModule::Codec("CN", myCodec, 16000, 1) >= 0)
+            if(AudioCodingModule::Codec("CN", &myCodec, 16000, 1) >= 0)
             {
                 CHECK_ERROR_MT(myACM->RegisterSendCodec(myCodec));
             }
@@ -1507,7 +1507,7 @@
             _writeToFile = false;
         }
 
-        AudioCodingModule::Codec(*codecCntr, myCodec);
+        AudioCodingModule::Codec(*codecCntr, &myCodec);
     } while(!STR_CASE_CMP(myCodec.plname, "CN")          ||
         !STR_CASE_CMP(myCodec.plname, "telephone-event") ||
         !STR_CASE_CMP(myCodec.plname, "RED"));
diff --git a/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.cc b/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.cc
index 09ff58e..58ad6c8 100644
--- a/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.cc
+++ b/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.cc
@@ -73,14 +73,14 @@
     // Choose codec on command line.
     printf("List of supported codec.\n");
     for (int n = 0; n < noOfCodecs; n++) {
-      acm->Codec(n, sendCodec);
+      acm->Codec(n, &sendCodec);
       printf("%d %s\n", n, sendCodec.plname);
     }
     printf("Choose your codec:");
     ASSERT_GT(scanf("%d", &codecNo), 0);
   }
 
-  acm->Codec(codecNo, sendCodec);
+  acm->Codec(codecNo, &sendCodec);
   if (!strcmp(sendCodec.plname, "CELT")) {
     sendCodec.channels = 1;
   }
@@ -144,7 +144,7 @@
 
   noOfCodecs = acm->NumberOfCodecs();
   for (int i = 0; i < noOfCodecs; i++) {
-    acm->Codec((WebRtc_UWord8) i, recvCodec);
+    acm->Codec((WebRtc_UWord8) i, &recvCodec);
     if (acm->RegisterReceiveCodec(recvCodec) != 0) {
       printf("Unable to register codec: for run: codecId: %d\n", codeId);
       exit(1);
@@ -224,7 +224,7 @@
 bool Receiver::PlayoutData() {
   AudioFrame audioFrame;
 
-  if (_acm->PlayoutData10Ms(_frequency, audioFrame) != 0) {
+  if (_acm->PlayoutData10Ms(_frequency, &audioFrame) != 0) {
     printf("Error when calling PlayoutData10Ms, for run: codecId: %d\n",
            codeId);
     exit(1);
@@ -305,7 +305,7 @@
   }
   if (_testMode != 2) {
     for (int n = 0; n < numCodecs; n++) {
-      acm->Codec(n, sendCodecTmp);
+      acm->Codec(n, &sendCodecTmp);
       if (STR_CASE_CMP(sendCodecTmp.plname, "telephone-event") == 0) {
         numPars[n] = 0;
       } else if (STR_CASE_CMP(sendCodecTmp.plname, "cn") == 0) {
@@ -381,7 +381,7 @@
 
   _sender.Setup(acm, &rtpFile);
   struct CodecInst sendCodecInst;
-  if (acm->SendCodec(sendCodecInst) >= 0) {
+  if (acm->SendCodec(&sendCodecInst) >= 0) {
     _sender.Run();
   }
   _sender.Teardown();
diff --git a/webrtc/modules/audio_coding/main/test/SpatialAudio.cc b/webrtc/modules/audio_coding/main/test/SpatialAudio.cc
index 923eefe..15875ee 100644
--- a/webrtc/modules/audio_coding/main/test/SpatialAudio.cc
+++ b/webrtc/modules/audio_coding/main/test/SpatialAudio.cc
@@ -82,7 +82,7 @@
     WebRtc_UWord8 num_encoders = _acmReceiver->NumberOfCodecs();
     // Register all available codes as receiving codecs once more.
     for (WebRtc_UWord8 n = 0; n < num_encoders; n++) {
-      status = _acmReceiver->Codec(n, codecInst);
+      status = _acmReceiver->Codec(n, &codecInst);
       if (status < 0) {
         printf("Error in Codec(), no matching codec found");
       }
@@ -109,7 +109,7 @@
     Setup();
 
     CodecInst codecInst;
-    _acmLeft->Codec((WebRtc_UWord8)1, codecInst);
+    _acmLeft->Codec((WebRtc_UWord8)1, &codecInst);
     CHECK_ERROR(_acmLeft->RegisterSendCodec(codecInst));
     EncodeDecode();
 
@@ -122,7 +122,7 @@
 
     while((pannCntr + 1) < NUM_PANN_COEFFS)
     {
-        _acmLeft->Codec((WebRtc_UWord8)0, codecInst);    
+        _acmLeft->Codec((WebRtc_UWord8)0, &codecInst);
         codecInst.pacsize = 480;
         CHECK_ERROR(_acmLeft->RegisterSendCodec(codecInst));
         CHECK_ERROR(_acmRight->RegisterSendCodec(codecInst));
@@ -131,7 +131,7 @@
         pannCntr++;
 
         // Change codec    
-        _acmLeft->Codec((WebRtc_UWord8)3, codecInst);    
+        _acmLeft->Codec((WebRtc_UWord8)3, &codecInst);
         codecInst.pacsize = 320;
         CHECK_ERROR(_acmLeft->RegisterSendCodec(codecInst));
         CHECK_ERROR(_acmRight->RegisterSendCodec(codecInst));
@@ -144,11 +144,11 @@
         }
     }
 
-    _acmLeft->Codec((WebRtc_UWord8)4, codecInst);
+    _acmLeft->Codec((WebRtc_UWord8)4, &codecInst);
     CHECK_ERROR(_acmLeft->RegisterSendCodec(codecInst));
     EncodeDecode();
 
-    _acmLeft->Codec((WebRtc_UWord8)0, codecInst);    
+    _acmLeft->Codec((WebRtc_UWord8)0, &codecInst);
     codecInst.pacsize = 480;
     CHECK_ERROR(_acmLeft->RegisterSendCodec(codecInst));
     CHECK_ERROR(_acmRight->RegisterSendCodec(codecInst));
@@ -200,7 +200,8 @@
         CHECK_ERROR(_acmLeft->Process());
         CHECK_ERROR(_acmRight->Process());
 
-        CHECK_ERROR(_acmReceiver->PlayoutData10Ms(outFileSampFreq, audioFrame));
+        CHECK_ERROR(_acmReceiver->PlayoutData10Ms(outFileSampFreq,
+                                                  &audioFrame));
         _outFile.Write10MsData(audioFrame);
     }
     _inFile.Rewind();
@@ -221,7 +222,8 @@
 
         CHECK_ERROR(_acmLeft->Process());
 
-        CHECK_ERROR(_acmReceiver->PlayoutData10Ms(outFileSampFreq, audioFrame));
+        CHECK_ERROR(_acmReceiver->PlayoutData10Ms(outFileSampFreq,
+                                                  &audioFrame));
         _outFile.Write10MsData(audioFrame);
     }
     _inFile.Rewind();
diff --git a/webrtc/modules/audio_coding/main/test/TestAllCodecs.cc b/webrtc/modules/audio_coding/main/test/TestAllCodecs.cc
index 46a5897..1f68aca 100644
--- a/webrtc/modules/audio_coding/main/test/TestAllCodecs.cc
+++ b/webrtc/modules/audio_coding/main/test/TestAllCodecs.cc
@@ -145,7 +145,7 @@
   uint8_t num_encoders = acm_a_->NumberOfCodecs();
   CodecInst my_codec_param;
   for (uint8_t n = 0; n < num_encoders; n++) {
-    acm_b_->Codec(n, my_codec_param);
+    acm_b_->Codec(n, &my_codec_param);
     if (!strcmp(my_codec_param.plname, "opus")) {
       my_codec_param.channels = 1;
     }
@@ -752,7 +752,7 @@
 
   // Get all codec parameters before registering
   CodecInst my_codec_param;
-  CHECK_ERROR(AudioCodingModule::Codec(codec_name, my_codec_param,
+  CHECK_ERROR(AudioCodingModule::Codec(codec_name, &my_codec_param,
                                        sampling_freq_hz, 1));
   my_codec_param.rate = rate;
   my_codec_param.pacsize = packet_size;
@@ -795,7 +795,7 @@
     }
 
     // Run received side of ACM.
-    CHECK_ERROR(acm_b_->PlayoutData10Ms(out_freq_hz, audio_frame));
+    CHECK_ERROR(acm_b_->PlayoutData10Ms(out_freq_hz, &audio_frame));
 
     // Write output speech to file.
     outfile_b_.Write10MsData(audio_frame.data_,
@@ -824,9 +824,9 @@
 
 void TestAllCodecs::DisplaySendReceiveCodec() {
   CodecInst my_codec_param;
-  acm_a_->SendCodec(my_codec_param);
+  acm_a_->SendCodec(&my_codec_param);
   printf("%s -> ", my_codec_param.plname);
-  acm_b_->ReceiveCodec(my_codec_param);
+  acm_b_->ReceiveCodec(&my_codec_param);
   printf("%s\n", my_codec_param.plname);
 }
 
diff --git a/webrtc/modules/audio_coding/main/test/TestFEC.cc b/webrtc/modules/audio_coding/main/test/TestFEC.cc
index bdbd97a..9f5f022 100644
--- a/webrtc/modules/audio_coding/main/test/TestFEC.cc
+++ b/webrtc/modules/audio_coding/main/test/TestFEC.cc
@@ -79,7 +79,7 @@
     }
     for(WebRtc_UWord8 n = 0; n < numEncoders; n++)
     {
-        _acmB->Codec(n, myCodecParam);
+        _acmB->Codec(n, &myCodecParam);
         if(_testMode != 0)
         {
             printf("%s\n", myCodecParam.plname);
@@ -553,7 +553,7 @@
     }
     CodecInst myCodecParam;
 
-    CHECK_ERROR(AudioCodingModule::Codec(codecName, myCodecParam,
+    CHECK_ERROR(AudioCodingModule::Codec(codecName, &myCodecParam,
                                          samplingFreqHz, 1));
 
     CHECK_ERROR(myACM->RegisterSendCodec(myCodecParam));
@@ -575,7 +575,7 @@
         _inFileA.Read10MsData(audioFrame);
         CHECK_ERROR(_acmA->Add10MsData(audioFrame));
         CHECK_ERROR(_acmA->Process());
-        CHECK_ERROR(_acmB->PlayoutData10Ms(outFreqHzB, audioFrame));
+        CHECK_ERROR(_acmB->PlayoutData10Ms(outFreqHzB, &audioFrame));
         _outFileB.Write10MsData(audioFrame.data_, audioFrame.samples_per_channel_);
         msecPassed += 10;
         if(msecPassed >= 1000)
@@ -616,9 +616,9 @@
 void TestFEC::DisplaySendReceiveCodec()
 {
     CodecInst myCodecParam;
-    _acmA->SendCodec(myCodecParam);
+    _acmA->SendCodec(&myCodecParam);
     printf("%s -> ", myCodecParam.plname);
-    _acmB->ReceiveCodec(myCodecParam);
+    _acmB->ReceiveCodec(&myCodecParam);
     printf("%s\n", myCodecParam.plname);
 }
 
diff --git a/webrtc/modules/audio_coding/main/test/TestStereo.cc b/webrtc/modules/audio_coding/main/test/TestStereo.cc
index b06f19d..e1186ba 100644
--- a/webrtc/modules/audio_coding/main/test/TestStereo.cc
+++ b/webrtc/modules/audio_coding/main/test/TestStereo.cc
@@ -182,19 +182,19 @@
   WebRtc_UWord8 num_encoders = acm_a_->NumberOfCodecs();
   CodecInst my_codec_param;
   for (WebRtc_UWord8 n = 0; n < num_encoders; n++) {
-    EXPECT_EQ(0, acm_b_->Codec(n, my_codec_param));
+    EXPECT_EQ(0, acm_b_->Codec(n, &my_codec_param));
     EXPECT_EQ(0, acm_b_->RegisterReceiveCodec(my_codec_param));
   }
 
   // Test that unregister all receive codecs works.
   for (WebRtc_UWord8 n = 0; n < num_encoders; n++) {
-    EXPECT_EQ(0, acm_b_->Codec(n, my_codec_param));
+    EXPECT_EQ(0, acm_b_->Codec(n, &my_codec_param));
     EXPECT_EQ(0, acm_b_->UnregisterReceiveCodec(my_codec_param.pltype));
   }
 
   // Register all available codes as receiving codecs once more.
   for (WebRtc_UWord8 n = 0; n < num_encoders; n++) {
-    EXPECT_EQ(0, acm_b_->Codec(n, my_codec_param));
+    EXPECT_EQ(0, acm_b_->Codec(n, &my_codec_param));
     EXPECT_EQ(0, acm_b_->RegisterReceiveCodec(my_codec_param));
   }
 
@@ -222,12 +222,12 @@
   // Continue with setting a stereo codec as send codec and verify that
   // VAD/DTX gets turned off.
   EXPECT_EQ(0, acm_a_->SetVAD(true, true, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_TRUE(dtx);
   EXPECT_TRUE(vad);
   char codec_pcma_temp[] = "PCMA";
   RegisterSendCodec('A', codec_pcma_temp, 8000, 64000, 80, 2, pcma_pltype_);
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_FALSE(dtx);
   EXPECT_FALSE(vad);
   if (test_mode_ != 0) {
@@ -366,19 +366,19 @@
 
   // Test that VAD/DTX cannot be turned on while sending stereo.
   EXPECT_EQ(-1, acm_a_->SetVAD(true, true, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_FALSE(dtx);
   EXPECT_FALSE(vad);
   EXPECT_EQ(-1, acm_a_->SetVAD(true, false, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_FALSE(dtx);
   EXPECT_FALSE(vad);
   EXPECT_EQ(-1, acm_a_->SetVAD(false, true, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_FALSE(dtx);
   EXPECT_FALSE(vad);
   EXPECT_EQ(0, acm_a_->SetVAD(false, false, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_FALSE(dtx);
   EXPECT_FALSE(vad);
 
@@ -603,7 +603,7 @@
   // Make sure it is possible to set VAD/CNG, now that we are sending mono
   // again.
   EXPECT_EQ(0, acm_a_->SetVAD(true, true, VADNormal));
-  EXPECT_EQ(0, acm_a_->VAD(dtx, vad, vad_mode));
+  EXPECT_EQ(0, acm_a_->VAD(&dtx, &vad, &vad_mode));
   EXPECT_TRUE(dtx);
   EXPECT_TRUE(vad);
   EXPECT_EQ(0, acm_a_->SetVAD(false, false, VADNormal));
@@ -687,7 +687,7 @@
                      opus_pltype_);
   CodecInst opus_codec_param;
   for (WebRtc_UWord8 n = 0; n < num_encoders; n++) {
-    EXPECT_EQ(0, acm_b_->Codec(n, opus_codec_param));
+    EXPECT_EQ(0, acm_b_->Codec(n, &opus_codec_param));
     if (!strcmp(opus_codec_param.plname, "opus")) {
       opus_codec_param.channels = 1;
       EXPECT_EQ(0, acm_b_->RegisterReceiveCodec(opus_codec_param));
@@ -821,7 +821,7 @@
 
   CodecInst my_codec_param;
   // Get all codec parameters before registering
-  CHECK_ERROR(AudioCodingModule::Codec(codec_name, my_codec_param,
+  CHECK_ERROR(AudioCodingModule::Codec(codec_name, &my_codec_param,
                                        sampling_freq_hz, channels));
   my_codec_param.rate = rate;
   my_codec_param.pacsize = pack_size;
@@ -888,7 +888,7 @@
     }
 
     // Run received side of ACM
-    CHECK_ERROR(acm_b_->PlayoutData10Ms(out_freq_hz_b, audio_frame));
+    CHECK_ERROR(acm_b_->PlayoutData10Ms(out_freq_hz_b, &audio_frame));
 
     // Write output speech to file
     out_file_.Write10MsData(
@@ -919,11 +919,11 @@
 
 void TestStereo::DisplaySendReceiveCodec() {
   CodecInst my_codec_param;
-  acm_a_->SendCodec(my_codec_param);
+  acm_a_->SendCodec(&my_codec_param);
   if (test_mode_ != 0) {
     printf("%s -> ", my_codec_param.plname);
   }
-  acm_b_->ReceiveCodec(my_codec_param);
+  acm_b_->ReceiveCodec(&my_codec_param);
   if (test_mode_ != 0) {
     printf("%s\n", my_codec_param.plname);
   }
diff --git a/webrtc/modules/audio_coding/main/test/TestVADDTX.cc b/webrtc/modules/audio_coding/main/test/TestVADDTX.cc
index 567903b..0d6a6b6 100644
--- a/webrtc/modules/audio_coding/main/test/TestVADDTX.cc
+++ b/webrtc/modules/audio_coding/main/test/TestVADDTX.cc
@@ -78,7 +78,7 @@
     }
     for(WebRtc_UWord8 n = 0; n < numEncoders; n++)
     {
-        _acmB->Codec(n, myCodecParam);
+        _acmB->Codec(n, &myCodecParam);
         if(_testMode != 0)
         {
             printf("%s\n", myCodecParam.plname);
@@ -174,7 +174,7 @@
     if(_testMode != 0)
     {
         CodecInst myCodecParam;
-        _acmA->SendCodec(myCodecParam);
+        _acmA->SendCodec(&myCodecParam);
         printf("%s\n", myCodecParam.plname);
     }
     else
@@ -239,7 +239,7 @@
     if (_acmA->SetVAD(statusDTX, statusVAD, (ACMVADMode) vadMode) < 0) {
       assert(false);
     }
-    if (_acmA->VAD(dtxEnabled, vadEnabled, vadModeSet) < 0) {
+    if (_acmA->VAD(&dtxEnabled, &vadEnabled, &vadModeSet) < 0) {
       assert(false);
     }
 
@@ -282,7 +282,7 @@
     bool dtxEnabled, vadEnabled;
     ACMVADMode vadModeSet;
 
-    if (_acmA->VAD(dtxEnabled, vadEnabled, vadModeSet) < 0) {
+    if (_acmA->VAD(&dtxEnabled, &vadEnabled, &vadModeSet) < 0) {
       assert(false);
     }
 
@@ -328,7 +328,7 @@
     for(WebRtc_Word16 codecCntr = 0; codecCntr < myACM->NumberOfCodecs();
         codecCntr++)
     {
-        CHECK_ERROR(myACM->Codec((WebRtc_UWord8)codecCntr, myCodecParam));
+        CHECK_ERROR(myACM->Codec((WebRtc_UWord8)codecCntr, &myCodecParam));
         if(!STR_CASE_CMP(myCodecParam.plname, codecName))
         {
             if((samplingFreqHz == -1) || (myCodecParam.plfreq == samplingFreqHz))
@@ -366,7 +366,7 @@
 
         CHECK_ERROR(_acmA->Process());
 
-        CHECK_ERROR(_acmB->PlayoutData10Ms(outFreqHzB, audioFrame));
+        CHECK_ERROR(_acmB->PlayoutData10Ms(outFreqHzB, &audioFrame));
         _outFileB.Write10MsData(audioFrame.data_, audioFrame.samples_per_channel_);
     }
 #ifdef PRINT_STAT
@@ -399,7 +399,7 @@
     WebRtc_UWord8 vadPattern = 0;
     WebRtc_UWord8 emptyFramePattern[6];
     CodecInst myCodecParam;
-    _acmA->SendCodec(myCodecParam);
+    _acmA->SendCodec(&myCodecParam);
     bool dtxInUse = true;
     bool isReplaced = false;
     if ((STR_CASE_CMP(myCodecParam.plname,"G729") == 0) ||
@@ -408,7 +408,7 @@
         (STR_CASE_CMP(myCodecParam.plname,"AMR-wb") == 0) ||
         (STR_CASE_CMP(myCodecParam.plname,"speex") == 0))
     {
-        _acmA->IsInternalDTXReplacedWithWebRtc(isReplaced);
+        _acmA->IsInternalDTXReplacedWithWebRtc(&isReplaced);
         if (!isReplaced)
         {
             dtxInUse = false;
diff --git a/webrtc/modules/audio_coding/main/test/TwoWayCommunication.cc b/webrtc/modules/audio_coding/main/test/TwoWayCommunication.cc
index 2e580cb..6b569fa 100644
--- a/webrtc/modules/audio_coding/main/test/TwoWayCommunication.cc
+++ b/webrtc/modules/audio_coding/main/test/TwoWayCommunication.cc
@@ -78,7 +78,7 @@
     printf("========================\n");
     for(WebRtc_UWord8 codecCntr = 0; codecCntr < noCodec; codecCntr++)
     {
-        tmpACM->Codec(codecCntr, codecInst);
+        tmpACM->Codec(codecCntr, &codecInst);
         printf("%d- %s\n", codecCntr, codecInst.plname);
     }
     printf("\nChoose a send codec for side A [0]: ");
@@ -110,10 +110,10 @@
     CodecInst codecInst_A;
     CodecInst codecInst_B;
     CodecInst dummyCodec;
-    _acmA->Codec(codecID_A, codecInst_A);
-    _acmB->Codec(codecID_B, codecInst_B);
+    _acmA->Codec(codecID_A, &codecInst_A);
+    _acmB->Codec(codecID_B, &codecInst_B);
 
-    _acmA->Codec(6, dummyCodec);
+    _acmA->Codec(6, &dummyCodec);
 
     //--- Set A codecs
     CHECK_ERROR(_acmA->RegisterSendCodec(codecInst_A));
@@ -214,9 +214,9 @@
     CodecInst codecInst_B;
     CodecInst dummyCodec;
 
-    _acmA->Codec("ISAC", codecInst_A, 16000, 1);
-    _acmB->Codec("L16", codecInst_B, 8000, 1);
-    _acmA->Codec(6, dummyCodec);
+    _acmA->Codec("ISAC", &codecInst_A, 16000, 1);
+    _acmB->Codec("L16", &codecInst_B, 8000, 1);
+    _acmA->Codec(6, &dummyCodec);
 
     //--- Set A codecs
     CHECK_ERROR(_acmA->RegisterSendCodec(codecInst_A));
@@ -320,7 +320,7 @@
     CodecInst codecInst_B;
     CodecInst dummy;
 
-    _acmB->SendCodec(codecInst_B);
+    _acmB->SendCodec(&codecInst_B);
 
     if(_testMode != 0)
     {
@@ -345,16 +345,16 @@
         _acmRefA->Process();
         _acmRefB->Process();
 
-        _acmA->PlayoutData10Ms(outFreqHzA, audioFrame);
+        _acmA->PlayoutData10Ms(outFreqHzA, &audioFrame);
         _outFileA.Write10MsData(audioFrame);
 
-        _acmRefA->PlayoutData10Ms(outFreqHzA, audioFrame);
+        _acmRefA->PlayoutData10Ms(outFreqHzA, &audioFrame);
         _outFileRefA.Write10MsData(audioFrame);
 
-        _acmB->PlayoutData10Ms(outFreqHzB, audioFrame);
+        _acmB->PlayoutData10Ms(outFreqHzB, &audioFrame);
         _outFileB.Write10MsData(audioFrame);
 
-        _acmRefB->PlayoutData10Ms(outFreqHzB, audioFrame);
+        _acmRefB->PlayoutData10Ms(outFreqHzB, &audioFrame);
         _outFileRefB.Write10MsData(audioFrame);
 
         msecPassed += 10;
@@ -398,7 +398,7 @@
                 printf("Register Send Codec (audio back in side A)\n");
             }
             CHECK_ERROR(_acmB->RegisterSendCodec(codecInst_B));
-            CHECK_ERROR(_acmB->SendCodec(dummy));
+            CHECK_ERROR(_acmB->SendCodec(&dummy));
         }
         if(((secPassed%7) == 6) && (msecPassed == 0))
         {
diff --git a/webrtc/modules/audio_coding/main/test/delay_test.cc b/webrtc/modules/audio_coding/main/test/delay_test.cc
index 2383b34..c1926e4 100644
--- a/webrtc/modules/audio_coding/main/test/delay_test.cc
+++ b/webrtc/modules/audio_coding/main/test/delay_test.cc
@@ -108,7 +108,7 @@
     WebRtc_UWord8 num_encoders = acm_a_->NumberOfCodecs();
     CodecInst my_codec_param;
     for(int n = 0; n < num_encoders; n++) {
-      acm_b_->Codec(n, my_codec_param);
+      acm_b_->Codec(n, &my_codec_param);
       if (STR_CASE_CMP(my_codec_param.plname, "opus") == 0)
         my_codec_param.channels = 1;
       else if  (my_codec_param.channels > 1)
@@ -155,7 +155,7 @@
 
   void SendCodec(const CodecConfig& config) {
     CodecInst my_codec_param;
-    ASSERT_EQ(0, AudioCodingModule::Codec(config.name, my_codec_param,
+    ASSERT_EQ(0, AudioCodingModule::Codec(config.name, &my_codec_param,
                                           config.sample_rate_hz,
                                           config.num_channels));
     encoding_sample_rate_hz_ = my_codec_param.plfreq;
@@ -201,7 +201,7 @@
       // Print delay information every 16 frame
       if ((num_frames & 0x3F) == 0x3F) {
         ACMNetworkStatistics statistics;
-        acm_b_->NetworkStatistics(statistics);
+        acm_b_->NetworkStatistics(&statistics);
         fprintf(stdout, "delay: min=%3d  max=%3d  mean=%3d  median=%3d"
                 " ts-based average = %6.3f, "
                 "curr buff-lev = %4u opt buff-lev = %4u \n",
@@ -218,11 +218,11 @@
       in_file_a_.Read10MsData(audio_frame);
       ASSERT_EQ(0, acm_a_->Add10MsData(audio_frame));
       ASSERT_LE(0, acm_a_->Process());
-      ASSERT_EQ(0, acm_b_->PlayoutData10Ms(out_freq_hz_b, audio_frame));
+      ASSERT_EQ(0, acm_b_->PlayoutData10Ms(out_freq_hz_b, &audio_frame));
       out_file_b_.Write10MsData(audio_frame.data_,
                                 audio_frame.samples_per_channel_ *
                                 audio_frame.num_channels_);
-      acm_b_->PlayoutTimestamp(playout_ts);
+      acm_b_->PlayoutTimestamp(&playout_ts);
       received_ts = channel_a2b_->LastInTimestamp();
       inst_delay_sec = static_cast<uint32_t>(received_ts - playout_ts) /
           static_cast<double>(encoding_sample_rate_hz_);
diff --git a/webrtc/modules/audio_coding/main/test/dual_stream_unittest.cc b/webrtc/modules/audio_coding/main/test/dual_stream_unittest.cc
index d489169..1e3d08e 100644
--- a/webrtc/modules/audio_coding/main/test/dual_stream_unittest.cc
+++ b/webrtc/modules/audio_coding/main/test/dual_stream_unittest.cc
@@ -111,7 +111,7 @@
   red_encoder_.pltype = -1;
 
   for (int n = 0; n < AudioCodingModule::NumberOfCodecs(); n++) {
-    AudioCodingModule::Codec(n, my_codec);
+    AudioCodingModule::Codec(n, &my_codec);
     if (strcmp(my_codec.plname, "ISAC") == 0 &&
         my_codec.plfreq == sampling_rate) {
       my_codec.rate = 32000;
@@ -480,7 +480,7 @@
   bool vad_status;
   bool dtx_status;
   ACMVADMode vad_mode;
-  EXPECT_EQ(0, acm_dual_stream_->VAD(vad_status, dtx_status, vad_mode));
+  EXPECT_EQ(0, acm_dual_stream_->VAD(&vad_status, &dtx_status, &vad_mode));
   EXPECT_TRUE(vad_status);
   EXPECT_TRUE(dtx_status);
   EXPECT_EQ(VADNormal, vad_mode);
@@ -492,7 +492,7 @@
   ASSERT_EQ(0, memcmp(&my_codec, &secondary_encoder_, sizeof(my_codec)));
 
   // Test if VAD get disabled after registering secondary codec.
-  EXPECT_EQ(0, acm_dual_stream_->VAD(vad_status, dtx_status, vad_mode));
+  EXPECT_EQ(0, acm_dual_stream_->VAD(&vad_status, &dtx_status, &vad_mode));
   EXPECT_FALSE(vad_status);
   EXPECT_FALSE(dtx_status);
 
@@ -506,7 +506,7 @@
 
   ASSERT_EQ(0, acm_dual_stream_->SetVAD(true, true, VADVeryAggr));
   // Make sure VAD is activated.
-  EXPECT_EQ(0, acm_dual_stream_->VAD(vad_status, dtx_status, vad_mode));
+  EXPECT_EQ(0, acm_dual_stream_->VAD(&vad_status, &dtx_status, &vad_mode));
   EXPECT_TRUE(vad_status);
   EXPECT_TRUE(dtx_status);
   EXPECT_EQ(VADVeryAggr, vad_mode);
diff --git a/webrtc/modules/audio_coding/main/test/iSACTest.cc b/webrtc/modules/audio_coding/main/test/iSACTest.cc
index 28cc942..566fdcc 100644
--- a/webrtc/modules/audio_coding/main/test/iSACTest.cc
+++ b/webrtc/modules/audio_coding/main/test/iSACTest.cc
@@ -55,7 +55,7 @@
         (isacConfig.currentFrameSizeMsec != 0))
     {
         CodecInst sendCodec;
-        acm->SendCodec(sendCodec);
+        acm->SendCodec(&sendCodec);
         if(isacConfig.currentRateBitPerSec < 0)
         {
             sendCodec.rate = -1;
@@ -155,7 +155,7 @@
 
     for(codecCntr = 0; codecCntr < AudioCodingModule::NumberOfCodecs(); codecCntr++)
     {
-        AudioCodingModule::Codec(codecCntr, codecParam);
+        AudioCodingModule::Codec(codecCntr, &codecParam);
         if(!STR_CASE_CMP(codecParam.plname, "ISAC") && codecParam.plfreq == 16000)
         {
             memcpy(&_paramISAC16kHz, &codecParam, sizeof(CodecInst));
@@ -210,14 +210,14 @@
         Run10ms();
     }
     CodecInst receiveCodec;
-    CHECK_ERROR(_acmA->ReceiveCodec(receiveCodec));
+    CHECK_ERROR(_acmA->ReceiveCodec(&receiveCodec));
     if(_testMode != 0)
     {
         printf("Side A Receive Codec\n");
         printf("%s %d\n", receiveCodec.plname, receiveCodec.plfreq);
     }
 
-    CHECK_ERROR(_acmB->ReceiveCodec(receiveCodec));
+    CHECK_ERROR(_acmB->ReceiveCodec(&receiveCodec));
     if(_testMode != 0)
     {
         printf("Side B Receive Codec\n");
@@ -357,10 +357,10 @@
     CHECK_ERROR(_acmA->Process());
     CHECK_ERROR(_acmB->Process());
 
-    CHECK_ERROR(_acmA->PlayoutData10Ms(32000, audioFrame));
+    CHECK_ERROR(_acmA->PlayoutData10Ms(32000, &audioFrame));
     _outFileA.Write10MsData(audioFrame);
 
-    CHECK_ERROR(_acmB->PlayoutData10Ms(32000, audioFrame));
+    CHECK_ERROR(_acmB->PlayoutData10Ms(32000, &audioFrame));
     _outFileB.Write10MsData(audioFrame);
 }
 
@@ -444,9 +444,9 @@
         {
             myEvent->Wait(5000);
 
-            _acmA->SendCodec(sendCodec);
+            _acmA->SendCodec(&sendCodec);
             if(_testMode == 2) printf("[%d]  ", sendCodec.rate);
-            _acmB->SendCodec(sendCodec);
+            _acmB->SendCodec(&sendCodec);
             if(_testMode == 2) printf("[%d]  ", sendCodec.rate);
         }
     }
diff --git a/webrtc/modules/audio_coding/main/test/initial_delay_unittest.cc b/webrtc/modules/audio_coding/main/test/initial_delay_unittest.cc
index af720c3..084c261 100644
--- a/webrtc/modules/audio_coding/main/test/initial_delay_unittest.cc
+++ b/webrtc/modules/audio_coding/main/test/initial_delay_unittest.cc
@@ -80,7 +80,7 @@
     const int kChannels[2] = {1, 2};
     for (int n = 0; n < 3; ++n) {
       for (int k = 0; k < 2; ++k) {
-        AudioCodingModule::Codec("L16", codec, kFsHz[n], kChannels[k]);
+        AudioCodingModule::Codec("L16", &codec, kFsHz[n], kChannels[k]);
         acm_b_->RegisterReceiveCodec(codec);
       }
     }
@@ -114,7 +114,7 @@
       timestamp += in_audio_frame.samples_per_channel_;
       ASSERT_EQ(0, acm_a_->Add10MsData(in_audio_frame));
       ASSERT_LE(0, acm_a_->Process());
-      ASSERT_EQ(0, acm_b_->PlayoutData10Ms(codec.plfreq, out_audio_frame));
+      ASSERT_EQ(0, acm_b_->PlayoutData10Ms(codec.plfreq, &out_audio_frame));
       rms = FrameRms(out_audio_frame);
       ++num_frames;
     }
@@ -131,38 +131,38 @@
 
 TEST_F( InitialPlayoutDelayTest, NbMono) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 8000, 1);
+  AudioCodingModule::Codec("L16", &codec, 8000, 1);
   Run(codec, 3000);
 }
 
 TEST_F( InitialPlayoutDelayTest, WbMono) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 16000, 1);
+  AudioCodingModule::Codec("L16", &codec, 16000, 1);
   Run(codec, 3000);
 }
 
 TEST_F( InitialPlayoutDelayTest, SwbMono) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 32000, 1);
+  AudioCodingModule::Codec("L16", &codec, 32000, 1);
   Run(codec, 2000);  // NetEq buffer is not sufficiently large for 3 sec of
                      // PCM16 super-wideband.
 }
 
 TEST_F( InitialPlayoutDelayTest, NbStereo) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 8000, 2);
+  AudioCodingModule::Codec("L16", &codec, 8000, 2);
   Run(codec, 3000);
 }
 
 TEST_F( InitialPlayoutDelayTest, WbStereo) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 16000, 2);
+  AudioCodingModule::Codec("L16", &codec, 16000, 2);
   Run(codec, 3000);
 }
 
 TEST_F( InitialPlayoutDelayTest, SwbStereo) {
   CodecInst codec;
-  AudioCodingModule::Codec("L16", codec, 32000, 2);
+  AudioCodingModule::Codec("L16", &codec, 32000, 2);
   Run(codec, 2000);  // NetEq buffer is not sufficiently large for 3 sec of
                      // PCM16 super-wideband.
 }
diff --git a/webrtc/modules/audio_coding/main/test/utility.cc b/webrtc/modules/audio_coding/main/test/utility.cc
index 56acbf7..0c61481 100644
--- a/webrtc/modules/audio_coding/main/test/utility.cc
+++ b/webrtc/modules/audio_coding/main/test/utility.cc
@@ -138,7 +138,7 @@
         }
     } while(outOfRange);
 
-    CHECK_ERROR(AudioCodingModule::Codec((WebRtc_UWord8)codecID, codecInst));
+    CHECK_ERROR(AudioCodingModule::Codec((WebRtc_UWord8)codecID, &codecInst));
     return 0;
 }
 
@@ -151,7 +151,7 @@
     printf("No  Name                [Hz]    [bps]\n");     
     for(WebRtc_UWord8 codecCntr = 0; codecCntr < noCodec; codecCntr++)
     {
-        AudioCodingModule::Codec(codecCntr, codecInst);
+        AudioCodingModule::Codec(codecCntr, &codecInst);
         printf("%2d- %-18s %5d   %6d\n", 
             codecCntr, codecInst.plname, codecInst.plfreq, codecInst.rate);
     }