Implement equals() and hashCode() for VideoCodecInfo.
To be able to compare VideoCodecInfos in a nice way in Java and still
use the correct criteria for comparing H264 codec infos.
A similar thing was done for Obj-C here:
https://webrtc-review.googlesource.com/c/src/+/4383
Bug: webrtc:7925
Change-Id: I43f532d4efa557fc8fe25a82eebc35072b91e6db
Reviewed-on: https://webrtc-review.googlesource.com/23240
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20716}
diff --git a/sdk/android/api/org/webrtc/VideoCodecInfo.java b/sdk/android/api/org/webrtc/VideoCodecInfo.java
index 208a992..9f52cf2 100644
--- a/sdk/android/api/org/webrtc/VideoCodecInfo.java
+++ b/sdk/android/api/org/webrtc/VideoCodecInfo.java
@@ -10,6 +10,8 @@
package org.webrtc;
+import java.util.Arrays;
+import java.util.Locale;
import java.util.Map;
/**
@@ -45,4 +47,23 @@
this.name = name;
this.params = params;
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null)
+ return false;
+ if (obj == this)
+ return true;
+ if (!(obj instanceof VideoCodecInfo))
+ return false;
+
+ VideoCodecInfo otherInfo = (VideoCodecInfo) obj;
+ return name.equalsIgnoreCase(otherInfo.name) && params.equals(otherInfo.params);
+ }
+
+ @Override
+ public int hashCode() {
+ Object[] values = {name.toUpperCase(Locale.ROOT), params};
+ return Arrays.hashCode(values);
+ }
}