Remove the injectable bitrate allocation strategy API.

This removes PeerConnectionInterface::SetBitrateAllocationStrategy()
plus a ton of now-dead code.

Bug: webrtc:10556
Change-Id: Icfae3bdd011588552934d9db4df16000847db7c3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133169
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28523}
diff --git a/api/DEPS b/api/DEPS
index f49cd81..58b6736 100644
--- a/api/DEPS
+++ b/api/DEPS
@@ -120,7 +120,6 @@
     "+media/base/media_config.h",
     "+media/base/media_engine.h",
     "+p2p/base/port_allocator.h",
-    "+rtc_base/bitrate_allocation_strategy.h",
     "+rtc_base/network.h",
     "+rtc_base/rtc_certificate.h",
     "+rtc_base/rtc_certificate_generator.h",
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index 6841e14..69935d2 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -105,8 +105,6 @@
 // PortAllocator in the PeerConnection api.
 #include "media/base/media_engine.h"  // nogncheck
 #include "p2p/base/port_allocator.h"  // nogncheck
-// TODO(nisse): The interface for bitrate allocation strategy belongs in api/.
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "rtc_base/network.h"
 #include "rtc_base/rtc_certificate.h"
 #include "rtc_base/rtc_certificate_generator.h"
@@ -1036,14 +1034,6 @@
   // of the methods.
   virtual RTCError SetBitrate(const BitrateParameters& bitrate_parameters);
 
-  // Sets current strategy. If not set default WebRTC allocator will be used.
-  // May be changed during an active session. The strategy
-  // ownership is passed with std::unique_ptr
-  // TODO(alexnarest): Make this pure virtual when tests will be updated
-  virtual void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) {}
-
   // Enable/disable playout of received audio streams. Enabled by default. Note
   // that even if playout is enabled, streams will only be played out if the
   // appropriate SDP is also applied. Setting |playout| to false will stop
diff --git a/api/peer_connection_proxy.h b/api/peer_connection_proxy.h
index 70bdd11..61ac6a1 100644
--- a/api/peer_connection_proxy.h
+++ b/api/peer_connection_proxy.h
@@ -117,9 +117,6 @@
 PROXY_METHOD1(bool, AddIceCandidate, const IceCandidateInterface*)
 PROXY_METHOD1(bool, RemoveIceCandidates, const std::vector<cricket::Candidate>&)
 PROXY_METHOD1(RTCError, SetBitrate, const BitrateSettings&)
-PROXY_METHOD1(void,
-              SetBitrateAllocationStrategy,
-              std::unique_ptr<rtc::BitrateAllocationStrategy>)
 PROXY_METHOD1(void, SetAudioPlayout, bool)
 PROXY_METHOD1(void, SetAudioRecording, bool)
 PROXY_METHOD1(rtc::scoped_refptr<DtlsTransportInterface>,
diff --git a/api/test/mock_peerconnectioninterface.h b/api/test/mock_peerconnectioninterface.h
index fa132b4..8e9c54a 100644
--- a/api/test/mock_peerconnectioninterface.h
+++ b/api/test/mock_peerconnectioninterface.h
@@ -117,8 +117,6 @@
                bool(const std::vector<cricket::Candidate>&));
   MOCK_METHOD1(SetBitrate, RTCError(const BitrateSettings&));
   MOCK_METHOD1(SetBitrate, RTCError(const BitrateParameters&));
-  MOCK_METHOD1(SetBitrateAllocationStrategy,
-               void(std::unique_ptr<rtc::BitrateAllocationStrategy>));
   MOCK_METHOD1(SetAudioPlayout, void(bool));
   MOCK_METHOD1(SetAudioRecording, void(bool));
   MOCK_METHOD0(signaling_state, SignalingState());
diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc
index 9190441..d387ff1 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -827,7 +827,6 @@
       MediaStreamAllocationConfig{
           constraints.min.bps<uint32_t>(), constraints.max.bps<uint32_t>(), 0,
           allocation_settings_.DefaultPriorityBitrate().bps(), true,
-          config_.track_id,
           allocation_settings_.BitratePriority().value_or(
               config_.bitrate_priority)});
 }
diff --git a/call/bitrate_allocator.cc b/call/bitrate_allocator.cc
index 97a2bb6..487dd47 100644
--- a/call/bitrate_allocator.cc
+++ b/call/bitrate_allocator.cc
@@ -64,11 +64,8 @@
       total_requested_padding_bitrate_(0),
       total_requested_min_bitrate_(0),
       total_requested_max_bitrate_(0),
-      bitrate_allocation_strategy_(nullptr),
       transmission_max_bitrate_multiplier_(
-          GetTransmissionMaxBitrateMultiplier()),
-      ignore_injected_strategy_(
-          field_trial::IsEnabled("WebRTC-IgnoreInjectedAllocationStrategy")) {
+          GetTransmissionMaxBitrateMultiplier()) {
   sequenced_checker_.Detach();
 }
 
@@ -175,10 +172,10 @@
     it->enforce_min_bitrate = config.enforce_min_bitrate;
     it->bitrate_priority = config.bitrate_priority;
   } else {
-    bitrate_observer_configs_.push_back(ObserverConfig(
-        observer, config.min_bitrate_bps, config.max_bitrate_bps,
-        config.pad_up_bitrate_bps, config.priority_bitrate_bps,
-        config.enforce_min_bitrate, config.track_id, config.bitrate_priority));
+    bitrate_observer_configs_.push_back(
+        ObserverConfig(observer, config.min_bitrate_bps, config.max_bitrate_bps,
+                       config.pad_up_bitrate_bps, config.priority_bitrate_bps,
+                       config.enforce_min_bitrate, config.bitrate_priority));
   }
 
   if (last_target_bps_ > 0) {
@@ -283,13 +280,6 @@
   }
 }
 
-void BitrateAllocator::SetBitrateAllocationStrategy(
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy) {
-  RTC_DCHECK_RUN_ON(&sequenced_checker_);
-  bitrate_allocation_strategy_ = std::move(bitrate_allocation_strategy);
-}
-
 BitrateAllocator::ObserverConfigs::const_iterator
 BitrateAllocator::FindObserverConfig(
     const BitrateAllocatorObserver* observer) const {
@@ -316,25 +306,6 @@
   if (bitrate_observer_configs_.empty())
     return ObserverAllocation();
 
-  if (!ignore_injected_strategy_ && bitrate_allocation_strategy_ != nullptr) {
-    // Note: This intentionally causes slicing, we only copy the fields in
-    // ObserverConfig that are inherited from TrackConfig.
-    std::vector<rtc::BitrateAllocationStrategy::TrackConfig> track_configs(
-        bitrate_observer_configs_.begin(), bitrate_observer_configs_.end());
-
-    std::vector<uint32_t> track_allocations =
-        bitrate_allocation_strategy_->AllocateBitrates(
-            bitrate, std::move(track_configs));
-    // The strategy should return allocation for all tracks.
-    RTC_CHECK(track_allocations.size() == bitrate_observer_configs_.size());
-    ObserverAllocation allocation;
-    auto track_allocations_it = track_allocations.begin();
-    for (const auto& observer_config : bitrate_observer_configs_) {
-      allocation[observer_config.observer] = *track_allocations_it++;
-    }
-    return allocation;
-  }
-
   if (bitrate == 0)
     return ZeroRateAllocation();
 
diff --git a/call/bitrate_allocator.h b/call/bitrate_allocator.h
index 8611a89..ecff422 100644
--- a/call/bitrate_allocator.h
+++ b/call/bitrate_allocator.h
@@ -20,7 +20,6 @@
 #include <vector>
 
 #include "api/call/bitrate_allocation.h"
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "rtc_base/synchronization/sequence_checker.h"
 
 namespace webrtc {
@@ -57,7 +56,6 @@
   uint32_t pad_up_bitrate_bps;
   int64_t priority_bitrate_bps;
   bool enforce_min_bitrate;
-  std::string track_id;
   double bitrate_priority;
 };
 
@@ -116,33 +114,24 @@
   // the list of added observers, a best guess is returned.
   int GetStartBitrate(BitrateAllocatorObserver* observer) const override;
 
-  // Sets external allocation strategy. If strategy is not set default WebRTC
-  // allocation mechanism will be used. The strategy may be changed during call.
-  // Setting NULL value will restore default WEBRTC allocation strategy.
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy);
-
  private:
