Hooked up RtcEventLog. It lives in Voice Engine and pointers are propagated to ACM and Call.

An option was added to voe_cmd_test to make a RtcEventLog dump.

BUG=webrtc:4741

Review URL: https://codereview.webrtc.org/1267683002

Cr-Commit-Position: refs/heads/master@{#9901}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index 00e3aa7..235eb3c 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -58,6 +58,12 @@
     ]
   }
 
+  if (is_clang) {
+    # Suppress warnings from Chrome's Clang plugins.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
   deps = [
     ":cng",
     ":g711",
@@ -68,6 +74,7 @@
     ":neteq",
     ":pcm16b",
     ":red",
+    "../..:rtc_event_log",
     "../..:webrtc_common",
     "../../common_audio",
     "../../system_wrappers",
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 2a81e46..571a509 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
@@ -27,6 +27,7 @@
 #include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
 #include "webrtc/system_wrappers/interface/trace.h"
 #include "webrtc/typedefs.h"
+#include "webrtc/video/rtc_event_log.h"
 
 namespace webrtc {
 
@@ -146,7 +147,8 @@
       first_frame_(true),
       callback_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
       packetization_callback_(NULL),
-      vad_callback_(NULL) {
+      vad_callback_(NULL),
+      event_log_(config.event_log) {
   if (InitializeReceiverSafe() < 0) {
     WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_,
                  "Cannot initialize receiver");
@@ -680,6 +682,10 @@
                  "PlayoutData failed, RecOut Failed");
     return -1;
   }
+  {
+    if (event_log_)
+      event_log_->LogDebugEvent(RtcEventLog::DebugEvent::kAudioPlayout);
+  }
 
   audio_frame->id_ = id_;
   return 0;
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 db3e927..568bf92 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
@@ -299,6 +299,8 @@
   AudioPacketizationCallback* packetization_callback_
       GUARDED_BY(callback_crit_sect_);
   ACMVADCallback* vad_callback_ GUARDED_BY(callback_crit_sect_);
+
+  RtcEventLog* const event_log_;
 };
 
 }  // namespace acm2
diff --git a/webrtc/modules/audio_coding/main/audio_coding_module.gypi b/webrtc/modules/audio_coding/main/audio_coding_module.gypi
index 43d99f8..ce86335 100644
--- a/webrtc/modules/audio_coding/main/audio_coding_module.gypi
+++ b/webrtc/modules/audio_coding/main/audio_coding_module.gypi
@@ -39,6 +39,7 @@
       'dependencies': [
         '<@(audio_coding_dependencies)',
         '<(webrtc_root)/common.gyp:webrtc_common',
+        '<(webrtc_root)/webrtc.gyp:rtc_event_log',
         'neteq',
       ],
       'include_dirs': [
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 f2972e7..085dd61 100644
--- a/webrtc/modules/audio_coding/main/interface/audio_coding_module.h
+++ b/webrtc/modules/audio_coding/main/interface/audio_coding_module.h
@@ -26,10 +26,11 @@
 // forward declarations
 struct CodecInst;
 struct WebRtcRTPHeader;
-class AudioFrame;
-class RTPFragmentationHeader;
-class AudioEncoder;
 class AudioDecoder;
+class AudioEncoder;
+class AudioFrame;
+class RtcEventLog;
+class RTPFragmentationHeader;
 
 #define WEBRTC_10MS_PCM_AUDIO 960  // 16 bits super wideband 48 kHz
 
@@ -85,11 +86,13 @@
     Config()
         : id(0),
           neteq_config(),
-          clock(Clock::GetRealTimeClock()) {}
+          clock(Clock::GetRealTimeClock()),
+          event_log(nullptr) {}
 
     int id;
     NetEq::Config neteq_config;
     Clock* clock;
+    RtcEventLog* event_log;
   };
 
   ///////////////////////////////////////////////////////////////////////////