Bug 951496 - Codec telemetry. r=jesup

This commit is contained in:
Jan-Ivar Bruaroey 2014-06-07 17:33:39 -04:00
Родитель 72df921a1d
Коммит ed8fb59254
2 изменённых файлов: 144 добавлений и 0 удалений

Просмотреть файл

@ -242,6 +242,8 @@ static void StoreLongTermICEStatisticsImpl_m(
nsresult result,
nsAutoPtr<RTCStatsQuery> query) {
using namespace Telemetry;
if (NS_FAILED(result) ||
!query->error.empty() ||
!query->report->mIceCandidateStats.WasPassed()) {
@ -346,6 +348,78 @@ static void StoreLongTermICEStatisticsImpl_m(
}
}
// Beyond ICE, accumulate telemetry for various PER_CALL settings here.
if (query->report->mOutboundRTPStreamStats.WasPassed()) {
auto& array = query->report->mOutboundRTPStreamStats.Value();
for (decltype(array.Length()) i = 0; i < array.Length(); i++) {
auto& s = array[i];
bool isVideo = (s.mId.Value().Find("video") != -1);
if (!isVideo || s.mIsRemote) {
continue;
}
if (s.mBitrateMean.WasPassed()) {
Accumulate(WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS,
uint32_t(s.mBitrateMean.Value() / 1000));
}
if (s.mBitrateStdDev.WasPassed()) {
Accumulate(WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS,
uint32_t(s.mBitrateStdDev.Value() / 1000));
}
if (s.mFramerateMean.WasPassed()) {
Accumulate(WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL,
uint32_t(s.mFramerateMean.Value()));
}
if (s.mFramerateStdDev.WasPassed()) {
Accumulate(WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL,
uint32_t(s.mFramerateStdDev.Value() * 10));
}
if (s.mDroppedFrames.WasPassed()) {
double mins = (TimeStamp::Now() - query->iceStartTime).ToSeconds() / 60;
if (mins > 0) {
Accumulate(WEBRTC_VIDEO_ENCODER_DROPPED_FRAMES_PER_CALL_FPM,
uint32_t(double(s.mDroppedFrames.Value()) / mins));
}
}
}
}
if (query->report->mInboundRTPStreamStats.WasPassed()) {
auto& array = query->report->mInboundRTPStreamStats.Value();
for (decltype(array.Length()) i = 0; i < array.Length(); i++) {
auto& s = array[i];
bool isVideo = (s.mId.Value().Find("video") != -1);
if (!isVideo || s.mIsRemote) {
continue;
}
if (s.mBitrateMean.WasPassed()) {
Accumulate(WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS,
uint32_t(s.mBitrateMean.Value() / 1000));
}
if (s.mBitrateStdDev.WasPassed()) {
Accumulate(WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS,
uint32_t(s.mBitrateStdDev.Value() / 1000));
}
if (s.mFramerateMean.WasPassed()) {
Accumulate(WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL,
uint32_t(s.mFramerateMean.Value()));
}
if (s.mFramerateStdDev.WasPassed()) {
Accumulate(WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL,
uint32_t(s.mFramerateStdDev.Value() * 10));
}
if (s.mDiscardedPackets.WasPassed()) {
double mins = (TimeStamp::Now() - query->iceStartTime).ToSeconds() / 60;
if (mins > 0) {
Accumulate(WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM,
uint32_t(double(s.mDiscardedPackets.Value()) / mins));
}
}
}
}
// Finally, store the stats
PeerConnectionCtx *ctx = GetPeerConnectionCtx();
if (ctx) {
ctx->mStatsForClosedPeerConnections.AppendElement(*query->report);

Просмотреть файл

@ -5338,6 +5338,76 @@
"n_buckets": 1000,
"description": "Roundtrip time of outbound audio (ms). Sampled every second of a call."
},
"WEBRTC_VIDEO_ENCODER_BITRATE_AVG_PER_CALL_KBPS": {
"expires_in_version": "never",
"kind": "exponential",
"high": 10000,
"n_buckets": 100,
"description": "Video encoder's average bitrate (in kbits/s) over an entire call"
},
"WEBRTC_VIDEO_ENCODER_BITRATE_STD_DEV_PER_CALL_KBPS": {
"expires_in_version": "never",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"description": "Standard deviation from video encoder's average bitrate (in kbits/s) over an entire call"
},
"WEBRTC_VIDEO_ENCODER_FRAMERATE_AVG_PER_CALL": {
"expires_in_version": "never",
"kind": "exponential",
"high": 200,
"n_buckets": 50,
"description": "Video encoder's average framerate (in fps) over an entire call"
},
"WEBRTC_VIDEO_ENCODER_FRAMERATE_10X_STD_DEV_PER_CALL": {
"expires_in_version": "never",
"kind": "exponential",
"high": 200,
"n_buckets": 50,
"description": "Standard deviation from video encoder's average framerate (in 1/10 fps) over an entire call"
},
"WEBRTC_VIDEO_ENCODER_DROPPED_FRAMES_PER_CALL_FPM": {
"expires_in_version": "never",
"kind": "exponential",
"high": 50000,
"n_buckets": 100,
"description": "Video encoder's number of frames dropped (in frames/min) over an entire call"
},
"WEBRTC_VIDEO_DECODER_BITRATE_AVG_PER_CALL_KBPS": {
"expires_in_version": "never",
"kind": "exponential",
"high": 10000,
"n_buckets": 100,
"description": "Video decoder's average bitrate (in kbits/s) over an entire call"
},
"WEBRTC_VIDEO_DECODER_BITRATE_STD_DEV_PER_CALL_KBPS": {
"expires_in_version": "never",
"kind": "exponential",
"high": 5000,
"n_buckets": 100,
"description": "Standard deviation from video decoder's average bitrate (in kbits/s) over an entire call"
},
"WEBRTC_VIDEO_DECODER_FRAMERATE_AVG_PER_CALL": {
"expires_in_version": "never",
"kind": "exponential",
"high": "200",
"n_buckets": "50",
"description": "Video decoder's average framerate (in fps) over an entire call"
},
"WEBRTC_VIDEO_DECODER_FRAMERATE_10X_STD_DEV_PER_CALL": {
"expires_in_version": "never",
"kind": "exponential",
"high": "200",
"n_buckets": "50",
"description": "Standard deviation from video decoder's average framerate (in 1/10 fps) over an entire call"
},
"WEBRTC_VIDEO_DECODER_DISCARDED_PACKETS_PER_CALL_PPM": {
"expires_in_version": "never",
"kind": "exponential",
"high": 50000,
"n_buckets": 100,
"description": "Video decoder's number of discarded packets (in packets/min) over an entire call"
},
"WEBRTC_CALL_DURATION": {
"expires_in_version": "never",
"kind": "exponential",