twilio-video
Version:
Twilio Video JavaScript Library
87 lines • 3.29 kB
JavaScript
/* eslint no-undefined:0 */
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var average = require('./average');
var SenderOrReceiverReport = require('./senderorreceiverreport');
var sum = require('./sum');
/**
* @interface SenderSummary
* @property {number} bitrate
* @property {number} [rtt] - s (undefined in Chrome)
*/
/**
* @extends SenderOrReceiverReport
* @property {number} [rtt] - s (undefined in Chrome)
*/
var SenderReport = /** @class */ (function (_super) {
__extends(SenderReport, _super);
/**
* Construct a {@link SenderReport}.
* @param {StatsId} id
* @param {TrackId} trackId
* @param {number} bitrate - bps
* @param {number} [rtt] - s
*/
function SenderReport(id, trackId, bitrate, rtt) {
var _this = _super.call(this, id, trackId, bitrate) || this;
Object.defineProperties(_this, {
rtt: {
enumerable: true,
value: rtt
}
});
return _this;
}
/**
* Create a {@link SenderReport}.
* @param {string} trackId
* @param {RTCStats} olderStats
* @param {RTCStats} newerStats
* @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]
* @returns {SenderReport}
*/
SenderReport.of = function (trackId, olderStats, newerStats, newerRemoteStats) {
if (olderStats.id !== newerStats.id) {
throw new Error('RTCStats IDs must match');
}
var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;
var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;
var bitrate = secondsElapsed > 0
? (deltaBytesSent / secondsElapsed) * 8
: 0;
var rtt = newerRemoteStats && typeof newerRemoteStats.roundTripTime === 'number'
? newerRemoteStats.roundTripTime / 1000
: undefined;
return new SenderReport(olderStats.id, trackId, bitrate, rtt);
};
/**
* Summarize {@link SenderReport}s by summing and averaging their values.
* @param {Array<SenderReport>} reports
* @returns {SenderSummary}
*/
SenderReport.summarize = function (reports) {
var bitrate = sum(reports.map(function (report) { return report.bitrate; }));
var rtt = average(reports.map(function (report) { return report.rtt; }));
return {
bitrate: bitrate,
rtt: rtt
};
};
return SenderReport;
}(SenderOrReceiverReport));
module.exports = SenderReport;
//# sourceMappingURL=senderreport.js.map