aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala')
-rw-r--r--xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala19
1 files changed, 17 insertions, 2 deletions
diff --git a/xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala b/xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala
index faba38c9..73bc9800 100644
--- a/xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala
+++ b/xmpp-vala/src/module/xep/0167_jingle_rtp/payload_type.vala
@@ -64,12 +64,27 @@ public class Xmpp.Xep.JingleRtp.PayloadType {
}
public static bool equals_func(PayloadType a, PayloadType b) {
- return a.id == b.id &&
+ bool simple = a.id == b.id &&
a.name == b.name &&
a.channels == b.channels &&
a.clockrate == b.clockrate &&
a.maxptime == b.maxptime &&
- a.ptime == b.ptime;
+ a.ptime == b.ptime &&
+ a.parameters.size == b.parameters.size &&
+ a.rtcp_fbs.size == b.rtcp_fbs.size;
+ if (!simple) return false;
+ foreach (string key in a.parameters.keys) {
+ if (!b.parameters.has_key(key)) return false;
+ if (a.parameters[key] != b.parameters[key]) return false;
+ }
+ foreach (RtcpFeedback fb in a.rtcp_fbs) {
+ if (!b.rtcp_fbs.any_match((it) => it.type_ == fb.type_ && it.subtype == fb.subtype)) return false;
+ }
+ return true;
+ }
+
+ public static uint hash_func(PayloadType payload_type) {
+ return payload_type.to_xml().to_string().hash();
}
}