diff options
author | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2008-01-07 18:03:34 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.co.uk> | 2008-01-07 18:03:34 -0500 |
commit | 500995239cc65776d6e3e31c80ecb763c47ded8b (patch) | |
tree | 6436c1423170ac12793d728dc9f5ddb542fde479 /docs/multi-party-negotiation.txt | |
parent | 021ad1469395da8eed23655cb26f42605d6b1564 (diff) | |
download | farstream-500995239cc65776d6e3e31c80ecb763c47ded8b.tar.gz |
Add explanation of the behavior for multi-party codec negotiation
Diffstat (limited to 'docs/multi-party-negotiation.txt')
-rw-r--r-- | docs/multi-party-negotiation.txt | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/multi-party-negotiation.txt b/docs/multi-party-negotiation.txt new file mode 100644 index 00000000..fc69ea0d --- /dev/null +++ b/docs/multi-party-negotiation.txt @@ -0,0 +1,36 @@ +Codec negotiation for multi-party conferencing +---------------------------------------------- + + +RTP multi-party conferencing requires that all parties use the same list of codecs. There are three ways to ensure that. + +- Have a static pre-determined list of codecs and use it on all + clients + +- Negotiate a common list in a centralised manner + +- Negotiated the common list in a decentralized manner + +Farsight 2 supports the first two techniques, but not the third (which +is a lot more complicated and error-prone). + +To use technique one, one just needs to call +fs_stream_set_remote_codecs() with the same list of codecs on all +streams (actually, on at least one stream per session). + +To use the second technique, one must designate a Focus, which will +generate the list that every one node will use. + +The non-focus nodes will send their list of codecs to the Focus and +accept whatever the focus sends them as a reply (and use that). + +The focus node will first receive a list of codecs from a node, and it +will perform the normal negotiation (prefering the remote payload +type), but when a second FsStream is added to the FsSession, the +behavior of the codec negotiation changes and the only effect of +setting remote codecs from other nodes will be to reduce the possible +codecs to the common set (ie the intersection). If there is no +intersection between the current pool of codecs (from the negotiation +with the previous nodes) and the codecs added by a new participant in +the session, this participant will be rejected and +_set_remote_codecs() will fail. |