- From: Harald Alvestrand <harald@alvestrand.no>
- Date: Wed, 24 Aug 2011 09:52:23 +0200
- To: Cullen Jennings <fluffy@cisco.com>
- CC: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>, Christer Holmberg <christer.holmberg@ericsson.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
On 08/24/11 00:17, Cullen Jennings wrote: > On Aug 21, 2011, at 6:01 AM, Harald Alvestrand wrote: > >> It leads into interesting directions, but I would prefer to think about this as "once I have the identifier, I can look up the stream object; once I have the stream object, I can get all sorts of interesting information from it". >> >> Then we'll see what requirements there are for "interesting information". >> > I'm on board with the intent but I think we probably need to start getting a bit more specific. It seems like the useful thing things are SSRC, CNAME, and the Label as defined in 4574. Both CNAME and SSRC are hard to use so I want to make sure we at least have support for Label and and SSRC. CNAME I don't find much use for but if others do, no objection to it. > Thanks for the lead-in! I think this maps straight into the "how do we match these constructs into RTP" discussion that we need to have. To my mind, the multiplexing discussions have led us to a place where people want to be able to set up a connection with mutliple media streams inside one network-layer flow (one source and one destination port) - which means one RTP session in the current definitions of RTP. Given any need for interworking at all, we also need to be able to support multiple RTP sessions. So the allocation of media streams to RTP sessions has to be something that's more or less decided at the implementation / negotiation layer. The current draft API specifies a media hierarchy (names taken from memory - check draft for current version): PeerConnection (zero or more media streams) MediaStream (zero or more media tracks) MediaTrack (one audio or video media flow) A MediaTrack maps pretty neatly to what SDP thinks of as an SSRC - it is a stream of data intended to be decoded in sequence, resulting in a media signal of some sort, and can be (in the simple case) decoded independently from other tracks. (ignoring FEC and repair streams for the moment). Given that audio and video may go in separate tracks, but need to be synchronized if they're from the same source, we need to associate them somehow. The RTP identifier that is defined for synchronization is the CNAME - two or more streams that are intended to be synchronized should have the same CNAME. We have the RFC, already quoted in -rtp-usage, that says basically "generate CNAMEs on the fly as random-number@random-number" - these aren't long term, privacy-revealing identifiers; they are just IDs. So *at the RTP level*, it seems logical to map: PeerConnection SDP "session" (one SDP description) MediaStream CNAME MediaTrack SSRC Neither CNAME nor SSRC are human friendly identifiers. But as long as they're defined to be unique within the context of a single PeerConnection, it's possible to associate them with human-friendly identifiers of the same scope. And present APIs I'm familiar with seem to make it possible to get at them. I'm sure there are details I've glossed over. But that's my current thinking at the moment - it leaves "label" out in the cold, because the "SDP media level" that maps to "one RTP session" didn't turn out to be very useful given our current thinking about multiplexing and RTP port usage. What do others think? Harald
Received on Wednesday, 24 August 2011 07:52:53 UTC