Pass event log to ANA.

BUG=webrtc:6845

Review-Url: https://codereview.webrtc.org/2553413002
Cr-Commit-Position: refs/heads/master@{#16052}
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc
index a9922b0..3b767d9 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc
@@ -14,7 +14,8 @@
 
 namespace webrtc {
 
-AudioNetworkAdaptorImpl::Config::Config() = default;
+AudioNetworkAdaptorImpl::Config::Config()
+    : event_log(nullptr), clock(nullptr){};
 
 AudioNetworkAdaptorImpl::Config::~Config() = default;
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h
index 549eef9..801a9cc 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h
@@ -22,11 +22,14 @@
 
 namespace webrtc {
 
+class RtcEventLog;
+
 class AudioNetworkAdaptorImpl final : public AudioNetworkAdaptor {
  public:
   struct Config {
     Config();
     ~Config();
+    RtcEventLog* event_log;
     const Clock* clock;
   };
 
diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.cc b/webrtc/modules/audio_coding/codecs/audio_encoder.cc
index 751f9cf..9e0cf4a 100644
--- a/webrtc/modules/audio_coding/codecs/audio_encoder.cc
+++ b/webrtc/modules/audio_coding/codecs/audio_encoder.cc
@@ -66,6 +66,7 @@
 AudioEncoder::ReclaimContainedEncoders() { return nullptr; }
 
 bool AudioEncoder::EnableAudioNetworkAdaptor(const std::string& config_string,
+                                             RtcEventLog* event_log,
                                              const Clock* clock) {
   return false;
 }
diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.h b/webrtc/modules/audio_coding/codecs/audio_encoder.h
index e1b3d82..47152f9 100644
--- a/webrtc/modules/audio_coding/codecs/audio_encoder.h
+++ b/webrtc/modules/audio_coding/codecs/audio_encoder.h
@@ -23,6 +23,7 @@
 namespace webrtc {
 
 class Clock;
+class RtcEventLog;
 
 // This is the interface class for encoders in AudioCoding module. Each codec
 // type must have an implementation of this class.
@@ -163,6 +164,7 @@
 
   // Enables audio network adaptor. Returns true if successful.
   virtual bool EnableAudioNetworkAdaptor(const std::string& config_string,
+                                         RtcEventLog* event_log,
                                          const Clock* clock);
 
   // Disables audio network adaptor.
diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 78f8a4b..78591e1 100644
--- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -181,9 +181,11 @@
       audio_network_adaptor_creator_(
           audio_network_adaptor_creator
               ? std::move(audio_network_adaptor_creator)
-              : [this](const std::string& config_string, const Clock* clock) {
+              : [this](const std::string& config_string,
+                       RtcEventLog* event_log,
+                       const Clock* clock) {
                   return DefaultAudioNetworkAdaptorCreator(config_string,
-                                                           clock);
+                                                           event_log, clock);
               }),
       bitrate_smoother_(bitrate_smoother
           ? std::move(bitrate_smoother) : std::unique_ptr<SmoothingFilter>(
@@ -268,8 +270,10 @@
 
 bool AudioEncoderOpus::EnableAudioNetworkAdaptor(
     const std::string& config_string,
+    RtcEventLog* event_log,
     const Clock* clock) {
-  audio_network_adaptor_ = audio_network_adaptor_creator_(config_string, clock);
+  audio_network_adaptor_ =
+      audio_network_adaptor_creator_(config_string, event_log, clock);
   return audio_network_adaptor_.get() != nullptr;
 }
 
@@ -526,9 +530,11 @@
 std::unique_ptr<AudioNetworkAdaptor>
 AudioEncoderOpus::DefaultAudioNetworkAdaptorCreator(
     const std::string& config_string,
+    RtcEventLog* event_log,
     const Clock* clock) const {
   AudioNetworkAdaptorImpl::Config config;
   config.clock = clock;
+  config.event_log = event_log;
   return std::unique_ptr<AudioNetworkAdaptor>(new AudioNetworkAdaptorImpl(
       config, ControllerManagerImpl::Create(
                   config_string, NumChannels(), supported_frame_lengths_ms(),
diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
index 82595ab..051a607 100644
--- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
+++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
@@ -25,6 +25,8 @@
 
 namespace webrtc {
 
+class RtcEventLog;
+
 struct CodecInst;
 
 class AudioEncoderOpus final : public AudioEncoder {
@@ -78,6 +80,7 @@
 
   using AudioNetworkAdaptorCreator =
       std::function<std::unique_ptr<AudioNetworkAdaptor>(const std::string&,
+                                                         RtcEventLog*,
                                                          const Clock*)>;
   AudioEncoderOpus(
       const Config& config,
@@ -106,6 +109,7 @@
   bool SetApplication(Application application) override;
   void SetMaxPlaybackRate(int frequency_hz) override;
   bool EnableAudioNetworkAdaptor(const std::string& config_string,
+                                 RtcEventLog* event_log,
                                  const Clock* clock) override;
   void DisableAudioNetworkAdaptor() override;
   void OnReceivedUplinkPacketLossFraction(
@@ -151,6 +155,7 @@
   void ApplyAudioNetworkAdaptor();
   std::unique_ptr<AudioNetworkAdaptor> DefaultAudioNetworkAdaptorCreator(
       const std::string& config_string,
+      RtcEventLog* event_log,
       const Clock* clock) const;
 
   void MaybeUpdateUplinkBandwidth();
diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
index 3e80595..ff6e628 100644
--- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
@@ -59,7 +59,7 @@
   std::weak_ptr<MockAudioNetworkAdaptor*> mock_ptr(
       states.mock_audio_network_adaptor);
   AudioEncoderOpus::AudioNetworkAdaptorCreator creator = [mock_ptr](
-      const std::string&, const Clock*) {
+      const std::string&, RtcEventLog* event_log, const Clock*) {
     std::unique_ptr<MockAudioNetworkAdaptor> adaptor(
         new NiceMock<MockAudioNetworkAdaptor>());
     EXPECT_CALL(*adaptor, Die());
@@ -266,7 +266,7 @@
 TEST(AudioEncoderOpusTest,
      InvokeAudioNetworkAdaptorOnReceivedUplinkPacketLossFraction) {
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
   EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig())
@@ -283,7 +283,7 @@
 
 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) {
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
   EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig())
@@ -305,7 +305,7 @@
 
 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) {
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
   EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig())
@@ -321,7 +321,7 @@
 
 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedOverhead) {
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
   EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig())
@@ -450,7 +450,7 @@
 
 TEST(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) {
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
   AudioNetworkAdaptor::EncoderRuntimeConfig empty_config;
@@ -471,7 +471,7 @@
 TEST(AudioEncoderOpusTest, UpdateUplinkBandwidthInAudioNetworkAdaptor) {
   rtc::ScopedFakeClock fake_clock;
   auto states = CreateCodec(2);
-  states.encoder->EnableAudioNetworkAdaptor("", nullptr);
+  states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
   std::array<int16_t, 480 * 2> audio;
   audio.fill(0);
   rtc::Buffer encoded;
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
index c12d87c..68f2e2d 100644
--- a/webrtc/voice_engine/channel.cc
+++ b/webrtc/voice_engine/channel.cc
@@ -1532,7 +1532,7 @@
   audio_coding_->ModifyEncoder([&](std::unique_ptr<AudioEncoder>* encoder) {
     if (*encoder) {
       success = (*encoder)->EnableAudioNetworkAdaptor(
-          config_string, Clock::GetRealTimeClock());
+          config_string, event_log_proxy_.get(), Clock::GetRealTimeClock());
     }
   });
   return success;