diff --git a/webrtc/logging/BUILD.gn b/webrtc/logging/BUILD.gn
index 0cf5731..aedbd9e 100644
--- a/webrtc/logging/BUILD.gn
+++ b/webrtc/logging/BUILD.gn
@@ -87,6 +87,7 @@
       ":rtc_event_log_proto",
       "..:webrtc_common",
       "../call:call_interfaces",
+      "../modules/audio_coding:audio_network_adaptor",
       "../modules/rtp_rtcp:rtp_rtcp",
       "../system_wrappers",
     ]
@@ -114,6 +115,7 @@
         "../base:rtc_base_approved",
         "../base:rtc_base_tests_utils",
         "../call",
+        "../modules/audio_coding:audio_network_adaptor",
         "../modules/rtp_rtcp",
         "../system_wrappers:metrics_default",
         "../test:test_support",
diff --git a/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h b/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h
index fcc5700..154882f 100644
--- a/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h
+++ b/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h
@@ -14,6 +14,7 @@
 #include <string>
 
 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/test/gmock.h"
 
 namespace webrtc {
@@ -70,7 +71,7 @@
                void(int32_t bitrate_bps, BandwidthUsage detector_state));
 
   MOCK_METHOD1(LogAudioNetworkAdaptation,
-               void(const AudioNetworkAdaptor::EncoderRuntimeConfig& config));
+               void(const AudioEncoderRuntimeConfig& config));
 
   MOCK_METHOD4(LogProbeClusterCreated,
                void(int id, int bitrate_bps, int min_probes, int min_bytes));
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log.cc b/webrtc/logging/rtc_event_log/rtc_event_log.cc
index 970d0df..d10dc98 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log.cc
@@ -22,6 +22,7 @@
 #include "webrtc/base/timeutils.h"
 #include "webrtc/call/call.h"
 #include "webrtc/logging/rtc_event_log/rtc_event_log_helper_thread.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h"
@@ -29,8 +30,8 @@
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
-#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/psfb.h"
+#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
@@ -85,7 +86,7 @@
   void LogDelayBasedBweUpdate(int32_t bitrate_bps,
                               BandwidthUsage detector_state) override;
   void LogAudioNetworkAdaptation(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) override;
