aboutsummaryrefslogtreecommitdiff
path: root/plugins/rtp/src/participant.vala
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2021-03-21 12:41:38 +0100
committerMarvin W <git@larma.de>2021-03-21 12:41:38 +0100
commitef2e3c774cab82a94a5e34399f2013d64c3cf03b (patch)
treedee0b7184eb2e225593508d74b25a8228e35144f /plugins/rtp/src/participant.vala
parente6a933ad307116952d3202c36d0a8d6e7f4b0946 (diff)
downloaddino-ef2e3c774cab82a94a5e34399f2013d64c3cf03b.tar.gz
dino-ef2e3c774cab82a94a5e34399f2013d64c3cf03b.zip
Add RTP implementation as plugin
Diffstat (limited to 'plugins/rtp/src/participant.vala')
-rw-r--r--plugins/rtp/src/participant.vala39
1 files changed, 39 insertions, 0 deletions
diff --git a/plugins/rtp/src/participant.vala b/plugins/rtp/src/participant.vala
new file mode 100644
index 00000000..1ca13191
--- /dev/null
+++ b/plugins/rtp/src/participant.vala
@@ -0,0 +1,39 @@
+using Gee;
+using Xmpp;
+
+public class Dino.Plugins.Rtp.Participant {
+ public Jid full_jid { get; private set; }
+
+ protected Gst.Pipeline pipe;
+ private Map<Stream, uint32> ssrcs = new HashMap<Stream, uint32>();
+
+ public Participant(Gst.Pipeline pipe, Jid full_jid) {
+ this.pipe = pipe;
+ this.full_jid = full_jid;
+ }
+
+ public uint32 get_ssrc(Stream stream) {
+ if (ssrcs.has_key(stream)) {
+ return ssrcs[stream];
+ }
+ return 0;
+ }
+
+ public void set_ssrc(Stream stream, uint32 ssrc) {
+ if (ssrcs.has_key(stream)) {
+ warning("Learning ssrc %ul for %s in %s when it is already known as %ul", ssrc, full_jid.to_string(), stream.to_string(), ssrcs[stream]);
+ } else {
+ stream.on_destroy.connect(unset_ssrc);
+ }
+ ssrcs[stream] = ssrc;
+ }
+
+ public void unset_ssrc(Stream stream) {
+ ssrcs.unset(stream);
+ stream.on_destroy.disconnect(unset_ssrc);
+ }
+
+ public string to_string() {
+ return @"participant $full_jid";
+ }
+} \ No newline at end of file