summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJulien Isorce <julien.isorce@collabora.co.uk>2013-11-05 18:03:48 +0000
committerWim Taymans <wtaymans@redhat.com>2013-12-12 15:46:24 +0100
commita0df8b8fce1a8acb98c7daa250b0363f2d193830 (patch)
treebe1e980cce0b698959b1324d2d103abcc34a004d /docs
parentd562263852cfc4abbc48b479b860bb6ecc7d925b (diff)
doc: add design-rtpcollision.txt that explains when GstRTPCollision is created
It also talks about "BYE only the corresponding source, not the whole session."
Diffstat (limited to 'docs')
-rw-r--r--docs/design/Makefile.am6
-rw-r--r--docs/design/design-rtpcollision.txt43
2 files changed, 49 insertions, 0 deletions
diff --git a/docs/design/Makefile.am b/docs/design/Makefile.am
new file mode 100644
index 000000000..69c452bf7
--- /dev/null
+++ b/docs/design/Makefile.am
@@ -0,0 +1,6 @@
+SUBDIRS =
+
+
+EXTRA_DIST = \
+ design-rtpcollision.txt
+
diff --git a/docs/design/design-rtpcollision.txt b/docs/design/design-rtpcollision.txt
new file mode 100644
index 000000000..816802c3b
--- /dev/null
+++ b/docs/design/design-rtpcollision.txt
@@ -0,0 +1,43 @@
+RTP collision design
+
+
+GstRTPCollision
+---------------
+
+Custon upstream event which contains the ssrc marked as collided.
+
+This event is generated on both pipeline sender and receiver side by
+the gstrtpsession element when it detects a conflict between ssrc.
+(same session id and same ssrc)
+
+It's an upstream event so that means this event is for now only
+useful on pipeline sender side. Because rtppayloader and rtpaux elements
+are placed upstream from the gstrtpsession.
+
+On pipeline receiver side, gstrtpsession is the most upstream element
+compared to other rtp elements like rtpauxreceive, ssrcdemux, rtpjitterbuffer
+and rtpdepayloader.
+
+rtppayloader
+------------
+
+When handling a GstRTPCollision event, the rtppayloader has to choose another
+ssrc. Actually this is the gstrtpsession that suggests him a newer ssrc through
+the caps.
+
+BYE only the corresponding source, not the whole session.
+---------------------------------------------------------
+
+When a collision happens for the given ssrc, the associated source is marked
+bye. But we make sure that the whole session is not itself set bye.
+Because internally, gstrtpsession can manages several sources and all have
+their own distinct ssrc.
+
+For example when using rtprtxreceive, it uses one session which contains
+2 internal rtpsources. One for the master stream, and one for the rtx stream.
+Actually in this case there are always 3 sources because the session always
+has an other internal one, maybe for rtcp but I'm still nore sure about that.
+Then gstrtpsession make sure to only bye the rtx stream if this is the one
+which collided.
+Then gstrtpsession make sure to only bye the master stream if this is the one
+which collided.