diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm index 4936568dd1..786c422a17 100644 --- a/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm +++ b/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm @@ -62,6 +62,28 @@ return codec; } +- (BOOL)isEqualToCodecInfo:(RTCVideoCodecInfo *)info { + if (!info || + self.payload != info.payload || + ![self.name isEqualToString:info.name] || + ![self.parameters isEqualToDictionary:info.parameters]) { + return NO; + } + return YES; +} + +- (BOOL)isEqual:(id)object { + if (self == object) + return YES; + if (![object isKindOfClass:[self class]]) + return NO; + return [self isEqualToCodecInfo:object]; +} + +- (NSUInteger)hash { + return [self.name hash] ^ self.payload ^ [self.parameters hash]; +} + @end @implementation RTCVideoEncoderQpThresholds diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h index 2f287ddb45..d8f44252d0 100644 --- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h +++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h @@ -105,6 +105,8 @@ RTC_EXPORT parameters:(nullable NSDictionary *)parameters NS_DESIGNATED_INITIALIZER; +- (BOOL)isEqualToCodecInfo:(RTCVideoCodecInfo *)info; + @property(nonatomic, readonly) NSInteger payload; @property(nonatomic, readonly) NSString *name; @property(nonatomic, readonly) NSDictionary *parameters;