mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
4814c44333
Spec: https://w3c.github.io/webrtc-stats/#dom-rtcdatachannelstats Note: We do not yet support transport stats, and transportId acts as key back into the collection of all stats, so for now transportId must not appear in this object (it has no object to point to). See bug 1225723 Differential Revision: https://phabricator.services.mozilla.com/D57114
200 lines
6.3 KiB
Plaintext
200 lines
6.3 KiB
Plaintext
/* -*- 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;
|
|
};
|
|
|
|
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 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 = [];
|
|
};
|
|
|
|
// A collection of RTCStats dictionaries, plus some other info. Used by
|
|
// WebrtcGlobalInformation for about:webrtc, and telemetry.
|
|
dictionary RTCStatsReportInternal : RTCStatsCollection {
|
|
required DOMString pcid;
|
|
DOMString localSdp;
|
|
DOMString remoteSdp;
|
|
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>;
|
|
};
|