Bug 31276

Summary: Call: Contacts are present in various places and its confusing
Product: Telepathy Reporter: Olivier Crête <olivier.crete>
Component: tp-specAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED FIXED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium CC: david.laban
Version: git master   
Hardware: Other   
OS: All   
Whiteboard: Call
i915 platform: i915 features:
Bug Depends on: 29597    
Bug Blocks:    

Description Olivier Crête 2010-10-31 18:52:23 UTC
There is a list of contacts in a Content hidden inside ContactCodecMap, but
also one in RemoteMembers in each Stream, its unclear how they relate. I guess a contact cannot be in ContactCodecMap without having a stream first? Or not ? With the current Fs2, we need to select the transmitter when creating a stream, which means that we have to wait for the server info to be retrieved first..
Comment 1 Olivier Crête 2011-02-11 11:41:13 UTC
All the senders in a stream will be represented in the MediaDescriptionMap.
Comment 2 Olivier Crête 2011-03-14 13:48:00 UTC
I currently think that should be only a single handle per Stream. The reason to have multiple handles per stream is the following use case: you have a peer that aggregates (but without mixing or transcoding) data from different peers. I don't know of any protocol that works that way. It may be better to have either a separate "connection" for each peer and use plain TURN instead of inventing something theoretical that does not exist.

If there is a single handle per stream, then ContactCodecMap could be split up and just put the RemoteCodec on each stream. They have to be matched up on both sides anyway. And then we can also put the CodecOffer on the Streams too (since it already relates on only one handle)..

And very soon we have something that's pretty damn close to the Farsight2 API.
Comment 3 David Laban 2011-03-15 14:03:12 UTC
(In reply to comment #2)
> I currently think that should be only a single handle per Stream. The reason to
> have multiple handles per stream is the following use case: you have a peer
> that aggregates (but without mixing or transcoding) data from different peers.
> I don't know of any protocol that works that way. It may be better to have
> either a separate "connection" for each peer and use plain TURN instead of
> inventing something theoretical that does not exist.

As discussed on IRC, the use case for this is that if you have a server in the sky that can multi-unicast your video without mixing then you've won because you can avoid sending the same data 6 times over your bandwidth-limited upstream link. Doing this over one udp socket lets you avoid all sorts of NAT issues. This requires the ability to have multiple MediaDescriptions per stream, and incoming data to be demuxed by SSRC.
> 
> If there is a single handle per stream, then ContactCodecMap could be split up
> and just put the RemoteCodec on each stream. They have to be matched up on both
> sides anyway. And then we can also put the CodecOffer on the Streams too (since
> it already relates on only one handle)..
> 
Veto'd. We need multiple MediaDescriptions per stream.

Please review
http://git.collabora.co.uk/?p=user/alsuren/telepathy-spec.git;a=shortlog;h=refs/heads/call-contacts which should clarify how to deal with Contacts.

There is also a brief yak-shave to clarify LocalSendingState. Sorry about that.
Comment 4 Olivier Crête 2011-03-15 16:51:35 UTC
Only relevant comment is that I think the SSRC property should be of type "au" and be "SSRCs".

That said, the value in Accept() should always be a single SSRC.
Comment 5 David Laban 2011-03-16 04:18:21 UTC
(In reply to comment #4)
> Only relevant comment is that I think the SSRC property should be of type "au"
> and be "SSRCs".
> 
> That said, the value in Accept() should always be a single SSRC.

I'm going to keep it as a single u until you can point me to a use-case which isn't covered by either contact=0 or a single MD+SSRC per contact.

If farstream wants to include an optimisation to recognise identical MediaDescriptions and reuse resources, then it's welcome to do so.
Comment 6 Olivier Crête 2011-03-16 06:42:43 UTC
Recognizing multiple MDs with the same ssrc is painful.. need to compare every field.. While having multiple SSRCs in a single MD is cheap. Also means you have to duplicate it in the CM and de-duplicate in the client, sounds very wrong.

Now, there is no existing use case, just like for having multiple handles in a Stream..
Comment 7 David Laban 2011-03-16 07:38:42 UTC
Pushed the requested change to the end of http://git.collabora.co.uk/?p=user/alsuren/telepathy-spec.git;a=shortlog;h=refs/heads/mute
Comment 9 David Laban 2011-03-16 08:08:39 UTC
Thanks for bearing with me. Not concentrating very well today.

Abusing Assigned to mean "merged in alsuren/call and available at
http://people.freedesktop.org/~alsuren/telepathy-spec-call/spec/".
Comment 10 David Laban 2011-07-19 12:13:33 UTC
merged to master

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.