+      const AudioEncoderRuntimeConfig& config) override;
   void LogProbeClusterCreated(int id,
                               int bitrate_bps,
                               int min_probes,
@@ -504,7 +505,7 @@
 }
 
 void RtcEventLogImpl::LogAudioNetworkAdaptation(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) {
+    const AudioEncoderRuntimeConfig& config) {
   std::unique_ptr<rtclog::Event> event(new rtclog::Event());
   event->set_timestamp_us(rtc::TimeMicros());
   event->set_type(rtclog::Event::AUDIO_NETWORK_ADAPTATION_EVENT);
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log.h b/webrtc/logging/rtc_event_log/rtc_event_log.h
index ccb37b3..f842252 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log.h
+++ b/webrtc/logging/rtc_event_log/rtc_event_log.h
@@ -17,7 +17,6 @@
 #include "webrtc/base/platform_file.h"
 #include "webrtc/call/audio_receive_stream.h"
 #include "webrtc/call/audio_send_stream.h"
-#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/modules/remote_bitrate_estimator/include/bwe_defines.h"
 #include "webrtc/video_receive_stream.h"
 #include "webrtc/video_send_stream.h"
@@ -32,6 +31,7 @@
 
 class Clock;
 class RtcEventLogImpl;
+struct AudioEncoderRuntimeConfig;
 
 enum class MediaType;
 
@@ -135,7 +135,7 @@
 
   // Logs audio encoder re-configuration driven by audio network adaptor.
   virtual void LogAudioNetworkAdaptation(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) = 0;
+      const AudioEncoderRuntimeConfig& config) = 0;
 
   // Logs when a probe cluster is created.
   virtual void LogProbeClusterCreated(int id,
@@ -199,7 +199,7 @@
   void LogDelayBasedBweUpdate(int32_t bitrate_bps,
                               BandwidthUsage detector_state) override {}
   void LogAudioNetworkAdaptation(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) override {}
+      const AudioEncoderRuntimeConfig& config) override {}
   void LogProbeClusterCreated(int id,
                               int bitrate_bps,
                               int min_probes,
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
index 815308d..ec10396 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
@@ -22,6 +22,7 @@
 #include "webrtc/base/logging.h"
 #include "webrtc/call/call.h"
 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 
 namespace webrtc {
@@ -511,7 +512,7 @@
 
 void ParsedRtcEventLog::GetAudioNetworkAdaptation(
     size_t index,
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) const {
+    AudioEncoderRuntimeConfig* config) const {
   RTC_CHECK_LT(index, GetNumberOfEvents());
   const rtclog::Event& event = events_[index];
   RTC_CHECK(event.has_type());
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_parser.h b/webrtc/logging/rtc_event_log/rtc_event_log_parser.h
index bb3c406..d711739 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.h
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.h
@@ -151,11 +151,10 @@
                               BandwidthUsage* detector_state) const;
 
   // Reads a audio network adaptation event to a (non-NULL)
-  // AudioNetworkAdaptor::EncoderRuntimeConfig struct. Only the fields that are
+  // AudioEncoderRuntimeConfig struct. Only the fields that are
   // stored in the protobuf will be written.
-  void GetAudioNetworkAdaptation(
-      size_t index,
-      AudioNetworkAdaptor::EncoderRuntimeConfig* config) const;
+  void GetAudioNetworkAdaptation(size_t index,
+                                 AudioEncoderRuntimeConfig* config) const;
 
   ParsedRtcEventLog::BweProbeClusterCreatedEvent GetBweProbeClusterCreated(
       size_t index) const;
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc
index 71c588c..d41a883 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc
@@ -22,6 +22,7 @@
 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
 #include "webrtc/logging/rtc_event_log/rtc_event_log_parser.h"
 #include "webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h"
@@ -227,10 +228,9 @@
   }
 }
 
-void GenerateAudioNetworkAdaptation(
-    uint32_t extensions_bitvector,
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config,
-    Random* prng) {
+void GenerateAudioNetworkAdaptation(uint32_t extensions_bitvector,
+                                    AudioEncoderRuntimeConfig* config,
+                                    Random* prng) {
   config->bitrate_bps = rtc::Optional<int>(prng->Rand(0, 3000000));
   config->enable_fec = rtc::Optional<bool>(prng->Rand<bool>());
   config->enable_dtx = rtc::Optional<bool>(prng->Rand<bool>());
@@ -859,7 +859,7 @@
     RtcEventLogTestHelper::VerifyAudioNetworkAdaptation(parsed_log, index,
                                                         config);
   }
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
 };
 
 TEST(RtcEventLogTest, LogAudioReceiveConfig) {
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
index e66c090..7519ee5 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
@@ -15,6 +15,7 @@
 #include <string>
 
 #include "webrtc/base/checks.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/test/gtest.h"
 #include "webrtc/test/testsupport/fileutils.h"
 
@@ -548,8 +549,8 @@
 void RtcEventLogTestHelper::VerifyAudioNetworkAdaptation(
     const ParsedRtcEventLog& parsed_log,
     size_t index,
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) {
-  AudioNetworkAdaptor::EncoderRuntimeConfig parsed_config;
+    const AudioEncoderRuntimeConfig& config) {
+  AudioEncoderRuntimeConfig parsed_config;
   parsed_log.GetAudioNetworkAdaptation(index, &parsed_config);
   EXPECT_EQ(config.bitrate_bps, parsed_config.bitrate_bps);
   EXPECT_EQ(config.enable_dtx, parsed_config.enable_dtx);
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h
index 0ca2d62..235d112 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h
@@ -63,7 +63,7 @@
   static void VerifyAudioNetworkAdaptation(
       const ParsedRtcEventLog& parsed_log,
       size_t index,
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config);
+      const AudioEncoderRuntimeConfig& config);
 
   static void VerifyLogStartEvent(const ParsedRtcEventLog& parsed_log,
                                   size_t index);
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.cc b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.cc
index bf79d78..ce1e250 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.cc
@@ -12,11 +12,11 @@
 
 namespace webrtc {
 
-AudioNetworkAdaptor::EncoderRuntimeConfig::EncoderRuntimeConfig() = default;
+AudioEncoderRuntimeConfig::AudioEncoderRuntimeConfig() = default;
 
-AudioNetworkAdaptor::EncoderRuntimeConfig::~EncoderRuntimeConfig() = default;
+AudioEncoderRuntimeConfig::~AudioEncoderRuntimeConfig() = default;
 
-AudioNetworkAdaptor::EncoderRuntimeConfig::EncoderRuntimeConfig(
-    const EncoderRuntimeConfig& other) = default;
+AudioEncoderRuntimeConfig::AudioEncoderRuntimeConfig(
+    const AudioEncoderRuntimeConfig& other) = default;
 
 }  // namespace webrtc
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 e1952f4..7408df2 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
@@ -112,9 +112,8 @@
   UpdateNetworkMetrics(network_metrics);
 }
 
