Add clock to ACM config struct

The purpose is to clean up the ACM interface a bit. This is a
follow-up of a comment in http://review.webrtc.org/13379004/.

R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6006 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc
index 8b1c5dc..5e51ba8 100644
--- a/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc
+++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver.cc
@@ -117,7 +117,7 @@
 
 }  // namespace
 
-AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config, Clock* clock)
+AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config)
     : id_(config.id),
       neteq_(NetEq::Create(config.neteq_config)),
       last_audio_decoder_(-1),  // Invalid value.
@@ -128,11 +128,12 @@
       current_sample_rate_hz_(config.neteq_config.sample_rate_hz),
       nack_(),
       nack_enabled_(false),
-      clock_(clock),
+      clock_(config.clock),
       av_sync_(false),
       initial_delay_manager_(),
       missing_packets_sync_stream_(),
       late_packets_sync_stream_() {
+  assert(clock_);
   for (int n = 0; n < ACMCodecDB::kMaxNumCodecs; ++n) {
     decoders_[n].registered = false;
   }
diff --git a/webrtc/modules/audio_coding/main/acm2/acm_receiver.h b/webrtc/modules/audio_coding/main/acm2/acm_receiver.h
index 089016a..7a238ae 100644
--- a/webrtc/modules/audio_coding/main/acm2/acm_receiver.h
+++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver.h
@@ -27,7 +27,6 @@
 
 namespace webrtc {
 
-class Clock;
 struct CodecInst;
 class CriticalSectionWrapper;
 class RWLockWrapper;
@@ -48,7 +47,7 @@
   };
 
   // Constructor of the class
-  explicit AcmReceiver(const AudioCodingModule::Config& config, Clock* clock);
+  explicit AcmReceiver(const AudioCodingModule::Config& config);
 
   // Destructor of the class.
   ~AcmReceiver();
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 6a84152..c55eef9 100644
--- a/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc
+++ b/webrtc/modules/audio_coding/main/acm2/acm_receiver_unittest.cc
@@ -48,8 +48,8 @@
         last_packet_send_timestamp_(timestamp_),
         last_frame_type_(kFrameEmpty) {
     AudioCodingModule::Config config;
-    acm_.reset(new AudioCodingModuleImpl(config, Clock::GetRealTimeClock()));
-    receiver_.reset(new AcmReceiver(config, Clock::GetRealTimeClock()));
+    acm_.reset(new AudioCodingModuleImpl(config));
+    receiver_.reset(new AcmReceiver(config));
   }
 
   ~AcmReceiverTest() {}
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 1f4a0de..7225731 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
@@ -30,7 +30,8 @@
 AudioCodingModule* AudioCodingModule::Create(int id, Clock* clock) {
   AudioCodingModule::Config config;
   config.id = id;
-  return new acm2::AudioCodingModuleImpl(config, clock);
+  config.clock = clock;
+  return new acm2::AudioCodingModuleImpl(config);
 }
 
 // Get number of supported codecs
@@ -105,7 +106,7 @@
 AudioCodingModule* NewAudioCodingModuleFactory::Create(int id) const {
   AudioCodingModule::Config config;
   config.id = id;
-  return new acm2::AudioCodingModuleImpl(config, Clock::GetRealTimeClock());
+  return new acm2::AudioCodingModuleImpl(config);
 }
 
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc
index 8e19a6b..936f1f1 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.cc
@@ -115,8 +115,7 @@
 }  // namespace
 
 AudioCodingModuleImpl::AudioCodingModuleImpl(
-    const AudioCodingModule::Config& config,
-    Clock* clock)
+    const AudioCodingModule::Config& config)
     : packetization_callback_(NULL),
       id_(config.id),
       expected_codec_ts_(0xD87F3F9F),
@@ -133,7 +132,7 @@
       stereo_send_(false),
       current_send_codec_idx_(-1),
       send_codec_registered_(false),
-      receiver_(config, clock),
+      receiver_(config),
       acm_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
       vad_callback_(NULL),
       is_first_red_(true),
diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.h b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.h
index f970ff6..d53c98f 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.h
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.h
@@ -22,7 +22,6 @@
 
 namespace webrtc {
 
-class Clock;
 class CriticalSectionWrapper;
 class RWLockWrapper;
 
@@ -33,7 +32,7 @@
 
 class AudioCodingModuleImpl : public AudioCodingModule {
  public:
-  AudioCodingModuleImpl(const AudioCodingModule::Config& config, Clock* clock);
+  explicit AudioCodingModuleImpl(const AudioCodingModule::Config& config);
   ~AudioCodingModuleImpl();
 
   virtual const char* Version() const;