-  struct ObserverConfig : rtc::BitrateAllocationStrategy::TrackConfig {
+  struct ObserverConfig {
     ObserverConfig(BitrateAllocatorObserver* observer,
                    uint32_t min_bitrate_bps,
                    uint32_t max_bitrate_bps,
                    uint32_t pad_up_bitrate_bps,
                    int64_t priority_bitrate_bps,
                    bool enforce_min_bitrate,
-                   std::string track_id,
                    double bitrate_priority)
-        : TrackConfig(min_bitrate_bps,
-                      max_bitrate_bps,
-                      enforce_min_bitrate,
-                      track_id),
-          observer(observer),
+        : observer(observer),
           pad_up_bitrate_bps(pad_up_bitrate_bps),
           priority_bitrate_bps(priority_bitrate_bps),
           allocated_bitrate_bps(-1),
           media_ratio(1.0),
-          bitrate_priority(bitrate_priority) {}
+          bitrate_priority(bitrate_priority),
+          min_bitrate_bps(min_bitrate_bps),
+          max_bitrate_bps(max_bitrate_bps),
+          enforce_min_bitrate(enforce_min_bitrate) {}
 
     BitrateAllocatorObserver* observer;
     uint32_t pad_up_bitrate_bps;
@@ -154,6 +143,15 @@
     // observers, it should be allocated twice the bitrate above its min.
     double bitrate_priority;
 
+    // Minimum bitrate supported by track.
+    uint32_t min_bitrate_bps;
+
+    // Maximum bitrate supported by track.
+    uint32_t max_bitrate_bps;
+
+    // True means track may not be paused by allocating 0 bitrate.
+    bool enforce_min_bitrate;
+
     uint32_t LastAllocatedBitrate() const;
     // The minimum bitrate required by this observer, including
     // enable-hysteresis if the observer is in a paused state.
@@ -222,8 +220,7 @@
   // Allow packets to be transmitted in up to 2 times max video bitrate if the
   // bandwidth estimate allows it.
   // TODO(bugs.webrtc.org/8541): May be worth to refactor to keep this logic in
-  // video send stream. Similar logic is implemented in
-  // AudioPriorityBitrateAllocationStrategy.
+  // video send stream.
   static uint8_t GetTransmissionMaxBitrateMultiplier();
 
   SequenceChecker sequenced_checker_;
@@ -243,10 +240,7 @@
   uint32_t total_requested_padding_bitrate_ RTC_GUARDED_BY(&sequenced_checker_);
   uint32_t total_requested_min_bitrate_ RTC_GUARDED_BY(&sequenced_checker_);
   uint32_t total_requested_max_bitrate_ RTC_GUARDED_BY(&sequenced_checker_);
-  std::unique_ptr<rtc::BitrateAllocationStrategy> bitrate_allocation_strategy_
-      RTC_GUARDED_BY(&sequenced_checker_);
   const uint8_t transmission_max_bitrate_multiplier_;
-  const bool ignore_injected_strategy_;
 };
 
 }  // namespace webrtc
diff --git a/call/bitrate_allocator_unittest.cc b/call/bitrate_allocator_unittest.cc
index f177caf..69dfa1a 100644
--- a/call/bitrate_allocator_unittest.cc
+++ b/call/bitrate_allocator_unittest.cc
@@ -97,12 +97,11 @@
                    uint32_t max_bitrate_bps,
                    uint32_t pad_up_bitrate_bps,
                    bool enforce_min_bitrate,
-                   std::string track_id,
                    double bitrate_priority) {
     allocator_->AddObserver(
-        observer, {min_bitrate_bps, max_bitrate_bps, pad_up_bitrate_bps,
-                   /* priority_bitrate */ 0, enforce_min_bitrate, track_id,
-                   bitrate_priority});
+        observer,
+        {min_bitrate_bps, max_bitrate_bps, pad_up_bitrate_bps,
+         /* priority_bitrate */ 0, enforce_min_bitrate, bitrate_priority});
   }
   MediaStreamAllocationConfig DefaultConfig() const {
     MediaStreamAllocationConfig default_config;
@@ -111,7 +110,6 @@
     default_config.pad_up_bitrate_bps = 0;
     default_config.priority_bitrate_bps = 0;
     default_config.enforce_min_bitrate = true;
-    default_config.track_id = "";
     default_config.bitrate_priority = kDefaultBitratePriority;
     return default_config;
   }
@@ -165,7 +163,7 @@
               OnAllocationLimitsChanged(kMinSendBitrateBps, kPadUpToBitrateBps,
                                         kMaxBitrateBps));
   AddObserver(&bitrate_observer, kMinSendBitrateBps, kMaxBitrateBps,
-              kPadUpToBitrateBps, true, "", kDefaultBitratePriority);
+              kPadUpToBitrateBps, true, kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer));
   allocator_->OnNetworkChanged(200000, 0, 0, kDefaultProbingIntervalMs);
   EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer));
@@ -178,14 +176,14 @@
   // Expect |max_padding_bitrate_bps| to change to 0 if the observer is updated.
   EXPECT_CALL(limit_observer_,
               OnAllocationLimitsChanged(kMinSendBitrateBps, 0, _));
-  AddObserver(&bitrate_observer, kMinSendBitrateBps, 4000000, 0, true, "",
+  AddObserver(&bitrate_observer, kMinSendBitrateBps, 4000000, 0, true,
               kDefaultBitratePriority);
   EXPECT_CALL(limit_observer_,
               OnAllocationLimitsChanged(kMinSendBitrateBps, 0, _));
   EXPECT_EQ(4000000, allocator_->GetStartBitrate(&bitrate_observer));
 
   AddObserver(&bitrate_observer, kMinSendBitrateBps, kMaxBitrateBps, 0, true,
-              "", kDefaultBitratePriority);
+              kDefaultBitratePriority);
   EXPECT_EQ(3000000, allocator_->GetStartBitrate(&bitrate_observer));
   EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_);
   allocator_->OnNetworkChanged(kMaxBitrateBps, 0, 0, kDefaultProbingIntervalMs);
@@ -204,14 +202,14 @@
       limit_observer_,
       OnAllocationLimitsChanged(kObs1StartBitrateBps, 0, kObs1MaxBitrateBps));
   AddObserver(&bitrate_observer_1, kObs1StartBitrateBps, kObs1MaxBitrateBps, 0,
-              true, "", kDefaultBitratePriority);
+              true, kDefaultBitratePriority);
   EXPECT_EQ(static_cast<int>(kObs1MaxBitrateBps),
             allocator_->GetStartBitrate(&bitrate_observer_1));
   EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(
                                    kObs1StartBitrateBps + kObs2StartBitrateBps,
                                    0, kObs1MaxBitrateBps + kObs2MaxBitrateBps));
   AddObserver(&bitrate_observer_2, kObs2StartBitrateBps, kObs2MaxBitrateBps, 0,
-              true, "", kDefaultBitratePriority);
+              true, kDefaultBitratePriority);
   EXPECT_EQ(static_cast<int>(kObs2StartBitrateBps),
             allocator_->GetStartBitrate(&bitrate_observer_2));
 
@@ -260,7 +258,7 @@
               OnAllocationLimitsChanged(kMinSendBitrateBps, kPadUpToBitrateBps,
                                         kMaxBitrateBps));
   AddObserver(&bitrate_observer, kMinSendBitrateBps, kMaxBitrateBps,
-              kPadUpToBitrateBps, true, "", kDefaultBitratePriority);
+              kPadUpToBitrateBps, true, kDefaultBitratePriority);
   EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0, _));
   allocator_->RemoveObserver(&bitrate_observer);
 }
@@ -282,7 +280,7 @@
                    double bitrate_priority) {
     allocator_->AddObserver(
         observer, {min_bitrate_bps, max_bitrate_bps, pad_up_bitrate_bps, 0,
-                   enforce_min_bitrate, track_id, bitrate_priority});
+                   enforce_min_bitrate, bitrate_priority});
   }
   NiceMock<MockLimitObserver> limit_observer_;
   std::unique_ptr<BitrateAllocatorForTest> allocator_;
@@ -534,16 +532,16 @@
   TestBitrateObserver bitrate_observer_2;
   TestBitrateObserver bitrate_observer_3;
 
-  AddObserver(&bitrate_observer_1, 100000, 400000, 0, true, "",
+  AddObserver(&bitrate_observer_1, 100000, 400000, 0, true,
               kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
 
-  AddObserver(&bitrate_observer_2, 200000, 400000, 0, true, "",
+  AddObserver(&bitrate_observer_2, 200000, 400000, 0, true,
               kDefaultBitratePriority);
   EXPECT_EQ(200000, allocator_->GetStartBitrate(&bitrate_observer_2));
   EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
 
-  AddObserver(&bitrate_observer_3, 300000, 400000, 0, true, "",
+  AddObserver(&bitrate_observer_3, 300000, 400000, 0, true,
               kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_3));
   EXPECT_EQ(100000, static_cast<int>(bitrate_observer_1.last_bitrate_bps_));
@@ -565,7 +563,7 @@
   TestBitrateObserver bitrate_observer_1;
   EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000, 0, _));
 
-  AddObserver(&bitrate_observer_1, 50000, 400000, 0, true, "",
+  AddObserver(&bitrate_observer_1, 50000, 400000, 0, true,
               kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&bitrate_observer_1));
 
@@ -577,7 +575,7 @@
   TestBitrateObserver bitrate_observer_2;
   // Adding an observer while the network is down should not affect the limits.
   EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000 + 50000, 0, _));
