mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-07 20:31:20 +00:00
doc: add design-rtpcollision.txt that explains when GstRTPCollision is created
It also talks about "BYE only the corresponding source, not the whole session."
This commit is contained in:
parent
d562263852
commit
a0df8b8fce
2 changed files with 49 additions and 0 deletions
6
docs/design/Makefile.am
Normal file
6
docs/design/Makefile.am
Normal file
|
@ -0,0 +1,6 @@
|
|||
SUBDIRS =
|
||||
|
||||
|
||||
EXTRA_DIST = \
|
||||
design-rtpcollision.txt
|
||||
|
43
docs/design/design-rtpcollision.txt
Normal file
43
docs/design/design-rtpcollision.txt
Normal file
|
@ -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.
|
Loading…
Reference in a new issue