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 {