- From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Wed, 13 Nov 2013 09:38:11 +0000
- To: Justin Uberti <juberti@google.com>, Adam Bergkvist <adam.bergkvist@ericsson.com>
- CC: Martin Thomson <martin.thomson@gmail.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
I think that from a solution point of view this is going in the right
direction.
With my chair hat on I can worry about that this is a big re-design and
that the schedule might slip a lot.
I also note that there is not much left in PeerConnection. If DTLS (as
we discussed yesterday) keys can be individual per MST/transport, I
think what remains is the list of ICE-servers (which could belong to the
transport obj.) and the identity relating things.
Stefan
On 13/11/13 03:05, Justin Uberti wrote:
> Martin's proposal is exactly what I was thinking. Let me go a step futher:
>
> I suggest we call the SendDoohickeys MediaStreamTrackSenders and the
> corresponding receive-side objects MediaStreamTrackReceivers.
>
> For getting access to ICE/DTLS info, both MSTSenders and MSTReceivers
> can also have a reference to a Transport object, which will have its own
> state variables, including the RTCIceConnectionState of that particular
> transport, and the .remoteCertificates for the DTLS connection.
>
> so we end up with something like:
>
> interface Transport {
> attribute RTCIceConnectionState state;
> attribute sequence<ArrayBuffer> remoteCertificates;
> };
>
> interface MSTSender {
> attribute MediaStreamTrack track;
> attribute Transport transport;
> // and some other stuff
> attribute bool active; // or suspended, I forget
> attribute PriorityLevel priority;
> attribute unsigned long maxBitrate;
> // ellipsis
> };
>
> interface MSTReceiver {
> attribute Transport transport;
> attribute MediaStreamTrack track;
> // and some other stuff
> };
>
> interface PeerConnection {
> MSTSender addSender(MST); // if called multiple times with the same
> MST, it's a simulcast!
> void removeSender(MSTSender); // see above for why this needs to
> take MSTSender instead of MST
> attribute sequence<MSTSender> senders;
> attribute sequence<MSTReceiver> receivers;
> };
>
> for backcompat, addStream, removeStream, getLocalStreams, and
> getRemoteStreams can be trivially polyfilled in JS, so there is minimal
> impact on current applications.
>
> in total, we have something like
>
> Source ---> MST ---> MSTSender ---> Transport ---> (The Internet) --->
> Transport ---> MSTReceiver ---> MST ---> <video/>
>
>
>
> On Tue, Nov 12, 2013 at 1:25 AM, Adam Bergkvist
> <adam.bergkvist@ericsson.com <mailto:adam.bergkvist@ericsson.com>> wrote:
>
> On 2013-11-12 09:54, Martin Thomson wrote:
> > On 12 November 2013 00:18, Adam Bergkvist
> <adam.bergkvist@ericsson.com <mailto:adam.bergkvist@ericsson.com>>
> wrote:
> >> One thing that I find a bit odd is:
> >>
> >> pc.addSendTrack(track);
> >> pc.sendTracks[0] == track; // false (different types)
> >
> > It's more like:
> >
> > pc.addSendTrack(track) === pc.sendTracks[0];
>
> sendTracks should be called sendDooHickies in that case.
>
> >
> >> We could have the script construct a DooHickey and add it to the
> >> PeerConnection.
> >>
> >> // A-side
> >> var hickey = new DooHickey(track);
> >> peerConn.addDooHickey(hickey);
> >
> > That seems like busy work. It also means that you can't make the
> > special linkage that a Doohickey needs with RTCPeerConnection.
>
> That's true; the special linkage could happen when the object is added
> to the RTCPeerConnection. But then we need to prevent the script from
> adding the doohickey to other RTCPeerConnections. That's perhaps not
> super great.
>
> /Adam
>
>
Received on Wednesday, 13 November 2013 09:38:37 UTC