-AudioNetworkAdaptor::EncoderRuntimeConfig
-AudioNetworkAdaptorImpl::GetEncoderRuntimeConfig() {
-  EncoderRuntimeConfig config;
+AudioEncoderRuntimeConfig AudioNetworkAdaptorImpl::GetEncoderRuntimeConfig() {
+  AudioEncoderRuntimeConfig config;
   for (auto& controller :
        controller_manager_->GetSortedControllers(last_metrics_))
     controller->MakeDecision(&config);
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 3713bda..f7bf70d 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
@@ -54,7 +54,7 @@
 
   void SetOverhead(size_t overhead_bytes_per_packet) override;
 
-  EncoderRuntimeConfig GetEncoderRuntimeConfig() override;
+  AudioEncoderRuntimeConfig GetEncoderRuntimeConfig() override;
 
   void StartDebugDump(FILE* file_handle) override;
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
index c434be3..53334c6 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
@@ -182,7 +182,7 @@
      DumpEncoderRuntimeConfigIsCalledOnGetEncoderRuntimeConfig) {
   auto states = CreateAudioNetworkAdaptor();
 
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   config.bitrate_bps = rtc::Optional<int>(32000);
   config.enable_fec = rtc::Optional<bool>(true);
 
@@ -255,7 +255,7 @@
 TEST(AudioNetworkAdaptorImplTest, LogRuntimeConfigOnGetEncoderRuntimeConfig) {
   auto states = CreateAudioNetworkAdaptor();
 
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   config.bitrate_bps = rtc::Optional<int>(32000);
   config.enable_fec = rtc::Optional<bool>(true);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc
index d8c74cd..92a9fad 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc
@@ -43,8 +43,7 @@
     overhead_bytes_per_packet_ = network_metrics.overhead_bytes_per_packet;
 }
 
-void BitrateController::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void BitrateController::MakeDecision(AudioEncoderRuntimeConfig* config) {
   // Decision on |bitrate_bps| should not have been made.
   RTC_DCHECK(!config->bitrate_bps);
   if (target_audio_bitrate_bps_ && overhead_bytes_per_packet_) {
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.h
index 5e03b45..ac13c50 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller.h
@@ -32,7 +32,7 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   const Config config_;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
index a90cb9a..9fab781 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
@@ -39,7 +39,7 @@
 void CheckDecision(BitrateController* controller,
                    const rtc::Optional<int>& frame_length_ms,
                    int expected_bitrate_bps) {
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   config.frame_length_ms = frame_length_ms;
   controller->MakeDecision(&config);
   EXPECT_EQ(rtc::Optional<int>(expected_bitrate_bps), config.bitrate_bps);
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.cc
index 77217a3..90c1e56 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.cc
@@ -41,8 +41,7 @@
     uplink_bandwidth_bps_ = network_metrics.uplink_bandwidth_bps;
 }
 
-void ChannelController::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void ChannelController::MakeDecision(AudioEncoderRuntimeConfig* config) {
   // Decision on |num_channels| should not have been made.
   RTC_DCHECK(!config->num_channels);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.h
index 0bcb4fd..9355d30 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller.h
@@ -39,7 +39,7 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   const Config config_;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller_unittest.cc
index def2e51..980292c 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/channel_controller_unittest.cc
@@ -39,7 +39,7 @@
     network_metrics.uplink_bandwidth_bps = uplink_bandwidth_bps;
     controller->UpdateNetworkMetrics(network_metrics);
   }
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   controller->MakeDecision(&config);
   EXPECT_EQ(rtc::Optional<size_t>(expected_num_channels), config.num_channels);
 }
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/controller.h
index 0ed23c8..4ae7951 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/controller.h
@@ -35,8 +35,7 @@
   // indicates an update on the corresponding network metric.
   virtual void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) = 0;
 
-  virtual void MakeDecision(
-      AudioNetworkAdaptor::EncoderRuntimeConfig* config) = 0;
+  virtual void MakeDecision(AudioEncoderRuntimeConfig* config) = 0;
 };
 
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc
index ed96e1b..4a2a57b 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/controller_manager_unittest.cc
@@ -299,10 +299,10 @@
   ASSERT_EQ(expected_types.size(), controllers.size());
 
   // We also check that the controllers follow the initial settings.
-  AudioNetworkAdaptor::EncoderRuntimeConfig encoder_config;
+  AudioEncoderRuntimeConfig encoder_config;
 
   for (size_t i = 0; i < controllers.size(); ++i) {
-    AudioNetworkAdaptor::EncoderRuntimeConfig encoder_config;
+    AudioEncoderRuntimeConfig encoder_config;
     // We check the order of |controllers| by judging their decisions.
     controllers[i]->MakeDecision(&encoder_config);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.cc b/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.cc
index e0af336..2e4757a 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.cc
@@ -49,9 +49,8 @@
   explicit DebugDumpWriterImpl(FILE* file_handle);
   ~DebugDumpWriterImpl() override = default;
 
-  void DumpEncoderRuntimeConfig(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config,
-      int64_t timestamp) override;
+  void DumpEncoderRuntimeConfig(const AudioEncoderRuntimeConfig& config,
+                                int64_t timestamp) override;
 
   void DumpNetworkMetrics(const Controller::NetworkMetrics& metrics,
                           int64_t timestamp) override;
@@ -104,7 +103,7 @@
 }
 
 void DebugDumpWriterImpl::DumpEncoderRuntimeConfig(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config,
+    const AudioEncoderRuntimeConfig& config,
     int64_t timestamp) {
 #ifdef WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP
   Event event;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.h b/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.h
index da4b031..1661cd3 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/debug_dump_writer.h
@@ -27,9 +27,8 @@
 
   virtual ~DebugDumpWriter() = default;
 
-  virtual void DumpEncoderRuntimeConfig(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config,
-      int64_t timestamp) = 0;
+  virtual void DumpEncoderRuntimeConfig(const AudioEncoderRuntimeConfig& config,
+                                        int64_t timestamp) = 0;
 
   virtual void DumpNetworkMetrics(const Controller::NetworkMetrics& metrics,
                                   int64_t timestamp) = 0;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.cc
index d03bd39..fc1f44d 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.cc
@@ -31,8 +31,7 @@
     uplink_bandwidth_bps_ = network_metrics.uplink_bandwidth_bps;
 }
 
-void DtxController::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void DtxController::MakeDecision(AudioEncoderRuntimeConfig* config) {
   // Decision on |enable_dtx| should not have been made.
   RTC_DCHECK(!config->enable_dtx);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.h
index 1bf2ce7..583ef3c 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller.h
@@ -35,7 +35,7 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   const Config config_;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller_unittest.cc
index 7b60e8f..73527ee 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/dtx_controller_unittest.cc
@@ -37,7 +37,7 @@
     network_metrics.uplink_bandwidth_bps = uplink_bandwidth_bps;
     controller->UpdateNetworkMetrics(network_metrics);
   }
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   controller->MakeDecision(&config);
   EXPECT_EQ(rtc::Optional<bool>(expected_dtx_enabled), config.enable_dtx);
 }
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.cc b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
index 619a247..b4fcbfd 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.cc
@@ -30,7 +30,7 @@
 EventLogWriter::~EventLogWriter() = default;
 
 void EventLogWriter::MaybeLogEncoderConfig(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) {
+    const AudioEncoderRuntimeConfig& config) {
   if (last_logged_config_.num_channels != config.num_channels)
     return LogEncoderConfig(config);
   if (last_logged_config_.enable_dtx != config.enable_dtx)
@@ -59,8 +59,7 @@
   }
 }
 