-  AddObserver(&bitrate_observer_2, 50000, 400000, 0, true, "",
+  AddObserver(&bitrate_observer_2, 50000, 400000, 0, true,
               kDefaultBitratePriority);
 
   // Expect the start_bitrate to be set as if the network was still up but that
@@ -594,12 +592,12 @@
 
 TEST_F(BitrateAllocatorTest, MixedEnforecedConfigs) {
   TestBitrateObserver enforced_observer;
-  AddObserver(&enforced_observer, 6000, 30000, 0, true, "",
+  AddObserver(&enforced_observer, 6000, 30000, 0, true,
               kDefaultBitratePriority);
   EXPECT_EQ(60000, allocator_->GetStartBitrate(&enforced_observer));
 
   TestBitrateObserver not_enforced_observer;
-  AddObserver(&not_enforced_observer, 30000, 2500000, 0, false, "",
+  AddObserver(&not_enforced_observer, 30000, 2500000, 0, false,
               kDefaultBitratePriority);
   EXPECT_EQ(270000, allocator_->GetStartBitrate(&not_enforced_observer));
   EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
@@ -638,7 +636,7 @@
 
 TEST_F(BitrateAllocatorTest, AvoidToggleAbsolute) {
   TestBitrateObserver observer;
-  AddObserver(&observer, 30000, 300000, 0, false, "", kDefaultBitratePriority);
+  AddObserver(&observer, 30000, 300000, 0, false, kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&observer));
 
   allocator_->OnNetworkChanged(30000, 0, 50, kDefaultProbingIntervalMs);
@@ -664,7 +662,7 @@
 
 TEST_F(BitrateAllocatorTest, AvoidTogglePercent) {
   TestBitrateObserver observer;
-  AddObserver(&observer, 300000, 600000, 0, false, "", kDefaultBitratePriority);
+  AddObserver(&observer, 300000, 600000, 0, false, kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&observer));
 
   allocator_->OnNetworkChanged(300000, 0, 50, kDefaultProbingIntervalMs);
@@ -690,7 +688,7 @@
 
 TEST_F(BitrateAllocatorTest, PassProbingInterval) {
   TestBitrateObserver observer;
-  AddObserver(&observer, 300000, 600000, 0, false, "", kDefaultBitratePriority);
+  AddObserver(&observer, 300000, 600000, 0, false, kDefaultBitratePriority);
   EXPECT_EQ(300000, allocator_->GetStartBitrate(&observer));
 
   allocator_->OnNetworkChanged(300000, 0, 50, 5000);
@@ -705,8 +703,7 @@
   const uint32_t kMaxSendBitrateBps = 60;
   const uint32_t kNetworkBandwidthBps = 30;
 
-  AddObserver(&observer, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true, "",
-              2.0);
+  AddObserver(&observer, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true, 2.0);
   allocator_->OnNetworkChanged(kNetworkBandwidthBps, 0, 0,
                                kDefaultProbingIntervalMs);
 
@@ -724,9 +721,9 @@
   const uint32_t kMaxSendBitrateBps = 60;
   const uint32_t kNetworkBandwidthBps = 60;
   AddObserver(&observer_low_1, kMinSendBitrateBps, kMaxSendBitrateBps, 0, false,
-              "low1", 2.0);
+              2.0);
   AddObserver(&observer_low_2, kMinSendBitrateBps, kMaxSendBitrateBps, 0, false,
-              "low2", 2.0);
+              2.0);
   allocator_->OnNetworkChanged(kNetworkBandwidthBps, 0, 0,
                                kDefaultProbingIntervalMs);
 
@@ -746,9 +743,9 @@
   const uint32_t kMaxSendBitrateBps = 60;
   const uint32_t kNetworkBandwidthBps = 60;
   AddObserver(&observer_low_1, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true,
-              "low1", 2.0);
+              2.0);
   AddObserver(&observer_low_2, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true,
-              "low2", 2.0);
+              2.0);
   allocator_->OnNetworkChanged(kNetworkBandwidthBps, 0, 0,
                                kDefaultProbingIntervalMs);
 
@@ -768,9 +765,9 @@
   const uint32_t kMaxSendBitrateBps = 60;
   const uint32_t kNetworkBandwidthBps = kMaxSendBitrateBps * 2;
   AddObserver(&observer_low, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true,
-              "low", 2.0);
+              2.0);
   AddObserver(&observer_mid, kMinSendBitrateBps, kMaxSendBitrateBps, 0, true,
-              "mid", 4.0);
+              4.0);
   allocator_->OnNetworkChanged(kNetworkBandwidthBps, 0, 0,
                                kDefaultProbingIntervalMs);
 
