Chromium Code Reviews| 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; |
| } |