Revert ObjC API changes for BWE allocation strategy

The ObjC API (the files in sdk/objc/Framework/Headers/WebRTC/) needs to
be pure ObjC. The changes that are reverted here introduced C++ which
turns it into ObjC++.

We don't have a test protectcing this right now, but it's probably
something we should add to catch changes like this in the future.

TBR=alexnarest@webrtc.org,deadbeef@webrtc.org

Bug: webrtc:8243
Change-Id: Idea688f4014cd44c27cf2cb2a5ec8a9ea7da3c00
Reviewed-on: https://webrtc-review.googlesource.com/16429
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20463}
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index b7474d6..0041d04 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -176,7 +176,6 @@
     if (is_ios) {
       deps = [
         ":AppRTCMobile_ios_frameworks",
-        "../rtc_base:rtc_base",
       ]
     } else {
       deps = [
@@ -207,8 +206,6 @@
       "objc/AppRTCMobile/ARDAppClient.m",
       "objc/AppRTCMobile/ARDAppEngineClient.h",
       "objc/AppRTCMobile/ARDAppEngineClient.m",
-      "objc/AppRTCMobile/ARDBitrateAllocationStrategy.h",
-      "objc/AppRTCMobile/ARDBitrateAllocationStrategy.mm",
       "objc/AppRTCMobile/ARDBitrateTracker.h",
       "objc/AppRTCMobile/ARDBitrateTracker.m",
       "objc/AppRTCMobile/ARDCaptureController.h",
@@ -252,7 +249,6 @@
     deps = [
       ":apprtc_common",
       ":socketrocket",
-      "../rtc_base:rtc_base",
     ]
     if (is_ios) {
       deps += [ ":AppRTCMobile_ios_frameworks" ]
diff --git a/examples/objc/AppRTCMobile/ARDAppClient.m b/examples/objc/AppRTCMobile/ARDAppClient.m
index f606de0..8e933b9 100644
--- a/examples/objc/AppRTCMobile/ARDAppClient.m
+++ b/examples/objc/AppRTCMobile/ARDAppClient.m
@@ -25,7 +25,6 @@
 #import "WebRTC/RTCVideoTrack.h"
 
 #import "ARDAppEngineClient.h"
-#import "ARDBitrateAllocationStrategy.h"
 #import "ARDJoinResponse.h"
 #import "ARDMessageResponse.h"
 #import "ARDSettingsModel.h"
@@ -51,7 +50,6 @@
 static NSString * const kARDAudioTrackId = @"ARDAMSa0";
 static NSString * const kARDVideoTrackId = @"ARDAMSv0";
 static NSString * const kARDVideoTrackKind = @"video";
-static uint32_t const kSufficientAudioBitrate = 16000;
 
 // TODO(tkchin): Add these as UI options.
 static BOOL const kARDAppClientEnableTracing = NO;
@@ -106,7 +104,6 @@
   ARDTimerProxy *_statsTimer;
   ARDSettingsModel *_settings;
   RTCVideoTrack *_localVideoTrack;
-  ARDBitrateAllocationStrategy *_bitrateAllocationStrategy;
 }
 
 @synthesize shouldGetStats = _shouldGetStats;
@@ -309,14 +306,12 @@
   _hasReceivedSdp = NO;
   _messageQueue = [NSMutableArray array];
   _localVideoTrack = nil;
-
 #if defined(WEBRTC_IOS)
   [_factory stopAecDump];
   [_peerConnection stopRtcEventLog];
 #endif
   [_peerConnection close];
   _peerConnection = nil;
-  _bitrateAllocationStrategy = nil;
   self.state = kARDAppClientStateDisconnected;
 #if defined(WEBRTC_IOS)
   if (kARDAppClientEnableTracing) {
@@ -538,14 +533,8 @@
   _peerConnection = [_factory peerConnectionWithConfiguration:config
                                                   constraints:constraints
                                                      delegate:self];
-  _bitrateAllocationStrategy = [ARDBitrateAllocationStrategy
-      createAudioPriorityBitrateAllocationStrategyForPeerConnection:_peerConnection
-                                                     withAudioTrack:kARDAudioTrackId
-                                             sufficientAudioBitrate:kSufficientAudioBitrate];
-
   // Create AV senders.
   [self createMediaSenders];
-
   if (_isInitiator) {
     // Send offer.
     __weak ARDAppClient *weakSelf = self;
diff --git a/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.h b/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.h
deleted file mode 100644
index 18f83ea..0000000
--- a/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.h
+++ /dev/null
@@ -1,23 +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 <Foundation/Foundation.h>
-#import "WebRTC/RTCPeerConnection.h"
-
-@interface ARDBitrateAllocationStrategy : NSObject
-
-+ (ARDBitrateAllocationStrategy*)
-    createAudioPriorityBitrateAllocationStrategyForPeerConnection:(RTCPeerConnection*)peerConnection
-                                                   withAudioTrack:(NSString*)audioTrackID
-                                           sufficientAudioBitrate:(uint32_t)sufficientAudioBitrate;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-@end
diff --git a/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.mm b/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.mm
deleted file mode 100644
index 5901f8c..0000000
--- a/examples/objc/AppRTCMobile/ARDBitrateAllocationStrategy.mm
+++ /dev/null
@@ -1,40 +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 "ARDBitrateAllocationStrategy.h"
-#import "WebRTC/RTCBitrateAllocationStrategy.h"
-
-#include "rtc_base/bitrateallocationstrategy.h"
-
-@implementation ARDBitrateAllocationStrategy
-
-+ (ARDBitrateAllocationStrategy*)
-    createAudioPriorityBitrateAllocationStrategyForPeerConnection:(RTCPeerConnection*)peerConnection
-                                                   withAudioTrack:(NSString*)audioTrackID
-                                           sufficientAudioBitrate:(uint32_t)sufficientAudioBitrate {
-  return [[ARDBitrateAllocationStrategy alloc] initWithPeerCoonnection:peerConnection
-                                                        withAudioTrack:audioTrackID
-                                                sufficientAudioBitrate:sufficientAudioBitrate];
-}
-
-- (instancetype)initWithPeerCoonnection:(RTCPeerConnection*)peerConnection
-                         withAudioTrack:(NSString*)audioTrackID
-                 sufficientAudioBitrate:(uint32_t)sufficientAudioBitrate {
-  if (self = [super init]) {
-    [peerConnection
-        setBitrateAllocationStrategy:[[RTCBitrateAllocationStrategy alloc]
-                                         initWith:new rtc::AudioPriorityBitrateAllocationStrategy(
-                                                      std::string(audioTrackID.UTF8String),
-                                                      sufficientAudioBitrate)]];
-  }
-  return self;
-}
-
-@end
diff --git a/examples/objc/AppRTCMobile/ios/ARDAppDelegate.m b/examples/objc/AppRTCMobile/ios/ARDAppDelegate.m
index 20ae170..07c83a0 100644
--- a/examples/objc/AppRTCMobile/ios/ARDAppDelegate.m
+++ b/examples/objc/AppRTCMobile/ios/ARDAppDelegate.m
@@ -26,8 +26,7 @@
 - (BOOL)application:(UIApplication *)application
     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   NSDictionary *fieldTrials = @{
-    kRTCFieldTrialH264HighProfileKey : kRTCFieldTrialEnabledValue,
-    kRTCFieldTrialAudioSendSideBweKey : kRTCFieldTrialEnabledValue
+    kRTCFieldTrialH264HighProfileKey: kRTCFieldTrialEnabledValue,
   };
   RTCInitFieldTrialDictionary(fieldTrials);
   RTCInitializeSSL();
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 23f626f..e79ebc7 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -390,7 +390,6 @@
         "objc/Framework/Classes/PeerConnection/RTCAudioSource.mm",
         "objc/Framework/Classes/PeerConnection/RTCAudioTrack+Private.h",
         "objc/Framework/Classes/PeerConnection/RTCAudioTrack.mm",
-        "objc/Framework/Classes/PeerConnection/RTCBitrateAllocationStrategy.mm",
         "objc/Framework/Classes/PeerConnection/RTCConfiguration+Private.h",
         "objc/Framework/Classes/PeerConnection/RTCConfiguration.mm",
         "objc/Framework/Classes/PeerConnection/RTCDataChannel+Private.h",
@@ -458,7 +457,6 @@
         "objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h",
         "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
         "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
-        "objc/Framework/Headers/WebRTC/RTCBitrateAllocationStrategy.h",
         "objc/Framework/Headers/WebRTC/RTCConfiguration.h",
         "objc/Framework/Headers/WebRTC/RTCDataChannel.h",
         "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCBitrateAllocationStrategy.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCBitrateAllocationStrategy.mm
deleted file mode 100644
index bc99767..0000000
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCBitrateAllocationStrategy.mm
+++ /dev/null
@@ -1,28 +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 "WebRTC/RTCBitrateAllocationStrategy.h"
-
-#include "rtc_base/bitrateallocationstrategy.h"
-#include "rtc_base/checks.h"
-
-@implementation RTCBitrateAllocationStrategy
-
-@synthesize strategy = _strategy;
-
-- (instancetype)initWith:(rtc::BitrateAllocationStrategy*)strategy {
-  RTC_DCHECK(strategy);
-  if (self = [super init]) {
-    _strategy = strategy;
-  }
-  return self;
-}
-
-@end
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm
index 4fcc634..e443e85 100644
--- a/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm
@@ -21,7 +21,6 @@
 #import "RTCRtpReceiver+Private.h"
 #import "RTCRtpSender+Private.h"
 #import "RTCSessionDescription+Private.h"
-#import "WebRTC/RTCBitrateAllocationStrategy.h"
 #import "WebRTC/RTCLogging.h"
 
 #include <memory>
@@ -386,15 +385,6 @@
   return _peerConnection->SetBitrate(params).ok();
 }
 
-- (void)setBitrateAllocationStrategy:
-        (RTCBitrateAllocationStrategy *_Nullable)bitrateAllocationStrategy {
-  if (bitrateAllocationStrategy)
-    _peerConnection->SetBitrateAllocationStrategy(
-        std::unique_ptr<rtc::BitrateAllocationStrategy>(bitrateAllocationStrategy.strategy));
-  else
-    _peerConnection->SetBitrateAllocationStrategy(nullptr);
-}
-
 - (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath
                       maxSizeInBytes:(int64_t)maxSizeInBytes {
   RTC_DCHECK(filePath.length);
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCBitrateAllocationStrategy.h b/sdk/objc/Framework/Headers/WebRTC/RTCBitrateAllocationStrategy.h
deleted file mode 100644
index c510008..0000000
--- a/sdk/objc/Framework/Headers/WebRTC/RTCBitrateAllocationStrategy.h
+++ /dev/null
@@ -1,32 +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 <WebRTC/RTCMacros.h>
-#import <WebRTC/RTCMediaStreamTrack.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-namespace rtc {
-
-class BitrateAllocationStrategy;
-}
-
-RTC_EXPORT
-@interface RTCBitrateAllocationStrategy : NSObject
-
-- (instancetype)init NS_UNAVAILABLE;
-- (instancetype)initWith:(rtc::BitrateAllocationStrategy*)strategy;
-
-/** Native bitrate allocation strategy. */
-@property(nonatomic, readonly) rtc::BitrateAllocationStrategy* strategy;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
index c74af13..7b0c449 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCPeerConnection.h
@@ -24,7 +24,6 @@
 @class RTCRtpSender;
 @class RTCSessionDescription;
 @class RTCLegacyStatsReport;
-@class RTCBitrateAllocationStrategy;
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -194,13 +193,6 @@
           currentBitrateBps:(nullable NSNumber *)currentBitrateBps
               maxBitrateBps:(nullable NSNumber *)maxBitrateBps;
 
-/** 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
- */
-- (void)setBitrateAllocationStrategy:
-        (RTCBitrateAllocationStrategy *_Nullable)bitrateAllocationStrategy;
-
 /** Start or stop recording an Rtc EventLog. */
 - (BOOL)startRtcEventLogWithFilePath:(NSString *)filePath
                       maxSizeInBytes:(int64_t)maxSizeInBytes;