Index: webrtc/api/objc/RTCMediaStreamTrack.mm |
diff --git a/webrtc/api/objc/RTCMediaStreamTrack.mm b/webrtc/api/objc/RTCMediaStreamTrack.mm |
index 25979b38d9a32bd968d531bdc66a5553ec77f4d7..7105fbb565d045f1babf587c3a2b6ca393c28b79 100644 |
--- a/webrtc/api/objc/RTCMediaStreamTrack.mm |
+++ b/webrtc/api/objc/RTCMediaStreamTrack.mm |
@@ -47,6 +47,20 @@ |
readyState]; |
} |
+- (BOOL)isEqual:(id)object { |
+ if (self == object) { |
+ return YES; |
+ } |
+ if (![object isKindOfClass:[RTCMediaStreamTrack class]]) { |
tkchin_webrtc
2016/04/08 22:45:46
[object isMemberOfClass:[self class]]? Do we care
skvlad
2016/04/08 23:23:23
Changed to isMemberOfClass:.
|
+ return NO; |
+ } |
+ return [self isEqualToTrack:(RTCMediaStreamTrack *)object]; |
+} |
+ |
+- (NSUInteger)hash { |
+ return (NSUInteger) _nativeTrack.get(); |
tkchin_webrtc
2016/04/08 22:45:46
nit: remove space
Is this a safe conversion?
skvlad
2016/04/08 23:23:23
It's safe enough for a hash function, even if two
|
+} |
+ |
#pragma mark - Private |
- (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack { |
@@ -64,6 +78,29 @@ |
return self; |
} |
+- (instancetype)initWithNativeTrack: |
+ (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack { |
+ NSParameterAssert(nativeTrack); |
+ if (nativeTrack->kind() == |
+ std::string(webrtc::MediaStreamTrackInterface::kAudioKind)) { |
+ return [self initWithNativeTrack:nativeTrack |
+ type:RTCMediaStreamTrackTypeAudio]; |
+ } |
+ if (nativeTrack->kind() == |
+ std::string(webrtc::MediaStreamTrackInterface::kVideoKind)) { |
+ return [self initWithNativeTrack:nativeTrack |
+ type:RTCMediaStreamTrackTypeVideo]; |
+ } |
+ return nil; |
+} |
+ |
+- (BOOL)isEqualToTrack:(RTCMediaStreamTrack *)track { |
+ if (!track) { |
+ return NO; |
+ } |
+ return _nativeTrack == track->_nativeTrack; |
tkchin_webrtc
2016/04/08 22:45:46
nit: don't use -> if possible
just access the nati
skvlad
2016/04/08 23:23:23
Changed to use the property. refptr has operator==
|
+} |
+ |
+ (webrtc::MediaStreamTrackInterface::TrackState)nativeTrackStateForState: |
(RTCMediaStreamTrackState)state { |
switch (state) { |