Add equality method for RTCVideoCodecInfo.

This is useful for various reasons.

Bug: None
Change-Id: I8658f8b19829cc8470789c13ff3af6466f200f00
Reviewed-on: https://webrtc-review.googlesource.com/4383
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20018}
diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm
index 4936568..786c422 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 2f287dd..d8f4425 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h
@@ -105,6 +105,8 @@
                   parameters:(nullable NSDictionary<NSString *, NSString *> *)parameters
     NS_DESIGNATED_INITIALIZER;
 
+- (BOOL)isEqualToCodecInfo:(RTCVideoCodecInfo *)info;
+
 @property(nonatomic, readonly) NSInteger payload;
 @property(nonatomic, readonly) NSString *name;
 @property(nonatomic, readonly) NSDictionary<NSString *, NSString *> *parameters;