diff --git a/features/webrtc-encoded-transform.yml b/features/webrtc-encoded-transform.yml index 516fc65e6d9..a8dcd2984b3 100644 --- a/features/webrtc-encoded-transform.yml +++ b/features/webrtc-encoded-transform.yml @@ -2,3 +2,30 @@ name: WebRTC encoded transform description: The WebRTC encoded transform API allows you to modify audio and video streams in WebRTC connections. For example, it can be used for visual effects or custom codecs. spec: https://w3c.github.io/webrtc-encoded-transform/ group: webrtc +status: + compute_from: + - api.RTCRtpReceiver.transform + - api.RTCRtpSender.transform +compat_features: + - api.DedicatedWorkerGlobalScope.rtctransform_event + - api.RTCEncodedAudioFrame + - api.RTCEncodedAudioFrame.RTCEncodedAudioFrame + - api.RTCEncodedAudioFrame.data + - api.RTCEncodedAudioFrame.getMetadata + - api.RTCEncodedVideoFrame + - api.RTCEncodedVideoFrame.RTCEncodedVideoFrame + - api.RTCEncodedVideoFrame.data + - api.RTCEncodedVideoFrame.getMetadata + - api.RTCEncodedVideoFrame.type + - api.RTCRtpReceiver.transform + - api.RTCRtpScriptTransform + - api.RTCRtpScriptTransform.RTCRtpScriptTransform + - api.RTCRtpScriptTransformer + - api.RTCRtpScriptTransformer.generateKeyFrame + - api.RTCRtpScriptTransformer.options + - api.RTCRtpScriptTransformer.readable + - api.RTCRtpScriptTransformer.sendKeyFrameRequest + - api.RTCRtpScriptTransformer.writable + - api.RTCRtpSender.transform + - api.RTCTransformEvent + - api.RTCTransformEvent.transformer diff --git a/features/webrtc-encoded-transform.yml.dist b/features/webrtc-encoded-transform.yml.dist index a7bed345c26..9647cd94ad9 100644 --- a/features/webrtc-encoded-transform.yml.dist +++ b/features/webrtc-encoded-transform.yml.dist @@ -47,3 +47,11 @@ compat_features: - api.RTCRtpSender.transform - api.RTCTransformEvent - api.RTCTransformEvent.transformer + + # baseline: false + # support: + # chrome: "127" + # chrome_android: "127" + # edge: "127" + - api.RTCEncodedAudioFrame.RTCEncodedAudioFrame + - api.RTCEncodedVideoFrame.RTCEncodedVideoFrame diff --git a/features/draft/spec/webrtc-stats.yml b/features/webrtc-stats.yml similarity index 94% rename from features/draft/spec/webrtc-stats.yml rename to features/webrtc-stats.yml index 1d84d0dc972..f98936c5505 100644 --- a/features/draft/spec/webrtc-stats.yml +++ b/features/webrtc-stats.yml @@ -1,8 +1,23 @@ -draft_date: 2024-09-09 -name: Identifiers for WebRTC's Statistics API -description: TODO +name: WebRTC statistics +description: The `RTCPeerConnection.getStats()`, `RTCRtpSender.getStats()`, and `RTCRtpReceiver.getStats()` methods return detailed information about the status, performance, network, and media for a given WebRTC connection. spec: https://w3c.github.io/webrtc-stats/ +group: webrtc +status: + compute_from: api.RTCPeerConnection.getStats.returns_promise compat_features: + - api.RTCPeerConnection.getStats + - api.RTCPeerConnection.getStats.returns_promise + - api.RTCPeerConnection.getStats.selector_parameter + - api.RTCRtpReceiver.getStats + - api.RTCRtpSender.getStats + - api.RTCStatsReport + - api.RTCStatsReport.@@iterator + - api.RTCStatsReport.entries + - api.RTCStatsReport.forEach + - api.RTCStatsReport.get + - api.RTCStatsReport.has + - api.RTCStatsReport.keys + - api.RTCStatsReport.size - api.RTCStatsReport.type_candidate-pair - api.RTCStatsReport.type_candidate-pair.availableOutgoingBitrate - api.RTCStatsReport.type_candidate-pair.bytesDiscardedOnSend @@ -239,3 +254,4 @@ compat_features: - api.RTCStatsReport.type_transport.timestamp - api.RTCStatsReport.type_transport.tlsVersion - api.RTCStatsReport.type_transport.type + - api.RTCStatsReport.values diff --git a/features/draft/spec/webrtc-stats.yml.dist b/features/webrtc-stats.yml.dist similarity index 91% rename from features/draft/spec/webrtc-stats.yml.dist rename to features/webrtc-stats.yml.dist index bfbe736fe45..46322ebdf42 100644 --- a/features/draft/spec/webrtc-stats.yml.dist +++ b/features/webrtc-stats.yml.dist @@ -2,9 +2,61 @@ # Do not edit this file by hand. Edit the source file instead! status: - baseline: false - support: {} + baseline: high + baseline_low_date: 2020-01-15 + baseline_high_date: 2022-07-15 + support: + chrome: "58" + chrome_android: "58" + edge: "79" + firefox: "44" + firefox_android: "44" + safari: "11" + safari_ios: "11" compat_features: + # baseline: high + # baseline_low_date: 2017-09-19 + # baseline_high_date: 2020-03-19 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "15" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.getStats + + # baseline: high + # baseline_low_date: 2019-03-25 + # baseline_high_date: 2021-09-25 + # support: + # chrome: "67" + # chrome_android: "67" + # edge: "13" + # firefox: "55" + # firefox_android: "55" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getStats + - api.RTCRtpSender.getStats + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "79" + # firefox: "27" + # firefox_android: "27" + # safari: "11" + # safari_ios: "11" + - api.RTCStatsReport + - api.RTCStatsReport.forEach + - api.RTCStatsReport.get + - api.RTCStatsReport.has + # baseline: high # baseline_low_date: 2020-01-15 # baseline_high_date: 2022-07-15 @@ -21,6 +73,36 @@ compat_features: - api.RTCStatsReport.type_candidate-pair.remoteCandidateId - api.RTCStatsReport.type_candidate-pair.state + # ⬇️ Same status as overall feature ⬇️ + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.getStats.returns_promise + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "79" + # firefox: "48" + # firefox_android: "48" + # safari: "11" + # safari_ios: "11" + - api.RTCStatsReport.@@iterator + - api.RTCStatsReport.entries + - api.RTCStatsReport.keys + - api.RTCStatsReport.values + # baseline: high # baseline_low_date: 2020-01-15 # baseline_high_date: 2022-07-15 @@ -37,6 +119,19 @@ compat_features: - api.RTCStatsReport.type_candidate-pair.nominated - api.RTCStatsReport.type_candidate-pair.transportId + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "79" + # firefox: "48" + # firefox_android: "48" + # safari: "11" + # safari_ios: "11" + - api.RTCStatsReport.size + # baseline: high # baseline_low_date: 2020-01-15 # baseline_high_date: 2022-07-15 @@ -50,6 +145,19 @@ compat_features: # safari_ios: "11" - api.RTCStatsReport.type_inbound-rtp + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "67" + # chrome_android: "67" + # edge: ≤79 + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.getStats.selector_parameter + # baseline: high # baseline_low_date: 2020-02-07 # baseline_high_date: 2022-08-07 diff --git a/features/webrtc.yml b/features/webrtc.yml index e6f4a9a9bb1..dde70f352fc 100644 --- a/features/webrtc.yml +++ b/features/webrtc.yml @@ -3,3 +3,232 @@ description: The WebRTC API establishes real-time communication channels directl spec: https://w3c.github.io/webrtc-pc/ group: webrtc caniuse: rtcpeerconnection +status: + compute_from: api.RTCDataChannelEvent.RTCDataChannelEvent +compat_features: + - api.RTCCertificate + - api.RTCCertificate.expires + - api.RTCCertificate.getFingerprints + - api.RTCDTMFSender + - api.RTCDTMFSender.canInsertDTMF + - api.RTCDTMFSender.insertDTMF + - api.RTCDTMFSender.toneBuffer + - api.RTCDTMFSender.tonechange_event + - api.RTCDTMFToneChangeEvent + - api.RTCDTMFToneChangeEvent.RTCDTMFToneChangeEvent + - api.RTCDTMFToneChangeEvent.tone + - api.RTCDataChannel + - api.RTCDataChannel.binaryType + - api.RTCDataChannel.binaryType.arraybuffer_value + - api.RTCDataChannel.binaryType.blob_value + - api.RTCDataChannel.bufferedAmount + - api.RTCDataChannel.bufferedAmountLowThreshold + - api.RTCDataChannel.bufferedamountlow_event + - api.RTCDataChannel.close + - api.RTCDataChannel.close_event + - api.RTCDataChannel.closing_event + - api.RTCDataChannel.error_event + - api.RTCDataChannel.id + - api.RTCDataChannel.label + - api.RTCDataChannel.maxPacketLifeTime + - api.RTCDataChannel.maxRetransmits + - api.RTCDataChannel.message_event + - api.RTCDataChannel.negotiated + - api.RTCDataChannel.open_event + - api.RTCDataChannel.ordered + - api.RTCDataChannel.protocol + - api.RTCDataChannel.readyState + - api.RTCDataChannel.sctp_sdp_21 + - api.RTCDataChannel.send + - api.RTCDataChannel.transferable + - api.RTCDataChannelEvent + - api.RTCDataChannelEvent.RTCDataChannelEvent + - api.RTCDataChannelEvent.channel + - api.RTCDtlsTransport + - api.RTCDtlsTransport.error_event + - api.RTCDtlsTransport.getRemoteCertificates + - api.RTCDtlsTransport.iceTransport + - api.RTCDtlsTransport.state + - api.RTCDtlsTransport.statechange_event + - api.RTCError + - api.RTCError.RTCError + - api.RTCError.errorDetail + - api.RTCError.receivedAlert + - api.RTCError.sctpCauseCode + - api.RTCError.sdpLineNumber + - api.RTCError.sentAlert + - api.RTCErrorEvent + - api.RTCErrorEvent.RTCErrorEvent + - api.RTCErrorEvent.error + - api.RTCIceCandidate + - api.RTCIceCandidate.RTCIceCandidate + - api.RTCIceCandidate.address + - api.RTCIceCandidate.candidate + - api.RTCIceCandidate.component + - api.RTCIceCandidate.foundation + - api.RTCIceCandidate.port + - api.RTCIceCandidate.priority + - api.RTCIceCandidate.protocol + - api.RTCIceCandidate.relatedAddress + - api.RTCIceCandidate.relatedPort + - api.RTCIceCandidate.relayProtocol + - api.RTCIceCandidate.sdpMLineIndex + - api.RTCIceCandidate.sdpMid + - api.RTCIceCandidate.tcpType + - api.RTCIceCandidate.toJSON + - api.RTCIceCandidate.type + - api.RTCIceCandidate.url + - api.RTCIceCandidate.usernameFragment + - api.RTCIceTransport + - api.RTCIceTransport.gatheringState + - api.RTCIceTransport.gatheringstatechange_event + - api.RTCIceTransport.getLocalCandidates + - api.RTCIceTransport.getLocalParameters + - api.RTCIceTransport.getRemoteCandidates + - api.RTCIceTransport.getRemoteParameters + - api.RTCIceTransport.getSelectedCandidatePair + - api.RTCIceTransport.role + - api.RTCIceTransport.selectedcandidatepairchange_event + - api.RTCIceTransport.state + - api.RTCIceTransport.statechange_event + - api.RTCPeerConnection + - api.RTCPeerConnection.RTCPeerConnection + - api.RTCPeerConnection.RTCPeerConnection.configuration_bundlePolicy_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_certificates_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceCandidatePoolSize_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.credential_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.urls_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.username_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceTransportPolicy_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_peerIdentity_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_rtcpMuxPolicy_parameter + - api.RTCPeerConnection.addIceCandidate + - api.RTCPeerConnection.addIceCandidate.returns_promise + - api.RTCPeerConnection.addTrack + - api.RTCPeerConnection.addTransceiver + - api.RTCPeerConnection.addTransceiver.init_direction_parameter + - api.RTCPeerConnection.addTransceiver.init_sendEncodings_parameter + - api.RTCPeerConnection.addTransceiver.init_streams_parameter + - api.RTCPeerConnection.canTrickleIceCandidates + - api.RTCPeerConnection.close + - api.RTCPeerConnection.connectionState + - api.RTCPeerConnection.connectionstatechange_event + - api.RTCPeerConnection.createAnswer + - api.RTCPeerConnection.createAnswer.returns_promise + - api.RTCPeerConnection.createDataChannel + - api.RTCPeerConnection.createOffer + - api.RTCPeerConnection.createOffer.returns_promise + - api.RTCPeerConnection.currentLocalDescription + - api.RTCPeerConnection.currentRemoteDescription + - api.RTCPeerConnection.datachannel_event + - api.RTCPeerConnection.generateCertificate_static + - api.RTCPeerConnection.getConfiguration + - api.RTCPeerConnection.getReceivers + - api.RTCPeerConnection.getReceivers.stopped_transceivers_removed + - api.RTCPeerConnection.getSenders + - api.RTCPeerConnection.getSenders.stopped_transceivers_removed + - api.RTCPeerConnection.getTransceivers + - api.RTCPeerConnection.getTransceivers.stopped_transceivers_removed + - api.RTCPeerConnection.iceConnectionState + - api.RTCPeerConnection.iceGatheringState + - api.RTCPeerConnection.icecandidate_event + - api.RTCPeerConnection.icecandidateerror_event + - api.RTCPeerConnection.iceconnectionstatechange_event + - api.RTCPeerConnection.icegatheringstatechange_event + - api.RTCPeerConnection.localDescription + - api.RTCPeerConnection.negotiationneeded_event + - api.RTCPeerConnection.pendingLocalDescription + - api.RTCPeerConnection.pendingRemoteDescription + - api.RTCPeerConnection.remoteDescription + - api.RTCPeerConnection.removeTrack + - api.RTCPeerConnection.restartIce + - api.RTCPeerConnection.setConfiguration + - api.RTCPeerConnection.setLocalDescription + - api.RTCPeerConnection.setLocalDescription.description_parameter_optional + - api.RTCPeerConnection.setLocalDescription.returns_promise + - api.RTCPeerConnection.setRemoteDescription + - api.RTCPeerConnection.setRemoteDescription.implicit_rollback + - api.RTCPeerConnection.setRemoteDescription.returns_promise + - api.RTCPeerConnection.signalingState + - api.RTCPeerConnection.signalingstatechange_event + - api.RTCPeerConnection.track_event + - api.RTCPeerConnectionIceErrorEvent + - api.RTCPeerConnectionIceErrorEvent.RTCPeerConnectionIceErrorEvent + - api.RTCPeerConnectionIceErrorEvent.address + - api.RTCPeerConnectionIceErrorEvent.errorCode + - api.RTCPeerConnectionIceErrorEvent.errorText + - api.RTCPeerConnectionIceErrorEvent.port + - api.RTCPeerConnectionIceErrorEvent.url + - api.RTCPeerConnectionIceEvent + - api.RTCPeerConnectionIceEvent.RTCPeerConnectionIceEvent + - api.RTCPeerConnectionIceEvent.candidate + - api.RTCPeerConnectionIceEvent.url + - api.RTCRtpReceiver + - api.RTCRtpReceiver.createEncodedStreams + - api.RTCRtpReceiver.getCapabilities_static + - api.RTCRtpReceiver.getContributingSources + - api.RTCRtpReceiver.getContributingSources.audioLevel + - api.RTCRtpReceiver.getContributingSources.audio_tracks_supported + - api.RTCRtpReceiver.getContributingSources.rtpTimestamp + - api.RTCRtpReceiver.getContributingSources.source + - api.RTCRtpReceiver.getContributingSources.timestamp + - api.RTCRtpReceiver.getContributingSources.video_tracks_supported + - api.RTCRtpReceiver.getParameters + - api.RTCRtpReceiver.getParameters.return_object_property_codecs + - api.RTCRtpReceiver.getParameters.return_object_property_headerExtensions + - api.RTCRtpReceiver.getParameters.return_object_property_rtcp + - api.RTCRtpReceiver.getSynchronizationSources + - api.RTCRtpReceiver.getSynchronizationSources.audio_tracks_supported + - api.RTCRtpReceiver.getSynchronizationSources.video_tracks_supported + - api.RTCRtpReceiver.jitterBufferTarget + - api.RTCRtpReceiver.track + - api.RTCRtpReceiver.transport + - api.RTCRtpSender + - api.RTCRtpSender.createEncodedStreams + - api.RTCRtpSender.dtmf + - api.RTCRtpSender.getCapabilities_static + - api.RTCRtpSender.getParameters + - api.RTCRtpSender.getParameters.return_object_property_codecs + - api.RTCRtpSender.getParameters.return_object_property_encodings + - api.RTCRtpSender.getParameters.return_object_property_headerExtensions + - api.RTCRtpSender.getParameters.return_object_property_rtcp + - api.RTCRtpSender.getParameters.return_object_property_transactionId + - api.RTCRtpSender.replaceTrack + - api.RTCRtpSender.setParameters + - api.RTCRtpSender.setParameters.parameters_codecs_parameter + - api.RTCRtpSender.setParameters.parameters_encodings_parameter + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.active + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxBitrate + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxFramerate + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.rid + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.scaleResolutionDownBy + - api.RTCRtpSender.setParameters.parameters_headerExtensions_parameter + - api.RTCRtpSender.setParameters.parameters_rtcp_parameter + - api.RTCRtpSender.setParameters.parameters_transactionId_parameter + - api.RTCRtpSender.setStreams + - api.RTCRtpSender.track + - api.RTCRtpSender.transport + - api.RTCRtpTransceiver + - api.RTCRtpTransceiver.currentDirection + - api.RTCRtpTransceiver.currentDirection.stopped_value + - api.RTCRtpTransceiver.direction + - api.RTCRtpTransceiver.direction.value_stopped + - api.RTCRtpTransceiver.getHeaderExtensionsToNegotiate + - api.RTCRtpTransceiver.getNegotiatedHeaderExtensions + - api.RTCRtpTransceiver.mid + - api.RTCRtpTransceiver.receiver + - api.RTCRtpTransceiver.sender + - api.RTCRtpTransceiver.setCodecPreferences + - api.RTCRtpTransceiver.setHeaderExtensionsToNegotiate + - api.RTCRtpTransceiver.stop + - api.RTCSessionDescription + - api.RTCSessionDescription.sdp + - api.RTCSessionDescription.toJSON + - api.RTCSessionDescription.type + - api.RTCTrackEvent + - api.RTCTrackEvent.RTCTrackEvent + - api.RTCTrackEvent.receiver + - api.RTCTrackEvent.streams + - api.RTCTrackEvent.track + - api.RTCTrackEvent.transceiver diff --git a/features/webrtc.yml.dist b/features/webrtc.yml.dist index a5be74a4d80..b0e27833f90 100644 --- a/features/webrtc.yml.dist +++ b/features/webrtc.yml.dist @@ -9,11 +9,45 @@ status: chrome: "56" chrome_android: "56" edge: "79" - firefox: "44" - firefox_android: "44" + firefox: "22" + firefox_android: "24" safari: "11" safari_ios: "11" compat_features: + # baseline: high + # baseline_low_date: 2017-09-19 + # baseline_high_date: 2020-03-19 + # support: + # chrome: "23" + # chrome_android: "25" + # edge: "15" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCIceCandidate + - api.RTCIceCandidate.RTCIceCandidate + - api.RTCIceCandidate.candidate + - api.RTCIceCandidate.sdpMLineIndex + - api.RTCIceCandidate.sdpMid + - api.RTCSessionDescription + - api.RTCSessionDescription.sdp + - api.RTCSessionDescription.type + + # baseline: high + # baseline_low_date: 2017-09-19 + # baseline_high_date: 2020-03-19 + # support: + # chrome: "43" + # chrome_android: "43" + # edge: "15" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCIceCandidate.toJSON + - api.RTCSessionDescription.toJSON + # baseline: high # baseline_low_date: 2017-09-19 # baseline_high_date: 2020-03-19 @@ -26,6 +60,118 @@ compat_features: # safari: "11" # safari_ios: "11" - api.RTCPeerConnection + - api.RTCPeerConnection.RTCPeerConnection + - api.RTCPeerConnection.addIceCandidate + - api.RTCPeerConnection.close + - api.RTCPeerConnection.createAnswer + - api.RTCPeerConnection.createOffer + - api.RTCPeerConnection.iceConnectionState + - api.RTCPeerConnection.iceGatheringState + - api.RTCPeerConnection.icecandidate_event + - api.RTCPeerConnection.iceconnectionstatechange_event + - api.RTCPeerConnection.localDescription + - api.RTCPeerConnection.negotiationneeded_event + - api.RTCPeerConnection.remoteDescription + - api.RTCPeerConnection.setLocalDescription + - api.RTCPeerConnection.setRemoteDescription + - api.RTCPeerConnection.signalingState + - api.RTCPeerConnection.signalingstatechange_event + + # baseline: high + # baseline_low_date: 2017-09-19 + # baseline_high_date: 2020-03-19 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "12" + # firefox: "34" + # firefox_android: "34" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpReceiver + - api.RTCRtpReceiver.track + + # baseline: high + # baseline_low_date: 2017-09-19 + # baseline_high_date: 2020-03-19 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "15" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.icegatheringstatechange_event + + # baseline: high + # baseline_low_date: 2018-01-23 + # baseline_high_date: 2020-07-23 + # support: + # chrome: "64" + # chrome_android: "64" + # edge: "13" + # firefox: "34" + # firefox_android: "34" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender + - api.RTCRtpSender.track + + # baseline: high + # baseline_low_date: 2018-09-17 + # baseline_high_date: 2021-03-17 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "15" + # firefox: "24" + # firefox_android: "24" + # safari: "12" + # safari_ios: "12" + - api.RTCPeerConnectionIceEvent + - api.RTCPeerConnectionIceEvent.RTCPeerConnectionIceEvent + - api.RTCPeerConnectionIceEvent.candidate + + # baseline: high + # baseline_low_date: ≤2018-10-02 + # baseline_high_date: ≤2021-04-02 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤18 + # firefox: "59" + # firefox_android: "59" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpTransceiver + + # baseline: high + # baseline_low_date: 2018-10-17 + # baseline_high_date: 2021-04-17 + # support: + # chrome: "70" + # chrome_android: "70" + # edge: "15" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.getConfiguration + + # baseline: high + # baseline_low_date: 2019-03-25 + # baseline_high_date: 2021-09-25 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "12" + # firefox: "59" + # firefox_android: "59" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getContributingSources + - api.RTCRtpReceiver.getContributingSources.audio_tracks_supported # baseline: high # baseline_low_date: 2020-01-15 @@ -39,3 +185,1123 @@ compat_features: # safari: "11" # safari_ios: "11" - api.RTCDataChannel + - api.RTCDataChannel.binaryType + - api.RTCDataChannel.binaryType.arraybuffer_value + - api.RTCDataChannel.bufferedAmount + - api.RTCDataChannel.close + - api.RTCDataChannel.close_event + - api.RTCDataChannel.error_event + - api.RTCDataChannel.label + - api.RTCDataChannel.message_event + - api.RTCDataChannel.open_event + - api.RTCDataChannel.readyState + - api.RTCDataChannel.send + - api.RTCDataChannelEvent + - api.RTCDataChannelEvent.channel + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "30" + # chrome_android: "30" + # edge: "79" + # firefox: "22" + # firefox_android: "24" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.id + - api.RTCDataChannel.ordered + - api.RTCDataChannel.protocol + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "30" + # chrome_android: "30" + # edge: "79" + # firefox: "62" + # firefox_android: "62" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.maxRetransmits + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "30" + # chrome_android: "30" + # edge: "79" + # firefox: "68" + # firefox_android: "68" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.negotiated + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "46" + # chrome_android: "46" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.bufferedAmountLowThreshold + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "49" + # chrome_android: "49" + # edge: "79" + # firefox: "42" + # firefox_android: "42" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCCertificate + - api.RTCCertificate.expires + + # ⬇️ Same status as overall feature ⬇️ + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "22" + # firefox_android: "24" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannelEvent.RTCDataChannelEvent + - api.RTCTrackEvent + - api.RTCTrackEvent.streams + - api.RTCTrackEvent.track + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "34" + # firefox_android: "34" + # safari: "11" + # safari_ios: "11" + - api.RTCTrackEvent.receiver + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.addIceCandidate.returns_promise + - api.RTCPeerConnection.createAnswer.returns_promise + - api.RTCPeerConnection.createDataChannel + - api.RTCPeerConnection.createOffer.returns_promise + - api.RTCPeerConnection.datachannel_event + - api.RTCPeerConnection.setLocalDescription.returns_promise + - api.RTCPeerConnection.setRemoteDescription.returns_promise + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCPeerConnection.generateCertificate_static + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "62" + # firefox_android: "62" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.maxPacketLifeTime + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "57" + # chrome_android: "57" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.bufferedamountlow_event + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.getReceivers + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "64" + # chrome_android: "64" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.addTrack + - api.RTCPeerConnection.getSenders + - api.RTCPeerConnection.removeTrack + - api.RTCPeerConnection.track_event + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "64" + # chrome_android: "64" + # edge: "79" + # firefox: "46" + # firefox_android: "46" + # safari: "11" + # safari_ios: "11" + - api.RTCTrackEvent.RTCTrackEvent + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "65" + # chrome_android: "65" + # edge: "79" + # firefox: "34" + # firefox_android: "34" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.replaceTrack + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: "79" + # firefox: "59" + # firefox_android: "59" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.addTransceiver + - api.RTCPeerConnection.addTransceiver.init_direction_parameter + - api.RTCPeerConnection.getTransceivers + - api.RTCRtpTransceiver.direction + - api.RTCRtpTransceiver.mid + - api.RTCRtpTransceiver.receiver + - api.RTCRtpTransceiver.sender + - api.RTCTrackEvent.transceiver + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: "79" + # firefox: "59" + # firefox_android: "59" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCPeerConnection.addTransceiver.init_streams_parameter + - api.RTCRtpTransceiver.currentDirection + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "70" + # chrome_android: "70" + # edge: "79" + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.currentLocalDescription + - api.RTCPeerConnection.pendingLocalDescription + - api.RTCPeerConnection.pendingRemoteDescription + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "70" + # chrome_android: "70" + # edge: "79" + # firefox: "57" + # firefox_android: "57" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.currentRemoteDescription + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "73" + # chrome_android: "73" + # edge: "79" + # firefox: "59" + # firefox_android: "59" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getContributingSources.audioLevel + - api.RTCRtpReceiver.getSynchronizationSources + - api.RTCRtpReceiver.getSynchronizationSources.audio_tracks_supported + + # baseline: high + # baseline_low_date: 2020-01-15 + # baseline_high_date: 2022-07-15 + # support: + # chrome: "73" + # chrome_android: "73" + # edge: "79" + # firefox: "68" + # firefox_android: "68" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getSynchronizationSources.video_tracks_supported + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: ≤79 + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.RTCPeerConnection.configuration_bundlePolicy_parameter + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: ≤79 + # firefox: "44" + # firefox_android: "44" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCPeerConnection.RTCPeerConnection.configuration_certificates_parameter + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "56" + # chrome_android: "57" + # edge: ≤79 + # firefox: "44" + # firefox_android: "44" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.credential_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.urls_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.username_parameter + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceTransportPolicy_parameter + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: ≤79 + # firefox: "59" + # firefox_android: "59" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getContributingSources.source + - api.RTCRtpReceiver.getContributingSources.timestamp + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "68" + # chrome_android: "68" + # edge: ≤79 + # firefox: "46" + # firefox_android: "46" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.getParameters + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "68" + # chrome_android: "68" + # edge: ≤79 + # firefox: "64" + # firefox_android: "64" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.setParameters + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # firefox: "46" + # firefox_android: "46" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpSender.getParameters.return_object_property_encodings + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # firefox: "64" + # firefox_android: "64" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.setParameters.parameters_encodings_parameter + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxBitrate + + # baseline: high + # baseline_low_date: ≤2020-01-15 + # baseline_high_date: ≤2022-07-15 + # support: + # chrome: "73" + # chrome_android: "73" + # edge: ≤79 + # firefox: "68" + # firefox_android: "68" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getContributingSources.video_tracks_supported + + # baseline: high + # baseline_low_date: 2020-03-24 + # baseline_high_date: 2022-09-24 + # support: + # chrome: "27" + # chrome_android: "27" + # edge: "12" + # firefox: "52" + # firefox_android: "52" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCDTMFToneChangeEvent + - api.RTCDTMFToneChangeEvent.tone + + # baseline: high + # baseline_low_date: 2020-03-24 + # baseline_high_date: 2022-09-24 + # support: + # chrome: "27" + # chrome_android: "27" + # edge: "13" + # firefox: "52" + # firefox_android: "52" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCDTMFToneChangeEvent.RTCDTMFToneChangeEvent + + # baseline: high + # baseline_low_date: 2020-03-24 + # baseline_high_date: 2022-09-24 + # support: + # chrome: "27" + # chrome_android: "27" + # edge: "79" + # firefox: "52" + # firefox_android: "52" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCDTMFSender + - api.RTCDTMFSender.insertDTMF + - api.RTCDTMFSender.toneBuffer + - api.RTCDTMFSender.tonechange_event + + # baseline: high + # baseline_low_date: 2020-03-24 + # baseline_high_date: 2022-09-24 + # support: + # chrome: "66" + # chrome_android: "66" + # edge: "79" + # firefox: "52" + # firefox_android: "52" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCRtpSender.dtmf + + # baseline: high + # baseline_low_date: 2021-01-21 + # baseline_high_date: 2023-07-21 + # support: + # chrome: "88" + # chrome_android: "88" + # edge: "88" + # firefox: "59" + # firefox_android: "59" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpTransceiver.stop + + # baseline: high + # baseline_low_date: 2021-04-26 + # baseline_high_date: 2023-10-26 + # support: + # chrome: "74" + # chrome_android: "74" + # edge: "79" + # firefox: "67" + # firefox_android: "67" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCIceCandidate.usernameFragment + + # baseline: high + # baseline_low_date: 2021-04-26 + # baseline_high_date: 2023-10-26 + # support: + # chrome: "77" + # chrome_android: "77" + # edge: "79" + # firefox: "70" + # firefox_android: "79" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCPeerConnection.restartIce + + # baseline: high + # baseline_low_date: 2021-04-26 + # baseline_high_date: 2023-10-26 + # support: + # chrome: "80" + # chrome_android: "80" + # edge: "80" + # firefox: "75" + # firefox_android: "79" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCPeerConnection.setLocalDescription.description_parameter_optional + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "12" + # firefox: "82" + # firefox_android: "82" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCRtpReceiver.transport + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "72" + # chrome_android: "72" + # edge: "12" + # firefox: "82" + # firefox_android: "82" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCDtlsTransport + - api.RTCDtlsTransport.state + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "72" + # chrome_android: "72" + # edge: "79" + # firefox: "82" + # firefox_android: "82" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCDtlsTransport.statechange_event + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "13" + # firefox: "82" + # firefox_android: "82" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCRtpSender.transport + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "80" + # chrome_android: "80" + # edge: "80" + # firefox: "70" + # firefox_android: "79" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCPeerConnection.setRemoteDescription.implicit_rollback + + # baseline: high + # baseline_low_date: 2022-03-14 + # baseline_high_date: 2024-09-14 + # support: + # chrome: "83" + # chrome_android: "83" + # edge: "83" + # firefox: "47" + # firefox_android: "47" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCPeerConnection.canTrickleIceCandidates + + # baseline: high + # baseline_low_date: 2022-04-05 + # baseline_high_date: 2024-10-05 + # support: + # chrome: "56" + # chrome_android: "56" + # edge: "79" + # firefox: "99" + # firefox_android: "99" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.setConfiguration + + # baseline: low + # baseline_low_date: 2023-02-14 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: "79" + # firefox: "110" + # firefox_android: "110" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCPeerConnection.addTransceiver.init_sendEncodings_parameter + + # baseline: low + # baseline_low_date: 2023-02-14 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # firefox: "110" + # firefox_android: "110" + # safari: "11.1" + # safari_ios: "11.3" + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.active + + # baseline: low + # baseline_low_date: 2023-05-09 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: "12" + # firefox: "113" + # firefox_android: "113" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpReceiver.getCapabilities_static + + # baseline: low + # baseline_low_date: 2023-05-09 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: "13" + # firefox: "113" + # firefox_android: "113" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpSender.getCapabilities_static + + # baseline: low + # baseline_low_date: 2023-05-09 + # support: + # chrome: "72" + # chrome_android: "72" + # edge: "79" + # firefox: "113" + # firefox_android: "113" + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.connectionState + - api.RTCPeerConnection.connectionstatechange_event + + # baseline: low + # baseline_low_date: 2023-05-09 + # support: + # chrome: "76" + # chrome_android: "76" + # edge: "79" + # firefox: "113" + # firefox_android: "113" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCRtpSender.setStreams + + # baseline: low + # baseline_low_date: 2024-04-16 + # support: + # chrome: "72" + # chrome_android: "72" + # edge: "79" + # firefox: "125" + # firefox_android: "125" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCDtlsTransport.iceTransport + + # baseline: low + # baseline_low_date: 2024-04-16 + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "13" + # firefox: "125" + # firefox_android: "125" + # safari: "11" + # safari_ios: "11" + - api.RTCIceTransport + - api.RTCIceTransport.state + + # baseline: low + # baseline_low_date: 2024-04-16 + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "79" + # firefox: "125" + # firefox_android: "125" + # safari: "11" + # safari_ios: "11" + - api.RTCIceTransport.gatheringState + + # baseline: low + # baseline_low_date: 2024-04-16 + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "79" + # firefox: "125" + # firefox_android: "125" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCIceTransport.gatheringstatechange_event + - api.RTCIceTransport.statechange_event + + # baseline: low + # baseline_low_date: 2024-05-14 + # support: + # chrome: "74" + # chrome_android: "74" + # edge: "79" + # firefox: "126" + # firefox_android: "126" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCIceCandidate.address + - api.RTCIceCandidate.component + - api.RTCIceCandidate.foundation + - api.RTCIceCandidate.port + - api.RTCIceCandidate.priority + - api.RTCIceCandidate.protocol + - api.RTCIceCandidate.relatedAddress + - api.RTCIceCandidate.relatedPort + - api.RTCIceCandidate.tcpType + - api.RTCIceCandidate.type + + # baseline: low + # baseline_low_date: 2024-07-09 + # support: + # chrome: "59" + # chrome_android: "59" + # edge: ≤79 + # firefox: "128" + # firefox_android: "128" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpReceiver.getParameters + + # baseline: low + # baseline_low_date: 2024-07-09 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # firefox: "128" + # firefox_android: "128" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpReceiver.getParameters.return_object_property_codecs + - api.RTCRtpSender.getParameters.return_object_property_codecs + + # baseline: low + # baseline_low_date: 2024-07-09 + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # firefox: "128" + # firefox_android: "128" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpSender.setParameters.parameters_codecs_parameter + + # baseline: low + # baseline_low_date: 2024-07-09 + # support: + # chrome: "76" + # chrome_android: "76" + # edge: "79" + # firefox: "128" + # firefox_android: "128" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCRtpTransceiver.setCodecPreferences + + # baseline: low + # baseline_low_date: 2024-08-06 + # support: + # chrome: "27" + # chrome_android: "27" + # edge: "79" + # firefox: "129" + # firefox_android: "129" + # safari: "13.1" + # safari_ios: "13.4" + - api.RTCDTMFSender.canInsertDTMF + + # baseline: low + # baseline_low_date: 2024-09-19 + # support: + # chrome: "129" + # chrome_android: "129" + # edge: "129" + # firefox: "22" + # firefox_android: "24" + # safari: "11" + # safari_ios: "11" + - api.RTCDataChannel.binaryType.blob_value + + # baseline: false + # support: + # chrome: "74" + # chrome_android: "74" + # firefox: "64" + # firefox_android: "64" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.scaleResolutionDownBy + + # baseline: false + # support: + # chrome: "56" + # chrome_android: "57" + # edge: ≤79 + # safari: "11" + # safari_ios: "11" + - api.RTCPeerConnection.RTCPeerConnection.configuration_iceCandidatePoolSize_parameter + + # baseline: false + # support: + # chrome: "57" + # chrome_android: "57" + # edge: ≤79 + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCPeerConnection.RTCPeerConnection.configuration_rtcpMuxPolicy_parameter + + # baseline: false + # support: + # chrome: "58" + # chrome_android: "58" + # edge: "79" + # firefox: "63" + # firefox_android: "63" + - api.RTCDataChannel.sctp_sdp_21 + + # baseline: false + # support: + # chrome: "61" + # chrome_android: "61" + # edge: "79" + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCCertificate.getFingerprints + + # baseline: false + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # safari: "11" + # safari_ios: "11" + - api.RTCRtpReceiver.getParameters.return_object_property_headerExtensions + - api.RTCRtpSender.getParameters.return_object_property_headerExtensions + + # baseline: false + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # safari: "12.1" + # safari_ios: "12.2" + - api.RTCRtpSender.getParameters.return_object_property_transactionId + - api.RTCRtpSender.setParameters.parameters_headerExtensions_parameter + - api.RTCRtpSender.setParameters.parameters_transactionId_parameter + + # baseline: false + # support: + # chrome: "69" + # chrome_android: "69" + # edge: ≤79 + # safari: "15" + # safari_ios: "15" + - api.RTCRtpReceiver.getParameters.return_object_property_rtcp + - api.RTCRtpSender.getParameters.return_object_property_rtcp + - api.RTCRtpSender.setParameters.parameters_rtcp_parameter + + # baseline: false + # support: + # chrome: "72" + # chrome_android: "72" + # edge: "12" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCDtlsTransport.error_event + - api.RTCDtlsTransport.getRemoteCertificates + + # baseline: false + # support: + # chrome: "74" + # chrome_android: "74" + # edge: "79" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCError + - api.RTCError.RTCError + - api.RTCError.errorDetail + - api.RTCError.receivedAlert + - api.RTCError.sctpCauseCode + - api.RTCError.sdpLineNumber + - api.RTCError.sentAlert + - api.RTCErrorEvent + - api.RTCErrorEvent.RTCErrorEvent + - api.RTCErrorEvent.error + + # baseline: false + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "79" + # safari: "16.4" + # safari_ios: "16.4" + - api.RTCIceTransport.getSelectedCandidatePair + - api.RTCIceTransport.selectedcandidatepairchange_event + + # baseline: false + # support: + # chrome: "76" + # chrome_android: "76" + # edge: "79" + # firefox: "72" + # firefox_android: "79" + - api.RTCRtpReceiver.getContributingSources.rtpTimestamp + + # baseline: false + # support: + # chrome: "77" + # chrome_android: "77" + # edge: "79" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCPeerConnection.icecandidateerror_event + - api.RTCPeerConnectionIceErrorEvent + - api.RTCPeerConnectionIceErrorEvent.RTCPeerConnectionIceErrorEvent + - api.RTCPeerConnectionIceErrorEvent.errorCode + - api.RTCPeerConnectionIceErrorEvent.errorText + - api.RTCPeerConnectionIceErrorEvent.url + + # baseline: false + # support: + # chrome: "81" + # chrome_android: "81" + # edge: "81" + # safari: "11" + # safari_ios: "11" + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxFramerate + + # baseline: false + # support: + # chrome: "81" + # chrome_android: "81" + # edge: "81" + # safari: "14.1" + # safari_ios: "14.5" + - api.RTCPeerConnectionIceErrorEvent.address + - api.RTCPeerConnectionIceErrorEvent.port + + # baseline: false + # support: + # chrome: "81" + # chrome_android: "81" + # edge: "81" + # safari: "15.4" + # safari_ios: "15.4" + - api.RTCDataChannel.closing_event + + # baseline: false + # support: + # chrome: "88" + # chrome_android: "88" + # edge: "88" + # firefox: "118" + # firefox_android: "118" + - api.RTCPeerConnection.getReceivers.stopped_transceivers_removed + - api.RTCPeerConnection.getSenders.stopped_transceivers_removed + - api.RTCPeerConnection.getTransceivers.stopped_transceivers_removed + + # baseline: false + # support: + # chrome: "103" + # chrome_android: "103" + # edge: "103" + # firefox: "118" + # firefox_android: "118" + - api.RTCRtpTransceiver.currentDirection.stopped_value + - api.RTCRtpTransceiver.direction.value_stopped + + # baseline: false + # support: + # chrome: "124" + # chrome_android: "124" + # edge: "124" + # firefox: "115" + # firefox_android: "115" + - api.RTCRtpReceiver.jitterBufferTarget + + # baseline: false + # support: + # chrome: "130" + # chrome_android: "130" + # edge: "130" + # safari: "15" + # safari_ios: "15" + - api.RTCDataChannel.transferable + + # baseline: false + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "13" + - api.RTCIceTransport.getRemoteCandidates + - api.RTCIceTransport.getRemoteParameters + - api.RTCIceTransport.role + + # baseline: false + # support: + # chrome: "75" + # chrome_android: "75" + # edge: "79" + - api.RTCIceTransport.getLocalCandidates + - api.RTCIceTransport.getLocalParameters + + # baseline: false + # support: + # chrome: "86" + # chrome_android: "86" + # edge: "86" + - api.RTCRtpReceiver.createEncodedStreams + - api.RTCRtpSender.createEncodedStreams + + # baseline: false + # support: + # chrome: "117" + # chrome_android: "117" + # edge: "117" + - api.RTCRtpTransceiver.getHeaderExtensionsToNegotiate + - api.RTCRtpTransceiver.getNegotiatedHeaderExtensions + - api.RTCRtpTransceiver.setHeaderExtensionsToNegotiate + + # baseline: false + # support: + # chrome: "124" + # chrome_android: "124" + # edge: "124" + - api.RTCIceCandidate.relayProtocol + - api.RTCIceCandidate.url + + # baseline: false + # support: + # safari: "12" + # safari_ios: "12" + - api.RTCPeerConnectionIceEvent.url + + # baseline: false + # support: + # firefox: "44" + # firefox_android: "44" + - api.RTCPeerConnection.RTCPeerConnection.configuration_peerIdentity_parameter + + # baseline: false + # support: + # firefox: "64" + # firefox_android: "64" + - api.RTCRtpSender.setParameters.parameters_encodings_parameter.rid