Index: webrtc/api/objc/RTCMediaStreamTrack.mm |
diff --git a/webrtc/api/objc/RTCMediaStreamTrack.mm b/webrtc/api/objc/RTCMediaStreamTrack.mm |
index e5751b0746bd5c855cc403d6113d25a7ac6ef4c9..827e25d438e5d3fdfcf404ffd9a288782a300ea8 100644 |
--- a/webrtc/api/objc/RTCMediaStreamTrack.mm |
+++ b/webrtc/api/objc/RTCMediaStreamTrack.mm |
@@ -14,27 +14,29 @@ |
#import "webrtc/base/objc/NSString+StdString.h" |
@implementation RTCMediaStreamTrack { |
- rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> _nativeTrack; |
+ rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> _nativeAudioTrack; |
+ rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> _nativeVideoTrack; |
+ RTCMediaStreamTrackType _type; |
} |
- (NSString *)kind { |
- return [NSString stringForStdString:_nativeTrack->kind()]; |
+ return [NSString stringForStdString:self.nativeMediaTrack->kind()]; |
} |
- (NSString *)trackId { |
- return [NSString stringForStdString:_nativeTrack->id()]; |
+ return [NSString stringForStdString:self.nativeMediaTrack->id()]; |
} |
- (BOOL)isEnabled { |
- return _nativeTrack->enabled(); |
+ return self.nativeMediaTrack->enabled(); |
} |
- (void)setIsEnabled:(BOOL)isEnabled { |
- _nativeTrack->set_enabled(isEnabled); |
+ self.nativeMediaTrack->set_enabled(isEnabled); |
} |
- (RTCMediaStreamTrackState)readyState { |
- return [[self class] trackStateForNativeState:_nativeTrack->state()]; |
+ return [[self class] trackStateForNativeState:self.nativeMediaTrack->state()]; |
} |
- (NSString *)description { |
@@ -48,15 +50,35 @@ |
#pragma mark - Private |
-- (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack { |
- return _nativeTrack; |
+- (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeMediaTrack { |
+ switch (_type) { |
+ case RTCMediaStreamTrackTypeAudio: |
+ return _nativeAudioTrack; |
+ case RTCMediaStreamTrackTypeVideo: |
+ return _nativeVideoTrack; |
+ } |
+} |
+ |
+- (rtc::scoped_refptr<webrtc::AudioTrackInterface>)nativeAudioTrack { |
+ return static_cast<webrtc::AudioTrackInterface *>(_nativeAudioTrack.get()); |
tkchin_webrtc
2016/01/21 01:23:30
If we're static casting on the getter, might as we
hjon
2016/01/21 19:53:27
This should be taken care of.
|
+} |
+ |
+- (rtc::scoped_refptr<webrtc::VideoTrackInterface>)nativeVideoTrack { |
+ return static_cast<webrtc::VideoTrackInterface *>(_nativeVideoTrack.get()); |
} |
-- (instancetype)initWithNativeTrack: |
- (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack { |
- NSParameterAssert(nativeTrack); |
+- (instancetype)initWithNativeMediaTrack: |
+ (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeMediaTrack |
+ type:(RTCMediaStreamTrackType)type { |
+ NSParameterAssert(nativeMediaTrack); |
if (self = [super init]) { |
- _nativeTrack = nativeTrack; |
+ switch (_type) { |
+ case RTCMediaStreamTrackTypeAudio: |
+ _nativeAudioTrack = nativeMediaTrack; |
+ case RTCMediaStreamTrackTypeVideo: |
+ _nativeVideoTrack = nativeMediaTrack; |
+ } |
+ _type = type; |
} |
return self; |
} |