W3C home > Mailing lists > Public > public-webrtc@w3.org > May 2014

Re: Next steps on RTCRtpSender "doohickey" proposal

From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
Date: Thu, 8 May 2014 07:43:30 +0000
To: Harald Alvestrand <harald@alvestrand.no>, "public-webrtc@w3.org" <public-webrtc@w3.org>
Message-ID: <1447FA0C20ED5147A1AA0EF02890A64B1CFDFA47@ESESSMB209.ericsson.se>
On 2014-05-08 08:07, Harald Alvestrand wrote:
> (as contributor) +1 from me.

Ditto.

>
> One nit: The following should be legal:
>
> addTrack(track, streamId1)
> addTrack(track, streamId2)
>
> this means that one track should be presented to the receiver as part of
> two streams.

I still think that conveying the MediaStream(s) a track belongs to using 
SDP adds unnecessary complexity to the API and the solution.

But if we should, why not make the second (and optional) argument to 
addTrack a list of streamId's instead (I proposed that in [1])?

If you can call addTrack several times with the same track as first 
argument but different streamId's, what should happen at the far end if 
you carry out an SDP O/A between the calls?

[1] http://lists.w3.org/Archives/Public/public-webrtc/2014May/0009.html





>
> I've recorded Justin's summary as part of bug 25497.
>
>
> On 05/08/2014 06:34 AM, Justin Uberti wrote:
>> Trying to bring this discussion to a conclusion... I sense consensus
>> around the following:
>> - General concept of doohickeys, i.e. RTCRtpSender, RTPRtpReceiver.
>> - addTrack(track, streamId)/removeTrack and onaddtrack.
>> - Implicit cloning never occurs. This means that if you want to add a
>> track twice to a PC, you need to first clone it.
>>
>> More discussion is still needed on:
>> - RTCRtpEncodingParams
>> - RTCDtlsTransport
>>
>> Therefore I would like to advance the initial, uncontroversial parts
>> of this proposal, i.e. what I describe below. We can then discuss the
>> exact nature of the encodings and transport objects separately on the
>> list, and at the interim meeting.
>>
>> // the "send" doohickey
>>
>> interface RTCRtpSender {
>>
>>  readonly attribute MediaStreamTrack track;
>>
>> };
>>
>>
>> // the "receive" doohickey
>>
>> interface RTCRtpReceiver {
>>
>>  readonly attribute MediaStreamTrack track;
>>
>> };
>>
>>
>> // parameter to the onaddtrack event
>>
>> interface AddTrackEvent : Event {
>>
>>  readonly attribute RtpReceiver receiver;
>>
>>  readonly attribute MediaStreamTrack track;
>>
>>  readonly attribute MediaStream stream;
>>
>> };
>>
>>
>> partial interface RTCPeerConnection {
>>
>> // because a track can be part of multiple streams, the id parameter
>>
>>  // indicates which particular stream should be referenced in signaling
>>
>>  RTCRtpSender addTrack(track, streamId);  // replaces addStream; fails
>> if |track| has already been added
>>
>>  void removeTrack(RTCRtpSender);  // replaces removeStream
>>
>>  sequence<RTCRtpSender> getSenders();
>>
>>  sequence<RTCRtpReceiver> getReceivers();
>>
>>  EventHandler onaddtrack;  // replaces onaddstream; event object is
>> RemoteTrackEvent.
>>
>>                                         // note that onremovestream is
>> not needed, since tracks are 'removed'
>>
>>                                         // simply by progressing to
>> the ENDED state
>>
>> };
>>
>>
>>
>
Received on Thursday, 8 May 2014 07:43:56 UTC

This archive was generated by hypermail 2.3.1 : Monday, 23 October 2017 15:19:40 UTC