Summary - October, 2024
- Allow remote offer rid pruning of encodings through the client answer. * 2758
- Make RTCTransceiver.direction reflects local preference in offers and answers * 2759
- Don't fail sRD(offer) over rid mismatch, just answer with unicast. * 2794
- Prune createAnswer()'s encodings and SendEncodings in sLD(answer). * 2801
- Determine if DTMF can be sent inside queued playout task 2861
Amendments without implementations:
- Remove duplicate rids in proposedSendEncodings. * 2800 - see FF discussion on whether tests regressed
- Ignore comma-separated rid alternatives. * 2813 - see FF discussion on whether tests regressed
- Use the url spec to parse ice server urls * 2853
- Convert RTCIceCandidatePair dictionary to an interface 2961
Amendment with only one implementation:
- Forbid ICE gathering and connectivity checks on administrative prohibited candidates 2708 (only FF - but partial impl in Cr/Safari)
- Remove interaction between encoding.active and simulcast ~rid * 2754 (only FF)
- Mark RTP Pause/Resume as not supported * 2755 (only FF)
- Add RTCIceCandidate.relayProtocol * 2763 (only Cr - see FF bug)
- Add RTCIceCandidate.url * 2773 (only Cr - see FF bug)
- TypeError unless all or none of encodings have rids and on duplicate rids * 2774 (only FF)
- TypeError unless all or none of encodings have rids and on duplicate rids * 2775 (only FF)
- Rollback restores ridless encoding trounced by sRD(simulcastOffer). * 2797 (only FF)
- Align MTI stats with implementations * 2832 (only Cr - see FF bug)
- Queue two tasks upon finishing ICE gathering, and fire gatheringstatechange & icegatheringstatechange in same task 2894 (only FF)
- setCodecPreferences() must use case-insensitive mimeType comparison * 2975 (only FF)
- Add codec to RTCRtpEncodingParameters * 2985 (only Cr)
Amendment with sufficient implementation experience:
- Allow an implementation-defined limited to the number of configured ICE Servers * 2679 (untestable)
- Update <code>RTCIceGatheringState</code> to clarify the relevant transport it represents * 2680
- Replace <code>DOMTimeStamp</code> in the definition of the <code>RTCCertificateExpiration.expires</code> and of <code>RTCCertificate.expires</code>, and change its origin to certificate creation time * 2686 (untestable)
- Ensure the <code>connecting</code> state happens whenever a ICE or DTLS transport is new * 2687
- Validate ICE transport settings upfront when setting a configuration * 2689
- Set default values of the <code>RTCConfiguration</code> dictionary, aligning it with current implementations * 2691
- Replace <code>DOMTimeStamp</code> in the definition of the <code>RTCCertificateExpiration.expires</code> and of <code>RTCCertificate.expires</code>, and change its origin to certificate creation time * 2700 (untestable)
- Put ICE transport connection in <code>failed</code> state when no candidates are received 2704 (untestable)
- No longer queue a task in the determine DTMF algorithm 2742
- Align MTI stats with implementations * 2744
- Align MTI stats with implementations * 2748
- Remove unused RTCRtpDecodingParameters dictionary 2753 (untestable)
- Clarify simulcast envelope is determined by negotiation * 2760 (ad-hoc testing)
- Remove single-value RTCIceCredentialType enum 2767 (untestable)
- Default RTCRtpEncodingParameters.scaleResolutionDownBy to 1 for video * Remove RTCRtpEncodingParameters.scaleResolutionDownBy for audio * 2772
- Add RTCRtpEncodingParameters.maxFramerate * 2785
- Remove maxFramerate like scaleResolutionDownBy for audio * 2799
- Allow encoder resolution alignment in scaleResolutionDownBy. 2808 (untestable)
- Reject setParameters(), replaceTrack(), & insertDTMF() after stop() * 2829
- Update explanation of simulcast envelope. * 2814 (untestable)
- Create RTCRtpCodec dictionary and reuse in RTCRtpCodecCapability and RTCRtpCodecParameters definitions 2834 (untestable)
- Make RTCRtpHeaderExtensionCapability.uri required 2841 (untestable)
- Fix ambiguities in the setCodecPreferences() algorithm * 2847
- Make removeTrack() a no-op after transceiver.stop() 2875
- Don't fire connectionstatechange on pc.close() 2876
- Add empty setParameterOptions as second argument to setParameters for extensibility 2885 (untestable)
- Prevent GC of non-closed RTCDataChannels 2902
- Fix binaryType setter requirements * 2909
- Change the default value of binaryType * 2913
- setCodecPreferences only takes into account receive codecs 2926
- Add control for the receiver's jitter buffer 2953
- Make RTCDataChannel transferable to DedicatedWorker 2988
Annotated WPT results
Tests | Chrome | Edge | FireFox | Safari | Notes |
---|---|---|---|---|---|
webrtc/RTCConfiguration-bundlePolicy.html (#2691 ) | 15/15 | 15/15 | 15/15 | 15/15 | |
webrtc/RTCConfiguration-iceTransportPolicy.html (#2691 ) | 15/22 | 15/22 | 22/22 | 18/22 | test failures in Chromium/Safari are unrelated to the amendment |
webrtc/RTCConfiguration-rtcpMuxPolicy.html (#2691 ) | 14/14 | 14/14 | 0/14 | 14/14 | |
webrtc/RTCConfiguration-validation.html (#2689 ) | 1/1 | 1/1 | 1/1 | 1/1 | |
webrtc/RTCDataChannel-GC.html (#2902 ) | 2/2 | 2/2 | 1/2 | 2/2 | |
webrtc/RTCDataChannel-binaryType.window.html (#2909 #2913 ) | 10/10 | 10/10 | 9/10 | 10/10 | |
webrtc/RTCDataChannel-send.html (#2913 ) | 23/23 | 23/23 | 21/23 | 23/23 | |
webrtc/RTCPeerConnection-addTcpIceCandidate.html (#2708 ) | 63/83 | 63/83 | 81/83 | 63/83 | Chromium/Safari failing test on part of bad ports; FF failing to ignore bad port on addIceCandidate? |
webrtc/RTCPeerConnection-connectionState.https.html (#2680 #2687 #2876 ) | 8/8 | 8/8 | 8/8 | 8/8 | |
webrtc/RTCPeerConnection-createDataChannel.html (#2913 ) | 50/52 | 50/52 | 50/52 | 51/52 | Safari and Chromium pass the amendment relevant tests |
webrtc/RTCPeerConnection-iceGatheringState.html (#2680 #2894 #2953 ) | 9/11 | 9/11 | 11/11 | 8/11 | 2894-relevant tests fail in Chromium and Safari |
webrtc/RTCPeerConnection-mandatory-getStats.https.html (#2744 #2748 #2832 ) | 73/74 | 73/74 | 59/74 | 70/74 | Of the relevant stats (trackIdentifier, totalSamplesDuration, packetsDiscarded, responsesReceived), only responsesReceived (#2832) lacks a 2nd implementation (only in Chromium atm); no relevant bugs in FF/Webkit trackers |
webrtc/RTCPeerConnection-removeTrack.https.html (#2875 ) | 14/14 | 14/14 | 14/14 | 13/14 | |
webrtc/RTCRtpParameters-codec.html (#2985 ) | 21/22 | 21/22 | 2/22 | 2/22 | only implemented in Chromium |
webrtc/RTCRtpParameters-encodings.html (#2772 #2774 #2775 ) | 34/44 | 34/44 | 40/44 | 26/44 |
|
webrtc/RTCRtpParameters-maxFramerate.html (#2785 #2799 ) | 15/15 | 15/15 | 15/15 | 4/15 | |
webrtc/RTCRtpReceiver-audio-jitterBufferTarget-stats.https.html (#2894 #2953 ) | 1/1 | 1/1 | 1/1 | 0/1 | |
webrtc/RTCRtpReceiver-jitterBufferTarget.html (#2894 #2953 ) | 12/12 | 12/12 | 12/12 | 0/12 | |
webrtc/RTCRtpReceiver-video-jitterBufferTarget-stats.html (#2894 #2953 ) | 0/1 | 1/1 | 1/1 | 0/1 | |
webrtc/RTCRtpTransceiver-setCodecPreferences.html (#2847 #2926 #2975 ) | 19/21 | 19/21 | 21/21 | 19/21 | 2975-relevant tests fail in Chromium and Safari, but this is relaxing a constraint and aligning with a normative reference without backwards compat risks. |
webrtc/idlharness.https.window.html (#2763 #2773 #2961 ) | 489/515 | 489/515 | 428/515 | 481/515 | |
webrtc/protocol/simulcast-answer.html (#2754 #2755 ) | 1/3 | 1/3 | 3/3 | 1/3 | #2755 and #2754 pass only in Firefox |
webrtc/simulcast/negotiation-encodings.https.html (#2797 #2800 #2813 ) | 7/20 | 7/20 | 14/20 | 9/20 |
|
webrtc/simulcast/rid-manipulation.html (#2813 ) | 1/1 | 1/1 | 0/1 | 1/1 | |
webrtc/transfer-datachannel.html (#2988 ) | 4/4 | 4/4 | 0/4 | 4/4 |