-void EventLogWriter::LogEncoderConfig(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) {
+void EventLogWriter::LogEncoderConfig(const AudioEncoderRuntimeConfig& config) {
   event_log_->LogAudioNetworkAdaptation(config);
   last_logged_config_ = config;
 }
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.h b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.h
index 740da8c..d0b38bd 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer.h
@@ -24,18 +24,16 @@
                  float min_bitrate_change_fraction,
                  float min_packet_loss_change_fraction);
   ~EventLogWriter();
-  void MaybeLogEncoderConfig(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config);
+  void MaybeLogEncoderConfig(const AudioEncoderRuntimeConfig& config);
 
  private:
-  void LogEncoderConfig(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config);
+  void LogEncoderConfig(const AudioEncoderRuntimeConfig& config);
 
   RtcEventLog* const event_log_;
   const int min_bitrate_change_bps_;
   const float min_bitrate_change_fraction_;
   const float min_packet_loss_change_fraction_;
-  AudioNetworkAdaptor::EncoderRuntimeConfig last_logged_config_;
+  AudioEncoderRuntimeConfig last_logged_config_;
   RTC_DISALLOW_COPY_AND_ASSIGN(EventLogWriter);
 };
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer_unittest.cc
index 289b8e2..443e4d1 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/event_log_writer_unittest.cc
@@ -43,7 +43,7 @@
 struct EventLogWriterStates {
   std::unique_ptr<EventLogWriter> event_log_writer;
   std::unique_ptr<testing::StrictMock<MockRtcEventLog>> event_log;
-  AudioNetworkAdaptor::EncoderRuntimeConfig runtime_config;
+  AudioEncoderRuntimeConfig runtime_config;
 };
 
 EventLogWriterStates CreateEventLogWriter() {
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
index 835970f..c39457d 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.cc
@@ -79,8 +79,7 @@
   }
 }
 