@@ -787,8 +784,8 @@
 TEST_F(BitrateAllocatorTest, PriorityRateTwoObserversOneAllocatedToMax) {
   TestBitrateObserver observer_low;
   TestBitrateObserver observer_mid;
-  AddObserver(&observer_low, 10, 50, 0, false, "low", 2.0);
-  AddObserver(&observer_mid, 10, 50, 0, false, "mid", 4.0);
+  AddObserver(&observer_low, 10, 50, 0, false, 2.0);
+  AddObserver(&observer_mid, 10, 50, 0, false, 4.0);
   allocator_->OnNetworkChanged(90, 0, 0, kDefaultProbingIntervalMs);
 
   EXPECT_EQ(40u, observer_low.last_bitrate_bps_);
@@ -813,12 +810,9 @@
   const double kHighBitratePriority = 8.0;
   const double kTotalBitratePriority =
       kLowBitratePriority + kMidBitratePriority + kHighBitratePriority;
-  AddObserver(&observer_low, 0, kMaxBitrate, 0, false, "low",
-              kLowBitratePriority);
-  AddObserver(&observer_mid, 0, kMaxBitrate, 0, false, "mid",
-              kMidBitratePriority);
-  AddObserver(&observer_high, 0, kMaxBitrate, 0, false, "high",
-              kHighBitratePriority);
+  AddObserver(&observer_low, 0, kMaxBitrate, 0, false, kLowBitratePriority);
+  AddObserver(&observer_mid, 0, kMaxBitrate, 0, false, kMidBitratePriority);
+  AddObserver(&observer_high, 0, kMaxBitrate, 0, false, kHighBitratePriority);
   allocator_->OnNetworkChanged(kNetworkBandwidthBps, 0, 0,
                                kDefaultProbingIntervalMs);
 
@@ -859,11 +853,11 @@
   const uint32_t kRemainingBitrate =
       kAvailableBitrate - kMaxBitrate - (2 * kMinBitrate);
 
-  AddObserver(&observer_low, kMinBitrate, kMaxBitrate, 0, false, "low",
+  AddObserver(&observer_low, kMinBitrate, kMaxBitrate, 0, false,
               kLowBitratePriority);
-  AddObserver(&observer_mid, kMinBitrate, kMaxBitrate, 0, false, "mid",
+  AddObserver(&observer_mid, kMinBitrate, kMaxBitrate, 0, false,
               kMidBitratePriority);
-  AddObserver(&observer_high, kMinBitrate, kMaxBitrate, 0, false, "high",
+  AddObserver(&observer_high, kMinBitrate, kMaxBitrate, 0, false,
               kHighBitratePriority);
   allocator_->OnNetworkChanged(kAvailableBitrate, 0, 0,
                                kDefaultProbingIntervalMs);
@@ -903,11 +897,11 @@
   // available bitrate, so 70 bps would be sufficient network bandwidth.
   const uint32_t kRemainingBitrate = kAvailableBitrate - kLowMaxBitrate;
 
-  AddObserver(&observer_low, kMinBitrate, kLowMaxBitrate, 0, false, "low",
+  AddObserver(&observer_low, kMinBitrate, kLowMaxBitrate, 0, false,
               kLowBitratePriority);
-  AddObserver(&observer_mid, kMinBitrate, kMaxBitrate, 0, false, "mid",
+  AddObserver(&observer_mid, kMinBitrate, kMaxBitrate, 0, false,
               kMidBitratePriority);
-  AddObserver(&observer_high, kMinBitrate, kMaxBitrate, 0, false, "high",
+  AddObserver(&observer_high, kMinBitrate, kMaxBitrate, 0, false,
               kHighBitratePriority);
   allocator_->OnNetworkChanged(kAvailableBitrate, 0, 0,
                                kDefaultProbingIntervalMs);
@@ -937,12 +931,12 @@
   TestBitrateObserver observer_low;
   TestBitrateObserver observer_mid;
   TestBitrateObserver observer_high;
-  AddObserver(&observer_low, 10, 40, 0, false, "low", 2.0);
+  AddObserver(&observer_low, 10, 40, 0, false, 2.0);
   // Scaled allocation above the min allocation is the same for these two,
   // meaning they will get allocated  their max at the same time.
   // Scaled (target allocation) = (max - min) / bitrate priority
-  AddObserver(&observer_mid, 10, 30, 0, false, "mid", 4.0);
-  AddObserver(&observer_high, 10, 50, 0, false, "high", 8.0);
+  AddObserver(&observer_mid, 10, 30, 0, false, 4.0);
+  AddObserver(&observer_high, 10, 50, 0, false, 8.0);
   allocator_->OnNetworkChanged(110, 0, 0, kDefaultProbingIntervalMs);
 
   EXPECT_EQ(30u, observer_low.last_bitrate_bps_);
diff --git a/call/call.cc b/call/call.cc
index 293afa9..bd9a462 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -215,10 +215,6 @@
   // Implements RecoveredPacketReceiver.
   void OnRecoveredPacket(const uint8_t* packet, size_t length) override;
 
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) override;
-
   void SignalChannelNetworkState(MediaType media, NetworkState state) override;
 
   void OnAudioTransportOverheadChanged(
@@ -1080,24 +1076,6 @@
   return stats;
 }
 
-void Call::SetBitrateAllocationStrategy(
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy) {
-  // TODO(srte): This function should be moved to RtpTransportControllerSend
-  // when BitrateAllocator is moved there.
-  struct Functor {
-    void operator()() {
-      bitrate_allocator_->SetBitrateAllocationStrategy(
-          std::move(bitrate_allocation_strategy_));
-    }
-    BitrateAllocator* bitrate_allocator_;
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy_;
-  };
-  transport_send_ptr_->GetWorkerQueue()->PostTask(Functor{
-      bitrate_allocator_.get(), std::move(bitrate_allocation_strategy)});
-}
-
 void Call::SignalChannelNetworkState(MediaType media, NetworkState state) {
   RTC_DCHECK_RUN_ON(&configuration_sequence_checker_);
   switch (media) {
diff --git a/call/call.h b/call/call.h
index 1c29fee..2c5aca2 100644
--- a/call/call.h
+++ b/call/call.h
@@ -25,7 +25,6 @@
 #include "call/video_receive_stream.h"
 #include "call/video_send_stream.h"
 #include "modules/utility/include/process_thread.h"
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/network/sent_packet.h"
 #include "rtc_base/network_route.h"
@@ -107,10 +106,6 @@
   // pacing delay, etc.
   virtual Stats GetStats() const = 0;
 
-  virtual void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) = 0;
-
   // TODO(skvlad): When the unbundled case with multiple streams for the same
   // media type going over different networks is supported, track the state
   // for each stream separately. Right now it's global per media type.
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index 46913b8..43af881 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -28,7 +28,6 @@
 #include "modules/audio_device/include/test_audio_device.h"
 #include "modules/audio_mixer/audio_mixer_impl.h"
 #include "modules/rtp_rtcp/include/rtp_header_parser.h"
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/thread_annotations.h"
 #include "system_wrappers/include/metrics.h"
@@ -81,8 +80,7 @@
                           int threshold_ms,
                           int start_time_ms,
                           int run_time_ms);
-  void TestMinAudioVideoBitrate(bool use_bitrate_allocation_strategy,
-                                int test_bitrate_from,
+  void TestMinAudioVideoBitrate(int test_bitrate_from,
                                 int test_bitrate_to,
                                 int test_bitrate_step,
                                 int min_bwe,
@@ -842,22 +840,17 @@
 // considered supported if Rtt does not go above 400ms with the network
 // contrained to the test bitrate.
 //
-// |use_bitrate_allocation_strategy| use AudioPriorityBitrateAllocationStrategy
 // |test_bitrate_from test_bitrate_to| bitrate constraint range
 // |test_bitrate_step| bitrate constraint update step during the test
 // |min_bwe max_bwe| BWE range
 // |start_bwe| initial BWE
-void CallPerfTest::TestMinAudioVideoBitrate(
-    bool use_bitrate_allocation_strategy,
-    int test_bitrate_from,
-    int test_bitrate_to,
-    int test_bitrate_step,
-    int min_bwe,
-    int start_bwe,
-    int max_bwe) {
+void CallPerfTest::TestMinAudioVideoBitrate(int test_bitrate_from,
+                                            int test_bitrate_to,
+                                            int test_bitrate_step,
+                                            int min_bwe,
+                                            int start_bwe,
+                                            int max_bwe) {
   static const std::string kAudioTrackId = "audio_track_0";
-  static constexpr uint32_t kSufficientAudioBitrateBps = 16000;
-  static constexpr int kOpusMinBitrateBps = 6000;
   static constexpr int kOpusBitrateFbBps = 32000;
   static constexpr int kBitrateStabilizationMs = 10000;
   static constexpr int kBitrateMeasurements = 10;
@@ -867,18 +860,13 @@
 
   class MinVideoAndAudioBitrateTester : public test::EndToEndTest {
    public:
-    MinVideoAndAudioBitrateTester(bool use_bitrate_allocation_strategy,
-                                  int test_bitrate_from,
+    MinVideoAndAudioBitrateTester(int test_bitrate_from,
                                   int test_bitrate_to,
                                   int test_bitrate_step,
                                   int min_bwe,
                                   int start_bwe,
                                   int max_bwe)
         : EndToEndTest(),
-          allocation_strategy_(new rtc::AudioPriorityBitrateAllocationStrategy(
-              kAudioTrackId,
-              kSufficientAudioBitrateBps)),
-          use_bitrate_allocation_strategy_(use_bitrate_allocation_strategy),
           test_bitrate_from_(test_bitrate_from),
           test_bitrate_to_(test_bitrate_to),
           test_bitrate_step_(test_bitrate_step),
@@ -953,11 +941,8 @@
       }
       EXPECT_GT(last_passed_test_bitrate, -1)
           << "Minimum supported bitrate out of the test scope";
-      webrtc::test::PrintResult(
-          "min_test_bitrate_",
-          use_bitrate_allocation_strategy_ ? "with_allocation_strategy"
-                                           : "no_allocation_strategy",
-          "min_bitrate", last_passed_test_bitrate, "kbps", false);
+      webrtc::test::PrintResult("min_test_bitrate_", "", "min_bitrate",
+                                last_passed_test_bitrate, "kbps", false);
     }
 
     void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
@@ -968,10 +953,6 @@
       bitrate_config.max_bitrate_bps = max_bwe_;
       sender_call->GetTransportControllerSend()->SetSdpBitrateParameters(
           bitrate_config);
-      if (use_bitrate_allocation_strategy_) {
-        sender_call->SetBitrateAllocationStrategy(
-            std::move(allocation_strategy_));
-      }
     }
 
     size_t GetNumVideoStreams() const override { return 1; }
@@ -981,19 +962,11 @@
     void ModifyAudioConfigs(
         AudioSendStream::Config* send_config,
         std::vector<AudioReceiveStream::Config>* receive_configs) override {
-      if (use_bitrate_allocation_strategy_) {
-        send_config->track_id = kAudioTrackId;
-        send_config->min_bitrate_bps = kOpusMinBitrateBps;
-        send_config->max_bitrate_bps = kOpusBitrateFbBps;
-      } else {
-        send_config->send_codec_spec->target_bitrate_bps =
-            absl::optional<int>(kOpusBitrateFbBps);
-      }
+      send_config->send_codec_spec->target_bitrate_bps =
+          absl::optional<int>(kOpusBitrateFbBps);
     }
 
    private:
-    std::unique_ptr<rtc::BitrateAllocationStrategy> allocation_strategy_;
-    const bool use_bitrate_allocation_strategy_;
     const int test_bitrate_from_;
     const int test_bitrate_to_;
     const int test_bitrate_step_;
@@ -1003,8 +976,8 @@
     SimulatedNetwork* send_simulated_network_;
     SimulatedNetwork* receive_simulated_network_;
     Call* sender_call_;
-  } test(use_bitrate_allocation_strategy, test_bitrate_from, test_bitrate_to,
-         test_bitrate_step, min_bwe, start_bwe, max_bwe);
+  } test(test_bitrate_from, test_bitrate_to, test_bitrate_step, min_bwe,
+         start_bwe, max_bwe);
 
   RunBaseTest(&test);
 }
@@ -1016,10 +989,7 @@
 #define MAYBE_MinVideoAndAudioBitrate MinVideoAndAudioBitrate
 #endif
 TEST_F(CallPerfTest, MAYBE_MinVideoAndAudioBitrate) {
-  TestMinAudioVideoBitrate(false, 110, 40, -10, 10000, 70000, 200000);
-}
-TEST_F(CallPerfTest, MinVideoAndAudioBitrateWStrategy) {
-  TestMinAudioVideoBitrate(true, 110, 40, -10, 10000, 70000, 200000);
+  TestMinAudioVideoBitrate(110, 40, -10, 10000, 70000, 200000);
 }
 
 }  // namespace webrtc
diff --git a/call/degraded_call.cc b/call/degraded_call.cc
index 20a7d7d..4b71e86 100644
--- a/call/degraded_call.cc
+++ b/call/degraded_call.cc
@@ -196,12 +196,6 @@
   return call_->GetStats();
 }
 
-void DegradedCall::SetBitrateAllocationStrategy(
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy) {
-  call_->SetBitrateAllocationStrategy(std::move(bitrate_allocation_strategy));
-}
-
 void DegradedCall::SignalChannelNetworkState(MediaType media,
                                              NetworkState state) {
   call_->SignalChannelNetworkState(media, state);
diff --git a/call/degraded_call.h b/call/degraded_call.h
index 57480ed..adac631 100644
--- a/call/degraded_call.h
+++ b/call/degraded_call.h
@@ -35,7 +35,6 @@
 #include "call/video_send_stream.h"
 #include "modules/include/module.h"
 #include "modules/utility/include/process_thread.h"
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/network/sent_packet.h"
 #include "system_wrappers/include/clock.h"
@@ -107,10 +106,6 @@
 
   Stats GetStats() const override;
 
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) override;
-
   void SignalChannelNetworkState(MediaType media, NetworkState state) override;
   void OnAudioTransportOverheadChanged(
       int transport_overhead_per_packet) override;
diff --git a/call/video_send_stream.h b/call/video_send_stream.h
index daf2d39..c715863 100644
--- a/call/video_send_stream.h
+++ b/call/video_send_stream.h
@@ -156,9 +156,6 @@
     // Enables periodic bandwidth probing in application-limited region.
     bool periodic_alr_bandwidth_probing = false;
 
-    // Track ID as specified during track creation.
-    std::string track_id;
-
     // An optional custom frame encryptor that allows the entire frame to be
     // encrypted in whatever way the caller chooses. This is not required by
     // default.
diff --git a/media/engine/fake_webrtc_call.cc b/media/engine/fake_webrtc_call.cc
index a9cbf32..dcab48b 100644
--- a/media/engine/fake_webrtc_call.cc
+++ b/media/engine/fake_webrtc_call.cc
@@ -618,12 +618,6 @@
   return stats_;
 }
 
-void FakeCall::SetBitrateAllocationStrategy(
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy) {
-  // TODO(alexnarest): not implemented
-}
-
 void FakeCall::SignalChannelNetworkState(webrtc::MediaType media,
                                          webrtc::NetworkState state) {
   switch (media) {
diff --git a/media/engine/fake_webrtc_call.h b/media/engine/fake_webrtc_call.h
index 134dd47..e87c24f 100644
--- a/media/engine/fake_webrtc_call.h
+++ b/media/engine/fake_webrtc_call.h
@@ -347,10 +347,6 @@
 
   webrtc::Call::Stats GetStats() const override;
 
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) override;
-
   void SignalChannelNetworkState(webrtc::MediaType media,
                                  webrtc::NetworkState state) override;
   void OnAudioTransportOverheadChanged(
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index bcb0273..301b07e 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -1839,7 +1839,6 @@
   }
 
   parameters_.config.rtp.c_name = sp.cname;
-  parameters_.config.track_id = sp.id;
   if (rtp_extensions) {
     parameters_.config.rtp.extensions = *rtp_extensions;
     rtp_parameters_.header_extensions = *rtp_extensions;
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 2458cc5..714e7eb 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -231,6 +231,7 @@
     "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:safe_minmax",
+    "../rtc_base/experiments:field_trial_parser",
     "../rtc_base/system:file_wrapper",
     "../rtc_base/system:rtc_export",
     "../rtc_base/third_party/base64",
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 0c82027..e677e5d 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -3724,29 +3724,6 @@
   return RTCError::OK();
 }
 
-void PeerConnection::SetBitrateAllocationStrategy(
-    std::unique_ptr<rtc::BitrateAllocationStrategy>
-        bitrate_allocation_strategy) {
-  if (!worker_thread()->IsCurrent()) {
-    // TODO(kwiberg): Use a lambda instead when C++14 makes it possible to
-    // move-capture values in lambdas.
-    struct Task {
-      PeerConnection* const pc;
-      std::unique_ptr<rtc::BitrateAllocationStrategy> strategy;
-      void operator()() {
-        RTC_DCHECK_RUN_ON(pc->worker_thread());
-        pc->call_->SetBitrateAllocationStrategy(std::move(strategy));
-      }
-    };
-    worker_thread()->Invoke<void>(
-        RTC_FROM_HERE, Task{this, std::move(bitrate_allocation_strategy)});
-    return;
-  }
-  RTC_DCHECK_RUN_ON(worker_thread());
-  RTC_DCHECK(call_.get());
-  call_->SetBitrateAllocationStrategy(std::move(bitrate_allocation_strategy));
-}
-
 void PeerConnection::SetAudioPlayout(bool playout) {
   if (!worker_thread()->IsCurrent()) {
     worker_thread()->Invoke<void>(
diff --git a/pc/peer_connection.h b/pc/peer_connection.h
index 917ad62..ed8c54c 100644
--- a/pc/peer_connection.h
+++ b/pc/peer_connection.h
@@ -31,6 +31,7 @@
 #include "pc/stats_collector.h"
 #include "pc/stream_collection.h"
 #include "pc/webrtc_session_description_factory.h"
+#include "rtc_base/experiments/field_trial_parser.h"
 #include "rtc_base/race_checker.h"
 #include "rtc_base/unique_id_generator.h"
 
@@ -195,10 +196,6 @@
 
   RTCError SetBitrate(const BitrateSettings& bitrate) override;
 
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) override;
-
   void SetAudioPlayout(bool playout) override;
   void SetAudioRecording(bool recording) override;
 
diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h
index 67890cb..f88eb1e 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -186,10 +186,6 @@
     return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
   }
 
-  void SetBitrateAllocationStrategy(
-      std::unique_ptr<rtc::BitrateAllocationStrategy>
-          bitrate_allocation_strategy) override {}
-
   void SetAudioPlayout(bool playout) override {}
 
   void SetAudioRecording(bool recording) override {}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 0b68546..aa48a38 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -75,13 +75,10 @@
     ":checks",
     ":rtc_task_queue",
     ":safe_compare",
-    ":safe_minmax",
     ":type_traits",
     "../api:array_view",
     "../api:function_view",
     "../api:scoped_refptr",
-    "../system_wrappers:field_trial",
-    "experiments:field_trial_parser",
     "system:arch",
     "system:unused",
     "third_party/base64",
@@ -94,8 +91,6 @@
     "bind.h",
     "bit_buffer.cc",
     "bit_buffer.h",
-    "bitrate_allocation_strategy.cc",
-    "bitrate_allocation_strategy.h",
     "buffer.h",
     "buffer_queue.cc",
     "buffer_queue.h",
@@ -1153,7 +1148,6 @@
       "base64_unittest.cc",
       "bind_unittest.cc",
       "bit_buffer_unittest.cc",
-      "bitrate_allocation_strategy_unittest.cc",
       "buffer_queue_unittest.cc",
       "buffer_unittest.cc",
       "byte_buffer_unittest.cc",
diff --git a/rtc_base/bitrate_allocation_strategy.cc b/rtc_base/bitrate_allocation_strategy.cc
deleted file mode 100644
index 34a61ef..0000000
--- a/rtc_base/bitrate_allocation_strategy.cc
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "rtc_base/bitrate_allocation_strategy.h"
-
-#include <algorithm>
-#include <cstddef>
-#include <cstdint>
-#include <map>
-#include <utility>
-
-#include "rtc_base/numerics/safe_minmax.h"
-#include "system_wrappers/include/field_trial.h"
-
-namespace webrtc {
-AudioPriorityConfig::AudioPriorityConfig()
-    : min_rate("min"), max_rate("max"), target_rate("target") {
-  std::string trial_string;
-// TODO(bugs.webrtc.org/9889): Remove this when Chromium build has been fixed.
-#if !defined(WEBRTC_CHROMIUM_BUILD)
-  trial_string = field_trial::FindFullName("WebRTC-Bwe-AudioPriority");
-#endif
-  ParseFieldTrial({&min_rate, &max_rate, &target_rate}, trial_string);
-}
-AudioPriorityConfig::AudioPriorityConfig(const AudioPriorityConfig&) = default;
-AudioPriorityConfig::~AudioPriorityConfig() = default;
-
-}  // namespace webrtc
-
-namespace rtc {
-
-// The purpose of this is to allow video streams to use extra bandwidth for FEC.
-// TODO(bugs.webrtc.org/8541): May be worth to refactor to keep this logic in
-// video send stream. Similar logic is implemented in BitrateAllocator.
-
-const int kTransmissionMaxBitrateMultiplier = 2;
-
-std::vector<uint32_t> BitrateAllocationStrategy::SetAllBitratesToMinimum(
-    const std::vector<BitrateAllocationStrategy::TrackConfig>& track_configs) {
-  std::vector<uint32_t> track_allocations;
-  track_allocations.reserve(track_configs.size());
-  for (const auto& track_config : track_configs) {
-    track_allocations.push_back(track_config.min_bitrate_bps);
-  }
-  return track_allocations;
-}
-
-std::vector<uint32_t> BitrateAllocationStrategy::DistributeBitratesEvenly(
-    const std::vector<BitrateAllocationStrategy::TrackConfig>& track_configs,
-    uint32_t available_bitrate) {
-  std::vector<uint32_t> track_allocations =
-      SetAllBitratesToMinimum(track_configs);
-  uint32_t sum_min_bitrates = 0;
-  uint32_t sum_max_bitrates = 0;
-  for (const auto& track_config : track_configs) {
-    sum_min_bitrates += track_config.min_bitrate_bps;
-    sum_max_bitrates += track_config.max_bitrate_bps;
-  }
-  if (sum_min_bitrates >= available_bitrate) {
-    return track_allocations;
-  } else if (available_bitrate >= sum_max_bitrates) {
-    auto track_allocations_it = track_allocations.begin();
-    for (const auto& track_config : track_configs) {
-      *track_allocations_it++ = track_config.max_bitrate_bps;
-    }
-    return track_allocations;
-  } else {
-    // If sum_min_bitrates < available_bitrate < sum_max_bitrates allocate
-    // bitrates evenly up to max_bitrate_bps starting from the track with the
-    // lowest max_bitrate_bps. Remainder of available bitrate split evenly among
-    // remaining tracks.
-    std::multimap<uint32_t, size_t> max_bitrate_sorted_configs;
-    for (const auto& track_config : track_configs) {
-      max_bitrate_sorted_configs.insert(
-          std::make_pair(track_config.max_bitrate_bps,
-                         &track_config - &track_configs.front()));
-    }
-    uint32_t total_available_increase = available_bitrate - sum_min_bitrates;
-    int processed_configs = 0;
-    for (const auto& track_config_pair : max_bitrate_sorted_configs) {
-      uint32_t available_increase =
-          total_available_increase /
-          (static_cast<uint32_t>(track_configs.size() - processed_configs));
-      uint32_t consumed_increase =
-          std::min(track_configs[track_config_pair.second].max_bitrate_bps -
-                       track_configs[track_config_pair.second].min_bitrate_bps,
-                   available_increase);
-      track_allocations[track_config_pair.second] += consumed_increase;
-      total_available_increase -= consumed_increase;
-      ++processed_configs;
-    }
-    return track_allocations;
-  }
-}
-AudioPriorityBitrateAllocationStrategy::AudioPriorityBitrateAllocationStrategy(
-    std::string audio_track_id,
-    uint32_t sufficient_audio_bitrate)
-    : audio_track_id_(audio_track_id),
-      sufficient_audio_bitrate_(sufficient_audio_bitrate) {
-  if (config_.target_rate) {
-    sufficient_audio_bitrate_ = config_.target_rate->bps();
-  }
-}
-
-std::vector<uint32_t> AudioPriorityBitrateAllocationStrategy::AllocateBitrates(
-    uint32_t available_bitrate,
-    std::vector<BitrateAllocationStrategy::TrackConfig> track_configs) {
-  TrackConfig* audio_track_config = nullptr;
-  size_t audio_config_index = 0;
-  uint32_t sum_min_bitrates = 0;
-  uint32_t sum_max_bitrates = 0;
-
-  for (auto& track_config : track_configs) {
-    if (track_config.track_id == audio_track_id_) {
-      audio_config_index = &track_config - &track_configs[0];
-      audio_track_config = &track_config;
-      if (config_.min_rate)
-        audio_track_config->min_bitrate_bps = config_.min_rate->bps();
-      if (config_.max_rate)
-        audio_track_config->max_bitrate_bps = config_.max_rate->bps();
-    }
-    sum_min_bitrates += track_config.min_bitrate_bps;
-    sum_max_bitrates += track_config.max_bitrate_bps;
-  }
-  if (sum_max_bitrates < available_bitrate) {
-    // Allow non audio streams to go above max upto
-    // kTransmissionMaxBitrateMultiplier * max_bitrate_bps
-    for (auto& track_config : track_configs) {
-      if (&track_config != audio_track_config)
-        track_config.max_bitrate_bps *= kTransmissionMaxBitrateMultiplier;
-    }
-    return DistributeBitratesEvenly(track_configs, available_bitrate);
-  }
-  if (!audio_track_config) {
-    return DistributeBitratesEvenly(track_configs, available_bitrate);
-  }
-  auto safe_sufficient_audio_bitrate = rtc::SafeClamp(
-      sufficient_audio_bitrate_, audio_track_config->min_bitrate_bps,
-      audio_track_config->max_bitrate_bps);
-  if (available_bitrate <= sum_min_bitrates) {
-    return SetAllBitratesToMinimum(track_configs);
-  } else {
-    if (available_bitrate <= sum_min_bitrates + safe_sufficient_audio_bitrate -
-                                 audio_track_config->min_bitrate_bps) {
-      std::vector<uint32_t> track_allocations =
-          SetAllBitratesToMinimum(track_configs);
-      track_allocations[audio_config_index] +=
-          available_bitrate - sum_min_bitrates;
-      return track_allocations;
-    } else {
-      // Setting audio track minimum to safe_sufficient_audio_bitrate will
-      // allow using DistributeBitratesEvenly to allocate at least sufficient
-      // bitrate for audio and the rest evenly.
-      audio_track_config->min_bitrate_bps = safe_sufficient_audio_bitrate;
-      std::vector<uint32_t> track_allocations =
-          DistributeBitratesEvenly(track_configs, available_bitrate);
-      return track_allocations;
-    }
-  }
-}
-
-}  // namespace rtc
diff --git a/rtc_base/bitrate_allocation_strategy.h b/rtc_base/bitrate_allocation_strategy.h
deleted file mode 100644
index def7736..0000000
--- a/rtc_base/bitrate_allocation_strategy.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef RTC_BASE_BITRATE_ALLOCATION_STRATEGY_H_
-#define RTC_BASE_BITRATE_ALLOCATION_STRATEGY_H_
-
-#include <stdint.h>
-
-#include <string>
-#include <vector>
-
-#include "api/array_view.h"
-#include "rtc_base/experiments/field_trial_parser.h"
-#include "rtc_base/experiments/field_trial_units.h"
-
-namespace rtc {
-
-// Pluggable strategy allows configuration of bitrate allocation per media
-// track.
-//
-// The strategy should provide allocation for every track passed with
-// track_configs in AllocateBitrates. The allocations are constrained by
-// max_bitrate_bps, min_bitrate_bps defining the track supported range and
-// enforce_min_bitrate indicating if the track my be paused by allocating 0
-// bitrate.
-class BitrateAllocationStrategy {
- public:
-  struct TrackConfig {
-    TrackConfig(uint32_t min_bitrate_bps,
-                uint32_t max_bitrate_bps,
-                bool enforce_min_bitrate,
-                std::string track_id)
-        : min_bitrate_bps(min_bitrate_bps),
-          max_bitrate_bps(max_bitrate_bps),
-          enforce_min_bitrate(enforce_min_bitrate),
-          track_id(track_id) {}
-    TrackConfig(const TrackConfig& track_config) = default;
-    virtual ~TrackConfig() = default;
-    TrackConfig() {}
-
-    // Minimum bitrate supported by track.
-    uint32_t min_bitrate_bps;
-
-    // Maximum bitrate supported by track.
-    uint32_t max_bitrate_bps;
-
-    // True means track may not be paused by allocating 0 bitrate.
-    bool enforce_min_bitrate;
-
-    // MediaStreamTrack ID as defined by application. May be empty.
-    std::string track_id;
-  };
-
-  // These are only used by AudioPriorityBitrateAllocationStrategy. They are
-  // exposed here to they can be unit tested.
-  static std::vector<uint32_t> SetAllBitratesToMinimum(
-      const std::vector<BitrateAllocationStrategy::TrackConfig>& track_configs);
-  static std::vector<uint32_t> DistributeBitratesEvenly(
-      const std::vector<BitrateAllocationStrategy::TrackConfig>& track_configs,
-      uint32_t available_bitrate);
-
-  // Strategy is expected to allocate all available_bitrate up to the sum of
-  // max_bitrate_bps of all tracks. If available_bitrate is less than the sum of
-  // min_bitrate_bps of all tracks, tracks having enforce_min_bitrate set to
-  // false may get 0 allocation and are suppoused to pause, tracks with
-  // enforce_min_bitrate set to true are expecting to get min_bitrate_bps.
-  //
-  // If the strategy will allocate more than available_bitrate it may cause
-  // overuse of the currently available network capacity and may cause increase
-  // in RTT and packet loss. Allocating less than available bitrate may cause
-  // available_bitrate decrease.
-  virtual std::vector<uint32_t> AllocateBitrates(
-      uint32_t available_bitrate,
-      std::vector<BitrateAllocationStrategy::TrackConfig> track_configs) = 0;
-
-  virtual ~BitrateAllocationStrategy() = default;
-};
-}  // namespace rtc
-
-namespace webrtc {
-struct AudioPriorityConfig {
-  FieldTrialOptional<DataRate> min_rate;
-  FieldTrialOptional<DataRate> max_rate;
-  FieldTrialOptional<DataRate> target_rate;
-  AudioPriorityConfig();
-  AudioPriorityConfig(const AudioPriorityConfig&);
-  AudioPriorityConfig& operator=(const AudioPriorityConfig&) = default;
-  ~AudioPriorityConfig();
-};
-}  // namespace webrtc
-
-namespace rtc {
-// Simple allocation strategy giving priority to audio until
-// sufficient_audio_bitrate is reached. Bitrate is distributed evenly between
-// the tracks after sufficient_audio_bitrate is reached. This implementation
-// does not pause tracks even if enforce_min_bitrate is false.
-class AudioPriorityBitrateAllocationStrategy
-    : public BitrateAllocationStrategy {
- public:
-  AudioPriorityBitrateAllocationStrategy(std::string audio_track_id,
-                                         uint32_t sufficient_audio_bitrate);
-  std::vector<uint32_t> AllocateBitrates(
-      uint32_t available_bitrate,
-      std::vector<BitrateAllocationStrategy::TrackConfig> track_configs)
-      override;
-
- private:
-  webrtc::AudioPriorityConfig config_;
-  std::string audio_track_id_;
-  uint32_t sufficient_audio_bitrate_;
-};
-}  // namespace rtc
-
-#endif  // RTC_BASE_BITRATE_ALLOCATION_STRATEGY_H_
diff --git a/rtc_base/bitrate_allocation_strategy_unittest.cc b/rtc_base/bitrate_allocation_strategy_unittest.cc
deleted file mode 100644
index aea3966..0000000
--- a/rtc_base/bitrate_allocation_strategy_unittest.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "rtc_base/bitrate_allocation_strategy.h"
-
-#include <cstdint>
-
-#include "test/gtest.h"
-
-namespace rtc {
-
-std::vector<const rtc::BitrateAllocationStrategy::TrackConfig*>
-MakeTrackConfigPtrsVector(
-    const std::vector<BitrateAllocationStrategy::TrackConfig>& track_configs) {
-  std::vector<const rtc::BitrateAllocationStrategy::TrackConfig*>
-      track_config_ptrs(track_configs.size());
-  int i = 0;
-  for (const auto& c : track_configs) {
-    track_config_ptrs[i++] = &c;
-  }
-  return track_config_ptrs;
-}
-
-TEST(BitrateAllocationStrategyTest, SetAllBitratesToMinimum) {
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-
-  std::vector<BitrateAllocationStrategy::TrackConfig> track_configs = {
-      BitrateAllocationStrategy::TrackConfig(
-          min_audio_bitrate, max_audio_bitrate, false, audio_track_id),
-      BitrateAllocationStrategy::TrackConfig(
-          min_video_bitrate, max_video_bitrate, false, video_track_id),
-      BitrateAllocationStrategy::TrackConfig(min_other_bitrate,
-                                             max_other_bitrate, false, "")};
-
-  std::vector<uint32_t> allocations =
-      BitrateAllocationStrategy::SetAllBitratesToMinimum(track_configs);
-  EXPECT_EQ(min_audio_bitrate, allocations[0]);
-  EXPECT_EQ(min_video_bitrate, allocations[1]);
-  EXPECT_EQ(min_other_bitrate, allocations[2]);
-}
-
-TEST(BitrateAllocationStrategyTest, DistributeBitratesEvenly) {
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 16000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 52000;
-  constexpr uint32_t even_bitrate_increase =
-      (available_bitrate - min_audio_bitrate - min_video_bitrate -
-       min_other_bitrate) /
-      3;
-
-  std::vector<BitrateAllocationStrategy::TrackConfig> track_configs = {
-      BitrateAllocationStrategy::TrackConfig(
-          min_audio_bitrate, max_audio_bitrate, false, audio_track_id),
-      BitrateAllocationStrategy::TrackConfig(
-          min_video_bitrate, max_video_bitrate, false, video_track_id),
-      BitrateAllocationStrategy::TrackConfig(min_other_bitrate,
-                                             max_other_bitrate, false, "")};
-
-  std::vector<uint32_t> allocations =
-      BitrateAllocationStrategy::DistributeBitratesEvenly(track_configs,
-                                                          available_bitrate);
-  EXPECT_EQ(min_audio_bitrate + even_bitrate_increase, allocations[0]);
-  EXPECT_EQ(min_video_bitrate + even_bitrate_increase, allocations[1]);
-  EXPECT_EQ(min_other_bitrate + even_bitrate_increase, allocations[2]);
-}
-
-std::vector<uint32_t> RunAudioPriorityAllocation(
-    uint32_t sufficient_audio_bitrate,
-    std::string audio_track_id,
-    uint32_t min_audio_bitrate,
-    uint32_t max_audio_bitrate,
-    std::string video_track_id,
-    uint32_t min_video_bitrate,
-    uint32_t max_video_bitrate,
-    uint32_t min_other_bitrate,
-    uint32_t max_other_bitrate,
-    uint32_t available_bitrate) {
-  AudioPriorityBitrateAllocationStrategy allocation_strategy(
-      audio_track_id, sufficient_audio_bitrate);
-  std::vector<BitrateAllocationStrategy::TrackConfig> track_configs = {
-      BitrateAllocationStrategy::TrackConfig(
-          min_audio_bitrate, max_audio_bitrate, false, audio_track_id),
-      BitrateAllocationStrategy::TrackConfig(
-          min_video_bitrate, max_video_bitrate, false, video_track_id),
-      BitrateAllocationStrategy::TrackConfig(min_other_bitrate,
-                                             max_other_bitrate, false, "")};
-
-  return allocation_strategy.AllocateBitrates(available_bitrate, track_configs);
-}
-
-// Test that when the available bitrate is less than the sum of the minimum
-// bitrates, the minimum bitrate is allocated for each track.
-TEST(AudioPriorityBitrateAllocationStrategyTest, MinAllocateBitrate) {
-  constexpr uint32_t sufficient_audio_bitrate = 16000;
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 10000;
-
-  std::vector<uint32_t> allocations = RunAudioPriorityAllocation(
-      sufficient_audio_bitrate, audio_track_id, min_audio_bitrate,
-      max_audio_bitrate, video_track_id, min_video_bitrate, max_video_bitrate,
-      min_other_bitrate, max_other_bitrate, available_bitrate);
-  EXPECT_EQ(min_audio_bitrate, allocations[0]);
-  EXPECT_EQ(min_video_bitrate, allocations[1]);
-  EXPECT_EQ(min_other_bitrate, allocations[2]);
-}
-
-// Test that when the available bitrate is more than the sum of the max
-// bitrates, the max bitrate is allocated for each track.
-TEST(AudioPriorityBitrateAllocationStrategyTest, MaxAllocateBitrate) {
-  constexpr uint32_t sufficient_audio_bitrate = 16000;
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 400000;
-
-  std::vector<uint32_t> allocations = RunAudioPriorityAllocation(
-      sufficient_audio_bitrate, audio_track_id, min_audio_bitrate,
-      max_audio_bitrate, video_track_id, min_video_bitrate, max_video_bitrate,
-      min_other_bitrate, max_other_bitrate, available_bitrate);
-
-  // TODO(bugs.webrtc.org/8541): Until the bug is fixed not audio streams will
-  // get up to kTransmissionMaxBitrateMultiplier*max_bitrate
-  constexpr uint32_t video_bitrate =
-      (available_bitrate - max_audio_bitrate - max_other_bitrate * 2);
-  EXPECT_EQ(max_audio_bitrate, allocations[0]);
-  EXPECT_EQ(video_bitrate, allocations[1]);
-  EXPECT_EQ(max_other_bitrate * 2, allocations[2]);
-}
-
-// Test that audio track will get up to sufficient bitrate before video and
-// other bitrate will be allocated.
-TEST(AudioPriorityBitrateAllocationStrategyTest, AudioPriorityAllocateBitrate) {
-  constexpr uint32_t sufficient_audio_bitrate = 16000;
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 49000;
-
-  std::vector<uint32_t> allocations = RunAudioPriorityAllocation(
-      sufficient_audio_bitrate, audio_track_id, min_audio_bitrate,
-      max_audio_bitrate, video_track_id, min_video_bitrate, max_video_bitrate,
-      min_other_bitrate, max_other_bitrate, available_bitrate);
-  EXPECT_EQ(sufficient_audio_bitrate, allocations[0]);
-  EXPECT_EQ(min_video_bitrate, allocations[1]);
-  EXPECT_EQ(min_other_bitrate, allocations[2]);
-}
-
-// Test that bitrate will be allocated evenly after sufficient audio bitrate is
-// allocated.
-TEST(AudioPriorityBitrateAllocationStrategyTest, EvenAllocateBitrate) {
-  constexpr uint32_t sufficient_audio_bitrate = 16000;
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 52000;
-  constexpr uint32_t even_bitrate_increase =
-      (available_bitrate - sufficient_audio_bitrate - min_video_bitrate -
-       min_other_bitrate) /
-      3;
-
-  std::vector<uint32_t> allocations = RunAudioPriorityAllocation(
-      sufficient_audio_bitrate, audio_track_id, min_audio_bitrate,
-      max_audio_bitrate, video_track_id, min_video_bitrate, max_video_bitrate,
-      min_other_bitrate, max_other_bitrate, available_bitrate);
-  EXPECT_EQ(sufficient_audio_bitrate + even_bitrate_increase, allocations[0]);
-  EXPECT_EQ(min_video_bitrate + even_bitrate_increase, allocations[1]);
-  EXPECT_EQ(min_other_bitrate + even_bitrate_increase, allocations[2]);
-}
-
-// Test that bitrate will be allocated to video after audio and other max
-// allocation.
-TEST(AudioPriorityBitrateAllocationStrategyTest, VideoAllocateBitrate) {
-  constexpr uint32_t sufficient_audio_bitrate = 16000;
-  const std::string audio_track_id = "audio_track";
-  constexpr uint32_t min_audio_bitrate = 6000;
-  constexpr uint32_t max_audio_bitrate = 64000;
-  const std::string video_track_id = "video_track";
-  constexpr uint32_t min_video_bitrate = 30000;
-  constexpr uint32_t max_video_bitrate = 300000;
-  constexpr uint32_t min_other_bitrate = 3000;
-  constexpr uint32_t max_other_bitrate = 30000;
-  constexpr uint32_t available_bitrate = 200000;
-  constexpr uint32_t video_bitrate =
-      available_bitrate - max_audio_bitrate - max_other_bitrate;
-
-  std::vector<uint32_t> allocations = RunAudioPriorityAllocation(
-      sufficient_audio_bitrate, audio_track_id, min_audio_bitrate,
-      max_audio_bitrate, video_track_id, min_video_bitrate, max_video_bitrate,
-      min_other_bitrate, max_other_bitrate, available_bitrate);
-  EXPECT_EQ(max_audio_bitrate, allocations[0]);
-  EXPECT_EQ(video_bitrate, allocations[1]);
-  EXPECT_EQ(max_other_bitrate, allocations[2]);
-}
-
-}  // namespace rtc
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index c29c3f0..2eab502 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -831,7 +831,6 @@
         "objc/api/peerconnection/RTCMetricsSampleInfo.h",
         "objc/api/peerconnection/RTCMetricsSampleInfo.mm",
         "objc/api/peerconnection/RTCPeerConnection+DataChannel.mm",
-        "objc/api/peerconnection/RTCPeerConnection+Native.h",
         "objc/api/peerconnection/RTCPeerConnection+Private.h",
         "objc/api/peerconnection/RTCPeerConnection+Stats.mm",
         "objc/api/peerconnection/RTCPeerConnection.h",
@@ -948,7 +947,6 @@
         "objc/Framework/Classes/Common/NSString+StdString.h",
         "objc/Framework/Classes/Common/scoped_cftyperef.h",
         "objc/Framework/Classes/PeerConnection/RTCConfiguration+Native.h",
-        "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h",
         "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
         "objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h",
         "objc/Framework/Classes/Video/RTCDefaultShader.h",
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h
deleted file mode 100644
index 7d8ab9a..0000000
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#import "api/peerconnection/RTCPeerConnection+Native.h"
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnection+Native.h b/sdk/objc/api/peerconnection/RTCPeerConnection+Native.h
deleted file mode 100644
index f0322a7..0000000
--- a/sdk/objc/api/peerconnection/RTCPeerConnection+Native.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#import "RTCPeerConnection.h"
-
-#include <memory>
-
-namespace rtc {
-class BitrateAllocationStrategy;
-}  // namespace rtc
-
-NS_ASSUME_NONNULL_BEGIN
-
-/**
- * This class extension exposes methods that work directly with injectable C++ components.
- */
-@interface RTCPeerConnection ()
-
-/** Sets current strategy. If not set default WebRTC allocator will be used. May be changed during
- *  an active session.
- */
-- (void)setBitrateAllocationStrategy:
-        (std::unique_ptr<rtc::BitrateAllocationStrategy>)bitrateAllocationStrategy;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnection.mm b/sdk/objc/api/peerconnection/RTCPeerConnection.mm
index 04b07f7..659e1f3 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnection.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnection.mm
@@ -17,7 +17,6 @@
 #import "RTCMediaConstraints+Private.h"
 #import "RTCMediaStream+Private.h"
 #import "RTCMediaStreamTrack+Private.h"
-#import "RTCPeerConnection+Native.h"
 #import "RTCPeerConnectionFactory+Private.h"
 #import "RTCRtpReceiver+Private.h"
 #import "RTCRtpSender+Private.h"
@@ -522,11 +521,6 @@
   return _peerConnection->SetBitrate(params).ok();
 }
 
-- (void)setBitrateAllocationStrategy:
-        (std::unique_ptr<rtc::BitrateAllocationStrategy>)bitrateAllocationStrategy {
-  _peerConnection->SetBitrateAllocationStrategy(std::move(bitrateAllocationStrategy));
-}
-
 - (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath
                       maxSizeInBytes:(int64_t)maxSizeInBytes {
   RTC_DCHECK(filePath.length);
diff --git a/test/scenario/audio_stream.cc b/test/scenario/audio_stream.cc
index 4ff3593..79ac2e7 100644
--- a/test/scenario/audio_stream.cc
+++ b/test/scenario/audio_stream.cc
@@ -10,7 +10,6 @@
 #include "test/scenario/audio_stream.h"
 
 #include "absl/memory/memory.h"
-#include "rtc_base/bitrate_allocation_strategy.h"
 #include "test/call_test.h"
 
 #if WEBRTC_ENABLE_PROTOBUF
@@ -130,10 +129,6 @@
 
   if (config.encoder.priority_rate) {
     send_config.track_id = sender->GetNextPriorityId();
-    sender_->call_->SetBitrateAllocationStrategy(
-        absl::make_unique<rtc::AudioPriorityBitrateAllocationStrategy>(
-            send_config.track_id,
-            config.encoder.priority_rate->bps<uint32_t>()));
   }
   sender_->SendTask([&] {
     send_stream_ = sender_->call_->CreateAudioSendStream(send_config);
diff --git a/video/BUILD.gn b/video/BUILD.gn
index a2cf13a..89c1f32 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -100,6 +100,7 @@
     "../rtc_base:stringutils",
     "../rtc_base:weak_ptr",
     "../rtc_base/experiments:alr_experiment",
+    "../rtc_base/experiments:field_trial_parser",
     "../rtc_base/experiments:keyframe_interval_settings_experiment",
     "../rtc_base/experiments:quality_scaling_experiment",
     "../rtc_base/experiments:rate_control_settings",
diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index 7de991c..50bbb1f 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -511,7 +511,6 @@
       static_cast<uint32_t>(disable_padding_ ? 0 : max_padding_bitrate_),
       /* priority_bitrate */ 0,
       !config_->suspend_below_min_bitrate,
-      config_->track_id,
       encoder_bitrate_priority_};
 }
 
diff --git a/video/video_send_stream_impl.h b/video/video_send_stream_impl.h
index 7f734e9..64826a3 100644
--- a/video/video_send_stream_impl.h
+++ b/video/video_send_stream_impl.h
@@ -36,6 +36,7 @@
 #include "modules/utility/include/process_thread.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "rtc_base/critical_section.h"
+#include "rtc_base/experiments/field_trial_parser.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/task_utils/repeating_task.h"
 #include "rtc_base/thread_annotations.h"
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 51e31f7..e6a291f 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -154,7 +154,6 @@
 
 TEST_F(VideoSendStreamImplTest, RegistersAsBitrateObserverOnStart) {
   test_queue_.SendTask([this] {
-    config_.track_id = "test";
     const bool kSuspend = false;
     config_.suspend_below_min_bitrate = kSuspend;
     auto vss_impl = CreateVideoSendStreamImpl(
@@ -167,7 +166,6 @@
               EXPECT_EQ(config.max_bitrate_bps, kDefaultInitialBitrateBps);
               EXPECT_EQ(config.pad_up_bitrate_bps, 0u);
               EXPECT_EQ(config.enforce_min_bitrate, !kSuspend);
-              EXPECT_EQ(config.track_id, "test");
               EXPECT_EQ(config.bitrate_priority, kDefaultBitratePriority);
             }));
     vss_impl->Start();
@@ -178,7 +176,6 @@
 
 TEST_F(VideoSendStreamImplTest, UpdatesObserverOnConfigurationChange) {
   test_queue_.SendTask([this] {
-    config_.track_id = "test";
     const bool kSuspend = false;
     config_.suspend_below_min_bitrate = kSuspend;
     config_.rtp.extensions.emplace_back(
@@ -241,7 +238,6 @@
 
 TEST_F(VideoSendStreamImplTest, UpdatesObserverOnConfigurationChangeWithAlr) {
   test_queue_.SendTask([this] {
-    config_.track_id = "test";
     const bool kSuspend = false;
     config_.suspend_below_min_bitrate = kSuspend;
     config_.rtp.extensions.emplace_back(
@@ -630,7 +626,6 @@
 
 TEST_F(VideoSendStreamImplTest, CallsVideoStreamEncoderOnBitrateUpdate) {
   test_queue_.SendTask([this] {
-    config_.track_id = "test";
     const bool kSuspend = false;
     config_.suspend_below_min_bitrate = kSuspend;
     config_.rtp.extensions.emplace_back(
@@ -758,8 +753,6 @@
     EXPECT_CALL(rtp_video_sender_, OnEncodedImage(_, _, _))
         .WillRepeatedly(Return(
             EncodedImageCallback::Result(EncodedImageCallback::Result::OK)));
-
-    config_.track_id = "test";
     const bool kSuspend = false;
     config_.suspend_below_min_bitrate = kSuspend;
     config_.rtp.extensions.emplace_back(