- From: Bernard Aboba <Bernard.Aboba@microsoft.com>
- Date: Wed, 4 Jun 2014 19:09:59 +0000
- To: "public-ortc@w3.org" <public-ortc@w3.org>
FYI, here is what everything would look like for RTP/RTCP non-mux support based on the constructor approach.
[Constructor(optional RTCIceListener iceListener),
Constructor(RTCIceOptions options)]
interface RTCIceTransport {
readonly attribute RTCIceListener iceListener;
readonly attribute RTCIceRole role;
// adding a component attribute makes it possible to determine whether an ICE transport is for RTP or RTCP.
readonly attribute RTCIceComponent component;
readonly attribute RTCIceTransportState state;
readonly attribute RTCIceGatheringState iceGatheringState;
sequence<RTCIceCandidate> getLocalCandidates ();
sequence<RTCIceCandidate> getRemoteCandidates ();
void gather (RTCIceGatherPolicy gatherPolicy);
void start (RTCIceParameters remoteParameters, optional RTCIceRole role);
void stop ();
RTCIceParameters getLocalParameters ();
RTCIceParameters? getRemoteParameters ();
RTCIceTransport createAssociatedTransport ();
void addRemoteCandidate (RTCIceCandidate remoteCandidate);
void setRemoteCandidates (sequence<RTCIceCandidate> remoteCandidates);
attribute EventHandler? onlocalcandidate;
attribute EventHandler? onicestatechange;
attribute EventHandler? onicegatheringstatechange;
attribute EventHandler? onerror;
};
enum RTCIceComponent {
"RTP",
"RTCP"
};
[Constructor()]
interface RTCIceTransportController {
sequence<RTCIceTransport> getTransports ();
void addTransport (RTCIceTransport transport, int index = null);
};
[Constructor(MediaStreamTrack track, RTCDtlsTransport transport, optional RTCDtlsTransport rtcpTransport)]
interface RTCRtpSender {
readonly attribute MediaStreamTrack track;
readonly attribute RTCDtlsTransport transport;
readonly attribute RTCDtlsTransport rtcpTransport;
void setTransport (RTCDtlsTransport transport, optional RTCDtlsTransport rtcpTransport);
void setTrack (MediaStreamTrack track);
static RTCRtpCapabilities getCapabilities (optional DOMString kind);
void send (RTCRtpParameters parameters);
void stop ();
attribute EventHandler? onerror;
};
[Constructor(RTCDtlsTransport transport, optional RTCDtlsTransport rtcpTransport)]
interface RTCRtpReceiver {
readonly attribute MediaStreamTrack? track;
readonly attribute RTCDtlsTransport transport;
readonly attribute RTCDtlsTransport rtcpTransport;
void setTransport (RTCDtlsTransport transport, optional RTCDtlsTransport rtcpTransport);
static RTCRtpCapabilities getCapabilities (optional DOMString kind);
void receive (RTCRtpParameters parameters);
void stop ();
attribute EventHandler? onerror;
};
// There are no changes needed to the RTCIceListener. However, there are some tricky aspects that do need to be explained in the text.
// For example, if an RTCIceTransport a is constructed from an RTCIceListener and then var b == a.createAssociatedTransport() is called,
// the b.RTCIceListener will point to an (implicitly) created RTCIceListener, not a.RTCIceListener.
[Constructor(optional RTCIceOptions options)]
interface RTCIceListener {
RTCIceOptions getOptions ();
void setOptions (RTCIceOptions options);
};
Received on Wednesday, 4 June 2014 19:10:41 UTC