Implementation issues

Gaps

No implementation

voiceActivityFlag in SSRC (marked "at risk")
No implementation (CR, FF)
MTI Stats (CR)
No implementation of
  • RTCReceivedRtpStreamStats's packetsDiscarded (CR, FF),
  • RTCInboundRtpStreamStats's receiverId,
  • RTCOutboundRtpStreamStats's senderId,
  • RTCMediaStreamStats's streamIdentifer,
  • RTCMediaHandlerStats's trackIdentifier,
  • RTCMediaHandlerStats's remoteSource,
  • RTCMediaHandlerStats's ended,
  • RTCAudioHandlerStats's audioLevel,
  • RTCVideoHandlerStats's frameWidth,
  • RTCVideoHandlerStats's frameHeight,
  • RTCVideoHandlerStats's framesPerSecond,
  • RTCVideoSenderStats's framesSent,
  • RTCVideoReceiverStats's framesReceived,
  • RTCVideoReceiverStats's framesDecoded,
  • RTCVideoReceiverStats's framesDropped,
  • RTCVideoReceiverStats's partialFramesLost,
  • RTCCodecStats's codecType,
  • RTCTransportStats's rtcpTransportStatsId,
  • RTCIceCandidateStats's url (CR, FF),
  • RTCCertificateStats's issuerCertificateId

Only one implementation

Perfect Negotiation
Chromium bug (landing in M87)
RTCDataChannel.onclosing
Missing in FF & Safari (webkit)
RTCRtpSender.setStreams()
Not implemented in FF, Safari
RTCDtlsTransport interface
Not implemented in FF, Safari; implemented partially in old Edge (but does it pass the tests?)
RTCIceTransport interface
Missing in FF; Available in SecureContext only in Chromium? missing component attribute in Chromium; missing most attributes/methods in Safari
onicecandidateerror
Not available in Firefox, Safari
sctp transport
Missing in FF, Safari
RTCError, RTCErrorEvent
Not implemented in Firefox, Safari (OperationError fallback test?); bug in RTCErrorEvent constructor (cf idlharness test)
RTCPeerConnectionIceEvent url attribute
Missing in FF, Chromium
validation of rid values in addTransceiver
Missing in FF & Safari
RTCPeerConnectionIceErrorEvent
Missing in FF, Safari; address, port missing in Chromium
MTI Stats (single impl)
Only one implementation of RTCInboundRtpStreamStats's remoteId, RTCOutboundRtpStreamStats's trackId, RTCRemoteOutboundRtpStreamStats's localId, RTCRemoteOutboundRtpStreamStats's remoteTimestamp, RTCPeerConnectionStats's dataChannelsOpened, RTCPeerConnectionStats's dataChannelsClosed, RTCMediaStreamStats's trackIds,RTCTransportStats's selectedCandidatePairId, RTCTransportStats's localCertificateId, RTCTransportStats's remoteCertificateId, RTCIceCandidateStats's address

Gap in single browser that affect test suite because of dependencies

blob argument for RTCDataChannel.send()
Missing in Chromium (CR2276)
transceiver.stop()
Missing from chromium (CR))
setConfiguration
Missing in Firefox

Bugs

Stats lifecycle
Chromium lifecyle for presence of RTCInboundRtpStreamStats, RTCRemoteInboundRtpStreamStats, RTCOutboundRtpStreamStats, RTCRemoteOutboundRtpStreamStats, RTCDataChannelStats?
FF lifecycle for presence of RTCIceCandidatePairStats.state, currentRoundTripTime. RTCCodecStats, RTCInboundRtpStreamStats, RTCRemoteInboundRtpStreamStats, RTCOutboundRtpStreamStats, RTCRemoteOutboundRtpStreamStats, RTCDataChannelStats, RTCMediaHandlerStats, RTCTransportStats, RTCCertificateStats?
RTCPeerConnection.addIceCandidate()
Supports for zero-argument in Chromium, Safari
RTCIceCandidate interface attributes
bug in FF with nondefault values for all fields
RTCPeerConnection.setLocalDescription()
Supports for zero-argument in FF, Safari?
readonly attributes in RTCSessionDescription (type, sdp)
writable in FF, Chromium
restartIce survives remote offer containing partial restart
Not implemented in FF, Chromium
createOffer
Chromium Safari fails "When media stream is added when createOffer() is running in parallel, the result offer should contain the new media stream"
setLocalDescription() with offer not created by own createOffer() should reject with InvalidModificationError
Fails in Chromium, Safari
parameter-less setParameters (!)
Bug in FF, Chromium
getSynchronizationSources
returns empty array on audio track in Chromium (?); misses rtpTimestamp, voiceActivityFlag in Safari; doesn't work on video track in FF, which also lacks voiceActivityFlag
mute/unmute timing
Buggy in Chrome, Safari

