From c57310b982cdce138723de91d7b722f8199834ab Mon Sep 17 00:00:00 2001 From: "tommi@webrtc.org" Date: Fri, 12 Dec 2014 17:41:28 +0000 Subject: [PATCH] Switch kStatsValueName* constants to be enums instead of char*. This is to guard against potentially assigning a value name to an incorrect value, non-static string or otherwise assume they can be treated as strings. R=perkj@webrtc.org Review URL: https://webrtc-codereview.appspot.com/26359004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7884 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../app/webrtc/java/jni/peerconnection_jni.cc | 4 +- talk/app/webrtc/statstypes.cc | 337 ++++++++++-------- talk/app/webrtc/statstypes.h | 202 +++++------ 3 files changed, 288 insertions(+), 255 deletions(-) diff --git a/talk/app/webrtc/java/jni/peerconnection_jni.cc b/talk/app/webrtc/java/jni/peerconnection_jni.cc index 43faa9ce7d..cb86877b5f 100644 --- a/talk/app/webrtc/java/jni/peerconnection_jni.cc +++ b/talk/app/webrtc/java/jni/peerconnection_jni.cc @@ -1022,7 +1022,9 @@ class StatsObserverWrapper : public StatsObserver { for (int i = 0; i < values.size(); ++i) { ScopedLocalRefFrame local_ref_frame(jni); const StatsReport::Value& value = values[i]; - jstring j_name = JavaStringFromStdString(jni, value.name); + // Should we use the '.name' enum value here instead of converting the + // name to a string? + jstring j_name = JavaStringFromStdString(jni, value.display_name()); jstring j_value = JavaStringFromStdString(jni, value.value); jobject j_element_value = jni->NewObject(*j_value_class_, j_value_ctor_, j_name, j_value); diff --git a/talk/app/webrtc/statstypes.cc b/talk/app/webrtc/statstypes.cc index 51838acb44..8547520069 100644 --- a/talk/app/webrtc/statstypes.cc +++ b/talk/app/webrtc/statstypes.cc @@ -29,148 +29,6 @@ namespace webrtc { -// The items below are in alphabetical order. -const char StatsReport::kStatsValueNameActiveConnection[] = - "googActiveConnection"; -const char StatsReport::kStatsValueNameActualEncBitrate[] = - "googActualEncBitrate"; -const char StatsReport::kStatsValueNameAudioOutputLevel[] = "audioOutputLevel"; -const char StatsReport::kStatsValueNameAudioInputLevel[] = "audioInputLevel"; -const char StatsReport::kStatsValueNameAvailableReceiveBandwidth[] = - "googAvailableReceiveBandwidth"; -const char StatsReport::kStatsValueNameAvailableSendBandwidth[] = - "googAvailableSendBandwidth"; -const char StatsReport::kStatsValueNameAvgEncodeMs[] = "googAvgEncodeMs"; -const char StatsReport::kStatsValueNameBucketDelay[] = "googBucketDelay"; -const char StatsReport::kStatsValueNameBytesReceived[] = "bytesReceived"; -const char StatsReport::kStatsValueNameBytesSent[] = "bytesSent"; -const char StatsReport::kStatsValueNameBandwidthLimitedResolution[] = - "googBandwidthLimitedResolution"; -const char StatsReport::kStatsValueNameCaptureJitterMs[] = - "googCaptureJitterMs"; -const char StatsReport::kStatsValueNameCaptureQueueDelayMsPerS[] = - "googCaptureQueueDelayMsPerS"; -const char StatsReport::kStatsValueNameChannelId[] = "googChannelId"; -const char StatsReport::kStatsValueNameCodecName[] = "googCodecName"; -const char StatsReport::kStatsValueNameComponent[] = "googComponent"; -const char StatsReport::kStatsValueNameContentName[] = "googContentName"; -const char StatsReport::kStatsValueNameCpuLimitedResolution[] = - "googCpuLimitedResolution"; -const char StatsReport::kStatsValueNameDecodingCTSG[] = - "googDecodingCTSG"; -const char StatsReport::kStatsValueNameDecodingCTN[] = - "googDecodingCTN"; -const char StatsReport::kStatsValueNameDecodingNormal[] = - "googDecodingNormal"; -const char StatsReport::kStatsValueNameDecodingPLC[] = - "googDecodingPLC"; -const char StatsReport::kStatsValueNameDecodingCNG[] = - "googDecodingCNG"; -const char StatsReport::kStatsValueNameDecodingPLCCNG[] = - "googDecodingPLCCNG"; -const char StatsReport::kStatsValueNameDer[] = "googDerBase64"; -// Echo metrics from the audio processing module. -const char StatsReport::kStatsValueNameEchoCancellationQualityMin[] = - "googEchoCancellationQualityMin"; -const char StatsReport::kStatsValueNameEchoDelayMedian[] = - "googEchoCancellationEchoDelayMedian"; -const char StatsReport::kStatsValueNameEchoDelayStdDev[] = - "googEchoCancellationEchoDelayStdDev"; -const char StatsReport::kStatsValueNameEchoReturnLoss[] = - "googEchoCancellationReturnLoss"; -const char StatsReport::kStatsValueNameEchoReturnLossEnhancement[] = - "googEchoCancellationReturnLossEnhancement"; - -const char StatsReport::kStatsValueNameEncodeUsagePercent[] = - "googEncodeUsagePercent"; -const char StatsReport::kStatsValueNameExpandRate[] = "googExpandRate"; -const char StatsReport::kStatsValueNameFingerprint[] = "googFingerprint"; -const char StatsReport::kStatsValueNameFingerprintAlgorithm[] = - "googFingerprintAlgorithm"; -const char StatsReport::kStatsValueNameFirsReceived[] = "googFirsReceived"; -const char StatsReport::kStatsValueNameFirsSent[] = "googFirsSent"; -const char StatsReport::kStatsValueNameFrameHeightInput[] = - "googFrameHeightInput"; -const char StatsReport::kStatsValueNameFrameHeightReceived[] = - "googFrameHeightReceived"; -const char StatsReport::kStatsValueNameFrameHeightSent[] = - "googFrameHeightSent"; -const char StatsReport::kStatsValueNameFrameRateReceived[] = - "googFrameRateReceived"; -const char StatsReport::kStatsValueNameFrameRateDecoded[] = - "googFrameRateDecoded"; -const char StatsReport::kStatsValueNameFrameRateOutput[] = - "googFrameRateOutput"; -const char StatsReport::kStatsValueNameDecodeMs[] = "googDecodeMs"; -const char StatsReport::kStatsValueNameMaxDecodeMs[] = "googMaxDecodeMs"; -const char StatsReport::kStatsValueNameCurrentDelayMs[] = "googCurrentDelayMs"; -const char StatsReport::kStatsValueNameTargetDelayMs[] = "googTargetDelayMs"; -const char StatsReport::kStatsValueNameJitterBufferMs[] = "googJitterBufferMs"; -const char StatsReport::kStatsValueNameMinPlayoutDelayMs[] = - "googMinPlayoutDelayMs"; -const char StatsReport::kStatsValueNameRenderDelayMs[] = "googRenderDelayMs"; - -const char StatsReport::kStatsValueNameCaptureStartNtpTimeMs[] = - "googCaptureStartNtpTimeMs"; - -const char StatsReport::kStatsValueNameFrameRateInput[] = "googFrameRateInput"; -const char StatsReport::kStatsValueNameFrameRateSent[] = "googFrameRateSent"; -const char StatsReport::kStatsValueNameFrameWidthInput[] = - "googFrameWidthInput"; -const char StatsReport::kStatsValueNameFrameWidthReceived[] = - "googFrameWidthReceived"; -const char StatsReport::kStatsValueNameFrameWidthSent[] = "googFrameWidthSent"; -const char StatsReport::kStatsValueNameInitiator[] = "googInitiator"; -const char StatsReport::kStatsValueNameIssuerId[] = "googIssuerId"; -const char StatsReport::kStatsValueNameJitterReceived[] = "googJitterReceived"; -const char StatsReport::kStatsValueNameLocalAddress[] = "googLocalAddress"; -const char StatsReport::kStatsValueNameLocalCandidateType[] = - "googLocalCandidateType"; -const char StatsReport::kStatsValueNameLocalCertificateId[] = - "googLocalCertificateId"; -const char StatsReport::kStatsValueNameAdaptationChanges[] = - "googAdaptationChanges"; -const char StatsReport::kStatsValueNameNacksReceived[] = "googNacksReceived"; -const char StatsReport::kStatsValueNameNacksSent[] = "googNacksSent"; -const char StatsReport::kStatsValueNamePlisReceived[] = "googPlisReceived"; -const char StatsReport::kStatsValueNamePlisSent[] = "googPlisSent"; -const char StatsReport::kStatsValueNamePacketsReceived[] = "packetsReceived"; -const char StatsReport::kStatsValueNamePacketsSent[] = "packetsSent"; -const char StatsReport::kStatsValueNamePacketsLost[] = "packetsLost"; -const char StatsReport::kStatsValueNamePreferredJitterBufferMs[] = - "googPreferredJitterBufferMs"; -const char StatsReport::kStatsValueNameReadable[] = "googReadable"; -const char StatsReport::kStatsValueNameRecvPacketGroupArrivalTimeDebug[] = - "googReceivedPacketGroupArrivalTimeDebug"; -const char StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaDebug[] = - "googReceivedPacketGroupPropagationDeltaDebug"; -const char -StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug[] = - "googReceivedPacketGroupPropagationDeltaSumDebug"; -const char StatsReport::kStatsValueNameRemoteAddress[] = "googRemoteAddress"; -const char StatsReport::kStatsValueNameRemoteCandidateType[] = - "googRemoteCandidateType"; -const char StatsReport::kStatsValueNameRemoteCertificateId[] = - "googRemoteCertificateId"; -const char StatsReport::kStatsValueNameRetransmitBitrate[] = - "googRetransmitBitrate"; -const char StatsReport::kStatsValueNameRtt[] = "googRtt"; -const char StatsReport::kStatsValueNameSsrc[] = "ssrc"; -const char StatsReport::kStatsValueNameSendPacketsDiscarded[] = - "packetsDiscardedOnSend"; -const char StatsReport::kStatsValueNameTargetEncBitrate[] = - "googTargetEncBitrate"; -const char StatsReport::kStatsValueNameTransmitBitrate[] = - "googTransmitBitrate"; -const char StatsReport::kStatsValueNameTransportId[] = "transportId"; -const char StatsReport::kStatsValueNameTransportType[] = "googTransportType"; -const char StatsReport::kStatsValueNameTrackId[] = "googTrackId"; -const char StatsReport::kStatsValueNameTypingNoiseState[] = - "googTypingNoiseState"; -const char StatsReport::kStatsValueNameViewLimitedResolution[] = - "googViewLimitedResolution"; -const char StatsReport::kStatsValueNameWritable[] = "googWritable"; - const char StatsReport::kStatsReportTypeSession[] = "googLibjingleSession"; const char StatsReport::kStatsReportTypeBwe[] = "VideoBwe"; const char StatsReport::kStatsReportTypeRemoteSsrc[] = "remoteSsrc"; @@ -218,10 +76,6 @@ bool StatsReport::operator==(const std::string& other_id) const { return id == other_id; } -StatsReport::Value::Value() - : name(NULL) { -} - // The copy ctor can't be declared as explicit due to problems with STL. StatsReport::Value::Value(const Value& other) : name(other.name), value(other.value) { @@ -241,11 +95,194 @@ StatsReport::Value& StatsReport::Value::operator=(const Value& other) { return *this; } -// TODO(tommi): Change implementation to do a simple enum value-to-static- -// string conversion when client code has been updated to use this method -// instead of the |name| member variable. const char* StatsReport::Value::display_name() const { - return name; + switch (name) { + case kStatsValueNameAudioOutputLevel: + return "audioOutputLevel"; + case kStatsValueNameAudioInputLevel: + return "audioInputLevel"; + case kStatsValueNameBytesSent: + return "bytesSent"; + case kStatsValueNamePacketsSent: + return "packetsSent"; + case kStatsValueNameBytesReceived: + return "bytesReceived"; + case kStatsValueNamePacketsReceived: + return "packetsReceived"; + case kStatsValueNamePacketsLost: + return "packetsLost"; + case kStatsValueNameTransportId: + return "transportId"; + case kStatsValueNameSsrc: + return "ssrc"; + + // 'goog' prefixed constants. + case kStatsValueNameActiveConnection: + return "googActiveConnection"; + case kStatsValueNameActualEncBitrate: + return "googActualEncBitrate"; + case kStatsValueNameAvailableReceiveBandwidth: + return "googAvailableReceiveBandwidth"; + case kStatsValueNameAvailableSendBandwidth: + return "googAvailableSendBandwidth"; + case kStatsValueNameAvgEncodeMs: + return "googAvgEncodeMs"; + case kStatsValueNameBucketDelay: + return "googBucketDelay"; + case kStatsValueNameBandwidthLimitedResolution: + return "googBandwidthLimitedResolution"; + case kStatsValueNameCaptureJitterMs: + return "googCaptureJitterMs"; + case kStatsValueNameCaptureQueueDelayMsPerS: + return "googCaptureQueueDelayMsPerS"; + case kStatsValueNameChannelId: + return "googChannelId"; + case kStatsValueNameCodecName: + return "googCodecName"; + case kStatsValueNameComponent: + return "googComponent"; + case kStatsValueNameContentName: + return "googContentName"; + case kStatsValueNameCpuLimitedResolution: + return "googCpuLimitedResolution"; + case kStatsValueNameDecodingCTSG: + return "googDecodingCTSG"; + case kStatsValueNameDecodingCTN: + return "googDecodingCTN"; + case kStatsValueNameDecodingNormal: + return "googDecodingNormal"; + case kStatsValueNameDecodingPLC: + return "googDecodingPLC"; + case kStatsValueNameDecodingCNG: + return "googDecodingCNG"; + case kStatsValueNameDecodingPLCCNG: + return "googDecodingPLCCNG"; + case kStatsValueNameDer: + return "googDerBase64"; + case kStatsValueNameEchoCancellationQualityMin: + return "googEchoCancellationQualityMin"; + case kStatsValueNameEchoDelayMedian: + return "googEchoCancellationEchoDelayMedian"; + case kStatsValueNameEchoDelayStdDev: + return "googEchoCancellationEchoDelayStdDev"; + case kStatsValueNameEchoReturnLoss: + return "googEchoCancellationReturnLoss"; + case kStatsValueNameEchoReturnLossEnhancement: + return "googEchoCancellationReturnLossEnhancement"; + case kStatsValueNameEncodeUsagePercent: + return "googEncodeUsagePercent"; + case kStatsValueNameExpandRate: + return "googExpandRate"; + case kStatsValueNameFingerprint: + return "googFingerprint"; + case kStatsValueNameFingerprintAlgorithm: + return "googFingerprintAlgorithm"; + case kStatsValueNameFirsReceived: + return "googFirsReceived"; + case kStatsValueNameFirsSent: + return "googFirsSent"; + case kStatsValueNameFrameHeightInput: + return "googFrameHeightInput"; + case kStatsValueNameFrameHeightReceived: + return "googFrameHeightReceived"; + case kStatsValueNameFrameHeightSent: + return "googFrameHeightSent"; + case kStatsValueNameFrameRateReceived: + return "googFrameRateReceived"; + case kStatsValueNameFrameRateDecoded: + return "googFrameRateDecoded"; + case kStatsValueNameFrameRateOutput: + return "googFrameRateOutput"; + case kStatsValueNameDecodeMs: + return "googDecodeMs"; + case kStatsValueNameMaxDecodeMs: + return "googMaxDecodeMs"; + case kStatsValueNameCurrentDelayMs: + return "googCurrentDelayMs"; + case kStatsValueNameTargetDelayMs: + return "googTargetDelayMs"; + case kStatsValueNameJitterBufferMs: + return "googJitterBufferMs"; + case kStatsValueNameMinPlayoutDelayMs: + return "googMinPlayoutDelayMs"; + case kStatsValueNameRenderDelayMs: + return "googRenderDelayMs"; + case kStatsValueNameCaptureStartNtpTimeMs: + return "googCaptureStartNtpTimeMs"; + case kStatsValueNameFrameRateInput: + return "googFrameRateInput"; + case kStatsValueNameFrameRateSent: + return "googFrameRateSent"; + case kStatsValueNameFrameWidthInput: + return "googFrameWidthInput"; + case kStatsValueNameFrameWidthReceived: + return "googFrameWidthReceived"; + case kStatsValueNameFrameWidthSent: + return "googFrameWidthSent"; + case kStatsValueNameInitiator: + return "googInitiator"; + case kStatsValueNameIssuerId: + return "googIssuerId"; + case kStatsValueNameJitterReceived: + return "googJitterReceived"; + case kStatsValueNameLocalAddress: + return "googLocalAddress"; + case kStatsValueNameLocalCandidateType: + return "googLocalCandidateType"; + case kStatsValueNameLocalCertificateId: + return "googLocalCertificateId"; + case kStatsValueNameAdaptationChanges: + return "googAdaptationChanges"; + case kStatsValueNameNacksReceived: + return "googNacksReceived"; + case kStatsValueNameNacksSent: + return "googNacksSent"; + case kStatsValueNamePlisReceived: + return "googPlisReceived"; + case kStatsValueNamePlisSent: + return "googPlisSent"; + case kStatsValueNamePreferredJitterBufferMs: + return "googPreferredJitterBufferMs"; + case kStatsValueNameReadable: + return "googReadable"; + case kStatsValueNameRecvPacketGroupArrivalTimeDebug: + return "googReceivedPacketGroupArrivalTimeDebug"; + case kStatsValueNameRecvPacketGroupPropagationDeltaDebug: + return "googReceivedPacketGroupPropagationDeltaDebug"; + case kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug: + return "googReceivedPacketGroupPropagationDeltaSumDebug"; + case kStatsValueNameRemoteAddress: + return "googRemoteAddress"; + case kStatsValueNameRemoteCandidateType: + return "googRemoteCandidateType"; + case kStatsValueNameRemoteCertificateId: + return "googRemoteCertificateId"; + case kStatsValueNameRetransmitBitrate: + return "googRetransmitBitrate"; + case kStatsValueNameRtt: + return "googRtt"; + case kStatsValueNameSendPacketsDiscarded: + return "packetsDiscardedOnSend"; + case kStatsValueNameTargetEncBitrate: + return "googTargetEncBitrate"; + case kStatsValueNameTransmitBitrate: + return "googTransmitBitrate"; + case kStatsValueNameTransportType: + return "googTransportType"; + case kStatsValueNameTrackId: + return "googTrackId"; + case kStatsValueNameTypingNoiseState: + return "googTypingNoiseState"; + case kStatsValueNameViewLimitedResolution: + return "googViewLimitedResolution"; + case kStatsValueNameWritable: + return "googWritable"; + default: + ASSERT(false); + break; + } + + return nullptr; } void StatsReport::AddValue(StatsReport::StatsValueName name, diff --git a/talk/app/webrtc/statstypes.h b/talk/app/webrtc/statstypes.h index f2a23d04fc..d47dc18534 100644 --- a/talk/app/webrtc/statstypes.h +++ b/talk/app/webrtc/statstypes.h @@ -65,10 +65,6 @@ class StatsReport { // without requiring a new StatsReport instance. bool operator==(const std::string& other_id) const; - // TODO(tommi): Change this to be an enum type that holds all the - // kStatsValueName constants. - typedef const char* StatsValueName; - // The unique identifier for this object. // This is used as a key for this report in ordered containers, // so it must never be changed. @@ -76,8 +72,102 @@ class StatsReport { std::string id; // See below for contents. std::string type; // See below for contents. + // StatsValue names. + enum StatsValueName { + kStatsValueNameActiveConnection, + kStatsValueNameAudioInputLevel, + kStatsValueNameAudioOutputLevel, + kStatsValueNameBytesReceived, + kStatsValueNameBytesSent, + kStatsValueNamePacketsLost, + kStatsValueNamePacketsReceived, + kStatsValueNamePacketsSent, + kStatsValueNameReadable, + kStatsValueNameSsrc, + kStatsValueNameTransportId, + + // Internal StatsValue names. + kStatsValueNameActualEncBitrate, + kStatsValueNameAdaptationChanges, + kStatsValueNameAvailableReceiveBandwidth, + kStatsValueNameAvailableSendBandwidth, + kStatsValueNameAvgEncodeMs, + kStatsValueNameBandwidthLimitedResolution, + kStatsValueNameBucketDelay, + kStatsValueNameCaptureJitterMs, + kStatsValueNameCaptureQueueDelayMsPerS, + kStatsValueNameCaptureStartNtpTimeMs, + kStatsValueNameChannelId, + kStatsValueNameCodecName, + kStatsValueNameComponent, + kStatsValueNameContentName, + kStatsValueNameCpuLimitedResolution, + kStatsValueNameCurrentDelayMs, + kStatsValueNameDecodeMs, + kStatsValueNameDecodingCNG, + kStatsValueNameDecodingCTN, + kStatsValueNameDecodingCTSG, + kStatsValueNameDecodingNormal, + kStatsValueNameDecodingPLC, + kStatsValueNameDecodingPLCCNG, + kStatsValueNameDer, + kStatsValueNameEchoCancellationQualityMin, + kStatsValueNameEchoDelayMedian, + kStatsValueNameEchoDelayStdDev, + kStatsValueNameEchoReturnLoss, + kStatsValueNameEchoReturnLossEnhancement, + kStatsValueNameEncodeUsagePercent, + kStatsValueNameExpandRate, + kStatsValueNameFingerprint, + kStatsValueNameFingerprintAlgorithm, + kStatsValueNameFirsReceived, + kStatsValueNameFirsSent, + kStatsValueNameFrameHeightInput, + kStatsValueNameFrameHeightReceived, + kStatsValueNameFrameHeightSent, + kStatsValueNameFrameRateDecoded, + kStatsValueNameFrameRateInput, + kStatsValueNameFrameRateOutput, + kStatsValueNameFrameRateReceived, + kStatsValueNameFrameRateSent, + kStatsValueNameFrameWidthInput, + kStatsValueNameFrameWidthReceived, + kStatsValueNameFrameWidthSent, + kStatsValueNameInitiator, + kStatsValueNameIssuerId, + kStatsValueNameJitterBufferMs, + kStatsValueNameJitterReceived, + kStatsValueNameLocalAddress, + kStatsValueNameLocalCandidateType, + kStatsValueNameLocalCertificateId, + kStatsValueNameMaxDecodeMs, + kStatsValueNameMinPlayoutDelayMs, + kStatsValueNameNacksReceived, + kStatsValueNameNacksSent, + kStatsValueNamePlisReceived, + kStatsValueNamePlisSent, + kStatsValueNamePreferredJitterBufferMs, + kStatsValueNameRecvPacketGroupArrivalTimeDebug, + kStatsValueNameRecvPacketGroupPropagationDeltaDebug, + kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug, + kStatsValueNameRemoteAddress, + kStatsValueNameRemoteCandidateType, + kStatsValueNameRemoteCertificateId, + kStatsValueNameRenderDelayMs, + kStatsValueNameRetransmitBitrate, + kStatsValueNameRtt, + kStatsValueNameSendPacketsDiscarded, + kStatsValueNameTargetDelayMs, + kStatsValueNameTargetEncBitrate, + kStatsValueNameTrackId, + kStatsValueNameTransmitBitrate, + kStatsValueNameTransportType, + kStatsValueNameTypingNoiseState, + kStatsValueNameViewLimitedResolution, + kStatsValueNameWritable, + }; + struct Value { - Value(); // The copy ctor can't be declared as explicit due to problems with STL. Value(const Value& other); explicit Value(StatsValueName name); @@ -88,9 +178,7 @@ class StatsReport { // The public |name| member variable is otherwise meant to be read-only. Value& operator=(const Value& other); - // TODO(tommi): Change implementation to do a simple enum value-to-static- - // string conversion when client code has been updated to use this method - // instead of the |name| member variable. + // Returns the string representation of |name|. const char* display_name() const; const StatsValueName name; @@ -153,9 +241,6 @@ class StatsReport { // ICE Candidate. It links to its transport. static const char kStatsReportTypeIceCandidate[]; - // The id of StatsReport of type VideoBWE. - static const char kStatsReportVideoBweId[]; - // A StatsReport of |type| = "googCertificate" contains an SSL certificate // transmitted by one of the endpoints of this connection. The |id| is // controlled by the fingerprint, and is used to identify the certificate in @@ -164,99 +249,8 @@ class StatsReport { // "googIssuerId"). static const char kStatsReportTypeCertificate[]; - // StatsValue names - static const char kStatsValueNameAudioOutputLevel[]; - static const char kStatsValueNameAudioInputLevel[]; - static const char kStatsValueNameBytesSent[]; - static const char kStatsValueNamePacketsSent[]; - static const char kStatsValueNameBytesReceived[]; - static const char kStatsValueNamePacketsReceived[]; - static const char kStatsValueNamePacketsLost[]; - static const char kStatsValueNameTransportId[]; - static const char kStatsValueNameLocalAddress[]; - static const char kStatsValueNameRemoteAddress[]; - static const char kStatsValueNameWritable[]; - static const char kStatsValueNameReadable[]; - static const char kStatsValueNameActiveConnection[]; - - - // Internal StatsValue names - static const char kStatsValueNameAvgEncodeMs[]; - static const char kStatsValueNameEncodeUsagePercent[]; - static const char kStatsValueNameCaptureJitterMs[]; - static const char kStatsValueNameCaptureQueueDelayMsPerS[]; - static const char kStatsValueNameCodecName[]; - static const char kStatsValueNameBandwidthLimitedResolution[]; - static const char kStatsValueNameCpuLimitedResolution[]; - static const char kStatsValueNameViewLimitedResolution[]; - static const char kStatsValueNameAdaptationChanges[]; - static const char kStatsValueNameEchoCancellationQualityMin[]; - static const char kStatsValueNameEchoDelayMedian[]; - static const char kStatsValueNameEchoDelayStdDev[]; - static const char kStatsValueNameEchoReturnLoss[]; - static const char kStatsValueNameEchoReturnLossEnhancement[]; - static const char kStatsValueNameExpandRate[]; - static const char kStatsValueNameFirsReceived[]; - static const char kStatsValueNameFirsSent[]; - static const char kStatsValueNameFrameHeightInput[]; - static const char kStatsValueNameFrameHeightReceived[]; - static const char kStatsValueNameFrameHeightSent[]; - static const char kStatsValueNameFrameRateReceived[]; - static const char kStatsValueNameFrameRateDecoded[]; - static const char kStatsValueNameFrameRateOutput[]; - static const char kStatsValueNameDecodeMs[]; - static const char kStatsValueNameMaxDecodeMs[]; - static const char kStatsValueNameCurrentDelayMs[]; - static const char kStatsValueNameTargetDelayMs[]; - static const char kStatsValueNameJitterBufferMs[]; - static const char kStatsValueNameMinPlayoutDelayMs[]; - static const char kStatsValueNameRenderDelayMs[]; - static const char kStatsValueNameCaptureStartNtpTimeMs[]; - static const char kStatsValueNameFrameRateInput[]; - static const char kStatsValueNameFrameRateSent[]; - static const char kStatsValueNameFrameWidthInput[]; - static const char kStatsValueNameFrameWidthReceived[]; - static const char kStatsValueNameFrameWidthSent[]; - static const char kStatsValueNameJitterReceived[]; - static const char kStatsValueNameNacksReceived[]; - static const char kStatsValueNameNacksSent[]; - static const char kStatsValueNamePlisReceived[]; - static const char kStatsValueNamePlisSent[]; - static const char kStatsValueNamePreferredJitterBufferMs[]; - static const char kStatsValueNameRtt[]; - static const char kStatsValueNameAvailableSendBandwidth[]; - static const char kStatsValueNameAvailableReceiveBandwidth[]; - static const char kStatsValueNameTargetEncBitrate[]; - static const char kStatsValueNameActualEncBitrate[]; - static const char kStatsValueNameRetransmitBitrate[]; - static const char kStatsValueNameTransmitBitrate[]; - static const char kStatsValueNameBucketDelay[]; - static const char kStatsValueNameInitiator[]; - static const char kStatsValueNameTransportType[]; - static const char kStatsValueNameContentName[]; - static const char kStatsValueNameComponent[]; - static const char kStatsValueNameChannelId[]; - static const char kStatsValueNameTrackId[]; - static const char kStatsValueNameSsrc[]; - static const char kStatsValueNameSendPacketsDiscarded[]; - static const char kStatsValueNameTypingNoiseState[]; - static const char kStatsValueNameDer[]; - static const char kStatsValueNameFingerprint[]; - static const char kStatsValueNameFingerprintAlgorithm[]; - static const char kStatsValueNameIssuerId[]; - static const char kStatsValueNameLocalCertificateId[]; - static const char kStatsValueNameRemoteCertificateId[]; - static const char kStatsValueNameLocalCandidateType[]; - static const char kStatsValueNameRemoteCandidateType[]; - static const char kStatsValueNameRecvPacketGroupArrivalTimeDebug[]; - static const char kStatsValueNameRecvPacketGroupPropagationDeltaDebug[]; - static const char kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug[]; - static const char kStatsValueNameDecodingCTSG[]; - static const char kStatsValueNameDecodingCTN[]; - static const char kStatsValueNameDecodingNormal[]; - static const char kStatsValueNameDecodingPLC[]; - static const char kStatsValueNameDecodingCNG[]; - static const char kStatsValueNameDecodingPLCCNG[]; + // The id of StatsReport of type VideoBWE. + static const char kStatsReportVideoBweId[]; }; // This class is provided for the cases where we need to keep