diff options
author | Marvin W <git@larma.de> | 2021-03-21 12:41:38 +0100 |
---|---|---|
committer | Marvin W <git@larma.de> | 2021-03-21 12:41:38 +0100 |
commit | ef2e3c774cab82a94a5e34399f2013d64c3cf03b (patch) | |
tree | dee0b7184eb2e225593508d74b25a8228e35144f /plugins/rtp/src/participant.vala | |
parent | e6a933ad307116952d3202c36d0a8d6e7f4b0946 (diff) | |
download | dino-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.vala | 39 |
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 |