372 lines
11 KiB
Plaintext
372 lines
11 KiB
Plaintext
/*
|
|
* Copyright (C) 2012 Google Inc. All rights reserved.
|
|
* Copyright (C) 2017 Apple Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
[
|
|
Conditional=WEB_RTC,
|
|
EnabledBySetting=PeerConnection,
|
|
ImplementationLacksVTable,
|
|
Exposed=Window
|
|
] interface RTCStatsReport {
|
|
readonly maplike<DOMString, object>;
|
|
};
|
|
|
|
enum RTCStatsType {
|
|
"candidate-pair",
|
|
"certificate",
|
|
"codec",
|
|
"data-channel",
|
|
"inbound-rtp",
|
|
"local-candidate",
|
|
"media-source",
|
|
"outbound-rtp",
|
|
"peer-connection",
|
|
"remote-candidate",
|
|
"remote-inbound-rtp",
|
|
"track",
|
|
"transport"
|
|
};
|
|
|
|
typedef double DOMHighResTimeStamp;
|
|
|
|
dictionary RTCStats {
|
|
DOMHighResTimeStamp timestamp;
|
|
RTCStatsType type;
|
|
DOMString id;
|
|
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCRtpStreamStats : RTCStats {
|
|
required unsigned long ssrc;
|
|
required DOMString kind;
|
|
// We should obsolete this field
|
|
required DOMString mediaType;
|
|
DOMString transportId;
|
|
DOMString codecId;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats {
|
|
unsigned long long packetsReceived;
|
|
long long packetsLost;
|
|
double jitter;
|
|
unsigned long long packetsDiscarded;
|
|
unsigned long long packetsRepaired;
|
|
unsigned long long burstPacketsLost;
|
|
unsigned long long burstPacketsDiscarded;
|
|
unsigned long burstLossCount;
|
|
unsigned long burstDiscardCount;
|
|
double burstLossRate;
|
|
double burstDiscardRate;
|
|
double gapLossRate;
|
|
double gapDiscardRate;
|
|
unsigned long framesDropped;
|
|
unsigned long partialFramesLost;
|
|
unsigned long fullFramesLost;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
|
|
// required DOMString receiverId;
|
|
DOMString remoteId;
|
|
unsigned long framesDecoded;
|
|
unsigned long keyFramesDecoded;
|
|
unsigned long frameWidth;
|
|
unsigned long frameHeight;
|
|
unsigned long frameBitDepth;
|
|
double framesPerSecond;
|
|
unsigned long long qpSum;
|
|
double totalDecodeTime;
|
|
double totalInterFrameDelay;
|
|
double totalSquaredInterFrameDelay;
|
|
boolean voiceActivityFlag;
|
|
DOMHighResTimeStamp lastPacketReceivedTimestamp;
|
|
double averageRtcpInterval;
|
|
unsigned long long headerBytesReceived;
|
|
unsigned long long fecPacketsReceived;
|
|
unsigned long long fecPacketsDiscarded;
|
|
unsigned long long bytesReceived;
|
|
unsigned long long packetsFailedDecryption;
|
|
unsigned long long packetsDuplicated;
|
|
// record<USVString, unsigned long long> perDscpPacketsReceived;
|
|
unsigned long nackCount;
|
|
unsigned long firCount;
|
|
unsigned long pliCount;
|
|
unsigned long sliCount;
|
|
DOMHighResTimeStamp estimatedPlayoutTimestamp;
|
|
double jitterBufferDelay;
|
|
unsigned long long jitterBufferEmittedCount;
|
|
unsigned long long totalSamplesReceived;
|
|
unsigned long long samplesDecodedWithSilk;
|
|
unsigned long long samplesDecodedWithCelt;
|
|
unsigned long long concealedSamples;
|
|
unsigned long long silentConcealedSamples;
|
|
unsigned long long concealmentEvents;
|
|
unsigned long long insertedSamplesForDeceleration;
|
|
unsigned long long removedSamplesForAcceleration;
|
|
double audioLevel;
|
|
double totalAudioEnergy;
|
|
double totalSamplesDuration;
|
|
unsigned long framesReceived;
|
|
// DOMString decoderImplementation;
|
|
|
|
// To be removed as obsolete.
|
|
DOMString trackId;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats {
|
|
DOMString localId;
|
|
double roundTripTime;
|
|
double totalRoundTripTime;
|
|
double fractionLost;
|
|
unsigned long long reportsReceived;
|
|
unsigned long long roundTripTimeMeasurements;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCSentRtpStreamStats : RTCRtpStreamStats {
|
|
unsigned long packetsSent;
|
|
unsigned long long bytesSent;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
|
|
unsigned long rtxSsrc;
|
|
DOMString mediaSourceId;
|
|
DOMString senderId;
|
|
DOMString remoteId;
|
|
DOMString rid;
|
|
DOMHighResTimeStamp lastPacketSentTimestamp;
|
|
unsigned long long headerBytesSent;
|
|
unsigned long packetsDiscardedOnSend;
|
|
unsigned long long bytesDiscardedOnSend;
|
|
unsigned long fecPacketsSent;
|
|
unsigned long long retransmittedPacketsSent;
|
|
unsigned long long retransmittedBytesSent;
|
|
double targetBitrate;
|
|
unsigned long long totalEncodedBytesTarget;
|
|
unsigned long frameWidth;
|
|
unsigned long frameHeight;
|
|
unsigned long frameBitDepth;
|
|
double framesPerSecond;
|
|
unsigned long framesSent;
|
|
unsigned long hugeFramesSent;
|
|
unsigned long framesEncoded;
|
|
unsigned long keyFramesEncoded;
|
|
unsigned long framesDiscardedOnSend;
|
|
unsigned long long qpSum;
|
|
unsigned long long totalSamplesSent;
|
|
unsigned long long samplesEncodedWithSilk;
|
|
unsigned long long samplesEncodedWithCelt;
|
|
boolean voiceActivityFlag;
|
|
double totalEncodeTime;
|
|
double totalPacketSendDelay;
|
|
double averageRtcpInterval;
|
|
// RTCQualityLimitationReason qualityLimitationReason;
|
|
// record<DOMString, double> qualityLimitationDurations;
|
|
unsigned long qualityLimitationResolutionChanges;
|
|
// record<USVString, unsigned long long> perDscpPacketsSent;
|
|
unsigned long nackCount;
|
|
unsigned long firCount;
|
|
unsigned long pliCount;
|
|
unsigned long sliCount;
|
|
// DOMString encoderImplementation;
|
|
|
|
// To be removed as obsolete.
|
|
DOMString trackId;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCMediaStreamTrackStats : RTCStats {
|
|
DOMString trackIdentifier;
|
|
boolean remoteSource;
|
|
boolean ended;
|
|
boolean detached;
|
|
// FIXME: Add sequence<DOMString> ssrcIds;
|
|
unsigned long frameWidth;
|
|
unsigned long frameHeight;
|
|
double framesPerSecond;
|
|
unsigned long framesSent;
|
|
unsigned long framesReceived;
|
|
unsigned long framesDecoded;
|
|
unsigned long framesDropped;
|
|
unsigned long framesCorrupted;
|
|
unsigned long partialFramesLost;
|
|
unsigned long fullFramesLost;
|
|
double audioLevel;
|
|
double echoReturnLoss;
|
|
double echoReturnLossEnhancement;
|
|
|
|
// FIXME: Introduce RTCVideoReceiverStats
|
|
unsigned long freezeCount;
|
|
unsigned long pauseCount;
|
|
double totalFreezesDuration;
|
|
double totalPausesDuration;
|
|
double totalFramesDuration;
|
|
double sumOfSquaredFramesDuration;
|
|
// FIXME: Introduce RTCAudioReceiverStats
|
|
unsigned long long jitterBufferFlushes;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCDataChannelStats : RTCStats {
|
|
DOMString label;
|
|
DOMString protocol;
|
|
long datachannelid;
|
|
// FIXME: Switch state to RTCDataChannelState
|
|
DOMString state;
|
|
unsigned long messagesSent;
|
|
unsigned long long bytesSent;
|
|
unsigned long messagesReceived;
|
|
unsigned long long bytesReceived;
|
|
};
|
|
|
|
enum RTCStatsIceCandidatePairState {
|
|
"frozen",
|
|
"waiting",
|
|
"inprogress",
|
|
"failed",
|
|
"succeeded",
|
|
"cancelled"
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
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;
|
|
double totalRoundTripTime;
|
|
double currentRoundTripTime;
|
|
double availableOutgoingBitrate;
|
|
double availableIncomingBitrate;
|
|
unsigned long long requestsReceived;
|
|
unsigned long long requestsSent;
|
|
unsigned long long responsesReceived;
|
|
unsigned long long responsesSent;
|
|
// FIXME: Expose other fields once libwebrtc support them.
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCIceCandidateStats : RTCStats {
|
|
DOMString transportId;
|
|
// FIXME: decide whether to expose networkType
|
|
// FIXME: Expose relayProtocol
|
|
DOMString address;
|
|
long port;
|
|
DOMString protocol;
|
|
RTCIceCandidateType candidateType;
|
|
long priority;
|
|
DOMString url;
|
|
boolean deleted = false;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCCertificateStats : RTCStats {
|
|
DOMString fingerprint;
|
|
DOMString fingerprintAlgorithm;
|
|
DOMString base64Certificate;
|
|
DOMString issuerCertificateId;
|
|
};
|
|
|
|
enum RTCCodecType {
|
|
"encode",
|
|
"decode"
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCCodecStats : RTCStats {
|
|
unsigned long payloadType;
|
|
RTCCodecType codecType;
|
|
DOMString transportId;
|
|
DOMString mimeType;
|
|
unsigned long clockRate;
|
|
unsigned long channels;
|
|
DOMString sdpFmtpLine;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCTransportStats : RTCStats {
|
|
// FIXME 169662: Support more fields.
|
|
// unsigned long packetsSent;
|
|
// unsigned long packetsReceived;
|
|
unsigned long long bytesSent;
|
|
unsigned long long bytesReceived;
|
|
DOMString rtcpTransportStatsId;
|
|
// RTCIceRole iceRole;
|
|
// DOMString iceLocalUsernameFragment;
|
|
required DOMString dtlsState;
|
|
// RTCIceTransportState iceState;
|
|
DOMString selectedCandidatePairId;
|
|
DOMString localCertificateId;
|
|
DOMString remoteCertificateId;
|
|
DOMString tlsVersion;
|
|
DOMString dtlsCipher;
|
|
DOMString srtpCipher;
|
|
// DOMString tlsGroup;
|
|
// unsigned long selectedCandidatePairChanges;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCPeerConnectionStats : RTCStats {
|
|
// FIXME 169662: Support more fields.
|
|
unsigned long dataChannelsOpened;
|
|
unsigned long dataChannelsClosed;
|
|
// unsigned long dataChannelsRequested;
|
|
// unsigned long dataChannelsAccepted;
|
|
};
|
|
|
|
[ JSGenerateToJSObject ]
|
|
dictionary RTCMediaSourceStats : RTCStats {
|
|
required DOMString trackIdentifier;
|
|
required DOMString kind;
|
|
boolean relayedSource;
|
|
};
|
|
|
|
dictionary RTCAudioSourceStats : RTCMediaSourceStats {
|
|
double audioLevel;
|
|
double totalAudioEnergy;
|
|
double totalSamplesDuration;
|
|
double echoReturnLoss;
|
|
double echoReturnLossEnhancement;
|
|
};
|
|
|
|
dictionary RTCVideoSourceStats : RTCMediaSourceStats {
|
|
unsigned long width;
|
|
unsigned long height;
|
|
unsigned long bitDepth;
|
|
unsigned long frames;
|
|
double framesPerSecond;
|
|
};
|
|
|
|
// FIXME 169662: missing RTCMediaStreamStats
|