Implement the RTCIceTransport interface
Categories
(Core :: WebRTC: Networking, enhancement, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox52 | --- | wontfix |
| backlog | webrtc/webaudio+ |
People
(Reporter: drno, Assigned: bwc)
References
(Depends on 2 open bugs, Blocks 4 open bugs)
Details
(Keywords: dev-doc-needed, Whiteboard: [spec-compliance])
Attachments
(1 obsolete file)
| Reporter | ||
Updated•9 years ago
|
Updated•9 years ago
|
Comment 1•9 years ago
|
||
Comment 2•8 years ago
|
||
Comment 3•8 years ago
|
||
Updated•4 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
| Assignee | ||
Updated•3 years ago
|
| Assignee | ||
Comment 4•3 years ago
|
||
Some stuff that will be part of this bug:
RTCIceTransport.role: Does not actually reflect the current role of the ICE agent. It only reflects what the default role is based on SDP negotiation. In other words, role conflict resolution within ICE is not taken into account. This means we do not need to teach MediaTransportHandler and friends to expose the role of the ICE component.
RTCIceTransport.component: Is not the ICE component that shows up in candidates, it is either "rtp" or "rtcp".
RTCIceTransport.state/onstatechange: We already have the API on MediaTransportHandler for this, so this part should be fairly easy.
RTCIceTransport.gatheringState/ongatheringstatechange: We'll need to teach MediaTransportHandler and friends to have a separate ICE gathering state for each transport. Right now this is a single state for the entire ICE ctx, all the way down to nICEr.
RTCIceTransport.getLocalCandidates(): MediaTransportHandler has the callbacks to tell us what these are, so this part should be fairly easy. DO NOT try to use the stats API for this.
RTCIceTransport.getRemoteCandidates(): We can just keep track of this ourselves as we pass these to MediaTransportHandler.
RTCIceTransport.getSelectedCandidatePair()/onselectedcandidatepairchange: We'll need to teach MediaTransportHandler and friends to fire notifications when the selected candidate pair changes (right now we can learn this from stats, but we do not want to have to do this with polling).
RTCIceTransport.getLocalParameters(): Spec says these get set by setLocalDescription (in the queued success task, presumably), so we can ask the JSEP engine when that happens.
RTCIceTransport.getRemoteParameters(): Spec says these get set by setRemoteDescription, similar to the above.
| Assignee | ||
Comment 5•3 years ago
|
||
I should note that the fact that webrtc-pc mandates rtcp-mux means that RTCIceTransport.component will always be "rtp", and even if webrtc-pc did not mandate this, there is no place an rtcp RTCIceTransport would even be exposed to JS.
| Assignee | ||
Comment 6•3 years ago
|
||
It is possible that we could build some of this state using JsepIceTransport/JsepTransport. It looks like the remote candidates are there, at least.
| Assignee | ||
Comment 7•3 years ago
|
||
It looks fairly likely that this work will interact significantly with bug 1468993. I'm not yet sure which we should do first.
| Assignee | ||
Updated•3 years ago
|
| Assignee | ||
Comment 8•3 years ago
|
||
There are probably some opportunities for wpt improvements here, including:
Negotiation that adds/removes transports should cause the appropriate state change events.
State changes/events are batched appropriately and in the correct order.
Comment 9•2 years ago
|
||
Have we implemented everything here or just state?
https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport
| Assignee | ||
Comment 10•2 years ago
|
||
We've implemented |state|, |gatheringState|, and the event targets for changes to those two.
Comment 11•5 months ago
|
||
Comment 12•5 months ago
|
||
Comment on attachment 9547037 [details]
Bug 1307994 - Implement RTCIceTransport.role. r=bwc?bwc
Revision D284388 was moved to bug 2018843. Setting attachment 9547037 [details] to obsolete.
Updated•4 months ago
|
Description
•