iOS: Add ability to specify audio constraints.

NOTRY=True
BUG=

Review-Url: https://codereview.webrtc.org/2290583003
Cr-Commit-Position: refs/heads/master@{#13976}
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm b/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm
index 42542b8..5fa2d46 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm
+++ b/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm
@@ -11,19 +11,30 @@
 #import "RTCAudioTrack+Private.h"
 
 #import "NSString+StdString.h"
+#import "RTCAudioSource+Private.h"
 #import "RTCMediaStreamTrack+Private.h"
 #import "RTCPeerConnectionFactory+Private.h"
 
+#include "webrtc/base/checks.h"
+
 @implementation RTCAudioTrack
 
+@synthesize source = _source;
+
 - (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory
+                         source:(RTCAudioSource *)source
                         trackId:(NSString *)trackId {
-  NSParameterAssert(factory);
-  NSParameterAssert(trackId.length);
+  RTC_DCHECK(factory);
+  RTC_DCHECK(source);
+  RTC_DCHECK(trackId.length);
+
   std::string nativeId = [NSString stdStringForString:trackId];
   rtc::scoped_refptr<webrtc::AudioTrackInterface> track =
-      factory.nativeFactory->CreateAudioTrack(nativeId, nullptr);
-  return [self initWithNativeTrack:track type:RTCMediaStreamTrackTypeAudio];
+      factory.nativeFactory->CreateAudioTrack(nativeId, source.nativeAudioSource);
+  if ([self initWithNativeTrack:track type:RTCMediaStreamTrackTypeAudio]) {
+    _source = source;
+  }
+  return self;
 }
 
 - (instancetype)initWithNativeTrack:
@@ -34,6 +45,18 @@
   return [super initWithNativeTrack:nativeTrack type:type];
 }
 
+
+- (RTCAudioSource *)source {
+  if (!_source) {
+    rtc::scoped_refptr<webrtc::AudioSourceInterface> source =
+        self.nativeAudioTrack->GetSource();
+    if (source) {
+      _source = [[RTCAudioSource alloc] initWithNativeAudioSource:source.get()];
+    }
+  }
+  return _source;
+}
+
 #pragma mark - Private
 
 - (rtc::scoped_refptr<webrtc::AudioTrackInterface>)nativeAudioTrack {