diff options
author | Julien Isorce <julien.isorce@collabora.co.uk> | 2013-11-05 18:03:48 +0000 |
---|---|---|
committer | Wim Taymans <wtaymans@redhat.com> | 2013-12-12 15:46:24 +0100 |
commit | a0df8b8fce1a8acb98c7daa250b0363f2d193830 (patch) | |
tree | be1e980cce0b698959b1324d2d103abcc34a004d /docs | |
parent | d562263852cfc4abbc48b479b860bb6ecc7d925b (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.am | 6 | ||||
-rw-r--r-- | docs/design/design-rtpcollision.txt | 43 |
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. |