- From: Cullen Jennings (fluffy) <fluffy@cisco.com>
- Date: Wed, 30 Apr 2014 20:27:25 +0000
- To: "bugzilla@jessica.w3.org" <bugzilla@jessica.w3.org>
- CC: "public-webrtc@w3.org" <public-webrtc@w3.org>
I think this needs a lot more discussion before we start making bugs for it.
On Apr 29, 2014, at 3:43 AM, bugzilla@jessica.w3.org wrote:
> https://www.w3.org/Bugs/Public/show_bug.cgi?id=25497
>
> Bug ID: 25497
> Summary: RTCRtpSender / Receiver objects need to be added to
> the specification
> Product: WebRTC Working Group
> Version: unspecified
> Hardware: PC
> OS: Linux
> Status: NEW
> Severity: normal
> Priority: P2
> Component: WebRTC API
> Assignee: public-webrtc@w3.org
> Reporter: harald@alvestrand.no
> CC: public-webrtc@w3.org
>
> The proposal for RTCRtpSender /Receiver sent to the mailing list on April 28 is
> reproduced below. The April 28 meeting seemed to agree that this is a sensible
> direction, but details may need adjusting before integrating.
>
> I suggest we call the SendDoohickeys RTCRtpSenders and the corresponding
> receive-side objects RTCRtpReceivers. These objects allow control of how a
> MediaStreamTrack is encoded and sent on the wire, including "hold" state,
> prioritization, and multiple encodings (e.g. simulcast).
>
> You get a RTCRtpSender as a return value from AddTrack (which replaces
> AddStream). You get a RTCRtpReceiver as an argument to the new onaddtrack
> callback (which replaces onaddstream). The actual track object can be obtained
> as a property from the RTCRtpReceiver (see below).
>
> For getting access to ICE/DTLS info, both RTCRtpSenders and RTCRtpReceivers can
> also have a reference to a RTCDtlsTransport object, which will have its own
> state variables, including the RTCIceConnectionState of that particular
> transport, and the .remoteCertificates for the DTLS connection. This allows
> applications to monitor the state of individual transports, as well as inspect
> the certificates for individual transports.
>
> The actual interface is as follows:
>
> // used with RTCRtpSender
>
> interface RTCDtlsTransport {
>
> attribute RTCIceConnectionState state;
>
> sequence<ArrayBuffer> getRemoteCertificates();
>
> //... more stuff as needed
>
> };
>
> // used with RTCRtpSender
>
> interface RTCRtpEncodingParams {
>
> double priority = 1.0; // relative priority of this encoding
>
> unsigned int maxBitrate = null; // maximum bits to use for this
> encoding
>
> boolean active; // sending or "paused/onhold"
>
> };
>
> // the "send" doohickey
>
> interface RTCRtpSender {
>
> readonly attribute MediaStreamTrack track;
>
> readonly attribute RTCDtlsTransport transport;
>
> // 1-N encodings; in the future, N can be > 1, for simulcast or layered coding
>
> // Each EncodingParams specifies the details of what to send (e.g. bitrate)
>
> sequence<RTCRtpEncodingParams> getEncodings();
>
> };
>
> // the "receive" doohickey
>
> interface RTCRtpReceiver {
>
> readonly attribute RTCDtlsTransport transport;
>
> readonly attribute MediaStreamTrack track;
>
> // more stuff as needed
>
> };
>
> // parameter to the onaddtrack event
>
> interface RemoteTrackEvent : 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
>
> RtpSender addTrack(track, streamId); // replaces addStream
>
>
>
> void removeTrack(RtpSender); // replaces removeStream
>
> sequence<RtpSender> getSenders();
>
> sequence<RtpReceiver> 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
>
> };
>
> For backcompat, addStream, removeStream, getLocalStreams, getRemoteStreams, and
> onaddstream can be trivially polyfilled in JS, so there is minimal impact on
> current applications.
>
> All together, the pipeline looks like this:
>
> Source ---> MST ---> RtpSender ---> DtlsTransport ---> (The Internet) --->
> DtlsTransport ---> RtpReceiver ---> MST ---> <video/>
>
> Each RtpSender/Receiver references a single MST, although a single
> RtpSender/Receiver can send/receive multiple encodings (e.g. simulcast).
>
> There are N RtpSenders/Receivers per DtlsTransport; N is controlled by the
> policy specified for BUNDLE.
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
> You are the assignee for the bug.
>
>
Received on Wednesday, 30 April 2014 20:27:55 UTC