PSA: More standardized getStats() metrics in M76

773 views
Skip to first unread message

Henrik Boström

unread,
Jun 12, 2019, 8:05:24 AM6/12/19
to discuss-webrtc
For quite some time, several important metrics have only been available in the non-standard getStats() API (goog-stats), preventing applications from migrating to the promise-based getStats() API that shipped over two years ago.
In M76, the key metrics identified in Issue 10428: Unblock Migration to new getStats() API have been implemented (see issue for more details).

The new M76 stats are:
insertedSamplesForDeceleration, removedSamplesForAcceleration (makes googExpandRate and googAccelerateRate obsolete)
- silentConcealedSamples (makes googPreemptiveExpandRate obsolete)
- fecPacketsReceived, fecPacketsDiscarded (makes googSecondaryDecodedRate and googSecondaryDiscardedRate obsolete)
- roundTripTime and other RTCRemoteInboundRtpStreamStats metrics (makes googRtt obsolete)
- totalEncodedBytesTarget (makes googTargetEncBitrate obsolete)
- jitterBufferDelay and jitterBufferEmittedCount for video (audio-equivalent already exists; together makes googJitterBufferMs obsolete)
- qualityLimitationReason (makes googBandwidthLimitedResolution, googCpuLimitedResolution obsolete)
- RTCMediaSourceStats including width, height and framesPerSecond before encoding (makes googFrameWidthInput, googFrameHeightInput and googFrameRateInput obsolete; and goog*[Sent/Received] are already obsolete)
- totalPacketSendDelay (makes googBucketDelay obsolete)

In previous milestone, M75:
- retransmittedBytesSent, retransmittedPacketsSent (makes googActualEncBitrate obsolete by subtracting from bytesSent)
- totalEncodeTime (makes googAvgEncodeMs obsolete and googEncodeUsagePercent unnecessary)
- lastPacketReceivedTimestamp (together with framesDecoded/framesReceived allows detecting freezes, similar to googInterframeDelayMax but not as good for smaller glitches)
- contentType (makes googContentType obsolete)

A follow-up PSA will contain a guide to aid developers in migrating to the standard API; the old and new metrics don't map 1:1.

Henrik Boström

unread,
Jun 12, 2019, 8:06:32 AM6/12/19
to discuss-webrtc

Henrik Boström

unread,
Jul 3, 2019, 9:18:04 AM7/3/19
to discuss-webrtc
See the Chrome Standard getStats() Migration Guide for mappings between the legacy and standard metrics.

Xiaosha Xing

unread,
Aug 1, 2019, 9:25:59 AM8/1/19
to discuss-webrtc
Where do we find `insertedSamplesForDeceleration`? Is it supposed to be in audio receiver track from M76?


On Wednesday, June 12, 2019 at 2:05:24 PM UTC+2, Henrik Boström wrote:

MFC Alerts

unread,
Sep 4, 2019, 4:47:12 AM9/4/19
to discuss-webrtc

ssrc.googNacksReceived

Only applicable to outbound video ssrcs.

inbound-rtp.nackCount


Shouldn't this be outbound-rtp.nackCount?


inbound-rtp.nackCount - Count the total number of Negative ACKnowledgement (NACK) packets sent by this receiver.

whereas

outbound-rtp.nackCount - Count the total number of Negative ACKnowledgement (NACK) packets received by this sender.

Dennis

unread,
Oct 17, 2019, 8:50:13 AM10/17/19
to discuss-webrtc
using the test page https://webrtc.github.io/samples/src/content/peerconnection/constraints/ , I do not see 'fecPacketsReceived' in any report.

Reply all
Reply to author
Forward
0 new messages