-void FecControllerPlrBased::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void FecControllerPlrBased::MakeDecision(AudioEncoderRuntimeConfig* config) {
   RTC_DCHECK(!config->enable_fec);
   RTC_DCHECK(!config->uplink_packet_loss_fraction);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h
index 98d8543..52d0265 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h
@@ -55,7 +55,7 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   bool FecEnablingDecision(const rtc::Optional<float>& packet_loss) const;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based_unittest.cc
index f55a443..0830479 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based_unittest.cc
@@ -96,7 +96,7 @@
 void CheckDecision(FecControllerPlrBasedTestStates* states,
                    bool expected_enable_fec,
                    float expected_uplink_packet_loss_fraction) {
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   states->controller->MakeDecision(&config);
   EXPECT_EQ(rtc::Optional<bool>(expected_enable_fec), config.enable_fec);
   EXPECT_EQ(rtc::Optional<float>(expected_uplink_packet_loss_fraction),
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.cc
index 1cab719..d21e8be 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.cc
@@ -42,8 +42,7 @@
   }
 }
 
-void FecControllerRplrBased::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void FecControllerRplrBased::MakeDecision(AudioEncoderRuntimeConfig* config) {
   RTC_DCHECK(!config->enable_fec);
   RTC_DCHECK(!config->uplink_packet_loss_fraction);
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
index 849f43c..b2904b3 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based.h
@@ -47,7 +47,7 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   bool FecEnablingDecision() const;
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based_unittest.cc
index 6cb63cd..0376b9a 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/fec_controller_rplr_based_unittest.cc
@@ -113,7 +113,7 @@
 void CheckDecision(FecControllerRplrBased* controller,
                    bool expected_enable_fec,
                    float expected_uplink_packet_loss_fraction) {
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   controller->MakeDecision(&config);
 
   // Less compact than comparing optionals, but yields more readable errors.
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
index 580d080..5111b8a 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.cc
@@ -65,8 +65,7 @@
     overhead_bytes_per_packet_ = network_metrics.overhead_bytes_per_packet;
 }
 
-void FrameLengthController::MakeDecision(
-    AudioNetworkAdaptor::EncoderRuntimeConfig* config) {
+void FrameLengthController::MakeDecision(AudioEncoderRuntimeConfig* config) {
   // Decision on |frame_length_ms| should not have been made.
   RTC_DCHECK(!config->frame_length_ms);
 
@@ -92,7 +91,7 @@
 }
 
 bool FrameLengthController::FrameLengthIncreasingDecision(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) const {
+    const AudioEncoderRuntimeConfig& config) const {
   // Increase frame length if
   // 1. |uplink_bandwidth_bps| is known to be smaller or equal than
   //    |min_encoder_bitrate_bps| plus |prevent_overuse_margin_bps| plus the
@@ -129,7 +128,7 @@
 }
 
 bool FrameLengthController::FrameLengthDecreasingDecision(
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) const {
+    const AudioEncoderRuntimeConfig& config) const {
   // Decrease frame length if
   // 1. shorter frame length is available AND
   // 2. |uplink_bandwidth_bps| is known to be bigger than
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.h
index 74cbb56..4589382 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller.h
@@ -54,14 +54,14 @@
 
   void UpdateNetworkMetrics(const NetworkMetrics& network_metrics) override;
 
-  void MakeDecision(AudioNetworkAdaptor::EncoderRuntimeConfig* config) override;
+  void MakeDecision(AudioEncoderRuntimeConfig* config) override;
 
  private:
   bool FrameLengthIncreasingDecision(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) const;
+      const AudioEncoderRuntimeConfig& config) const;
 
   bool FrameLengthDecreasingDecision(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) const;
+      const AudioEncoderRuntimeConfig& config) const;
 
   const Config config_;
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc
index ac888b6..beff4ed 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc
@@ -101,7 +101,7 @@
 void CheckDecision(FrameLengthController* controller,
                    const rtc::Optional<bool>& enable_fec,
                    int expected_frame_length_ms) {
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   config.enable_fec = enable_fec;
   controller->MakeDecision(&config);
   EXPECT_EQ(rtc::Optional<int>(expected_frame_length_ms),
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h b/webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h
index 0ad4a1e..2ef8854 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h
@@ -15,28 +15,29 @@
 
 namespace webrtc {
 
+struct AudioEncoderRuntimeConfig {
+  AudioEncoderRuntimeConfig();
+  AudioEncoderRuntimeConfig(const AudioEncoderRuntimeConfig& other);
+  ~AudioEncoderRuntimeConfig();
+  rtc::Optional<int> bitrate_bps;
+  rtc::Optional<int> frame_length_ms;
+  // Note: This is what we tell the encoder. It doesn't have to reflect
+  // the actual NetworkMetrics; it's subject to our decision.
+  rtc::Optional<float> uplink_packet_loss_fraction;
+  rtc::Optional<bool> enable_fec;
+  rtc::Optional<bool> enable_dtx;
+
+  // Some encoders can encode fewer channels than the actual input to make
+  // better use of the bandwidth. |num_channels| sets the number of channels
+  // to encode.
+  rtc::Optional<size_t> num_channels;
+};
+
 // An AudioNetworkAdaptor optimizes the audio experience by suggesting a
 // suitable runtime configuration (bit rate, frame length, FEC, etc.) to the
 // encoder based on network metrics.
 class AudioNetworkAdaptor {
  public:
-  struct EncoderRuntimeConfig {
-    EncoderRuntimeConfig();
-    EncoderRuntimeConfig(const EncoderRuntimeConfig& other);
-    ~EncoderRuntimeConfig();
-    rtc::Optional<int> bitrate_bps;
-    rtc::Optional<int> frame_length_ms;
-    // Note: This is what we tell the encoder. It doesn't have to reflect
-    // the actual NetworkMetrics; it's subject to our decision.
-    rtc::Optional<float> uplink_packet_loss_fraction;
-    rtc::Optional<bool> enable_fec;
-    rtc::Optional<bool> enable_dtx;
-
-    // Some encoders can encode fewer channels than the actual input to make
-    // better use of the bandwidth. |num_channels| sets the number of channels
-    // to encode.
-    rtc::Optional<size_t> num_channels;
-  };
 
   virtual ~AudioNetworkAdaptor() = default;
 
@@ -54,7 +55,7 @@
 
   virtual void SetOverhead(size_t overhead_bytes_per_packet) = 0;
 
-  virtual EncoderRuntimeConfig GetEncoderRuntimeConfig() = 0;
+  virtual AudioEncoderRuntimeConfig GetEncoderRuntimeConfig() = 0;
 
   virtual void StartDebugDump(FILE* file_handle) = 0;
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_audio_network_adaptor.h b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_audio_network_adaptor.h
index 104dde6..4b9a477 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_audio_network_adaptor.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_audio_network_adaptor.h
@@ -35,7 +35,7 @@
 
   MOCK_METHOD1(SetOverhead, void(size_t overhead_bytes_per_packet));
 
-  MOCK_METHOD0(GetEncoderRuntimeConfig, EncoderRuntimeConfig());
+  MOCK_METHOD0(GetEncoderRuntimeConfig, AudioEncoderRuntimeConfig());
 
   MOCK_METHOD1(StartDebugDump, void(FILE* file_handle));
 
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller.h b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller.h
index 2b8dc9e..e856601 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_controller.h
@@ -22,8 +22,7 @@
   MOCK_METHOD0(Die, void());
   MOCK_METHOD1(UpdateNetworkMetrics,
                void(const NetworkMetrics& network_metrics));
-  MOCK_METHOD1(MakeDecision,
-               void(AudioNetworkAdaptor::EncoderRuntimeConfig* config));
+  MOCK_METHOD1(MakeDecision, void(AudioEncoderRuntimeConfig* config));
 };
 
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h
index 6a20f7a..a276b81 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h
+++ b/webrtc/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h
@@ -22,7 +22,7 @@
   MOCK_METHOD0(Die, void());
 
   MOCK_METHOD2(DumpEncoderRuntimeConfig,
-               void(const AudioNetworkAdaptor::EncoderRuntimeConfig& config,
+               void(const AudioEncoderRuntimeConfig& config,
                     int64_t timestamp));
   MOCK_METHOD2(DumpNetworkMetrics,
                void(const Controller::NetworkMetrics& metrics,
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 c5fefc4..04c0cf1 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
@@ -87,14 +87,14 @@
   return states;
 }
 
-AudioNetworkAdaptor::EncoderRuntimeConfig CreateEncoderRuntimeConfig() {
+AudioEncoderRuntimeConfig CreateEncoderRuntimeConfig() {
   constexpr int kBitrate = 40000;
   constexpr int kFrameLength = 60;
   constexpr bool kEnableFec = true;
   constexpr bool kEnableDtx = false;
   constexpr size_t kNumChannels = 1;
   constexpr float kPacketLossFraction = 0.1f;
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
   config.bitrate_bps = rtc::Optional<int>(kBitrate);
   config.frame_length_ms = rtc::Optional<int>(kFrameLength);
   config.enable_fec = rtc::Optional<bool>(kEnableFec);
@@ -105,9 +105,8 @@
   return config;
 }
 
-void CheckEncoderRuntimeConfig(
-    const AudioEncoderOpus* encoder,
-    const AudioNetworkAdaptor::EncoderRuntimeConfig& config) {
+void CheckEncoderRuntimeConfig(const AudioEncoderOpus* encoder,
+                               const AudioEncoderRuntimeConfig& config) {
   EXPECT_EQ(*config.bitrate_bps, encoder->GetTargetBitrate());
   EXPECT_EQ(*config.frame_length_ms, encoder->next_frame_length_ms());
   EXPECT_EQ(*config.enable_fec, encoder->fec_enabled());
@@ -472,7 +471,7 @@
   states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr);
 
   auto config = CreateEncoderRuntimeConfig();
-  AudioNetworkAdaptor::EncoderRuntimeConfig empty_config;
+  AudioEncoderRuntimeConfig empty_config;
 
   EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig())
       .WillOnce(Return(config))
diff --git a/webrtc/tools/DEPS b/webrtc/tools/DEPS
index ac56340..84bf153 100644
--- a/webrtc/tools/DEPS
+++ b/webrtc/tools/DEPS
@@ -4,6 +4,7 @@
   "+webrtc/common_video",
   "+webrtc/logging/rtc_event_log",
   "+webrtc/modules/audio_device",
+  "+webrtc/modules/audio_coding/audio_network_adaptor",
   "+webrtc/modules/audio_processing",
   "+webrtc/modules/bitrate_controller",
   "+webrtc/modules/congestion_controller",
diff --git a/webrtc/tools/event_log_visualizer/analyzer.h b/webrtc/tools/event_log_visualizer/analyzer.h
index 1acf756..d72ad31 100644
--- a/webrtc/tools/event_log_visualizer/analyzer.h
+++ b/webrtc/tools/event_log_visualizer/analyzer.h
@@ -20,6 +20,7 @@
 
 #include "webrtc/base/function_view.h"
 #include "webrtc/logging/rtc_event_log/rtc_event_log_parser.h"
+#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
 #include "webrtc/tools/event_log_visualizer/plot_base.h"
@@ -55,7 +56,7 @@
 
 struct AudioNetworkAdaptationEvent {
   uint64_t timestamp;
-  AudioNetworkAdaptor::EncoderRuntimeConfig config;
+  AudioEncoderRuntimeConfig config;
 };
 
 class EventLogAnalyzer {
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
index 38bc45a..3a4a970 100644
--- a/webrtc/voice_engine/channel.cc
+++ b/webrtc/voice_engine/channel.cc
@@ -163,7 +163,7 @@
   }
 
   void LogAudioNetworkAdaptation(
-      const AudioNetworkAdaptor::EncoderRuntimeConfig& config) override {
+      const AudioEncoderRuntimeConfig& config) override {
     rtc::CritScope lock(&crit_);
     if (event_log_) {
       event_log_->LogAudioNetworkAdaptation(config);