Test suite issues

Bugs

Gaps

Annotated WPT results

Tests Chrome Edge FireFox Safari old Edge Notes

MTI Stats

Static results as of 1 september 2020 (based on mandatory stats test

Subtest Chromium FF Safari
getStats succeeds
Validating stats
RTCRtpStreamStats's ssrc
RTCRtpStreamStats's kind
RTCRtpStreamStats's transportId
RTCRtpStreamStats's codecId
RTCReceivedRtpStreamStats's packetsReceived
RTCReceivedRtpStreamStats's packetsLost
RTCReceivedRtpStreamStats's jitter
RTCReceivedRtpStreamStats's packetsDiscarded
RTCInboundRtpStreamStats's trackId
RTCInboundRtpStreamStats's receiverId
RTCInboundRtpStreamStats's remoteId
RTCInboundRtpStreamStats's framesDecoded
RTCRemoteInboundRtpStreamStats's localId
RTCRemoteInboundRtpStreamStats's roundTripTime
RTCSentRtpStreamStats's packetsSent
RTCSentRtpStreamStats's bytesSent
RTCOutboundRtpStreamStats's trackId
RTCOutboundRtpStreamStats's senderId
RTCOutboundRtpStreamStats's remoteId
RTCOutboundRtpStreamStats's framesEncoded
RTCRemoteOutboundRtpStreamStats's localId
RTCRemoteOutboundRtpStreamStats's remoteTimestamp
RTCPeerConnectionStats's dataChannelsOpened
RTCPeerConnectionStats's dataChannelsClosed
RTCDataChannelStats's protocol
RTCDataChannelStats's dataChannelIdentifier
RTCDataChannelStats's state
RTCDataChannelStats's messagesSent
RTCDataChannelStats's bytesSent
RTCDataChannelStats's messagesReceived
RTCDataChannelStats's bytesReceived
RTCMediaStreamStats's streamIdentifer
RTCMediaStreamStats's trackIds
RTCMediaHandlerStats's trackIdentifier
RTCMediaHandlerStats's remoteSource
RTCMediaHandlerStats's ended
RTCAudioHandlerStats's audioLevel
RTCVideoHandlerStats's frameWidth
RTCVideoHandlerStats's frameHeight
RTCVideoHandlerStats's framesPerSecond
RTCVideoSenderStats's framesSent
RTCVideoReceiverStats's framesReceived
RTCVideoReceiverStats's framesDecoded
RTCVideoReceiverStats's framesDropped
RTCVideoReceiverStats's partialFramesLost
RTCCodecStats's payloadType
RTCCodecStats's codecType
RTCCodecStats's clockRate
RTCCodecStats's channels
RTCCodecStats's sdpFmtpLine
RTCTransportStats's bytesSent
RTCTransportStats's bytesReceived
RTCTransportStats's rtcpTransportStatsId
RTCTransportStats's selectedCandidatePairId
RTCTransportStats's localCertificateId
RTCTransportStats's remoteCertificateId
RTCIceCandidatePairStats's transportId
RTCIceCandidatePairStats's localCandidateId
RTCIceCandidatePairStats's remoteCandidateId
RTCIceCandidatePairStats's state
RTCIceCandidatePairStats's priority
RTCIceCandidatePairStats's nominated
RTCIceCandidatePairStats's bytesSent
RTCIceCandidatePairStats's bytesReceived
RTCIceCandidatePairStats's totalRoundTripTime
RTCIceCandidatePairStats's currentRoundTripTime
RTCIceCandidateStats's address
RTCIceCandidateStats's port
RTCIceCandidateStats's protocol
RTCIceCandidateStats's candidateType
RTCIceCandidateStats's url
RTCCertificateStats's fingerprint
RTCCertificateStats's fingerprintAlgorithm
RTCCertificateStats's base64Certificate
RTCCertificateStats's issuerCertificateId