diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/webidl/RTCStatsReport.webidl | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/webidl/RTCStatsReport.webidl')
-rw-r--r-- | dom/webidl/RTCStatsReport.webidl | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/dom/webidl/RTCStatsReport.webidl b/dom/webidl/RTCStatsReport.webidl new file mode 100644 index 0000000000..74d14801a8 --- /dev/null +++ b/dom/webidl/RTCStatsReport.webidl @@ -0,0 +1,266 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + * + * The origin of this IDL file is + * http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcstatsreport-object + * http://www.w3.org/2011/04/webrtc/wiki/Stats + */ + +enum RTCStatsType { + "inbound-rtp", + "outbound-rtp", + "remote-inbound-rtp", + "remote-outbound-rtp", + "csrc", + "data-channel", + "session", + "track", + "transport", + "candidate-pair", + "local-candidate", + "remote-candidate" +}; + +dictionary RTCStats { + DOMHighResTimeStamp timestamp; + RTCStatsType type; + DOMString id; +}; + +dictionary RTCRtpStreamStats : RTCStats { + unsigned long ssrc; + DOMString mediaType; + DOMString kind; + DOMString transportId; +}; + +dictionary RTCReceivedRtpStreamStats: RTCRtpStreamStats { + unsigned long packetsReceived; + unsigned long packetsLost; + double jitter; + unsigned long discardedPackets; // non-standard alias for packetsDiscarded + unsigned long packetsDiscarded; +}; + +dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { + DOMString remoteId; + unsigned long framesDecoded; + unsigned long long bytesReceived; + unsigned long nackCount; + unsigned long firCount; + unsigned long pliCount; + double bitrateMean; // deprecated, to be removed in Bug 1367562 + double bitrateStdDev; // deprecated, to be removed in Bug 1367562 + double framerateMean; // deprecated, to be removed in Bug 1367562 + double framerateStdDev; // deprecated, to be removed in Bug 1367562 +}; + +dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats { + DOMString localId; + long long bytesReceived; // Deprecated, to be removed in Bug 1529405 + double roundTripTime; +}; + +dictionary RTCSentRtpStreamStats : RTCRtpStreamStats { + unsigned long packetsSent; + unsigned long long bytesSent; +}; + +dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { + DOMString remoteId; + unsigned long framesEncoded; + unsigned long long qpSum; + unsigned long nackCount; + unsigned long firCount; + unsigned long pliCount; + double bitrateMean; // deprecated, to be removed in Bug 1367562 + double bitrateStdDev; // deprecated, to be removed in Bug 1367562 + double framerateMean; // deprecated, to be removed in Bug 1367562 + double framerateStdDev; // deprecated, to be removed in Bug 1367562 + unsigned long droppedFrames; // non-spec alias for framesDropped + // to be deprecated in Bug 1225720 +}; + +dictionary RTCRemoteOutboundRtpStreamStats : RTCSentRtpStreamStats { + DOMString localId; + DOMHighResTimeStamp remoteTimestamp; +}; + +dictionary RTCRTPContributingSourceStats : RTCStats { + unsigned long contributorSsrc; + DOMString inboundRtpStreamId; +}; + +dictionary RTCDataChannelStats : RTCStats { + DOMString label; + DOMString protocol; + long dataChannelIdentifier; + // RTCTransportId is not yet implemented - Bug 1225723 + // DOMString transportId; + RTCDataChannelState state; + unsigned long messagesSent; + unsigned long long bytesSent; + unsigned long messagesReceived; + unsigned long long bytesReceived; +}; + +enum RTCStatsIceCandidatePairState { + "frozen", + "waiting", + "inprogress", + "failed", + "succeeded", + "cancelled" +}; + +dictionary RTCIceCandidatePairStats : RTCStats { + DOMString transportId; + DOMString localCandidateId; + DOMString remoteCandidateId; + RTCStatsIceCandidatePairState state; + unsigned long long priority; + boolean nominated; + boolean writable; + boolean readable; + unsigned long long bytesSent; + unsigned long long bytesReceived; + DOMHighResTimeStamp lastPacketSentTimestamp; + DOMHighResTimeStamp lastPacketReceivedTimestamp; + boolean selected; + [ChromeOnly] + unsigned long componentId; // moz +}; + +enum RTCIceCandidateType { + "host", + "srflx", + "prflx", + "relay" +}; + +dictionary RTCIceCandidateStats : RTCStats { + DOMString address; + long port; + DOMString protocol; + RTCIceCandidateType candidateType; + long priority; + DOMString relayProtocol; + // Because we use this internally but don't support RTCIceCandidateStats, + // we need to keep the field as ChromeOnly. Bug 1225723 + [ChromeOnly] + DOMString transportId; + [ChromeOnly] + DOMString proxied; +}; + +// This is for tracking the frame rate in about:webrtc +dictionary RTCVideoFrameHistoryEntryInternal { + required unsigned long width; + required unsigned long height; + required unsigned long rotationAngle; + required DOMHighResTimeStamp firstFrameTimestamp; + required DOMHighResTimeStamp lastFrameTimestamp; + required unsigned long long consecutiveFrames; + required unsigned long localSsrc; + required unsigned long remoteSsrc; +}; + +// Collection over the entries for a single track for about:webrtc +dictionary RTCVideoFrameHistoryInternal { + required DOMString trackIdentifier; + sequence<RTCVideoFrameHistoryEntryInternal> entries = []; +}; + +// Collection over the libwebrtc bandwidth estimation stats +dictionary RTCBandwidthEstimationInternal { + required DOMString trackIdentifier; + long sendBandwidthBps; // Estimated available send bandwidth + long maxPaddingBps; // Cumulative configured max padding + long receiveBandwidthBps; // Estimated available receive bandwidth + long pacerDelayMs; + long rttMs; +}; + +// This is used by about:webrtc to report SDP parsing errors +dictionary RTCSdpParsingErrorInternal { + required unsigned long lineNumber; + required DOMString error; +}; + +// This is for tracking the flow of SDP for about:webrtc +dictionary RTCSdpHistoryEntryInternal { + required DOMHighResTimeStamp timestamp; + required boolean isLocal; + required DOMString sdp; + sequence<RTCSdpParsingErrorInternal> errors = []; +}; + +// This is intended to be a list of dictionaries that inherit from RTCStats +// (with some raw ICE candidates thrown in). Unfortunately, we cannot simply +// store a sequence<RTCStats> because of slicing. So, we have to have a +// separate list for each type. Used in c++ gecko code. +dictionary RTCStatsCollection { + sequence<RTCInboundRtpStreamStats> inboundRtpStreamStats = []; + sequence<RTCOutboundRtpStreamStats> outboundRtpStreamStats = []; + sequence<RTCRemoteInboundRtpStreamStats> remoteInboundRtpStreamStats = []; + sequence<RTCRemoteOutboundRtpStreamStats> remoteOutboundRtpStreamStats = []; + sequence<RTCRTPContributingSourceStats> rtpContributingSourceStats = []; + sequence<RTCIceCandidatePairStats> iceCandidatePairStats = []; + sequence<RTCIceCandidateStats> iceCandidateStats = []; + sequence<RTCIceCandidateStats> trickledIceCandidateStats = []; + sequence<DOMString> rawLocalCandidates = []; + sequence<DOMString> rawRemoteCandidates = []; + sequence<RTCDataChannelStats> dataChannelStats = []; + sequence<RTCVideoFrameHistoryInternal> videoFrameHistories = []; + sequence<RTCBandwidthEstimationInternal> bandwidthEstimations = []; +}; + +// Details that about:webrtc can display about configured ICE servers +dictionary RTCIceServerInternal { + sequence<DOMString> urls = []; + required boolean credentialProvided; + required boolean userNameProvided; +}; + +// Details that about:webrtc can display about the RTCConfiguration +// Chrome only +dictionary RTCConfigurationInternal { + RTCBundlePolicy bundlePolicy; + required boolean certificatesProvided; + sequence<RTCIceServerInternal> iceServers = []; + RTCIceTransportPolicy iceTransportPolicy; + required boolean peerIdentityProvided; + DOMString sdpSemantics; +}; + +// A collection of RTCStats dictionaries, plus some other info. Used by +// WebrtcGlobalInformation for about:webrtc, and telemetry. +dictionary RTCStatsReportInternal : RTCStatsCollection { + required DOMString pcid; + required unsigned long browserId; + RTCConfigurationInternal configuration; + DOMString jsepSessionErrors; + DOMString localSdp; + DOMString remoteSdp; + sequence<RTCSdpHistoryEntryInternal> sdpHistory = []; + required DOMHighResTimeStamp timestamp; + double callDurationMs; + required unsigned long iceRestarts; + required unsigned long iceRollbacks; + boolean offerer; // Is the PC the offerer + required boolean closed; // Is the PC now closed +}; + +[Pref="media.peerconnection.enabled", + Exposed=Window] +interface RTCStatsReport { + + // TODO(bug 1586109): Remove this once we no longer need to be able to + // construct empty RTCStatsReports from JS. + [ChromeOnly] + constructor(); + + readonly maplike<DOMString, object>; +}; |