Skip to content

1.2.0 (#7)

Latest

Choose a tag to compare

@balazskreith balazskreith released this 13 Oct 19:54
· 2 commits to master since this release
b0a0dbe

1.2.0

ObservedClient session totals

New public fields that accumulate over the whole session, are never reset per sample, and survive
a peer connection being closed, so a per-client summary can be read directly off the client:

  • RTT: totalRttSumInMs, numberOfRttMeasurements, minRttInMs, maxRttInMs, and
    rttHistogram (50 buckets of 20 ms; the last holds 980 ms and above). rttSummary
    returns a frozen, cached { p50, p75, p95, p99, avg }.
  • Score: scoreHistogram (5 buckets of 1 point over 0..5), minScore, maxScore.
    scoreSummary returns a frozen, cached { p5, p25, p50, p75, p95, avg }. A score of 0 is
    now counted in totalScoreSum / numberOfScoreMeasurements (it was skipped before).
  • Issues: issueHistogram['<type>'] counts raises per base type (resolutions and re-raises of an
    open keyed issue are not counted); totalNumberOfIssues is its sum.
  • Traffic: totalInboundPacketsLost, totalInboundPacketsReceived, totalOutboundPacketsSent,
    totalReceived/SentAudio/VideoBytes, totalTransportReceived/SentBytes, totalDataChannel*.
  • Path: numberOfSamplesOverUdp, numberOfSamplesOverTcp, numberOfSamplesOverTurnUdp,
    numberOfSamplesOverTurnTcp, numberOfSamplesWithUnknownPath. TURN over TCP/TLS is taken from
    the relay candidate's relayProtocol.
  • Other: numberOfPublicAddressChanges, peakSendingBitrate, peakReceivingBitrate.
  • percentileOfHistogram(histogram, bucketWidth, p, options) in utils/stats, for percentiles of
    histograms combined across clients. Exported types RttSummary, ScoreSummary and
    constants RTT_HISTOGRAM_*, SCORE_HISTOGRAM_*.

Breaking: removed ObservedClient.deltaRttLt50Measurements, deltaRttLt150Measurements,
deltaRttLt300Measurements and deltaRttGtOrEq300Measurements; use rttHistogram.

AudioEchoDetector (new, call scope)

call.addDetector('audio-echo-detector') / observer.addCallDetector('audio-echo-detector').
Raises AUDIO_ECHO_SUSPECTED when a participant's outgoing audio follows another participant's
voice: active in at least minFollowRatio of the buckets where the loudest other participant
spoke, with a dB level correlation of at least minCorrelation. The payload names the echoing and
the source track and client, the evidence, the capture device label (from AUDIO_INPUT_DEVICE
metadata) and whether the client's loopback-audio-input issue is open on the track.

Audio level fields

  • ObservedInboundRtp: audioLevel, totalAudioEnergy and totalSamplesDuration are now
    assigned (they were declared but always undefined), plus the per-tick deltaTotalAudioEnergy,
    deltaTotalSamplesDuration and rmsAudioLevel.
  • ObservedMediaSource: deltaTotalAudioEnergy, deltaTotalSamplesDuration, rmsAudioLevel.
  • ObservedOutboundTrack: rmsAudioLevel (media-source level, else the receivers' median),
    rmsAudioLevelSource, receivedRmsAudioLevel, and audioInputDevice.
  • rmsAudioLevel(deltaEnergy, deltaDuration) in utils/stats.

AUDIO_INPUT_DEVICE client metadata

ClientMetaTypes.AUDIO_INPUT_DEVICE (client-monitor-js next) is parsed into
ObservedClient.audioInputDevices, keyed by track id. AudioInputDevice is exported.