@byteplus/veplayer-plugin 2.10.0 → 2.10.2-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/index.development.js +1216 -500
- package/esm/index.production.js +7 -7
- package/esm/veplayer.plugin.rtm.development.js +1168 -452
- package/esm/veplayer.plugin.rtm.production.js +1 -1
- package/package.json +1 -1
- package/umd/veplayer.plugin.rtm.development.js +1168 -452
- package/umd/veplayer.plugin.rtm.production.js +1 -1
|
@@ -577,6 +577,60 @@ function _nonIterableSpread$1() {
|
|
|
577
577
|
function _nonIterableRest() {
|
|
578
578
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
579
579
|
}
|
|
580
|
+
function _createForOfIteratorHelper$1(o, allowArrayLike) {
|
|
581
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
582
|
+
if (!it) {
|
|
583
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
584
|
+
if (it)
|
|
585
|
+
o = it;
|
|
586
|
+
var i = 0;
|
|
587
|
+
var F = function() {
|
|
588
|
+
};
|
|
589
|
+
return {
|
|
590
|
+
s: F,
|
|
591
|
+
n: function() {
|
|
592
|
+
if (i >= o.length)
|
|
593
|
+
return {
|
|
594
|
+
done: true
|
|
595
|
+
};
|
|
596
|
+
return {
|
|
597
|
+
done: false,
|
|
598
|
+
value: o[i++]
|
|
599
|
+
};
|
|
600
|
+
},
|
|
601
|
+
e: function(e) {
|
|
602
|
+
throw e;
|
|
603
|
+
},
|
|
604
|
+
f: F
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
608
|
+
}
|
|
609
|
+
var normalCompletion = true, didErr = false, err;
|
|
610
|
+
return {
|
|
611
|
+
s: function() {
|
|
612
|
+
it = it.call(o);
|
|
613
|
+
},
|
|
614
|
+
n: function() {
|
|
615
|
+
var step = it.next();
|
|
616
|
+
normalCompletion = step.done;
|
|
617
|
+
return step;
|
|
618
|
+
},
|
|
619
|
+
e: function(e) {
|
|
620
|
+
didErr = true;
|
|
621
|
+
err = e;
|
|
622
|
+
},
|
|
623
|
+
f: function() {
|
|
624
|
+
try {
|
|
625
|
+
if (!normalCompletion && it.return != null)
|
|
626
|
+
it.return();
|
|
627
|
+
} finally {
|
|
628
|
+
if (didErr)
|
|
629
|
+
throw err;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
};
|
|
633
|
+
}
|
|
580
634
|
function _toPrimitive$3(input, hint) {
|
|
581
635
|
if (typeof input !== "object" || input === null)
|
|
582
636
|
return input;
|
|
@@ -1699,6 +1753,7 @@ var Errors = /* @__PURE__ */ _createClass$2(
|
|
|
1699
1753
|
var PLAY = "play";
|
|
1700
1754
|
var PAUSE = "pause";
|
|
1701
1755
|
var ERROR = "error";
|
|
1756
|
+
var CANPLAY = "canplay";
|
|
1702
1757
|
var DESTROY = "destroy";
|
|
1703
1758
|
var URL_CHANGE = "urlchange";
|
|
1704
1759
|
function callHandler(obj, handler, next) {
|
|
@@ -2127,6 +2182,37 @@ var BasePlugin = /* @__PURE__ */ function() {
|
|
|
2127
2182
|
}]);
|
|
2128
2183
|
return BasePlugin2;
|
|
2129
2184
|
}();
|
|
2185
|
+
var STATE_CLASS = {
|
|
2186
|
+
DEFAULT: "xgplayer",
|
|
2187
|
+
DEFAULT_SKIN: "xgplayer-skin-default",
|
|
2188
|
+
ENTER: "xgplayer-is-enter",
|
|
2189
|
+
PAUSED: "xgplayer-pause",
|
|
2190
|
+
PLAYING: "xgplayer-playing",
|
|
2191
|
+
ENDED: "xgplayer-ended",
|
|
2192
|
+
CANPLAY: "xgplayer-canplay",
|
|
2193
|
+
LOADING: "xgplayer-isloading",
|
|
2194
|
+
ERROR: "xgplayer-is-error",
|
|
2195
|
+
REPLAY: "xgplayer-replay",
|
|
2196
|
+
NO_START: "xgplayer-nostart",
|
|
2197
|
+
ACTIVE: "xgplayer-active",
|
|
2198
|
+
INACTIVE: "xgplayer-inactive",
|
|
2199
|
+
FULLSCREEN: "xgplayer-is-fullscreen",
|
|
2200
|
+
CSS_FULLSCREEN: "xgplayer-is-cssfullscreen",
|
|
2201
|
+
ROTATE_FULLSCREEN: "xgplayer-rotate-fullscreen",
|
|
2202
|
+
PARENT_ROTATE_FULLSCREEN: "xgplayer-rotate-parent",
|
|
2203
|
+
PARENT_FULLSCREEN: "xgplayer-fullscreen-parent",
|
|
2204
|
+
INNER_FULLSCREEN: "xgplayer-fullscreen-inner",
|
|
2205
|
+
NO_CONTROLS: "no-controls",
|
|
2206
|
+
FLEX_CONTROLS: "flex-controls",
|
|
2207
|
+
CONTROLS_FOLLOW: "controls-follow",
|
|
2208
|
+
CONTROLS_AUTOHIDE: "controls-autohide",
|
|
2209
|
+
TOP_BAR_AUTOHIDE: "top-bar-autohide",
|
|
2210
|
+
NOT_ALLOW_AUTOPLAY: "not-allow-autoplay",
|
|
2211
|
+
SEEKING: "seeking",
|
|
2212
|
+
PC: "xgplayer-pc",
|
|
2213
|
+
MOBILE: "xgplayer-mobile",
|
|
2214
|
+
MINI: "xgplayer-mini"
|
|
2215
|
+
};
|
|
2130
2216
|
function ownKeys(object, enumerableOnly) {
|
|
2131
2217
|
var keys = Object.keys(object);
|
|
2132
2218
|
if (Object.getOwnPropertySymbols) {
|
|
@@ -4292,10 +4378,28 @@ var NetLoader = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
4292
4378
|
}]);
|
|
4293
4379
|
return NetLoader2;
|
|
4294
4380
|
}(EventEmitter);
|
|
4295
|
-
var EXTEND_EVENTS = {
|
|
4296
|
-
RTC_STATE_CHANGE
|
|
4297
|
-
RTC_NETWORK
|
|
4298
|
-
|
|
4381
|
+
var EXTEND_EVENTS = /* @__PURE__ */ function(EXTEND_EVENTS2) {
|
|
4382
|
+
EXTEND_EVENTS2["RTC_STATE_CHANGE"] = "core.rtcstatechange";
|
|
4383
|
+
EXTEND_EVENTS2["RTC_NETWORK"] = "core.rtcnetwork";
|
|
4384
|
+
EXTEND_EVENTS2["RTC_FIRST_FRAME"] = "core.rtcfirstframe";
|
|
4385
|
+
return EXTEND_EVENTS2;
|
|
4386
|
+
}(EXTEND_EVENTS || {});
|
|
4387
|
+
var RTC_FIRST_FRAME_STATE = /* @__PURE__ */ function(RTC_FIRST_FRAME_STATE2) {
|
|
4388
|
+
RTC_FIRST_FRAME_STATE2["LOAD_START"] = "start_load";
|
|
4389
|
+
RTC_FIRST_FRAME_STATE2["OFFER_SDP_READY"] = "offer_sdp_ready";
|
|
4390
|
+
RTC_FIRST_FRAME_STATE2["ANSWER_SDP_RECV"] = "answer_sdp_recv";
|
|
4391
|
+
RTC_FIRST_FRAME_STATE2["ANSWER_SDP_READY"] = "answer_sdp_ready";
|
|
4392
|
+
RTC_FIRST_FRAME_STATE2["ICE_CONNECTED"] = "ice_connected";
|
|
4393
|
+
RTC_FIRST_FRAME_STATE2["DTLS_CONNECTED"] = "dtls_connected";
|
|
4394
|
+
RTC_FIRST_FRAME_STATE2["PEER_CONNECTED"] = "peer_connected";
|
|
4395
|
+
RTC_FIRST_FRAME_STATE2["FIRST_PACKET_RECV"] = "first_packet_recv";
|
|
4396
|
+
RTC_FIRST_FRAME_STATE2["FIRST_FRAME_RECV"] = "first_frame_recv";
|
|
4397
|
+
RTC_FIRST_FRAME_STATE2["FIRST_FRAME_DECODED"] = "first_frame_decoded";
|
|
4398
|
+
RTC_FIRST_FRAME_STATE2["VIDEO_PLAYING"] = "video_playing";
|
|
4399
|
+
RTC_FIRST_FRAME_STATE2["VIDEO_CANPLAY"] = "video_canplay";
|
|
4400
|
+
RTC_FIRST_FRAME_STATE2["VIDEO_LOADEDDATA"] = "video_loadeddata";
|
|
4401
|
+
return RTC_FIRST_FRAME_STATE2;
|
|
4402
|
+
}(RTC_FIRST_FRAME_STATE || {});
|
|
4299
4403
|
var lib = {};
|
|
4300
4404
|
var parser$1 = {};
|
|
4301
4405
|
var grammar$2 = { exports: {} };
|
|
@@ -4989,29 +5093,29 @@ function getOption(options) {
|
|
|
4989
5093
|
enableOriginSdpLogger: false,
|
|
4990
5094
|
checkStatsErrorDelay: 5e3,
|
|
4991
5095
|
connectionStateChangeTimeout: 5e3,
|
|
4992
|
-
enableNetworkQuality:
|
|
5096
|
+
enableNetworkQuality: true,
|
|
4993
5097
|
hackCreateOfferIssue: false,
|
|
4994
5098
|
progressiveSetDelay: false,
|
|
4995
5099
|
networkQuality: {
|
|
4996
5100
|
networkQos: {
|
|
4997
5101
|
1: {
|
|
4998
|
-
|
|
4999
|
-
|
|
5102
|
+
maxRtt: 250,
|
|
5103
|
+
maxLoss: 0.15
|
|
5000
5104
|
},
|
|
5001
5105
|
2: {
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5106
|
+
maxRtt: 500,
|
|
5107
|
+
maxLoss: 0.3,
|
|
5108
|
+
minRetransmittedRate: 0.2
|
|
5005
5109
|
},
|
|
5006
5110
|
3: {
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5111
|
+
maxRtt: 750,
|
|
5112
|
+
maxLoss: 0.45,
|
|
5113
|
+
minRetransmittedRate: 0.35
|
|
5010
5114
|
},
|
|
5011
5115
|
4: {
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5116
|
+
maxRtt: 1e3,
|
|
5117
|
+
maxLoss: 0.6,
|
|
5118
|
+
minRetransmittedRate: 0.5
|
|
5015
5119
|
}
|
|
5016
5120
|
},
|
|
5017
5121
|
networkQoe: {
|
|
@@ -5032,19 +5136,19 @@ function getOption(options) {
|
|
|
5032
5136
|
}, adaptiveJitterBuffer),
|
|
5033
5137
|
networkStrategy: {
|
|
5034
5138
|
1: {
|
|
5035
|
-
|
|
5139
|
+
jitterBuffer: null
|
|
5036
5140
|
},
|
|
5037
5141
|
2: {
|
|
5038
|
-
|
|
5142
|
+
jitterBuffer: 1.5
|
|
5039
5143
|
},
|
|
5040
5144
|
3: {
|
|
5041
|
-
|
|
5145
|
+
jitterBuffer: 2
|
|
5042
5146
|
},
|
|
5043
5147
|
4: {
|
|
5044
|
-
|
|
5148
|
+
jitterBuffer: 3
|
|
5045
5149
|
},
|
|
5046
5150
|
5: {
|
|
5047
|
-
|
|
5151
|
+
jitterBuffer: 3
|
|
5048
5152
|
}
|
|
5049
5153
|
}
|
|
5050
5154
|
}, opts);
|
|
@@ -5075,14 +5179,36 @@ function _getStats(stats) {
|
|
|
5075
5179
|
};
|
|
5076
5180
|
});
|
|
5077
5181
|
}
|
|
5078
|
-
function getStats(
|
|
5079
|
-
return
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5182
|
+
function getStats(_x) {
|
|
5183
|
+
return _getStats2.apply(this, arguments);
|
|
5184
|
+
}
|
|
5185
|
+
function _getStats2() {
|
|
5186
|
+
_getStats2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(pc) {
|
|
5187
|
+
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
5188
|
+
while (1)
|
|
5189
|
+
switch (_context2.prev = _context2.next) {
|
|
5190
|
+
case 0:
|
|
5191
|
+
if (pc) {
|
|
5192
|
+
_context2.next = 2;
|
|
5193
|
+
break;
|
|
5194
|
+
}
|
|
5195
|
+
return _context2.abrupt("return", []);
|
|
5196
|
+
case 2:
|
|
5197
|
+
return _context2.abrupt("return", new Promise(function(resolve) {
|
|
5198
|
+
var _pc$getStats;
|
|
5199
|
+
(_pc$getStats = pc.getStats(null)) === null || _pc$getStats === void 0 ? void 0 : _pc$getStats.then(function(report) {
|
|
5200
|
+
resolve(_getStats(report));
|
|
5201
|
+
});
|
|
5202
|
+
}).catch(function() {
|
|
5203
|
+
return [];
|
|
5204
|
+
}));
|
|
5205
|
+
case 3:
|
|
5206
|
+
case "end":
|
|
5207
|
+
return _context2.stop();
|
|
5208
|
+
}
|
|
5209
|
+
}, _callee2);
|
|
5210
|
+
}));
|
|
5211
|
+
return _getStats2.apply(this, arguments);
|
|
5086
5212
|
}
|
|
5087
5213
|
function getStatsSnapshoot(stats) {
|
|
5088
5214
|
var _v$inboundRtp, _v$codec, _v$codec2, _v$codec3, _v$inboundRtp4, _v$inboundRtp5, _v$inboundRtp6, _v$inboundRtp7, _v$inboundRtp8, _v$inboundRtp9, _v$inboundRtp10, _v$inboundRtp11, _v$inboundRtp$framesR, _v$inboundRtp12, _v$track, _v$inboundRtp13, _v$inboundRtp14, _v$inboundRtp15, _v$inboundRtp16, _v$inboundRtp17, _v$inboundRtp18, _a$codec, _a$codec2, _a$codec3, _a$inboundRtp, _a$inboundRtp2, _a$inboundRtp3, _a$inboundRtp4, _a$inboundRtp5, _a$inboundRtp6, _a$inboundRtp7, _a$inboundRtp8;
|
|
@@ -5152,22 +5278,23 @@ function getStatsSnapshoot(stats) {
|
|
|
5152
5278
|
}
|
|
5153
5279
|
var QUEUE_SIZE = 5;
|
|
5154
5280
|
var NetworkEvaluate = /* @__PURE__ */ function() {
|
|
5155
|
-
function NetworkEvaluate2(pc
|
|
5281
|
+
function NetworkEvaluate2(pc) {
|
|
5156
5282
|
var _this = this;
|
|
5283
|
+
var interval = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1e3;
|
|
5157
5284
|
_classCallCheck$3(this, NetworkEvaluate2);
|
|
5158
|
-
|
|
5159
|
-
|
|
5160
|
-
|
|
5161
|
-
|
|
5162
|
-
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5170
|
-
var snapshoot, _snapshoot$video, nowBytes, nowPkgLost, nowPkg, _this$_lastVideoStats, preBytes, prePkgLost, prePkg, lost, pkgReceived, nowReceived, preReceived, _snapshoot$videoRemot, nowRemoteSent, preRemoteSent;
|
|
5285
|
+
this._pc = null;
|
|
5286
|
+
this._lastVideoStats = null;
|
|
5287
|
+
this._lastRemoteVideoStats = null;
|
|
5288
|
+
this._timer = 0;
|
|
5289
|
+
this._timerInterval = 0;
|
|
5290
|
+
this._speedQueue = [];
|
|
5291
|
+
this._lostRateQueue = [];
|
|
5292
|
+
this._receivedRateQueue = [];
|
|
5293
|
+
this._currentSpeed = -1;
|
|
5294
|
+
this._currentLostRate = -1;
|
|
5295
|
+
this._currentReceivedRate = -1;
|
|
5296
|
+
this._evaluate = /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
5297
|
+
var snapshoot, _snapshoot$video, nowBytes, nowPkgLost, nowPkg, _this$_lastVideoStats, preBytes, prePkgLost, prePkg, lost, pkgReceived, _ref2, _ref2$bytesReceived, nowReceived, _ref3, _ref3$bytesReceived, preReceived, _snapshoot$videoRemot, nowRemoteSent, preRemoteSent;
|
|
5171
5298
|
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
5172
5299
|
while (1)
|
|
5173
5300
|
switch (_context.prev = _context.next) {
|
|
@@ -5192,8 +5319,8 @@ var NetworkEvaluate = /* @__PURE__ */ function() {
|
|
|
5192
5319
|
}
|
|
5193
5320
|
}
|
|
5194
5321
|
if (_this._lastRemoteVideoStats && snapshoot !== null && snapshoot !== void 0 && snapshoot.videoRemote) {
|
|
5195
|
-
|
|
5196
|
-
|
|
5322
|
+
_ref2 = snapshoot.video || {}, _ref2$bytesReceived = _ref2.bytesReceived, nowReceived = _ref2$bytesReceived === void 0 ? 0 : _ref2$bytesReceived;
|
|
5323
|
+
_ref3 = _this._lastVideoStats || {}, _ref3$bytesReceived = _ref3.bytesReceived, preReceived = _ref3$bytesReceived === void 0 ? 0 : _ref3$bytesReceived;
|
|
5197
5324
|
_snapshoot$videoRemot = snapshoot === null || snapshoot === void 0 ? void 0 : snapshoot.videoRemote, nowRemoteSent = _snapshoot$videoRemot.bytesSent;
|
|
5198
5325
|
preRemoteSent = _this._lastRemoteVideoStats.bytesSent;
|
|
5199
5326
|
if (preRemoteSent && nowRemoteSent && nowRemoteSent - preRemoteSent > 0) {
|
|
@@ -5212,7 +5339,7 @@ var NetworkEvaluate = /* @__PURE__ */ function() {
|
|
|
5212
5339
|
return _context.stop();
|
|
5213
5340
|
}
|
|
5214
5341
|
}, _callee, null, [[0, 10]]);
|
|
5215
|
-
}))
|
|
5342
|
+
}));
|
|
5216
5343
|
this._pc = pc;
|
|
5217
5344
|
this._timerInterval = interval;
|
|
5218
5345
|
this.start(interval);
|
|
@@ -5327,6 +5454,9 @@ function getCapacity() {
|
|
|
5327
5454
|
return pc.createOffer().then(function(offer) {
|
|
5328
5455
|
var _sdpJson$media, _sdpJson$media2, _vMedia$rtp, _aMedia$rtp;
|
|
5329
5456
|
logger.log(offer.sdp);
|
|
5457
|
+
if (!offer.sdp) {
|
|
5458
|
+
return Promise.reject("createOffer no sdp");
|
|
5459
|
+
}
|
|
5330
5460
|
var sdpJson = lib.parse(offer.sdp);
|
|
5331
5461
|
var vMedia = (_sdpJson$media = sdpJson.media) === null || _sdpJson$media === void 0 ? void 0 : _sdpJson$media.filter(function(x) {
|
|
5332
5462
|
return x.type === "video";
|
|
@@ -5514,7 +5644,7 @@ var Nalunit = {
|
|
|
5514
5644
|
var RTCDataView = /* @__PURE__ */ function() {
|
|
5515
5645
|
function RTCDataView2(buffer) {
|
|
5516
5646
|
_classCallCheck$3(this, RTCDataView2);
|
|
5517
|
-
|
|
5647
|
+
this._position = 0;
|
|
5518
5648
|
this._dataview = new DataView(buffer);
|
|
5519
5649
|
}
|
|
5520
5650
|
_createClass$3(RTCDataView2, [{
|
|
@@ -5916,7 +6046,7 @@ if (typeof self !== "undefined" && self.constructor.name === "DedicatedWorkerGlo
|
|
|
5916
6046
|
transformer.readable.pipeThrough(transform).pipeTo(event.transformer.writable);
|
|
5917
6047
|
});
|
|
5918
6048
|
}
|
|
5919
|
-
var encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXtnZXROQUxVbml0czpmdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKHQubGVuZ3RoLXQucG9zaXRpb248NClyZXR1cm5bXTt2YXIgcj10LnBvc2l0aW9uO3JldHVybiAxPT09dC5nZXRJbnQzMihyKXx8MD09PXQuZ2V0SW50MTYocikmJjE9PT10LmdldEludDgocisyKT9lLmdldEFubmV4Yk5hbHModCxuKTplLmdldEF2Y2NOYWxzKHQsbil9LGdldEFubmV4Yk5hbHM6ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9W10saT1lLmdldEhlYWRlclBvc2l0aW9uQW5uZXhCKHQpLGE9aS5wb3Msbz1hO2E8dC5sZW5ndGgtNDspe3ZhciB1PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKGEsYStpLmhlYWRlckxlbmd0aCkpO2kucG9zPT09dC5wb3NpdGlvbiYmdC5za2lwKGkuaGVhZGVyTGVuZ3RoKSxvPShpPWUuZ2V0SGVhZGVyUG9zaXRpb25Bbm5leEIodCkpLnBvczt2YXIgcz17aGVhZGVyOnUsYm9keTpuZXcgVWludDhBcnJheSh0LmJ1ZmZlci5zbGljZShhK3UuYnl0ZUxlbmd0aCxvKSksdHlwZTotMX07bj9lLmFuYWx5c2VIMjY1TmFsKHMpOmUuYW5hbHlzZU5hbChzKSwocy50eXBlPD05fHxuJiZzLnR5cGU8PTQwKSYmMCE9PXMudHlwZSYmci5wdXNoKHMpLHQuc2tpcChvLXQucG9zaXRpb24pLGE9b31yZXR1cm4gcn0sZ2V0QXZjY05hbHM6ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9W107dC5wb3NpdGlvbjx0Lmxlbmd0aC00Oyl7dmFyIGk9dC5nZXRJbnQzMih0LnBvc2l0aW9uKTtpZighKHQubGVuZ3RoLXQucG9zaXRpb24+PWkpKWJyZWFrO3ZhciBhPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKHQucG9zaXRpb24sdC5wb3NpdGlvbis0KSk7dC5za2lwKDQpO3ZhciBvPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKHQucG9zaXRpb24sdC5wb3NpdGlvbitpKSk7dC5za2lwKGkpO3ZhciB1PXtoZWFkZXI6YSxib2R5Om8sdHlwZTotMX07bj9lLmFuYWx5c2VIMjY1TmFsKHUpOmUuYW5hbHlzZU5hbCh1KSx1LnR5cGU8PTkmJjAhPT11LnR5cGUmJnIucHVzaCh1KX1yZXR1cm4gcn0sYW5hbHlzZU5hbDpmdW5jdGlvbihlKXt2YXIgdD0zMSZlLmJvZHlbMF07c3dpdGNoKGUudHlwZT10LHQpe2Nhc2UgMTplLm5kcj0hMDticmVhaztjYXNlIDU6ZS5pZHI9ITA7YnJlYWs7Y2FzZSA2OmUuc2VpPSEwO2JyZWFrO2Nhc2UgNzplLnNwcz0hMDticmVhaztjYXNlIDg6ZS5wcHM9ITB9fSxhbmFseXNlSDI2NU5hbDpmdW5jdGlvbihlKXt2YXIgdD0oMTI2JmUuYm9keVswXSk+PjE7c3dpdGNoKGUudHlwZT10LHQpe2Nhc2UgMzk6Y2FzZSA0MDplLnNlaT0hMH19LGdldEhlYWRlclBvc2l0aW9uQW5uZXhCOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnBvc2l0aW9uLG49MCxyPWUubGVuZ3RoOzMhPT1uJiY0IT09biYmdDxyLTQ7KTA9PT1lLmdldEludDE2KHQpPzE9PT1lLmdldEludDE2KHQrMik/bj00OjE9PT1lLmdldEludDgodCsyKT9uPTM6dCsrOnQrKztyZXR1cm4gdD09PXItNCYmKDA9PT1lLmdldEludDE2KHQpPzE9PT1lLmdldEludDE2KHQrMik/bj00OnQ9cjoodCsrLDA9PT1lLmdldEludDE2KHQpJiYxPT09ZS5nZXRJbnQ4KHQpP249Mzp0PXIpKSx7cG9zOnQsaGVhZGVyTGVuZ3RoOm59fSxpc0gyNjVWaWRlb0ZyYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuKChudWxsPT09KHQ9ZS5nZXRNZXRhZGF0YSl8fHZvaWQgMD09PXR8fG51bGw9PT0obj10LmNhbGwoZSkpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm1pbWVUeXBlKXx8IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoImgyNjUiKX19O2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyKGkua2V5KSxpKX19ZnVuY3Rpb24gcihlKXt2YXIgdD1mdW5jdGlvbihlLHQpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW4pe3ZhciByPW4uY2FsbChlLHR8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKX0oZSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgbixpLGE7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksbj10aGlzLGE9MCwoaT1yKGk9Il9wb3NpdGlvbiIpKWluIG4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4saSx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5baV09YSx0aGlzLl9kYXRhdmlldz1uZXcgRGF0YVZpZXcodCl9dmFyIHQsaSxhO3JldHVybiB0PWUsYT1be2tleToicmVhZEJ5dGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtzd2l0Y2godCl7Y2FzZSAxOnI9bj9lLmdldEludDgoZS5wb3NpdGlvbik6ZS5nZXRVaW50OChlLnBvc2l0aW9uKTticmVhaztjYXNlIDI6cj1uP2UuZ2V0SW50MTYoZS5wb3NpdGlvbik6ZS5nZXRVaW50MTYoZS5wb3NpdGlvbik7YnJlYWs7Y2FzZSAzOmlmKG4pdGhyb3cgbmV3IEVycm9yKCJub3Qgc3VwcG9ydGVkIGZvciByZWFkQnl0ZSAzIik7cj1lLmdldFVpbnQ4KGUucG9zaXRpb24pPDwxNixyfD1lLmdldFVpbnQ4KGUucG9zaXRpb24rMSk8PDgscnw9ZS5nZXRVaW50OChlLnBvc2l0aW9uKzIpO2JyZWFrO2Nhc2UgNDpyPW4/ZS5nZXRJbnQzMihlLnBvc2l0aW9uKTplLmdldFVpbnQzMihlLnBvc2l0aW9uKTticmVhaztjYXNlIDg6aWYobil0aHJvdyBuZXcgRXJyb3IoIm5vdCBzdXBwb3J0ZWQgZm9yIHJlYWRCb2R5IDgiKTtyPWUuZ2V0VWludDMyKGUucG9zaXRpb24pPDwzMixyfD1lLmdldFVpbnQzMihlLnBvc2l0aW9uKzQpO2JyZWFrO2RlZmF1bHQ6cj0iIn1yZXR1cm4gZS5wb3NpdGlvbis9dCxyfX1dLChpPVt7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RofX0se2tleToiYnVmZmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YXZpZXcuYnVmZmVyfX0se2tleToicG9zaXRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3Bvc2l0aW9uPWV9fSx7a2V5OiJiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfX0se2tleToiZ2V0VWludDgiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRVaW50OChlKX19LHtrZXk6ImdldEludDgiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRJbnQ4KGUpfX0se2tleToiZ2V0SW50MTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRJbnQxNihlKX19LHtrZXk6ImdldFVpbnQxNiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGF2aWV3LmdldFVpbnQxNihlKX19LHtrZXk6ImdldFVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGF2aWV3LmdldFVpbnQzMihlKX19LHtrZXk6ImdldEludDMyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGF0YXZpZXcuZ2V0SW50MzIoZSl9fSx7a2V5OiJza2lwIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIG49TWF0aC5mbG9vcih0LzQpLHI9dCU0LGk9MDtpPG47aSsrKWUucmVhZEJ5dGUodGhpcyw0KTtyPjAmJmUucmVhZEJ5dGUodGhpcyxyKX19LHtrZXk6InJlYWRVaW50OCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDEpfX0se2tleToicmVhZFVpbnQxNiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDIpfX0se2tleToicmVhZFVpbnQyNCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDMpfX0se2tleToicmVhZFVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDQpfX0se2tleToicmVhZFVpbnQ2NCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDgpfX0se2tleToicmVhZEludDgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGUucmVhZEJ5dGUodGhpcywxLCEwKX19LHtrZXk6InJlYWRJbnQxNiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDIsITApfX0se2tleToicmVhZEludDMyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLnJlYWRCeXRlKHRoaXMsNCwhMCl9fSx7a2V5OiJ3cml0ZVVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtlPj4+MjQmMjU1LGU+Pj4xNiYyNTUsZT4+PjgmMjU1LDI1NSZlXSl9fV0pJiZuKHQucHJvdG90eXBlLGkpLGEmJm4odCxhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO2Z1bmN0aW9uIGEoZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLChhPWkua2V5LG89dm9pZCAwLG89ZnVuY3Rpb24oZSxuKXtpZigib2JqZWN0IiE9PXQoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwoZSxufHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dChpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PW4/U3RyaW5nOk51bWJlcikoZSl9KGEsInN0cmluZyIpLCJzeW1ib2wiPT09dChvKT9vOlN0cmluZyhvKSksaSl9dmFyIGEsb31mdW5jdGlvbiBvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybihlW3RdPDwyND4+PjApKyhlW3QrMV08PDE2KSsoZVt0KzJdPDw4KSsoZVt0KzNdfHwwKX12YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKX12YXIgdCxuLHI7cmV0dXJuIHQ9ZSxyPVt7a2V5OiJwYXJzZUFubmV4QiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ieXRlTGVuZ3RoLTEsbj0wO2Rve2lmKDAhPT1lW3RdKWJyZWFrO24rKyx0LS19d2hpbGUodD4wKTtuPj0zJiYoZT1lLnN1YmFycmF5KDAsdCsxKSk7Zm9yKHZhciByPWUubGVuZ3RoLGk9MixhPTA7bnVsbCE9PWVbaV0mJnZvaWQgMCE9PWVbaV0mJjEhPT1lW2ldOylpKys7aWYoKGE9MisgKytpKT49cilyZXR1cm5bXTtmb3IodmFyIG89W107YTxyOylzd2l0Y2goZVthXSl7Y2FzZSAwOmlmKDAhPT1lW2EtMV0pe2ErPTI7YnJlYWt9aWYoMCE9PWVbYS0yXSl7YSsrO2JyZWFrfWlmKGE8ci0xJiYxIT09ZVthKzFdKXthKys7YnJlYWt9aSE9PWEtMiYmby5wdXNoKGUuc3ViYXJyYXkoaSxhLTIpKTtkb3thKyt9d2hpbGUoMSE9PWVbYV0mJmE8cik7YT0oaT1hKzEpKzI7YnJlYWs7Y2FzZSAxOmlmKDAhPT1lW2EtMV18fDAhPT1lW2EtMl0pe2ErPTM7YnJlYWt9aSE9PWEtMiYmby5wdXNoKGUuc3ViYXJyYXkoaSxhLTIpKSxhPShpPWErMSkrMjticmVhaztkZWZhdWx0OmErPTN9cmV0dXJuIGk8ciYmby5wdXNoKGUuc3ViYXJyYXkoaSkpLG99fSx7a2V5OiJwYXJzZUF2Y0MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0O2lmKCEoZS5sZW5ndGg8NCkpe2Zvcih2YXIgbixyPWUubGVuZ3RoLGk9W10sYT0wO2ErdDxyOylpZihuPW8oZSxhKSwzPT09dCYmKG4+Pj49OCksYSs9dCxuKXtpZihhK24+cilicmVhaztpLnB1c2goZS5zdWJhcnJheShhLGErbikpLGErPW59cmV0dXJuIGl9fX0se2tleToicGFyc2VTRUkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9dD8yOjEsaT0wLGE9MCxvPSIiOzI1NT09PWVbcl07KWkrPTI1NSxyKys7Zm9yKGkrPWVbcisrXTsyNTU9PT1lW3JdOylhKz0yNTUscisrO2lmKGErPWVbcisrXSw1PT09aSYmbj5yKzE2KWZvcih2YXIgdT0wO3U8MTY7dSsrKW8rPWVbcl0udG9TdHJpbmcoMTYpLHIrKztyZXR1cm57cGF5bG9hZDplLnN1YmFycmF5KHIscithKSx0eXBlOmksc2l6ZTphLHV1aWQ6b319fSx7a2V5OiJyZW1vdmVFUEIiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmJ5dGVMZW5ndGgsbj1bXSxyPTE7cjx0LTI7KTA9PT1lW3JdJiYwPT09ZVtyKzFdJiYzPT09ZVtyKzJdPyhuLnB1c2gocisyKSxyKz0yKTpyKys7aWYoIW4ubGVuZ3RoKXJldHVybiBlO3ZhciBpPXQtbi5sZW5ndGgsYT1uZXcgVWludDhBcnJheShpKSxvPTA7Zm9yKHI9MDtyPGk7bysrLHIrKylvPT09blswXSYmKG8rKyxuLnNoaWZ0KCkpLGFbcl09ZVtvXTtyZXR1cm4gYX19XSwobj1udWxsKSYmYSh0LnByb3RvdHlwZSxuKSxyJiZhKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTsidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSI9PT1zZWxmLmNvbnN0cnVjdG9yLm5hbWUmJnNlbGYuYWRkRXZlbnRMaXN0ZW5lcigicnRjdHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIG4scj10LnRyYW5zZm9ybWVyLGE9ci5vcHRpb25zLnBvcnQsbz0obj1mdW5jdGlvbihlKXthLnBvc3RNZXNzYWdlKGUpfSxuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxyKXt2YXIgYT1lLmlzSDI2NVZpZGVvRnJhbWUodCk7ZS5nZXROQUxVbml0cyhuZXcgaSh0LmRhdGEpLGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGUuc2VpKXt2YXIgdD11LnBhcnNlU0VJKHUucmVtb3ZlRVBCKGUuYm9keSksITEpO3QmJm4oe2RhdGE6dCxzZWk6e2NvZGU6dC50eXBlLGNvbnRlbnQ6dC5wYXlsb2FkfX0pfX0pKSxyLmVucXVldWUodCl9fSkpO3IucmVhZGFibGUucGlwZVRocm91Z2gobykucGlwZVRvKHQudHJhbnNmb3JtZXIud3JpdGFibGUpfSkpfSgpOwo=";
|
|
6049
|
+
var encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXtnZXROQUxVbml0czpmdW5jdGlvbih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKHQubGVuZ3RoLXQucG9zaXRpb248NClyZXR1cm5bXTt2YXIgcj10LnBvc2l0aW9uO3JldHVybiAxPT09dC5nZXRJbnQzMihyKXx8MD09PXQuZ2V0SW50MTYocikmJjE9PT10LmdldEludDgocisyKT9lLmdldEFubmV4Yk5hbHModCxuKTplLmdldEF2Y2NOYWxzKHQsbil9LGdldEFubmV4Yk5hbHM6ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9W10saT1lLmdldEhlYWRlclBvc2l0aW9uQW5uZXhCKHQpLGE9aS5wb3Msbz1hO2E8dC5sZW5ndGgtNDspe3ZhciB1PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKGEsYStpLmhlYWRlckxlbmd0aCkpO2kucG9zPT09dC5wb3NpdGlvbiYmdC5za2lwKGkuaGVhZGVyTGVuZ3RoKSxvPShpPWUuZ2V0SGVhZGVyUG9zaXRpb25Bbm5leEIodCkpLnBvczt2YXIgcz17aGVhZGVyOnUsYm9keTpuZXcgVWludDhBcnJheSh0LmJ1ZmZlci5zbGljZShhK3UuYnl0ZUxlbmd0aCxvKSksdHlwZTotMX07bj9lLmFuYWx5c2VIMjY1TmFsKHMpOmUuYW5hbHlzZU5hbChzKSwocy50eXBlPD05fHxuJiZzLnR5cGU8PTQwKSYmMCE9PXMudHlwZSYmci5wdXNoKHMpLHQuc2tpcChvLXQucG9zaXRpb24pLGE9b31yZXR1cm4gcn0sZ2V0QXZjY05hbHM6ZnVuY3Rpb24odCxuKXtmb3IodmFyIHI9W107dC5wb3NpdGlvbjx0Lmxlbmd0aC00Oyl7dmFyIGk9dC5nZXRJbnQzMih0LnBvc2l0aW9uKTtpZighKHQubGVuZ3RoLXQucG9zaXRpb24+PWkpKWJyZWFrO3ZhciBhPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKHQucG9zaXRpb24sdC5wb3NpdGlvbis0KSk7dC5za2lwKDQpO3ZhciBvPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLnNsaWNlKHQucG9zaXRpb24sdC5wb3NpdGlvbitpKSk7dC5za2lwKGkpO3ZhciB1PXtoZWFkZXI6YSxib2R5Om8sdHlwZTotMX07bj9lLmFuYWx5c2VIMjY1TmFsKHUpOmUuYW5hbHlzZU5hbCh1KSx1LnR5cGU8PTkmJjAhPT11LnR5cGUmJnIucHVzaCh1KX1yZXR1cm4gcn0sYW5hbHlzZU5hbDpmdW5jdGlvbihlKXt2YXIgdD0zMSZlLmJvZHlbMF07c3dpdGNoKGUudHlwZT10LHQpe2Nhc2UgMTplLm5kcj0hMDticmVhaztjYXNlIDU6ZS5pZHI9ITA7YnJlYWs7Y2FzZSA2OmUuc2VpPSEwO2JyZWFrO2Nhc2UgNzplLnNwcz0hMDticmVhaztjYXNlIDg6ZS5wcHM9ITB9fSxhbmFseXNlSDI2NU5hbDpmdW5jdGlvbihlKXt2YXIgdD0oMTI2JmUuYm9keVswXSk+PjE7c3dpdGNoKGUudHlwZT10LHQpe2Nhc2UgMzk6Y2FzZSA0MDplLnNlaT0hMH19LGdldEhlYWRlclBvc2l0aW9uQW5uZXhCOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnBvc2l0aW9uLG49MCxyPWUubGVuZ3RoOzMhPT1uJiY0IT09biYmdDxyLTQ7KTA9PT1lLmdldEludDE2KHQpPzE9PT1lLmdldEludDE2KHQrMik/bj00OjE9PT1lLmdldEludDgodCsyKT9uPTM6dCsrOnQrKztyZXR1cm4gdD09PXItNCYmKDA9PT1lLmdldEludDE2KHQpPzE9PT1lLmdldEludDE2KHQrMik/bj00OnQ9cjoodCsrLDA9PT1lLmdldEludDE2KHQpJiYxPT09ZS5nZXRJbnQ4KHQpP249Mzp0PXIpKSx7cG9zOnQsaGVhZGVyTGVuZ3RoOm59fSxpc0gyNjVWaWRlb0ZyYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuKChudWxsPT09KHQ9ZS5nZXRNZXRhZGF0YSl8fHZvaWQgMD09PXR8fG51bGw9PT0obj10LmNhbGwoZSkpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm1pbWVUeXBlKXx8IiIpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoImgyNjUiKX19O2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwoaT1yLmtleSxhPXZvaWQgMCwic3ltYm9sIj09dHlwZW9mKGE9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1uKXt2YXIgcj1uLmNhbGwoZSx0fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgcilyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PXQ/U3RyaW5nOk51bWJlcikoZSl9KGksInN0cmluZyIpKT9hOlN0cmluZyhhKSkscil9dmFyIGksYX12YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5fcG9zaXRpb249MCx0aGlzLl9kYXRhdmlldz1uZXcgRGF0YVZpZXcodCl9dmFyIHQscixpO3JldHVybiB0PWUsaT1be2tleToicmVhZEJ5dGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtzd2l0Y2godCl7Y2FzZSAxOnI9bj9lLmdldEludDgoZS5wb3NpdGlvbik6ZS5nZXRVaW50OChlLnBvc2l0aW9uKTticmVhaztjYXNlIDI6cj1uP2UuZ2V0SW50MTYoZS5wb3NpdGlvbik6ZS5nZXRVaW50MTYoZS5wb3NpdGlvbik7YnJlYWs7Y2FzZSAzOmlmKG4pdGhyb3cgbmV3IEVycm9yKCJub3Qgc3VwcG9ydGVkIGZvciByZWFkQnl0ZSAzIik7cj1lLmdldFVpbnQ4KGUucG9zaXRpb24pPDwxNixyfD1lLmdldFVpbnQ4KGUucG9zaXRpb24rMSk8PDgscnw9ZS5nZXRVaW50OChlLnBvc2l0aW9uKzIpO2JyZWFrO2Nhc2UgNDpyPW4/ZS5nZXRJbnQzMihlLnBvc2l0aW9uKTplLmdldFVpbnQzMihlLnBvc2l0aW9uKTticmVhaztjYXNlIDg6aWYobil0aHJvdyBuZXcgRXJyb3IoIm5vdCBzdXBwb3J0ZWQgZm9yIHJlYWRCb2R5IDgiKTtyPWUuZ2V0VWludDMyKGUucG9zaXRpb24pPDwzMixyfD1lLmdldFVpbnQzMihlLnBvc2l0aW9uKzQpO2JyZWFrO2RlZmF1bHQ6cj0iIn1yZXR1cm4gZS5wb3NpdGlvbis9dCxyfX1dLChyPVt7a2V5OiJsZW5ndGgiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RofX0se2tleToiYnVmZmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YXZpZXcuYnVmZmVyfX0se2tleToicG9zaXRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3Bvc2l0aW9uPWV9fSx7a2V5OiJiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfX0se2tleToiZ2V0VWludDgiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRVaW50OChlKX19LHtrZXk6ImdldEludDgiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRJbnQ4KGUpfX0se2tleToiZ2V0SW50MTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhdmlldy5nZXRJbnQxNihlKX19LHtrZXk6ImdldFVpbnQxNiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGF2aWV3LmdldFVpbnQxNihlKX19LHtrZXk6ImdldFVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGF2aWV3LmdldFVpbnQzMihlKX19LHtrZXk6ImdldEludDMyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGF0YXZpZXcuZ2V0SW50MzIoZSl9fSx7a2V5OiJza2lwIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIG49TWF0aC5mbG9vcih0LzQpLHI9dCU0LGk9MDtpPG47aSsrKWUucmVhZEJ5dGUodGhpcyw0KTtyPjAmJmUucmVhZEJ5dGUodGhpcyxyKX19LHtrZXk6InJlYWRVaW50OCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDEpfX0se2tleToicmVhZFVpbnQxNiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDIpfX0se2tleToicmVhZFVpbnQyNCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDMpfX0se2tleToicmVhZFVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDQpfX0se2tleToicmVhZFVpbnQ2NCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDgpfX0se2tleToicmVhZEludDgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGUucmVhZEJ5dGUodGhpcywxLCEwKX19LHtrZXk6InJlYWRJbnQxNiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZWFkQnl0ZSh0aGlzLDIsITApfX0se2tleToicmVhZEludDMyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLnJlYWRCeXRlKHRoaXMsNCwhMCl9fSx7a2V5OiJ3cml0ZVVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtlPj4+MjQmMjU1LGU+Pj4xNiYyNTUsZT4+PjgmMjU1LDI1NSZlXSl9fV0pJiZuKHQucHJvdG90eXBlLHIpLGkmJm4odCxpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfSgpO2Z1bmN0aW9uIGkoZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGk9bltyXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLChhPWkua2V5LG89dm9pZCAwLG89ZnVuY3Rpb24oZSxuKXtpZigib2JqZWN0IiE9PXQoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgaT1yLmNhbGwoZSxufHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dChpKSlyZXR1cm4gaTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PW4/U3RyaW5nOk51bWJlcikoZSl9KGEsInN0cmluZyIpLCJzeW1ib2wiPT09dChvKT9vOlN0cmluZyhvKSksaSl9dmFyIGEsb31mdW5jdGlvbiBhKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybihlW3RdPDwyND4+PjApKyhlW3QrMV08PDE2KSsoZVt0KzJdPDw4KSsoZVt0KzNdfHwwKX12YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxlKX12YXIgdCxuLHI7cmV0dXJuIHQ9ZSxyPVt7a2V5OiJwYXJzZUFubmV4QiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ieXRlTGVuZ3RoLTEsbj0wO2Rve2lmKDAhPT1lW3RdKWJyZWFrO24rKyx0LS19d2hpbGUodD4wKTtuPj0zJiYoZT1lLnN1YmFycmF5KDAsdCsxKSk7Zm9yKHZhciByPWUubGVuZ3RoLGk9MixhPTA7bnVsbCE9PWVbaV0mJnZvaWQgMCE9PWVbaV0mJjEhPT1lW2ldOylpKys7aWYoKGE9MisgKytpKT49cilyZXR1cm5bXTtmb3IodmFyIG89W107YTxyOylzd2l0Y2goZVthXSl7Y2FzZSAwOmlmKDAhPT1lW2EtMV0pe2ErPTI7YnJlYWt9aWYoMCE9PWVbYS0yXSl7YSsrO2JyZWFrfWlmKGE8ci0xJiYxIT09ZVthKzFdKXthKys7YnJlYWt9aSE9PWEtMiYmby5wdXNoKGUuc3ViYXJyYXkoaSxhLTIpKTtkb3thKyt9d2hpbGUoMSE9PWVbYV0mJmE8cik7YT0oaT1hKzEpKzI7YnJlYWs7Y2FzZSAxOmlmKDAhPT1lW2EtMV18fDAhPT1lW2EtMl0pe2ErPTM7YnJlYWt9aSE9PWEtMiYmby5wdXNoKGUuc3ViYXJyYXkoaSxhLTIpKSxhPShpPWErMSkrMjticmVhaztkZWZhdWx0OmErPTN9cmV0dXJuIGk8ciYmby5wdXNoKGUuc3ViYXJyYXkoaSkpLG99fSx7a2V5OiJwYXJzZUF2Y0MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo0O2lmKCEoZS5sZW5ndGg8NCkpe2Zvcih2YXIgbixyPWUubGVuZ3RoLGk9W10sbz0wO28rdDxyOylpZihuPWEoZSxvKSwzPT09dCYmKG4+Pj49OCksbys9dCxuKXtpZihvK24+cilicmVhaztpLnB1c2goZS5zdWJhcnJheShvLG8rbikpLG8rPW59cmV0dXJuIGl9fX0se2tleToicGFyc2VTRUkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9dD8yOjEsaT0wLGE9MCxvPSIiOzI1NT09PWVbcl07KWkrPTI1NSxyKys7Zm9yKGkrPWVbcisrXTsyNTU9PT1lW3JdOylhKz0yNTUscisrO2lmKGErPWVbcisrXSw1PT09aSYmbj5yKzE2KWZvcih2YXIgdT0wO3U8MTY7dSsrKW8rPWVbcl0udG9TdHJpbmcoMTYpLHIrKztyZXR1cm57cGF5bG9hZDplLnN1YmFycmF5KHIscithKSx0eXBlOmksc2l6ZTphLHV1aWQ6b319fSx7a2V5OiJyZW1vdmVFUEIiLHZhbHVlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmJ5dGVMZW5ndGgsbj1bXSxyPTE7cjx0LTI7KTA9PT1lW3JdJiYwPT09ZVtyKzFdJiYzPT09ZVtyKzJdPyhuLnB1c2gocisyKSxyKz0yKTpyKys7aWYoIW4ubGVuZ3RoKXJldHVybiBlO3ZhciBpPXQtbi5sZW5ndGgsYT1uZXcgVWludDhBcnJheShpKSxvPTA7Zm9yKHI9MDtyPGk7bysrLHIrKylvPT09blswXSYmKG8rKyxuLnNoaWZ0KCkpLGFbcl09ZVtvXTtyZXR1cm4gYX19XSwobj1udWxsKSYmaSh0LnByb3RvdHlwZSxuKSxyJiZpKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX0oKTsidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSI9PT1zZWxmLmNvbnN0cnVjdG9yLm5hbWUmJnNlbGYuYWRkRXZlbnRMaXN0ZW5lcigicnRjdHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIG4saT10LnRyYW5zZm9ybWVyLGE9aS5vcHRpb25zLnBvcnQsdT0obj1mdW5jdGlvbihlKXthLnBvc3RNZXNzYWdlKGUpfSxuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxpKXt2YXIgYT1lLmlzSDI2NVZpZGVvRnJhbWUodCk7ZS5nZXROQUxVbml0cyhuZXcgcih0LmRhdGEpLGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGUuc2VpKXt2YXIgdD1vLnBhcnNlU0VJKG8ucmVtb3ZlRVBCKGUuYm9keSksITEpO3QmJm4oe2RhdGE6dCxzZWk6e2NvZGU6dC50eXBlLGNvbnRlbnQ6dC5wYXlsb2FkfX0pfX0pKSxpLmVucXVldWUodCl9fSkpO2kucmVhZGFibGUucGlwZVRocm91Z2godSkucGlwZVRvKHQudHJhbnNmb3JtZXIud3JpdGFibGUpfSkpfSgpOwo=";
|
|
5920
6050
|
var blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], {
|
|
5921
6051
|
type: "text/javascript;charset=utf-8"
|
|
5922
6052
|
});
|
|
@@ -5930,21 +6060,19 @@ function WorkerWrapper() {
|
|
|
5930
6060
|
objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
|
|
5931
6061
|
}
|
|
5932
6062
|
}
|
|
5933
|
-
var
|
|
5934
|
-
function
|
|
5935
|
-
_classCallCheck$3(this,
|
|
5936
|
-
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
}
|
|
5942
|
-
_createClass$3(AudioStallObserver2, [{
|
|
6063
|
+
var _AudioStallObserver = /* @__PURE__ */ function() {
|
|
6064
|
+
function _AudioStallObserver2() {
|
|
6065
|
+
_classCallCheck$3(this, _AudioStallObserver2);
|
|
6066
|
+
this._isStallInPreReportEnd = false;
|
|
6067
|
+
this._stallList = [];
|
|
6068
|
+
this._audioTransceiver = null;
|
|
6069
|
+
}
|
|
6070
|
+
_createClass$3(_AudioStallObserver2, [{
|
|
5943
6071
|
key: "start",
|
|
5944
6072
|
value: function start(transceiver) {
|
|
5945
6073
|
this.stop();
|
|
5946
6074
|
this._audioTransceiver = transceiver;
|
|
5947
|
-
if (
|
|
6075
|
+
if (_AudioStallObserver2.interval >= 100) {
|
|
5948
6076
|
this._startStallCountInterval();
|
|
5949
6077
|
}
|
|
5950
6078
|
}
|
|
@@ -5954,7 +6082,7 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
5954
6082
|
this._stallList = [];
|
|
5955
6083
|
if (this._audioStallTimer) {
|
|
5956
6084
|
clearTimeout(this._audioStallTimer);
|
|
5957
|
-
this._audioStallTimer
|
|
6085
|
+
delete this._audioStallTimer;
|
|
5958
6086
|
}
|
|
5959
6087
|
}
|
|
5960
6088
|
}, {
|
|
@@ -6020,12 +6148,12 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
6020
6148
|
switch (_context2.prev = _context2.next) {
|
|
6021
6149
|
case 0:
|
|
6022
6150
|
clearTimeout(_this._audioStallTimer);
|
|
6023
|
-
_this._audioStallTimer
|
|
6151
|
+
delete _this._audioStallTimer;
|
|
6024
6152
|
_context2.next = 4;
|
|
6025
6153
|
return _this._audioStallCount();
|
|
6026
6154
|
case 4:
|
|
6027
6155
|
if (!_this._audioStallTimer) {
|
|
6028
|
-
_this._audioStallTimer = setTimeout(loop,
|
|
6156
|
+
_this._audioStallTimer = setTimeout(loop, _AudioStallObserver2.interval);
|
|
6029
6157
|
}
|
|
6030
6158
|
case 5:
|
|
6031
6159
|
case "end":
|
|
@@ -6037,7 +6165,7 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
6037
6165
|
return _ref.apply(this, arguments);
|
|
6038
6166
|
};
|
|
6039
6167
|
}();
|
|
6040
|
-
this._audioStallTimer = setTimeout(loop,
|
|
6168
|
+
this._audioStallTimer = setTimeout(loop, _AudioStallObserver2.interval);
|
|
6041
6169
|
}
|
|
6042
6170
|
}, {
|
|
6043
6171
|
key: "_audioStallCount",
|
|
@@ -6048,7 +6176,7 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
6048
6176
|
while (1)
|
|
6049
6177
|
switch (_context3.prev = _context3.next) {
|
|
6050
6178
|
case 0:
|
|
6051
|
-
if (!(this._preSample && Date.now() - this._preSample.ts <
|
|
6179
|
+
if (!(this._preSample && Date.now() - this._preSample.ts < _AudioStallObserver2.interval * 0.5)) {
|
|
6052
6180
|
_context3.next = 2;
|
|
6053
6181
|
break;
|
|
6054
6182
|
}
|
|
@@ -6102,7 +6230,7 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
6102
6230
|
_inboundRTP3 = inboundRTP, concealedSamples = _inboundRTP3.concealedSamples, totalSamplesReceived = _inboundRTP3.totalSamplesReceived;
|
|
6103
6231
|
interval_concealed_samples = concealedSamples - this._preSample.concealedSamples;
|
|
6104
6232
|
interval_samples_received = totalSamplesReceived - this._preSample.totalSamplesReceived;
|
|
6105
|
-
is_stall = interval_concealed_samples >= 0 && interval_samples_received >= 0 && interval_concealed_samples >=
|
|
6233
|
+
is_stall = interval_concealed_samples >= 0 && interval_samples_received >= 0 && interval_concealed_samples >= _AudioStallObserver2.ratio * interval_samples_received;
|
|
6106
6234
|
this._stallList.push({
|
|
6107
6235
|
concealed: interval_concealed_samples,
|
|
6108
6236
|
received: interval_samples_received,
|
|
@@ -6130,10 +6258,11 @@ var AudioStallObserver = /* @__PURE__ */ function() {
|
|
|
6130
6258
|
return _audioStallCount;
|
|
6131
6259
|
}()
|
|
6132
6260
|
}]);
|
|
6133
|
-
return
|
|
6261
|
+
return _AudioStallObserver2;
|
|
6134
6262
|
}();
|
|
6135
|
-
|
|
6136
|
-
|
|
6263
|
+
var AudioStallObserver = _AudioStallObserver;
|
|
6264
|
+
AudioStallObserver.interval = 100;
|
|
6265
|
+
AudioStallObserver.ratio = 0.6;
|
|
6137
6266
|
var computeStallInfo = function computeStallInfo2(list, times, isStallInPreEnd) {
|
|
6138
6267
|
var _list$;
|
|
6139
6268
|
var res = {
|
|
@@ -6202,13 +6331,22 @@ var VideoStallObserver = /* @__PURE__ */ function() {
|
|
|
6202
6331
|
function VideoStallObserver2() {
|
|
6203
6332
|
var _this = this;
|
|
6204
6333
|
_classCallCheck$3(this, VideoStallObserver2);
|
|
6205
|
-
|
|
6334
|
+
this._videoInWaiting100ms = false;
|
|
6335
|
+
this._videoInWaiting500ms = false;
|
|
6336
|
+
this._pauseStart = 0;
|
|
6337
|
+
this._pauseDuration = 0;
|
|
6338
|
+
this._stallTimeThreshold = {
|
|
6339
|
+
stall500ms: isSafari() || isFirefox() ? 550 : 500,
|
|
6340
|
+
stall100ms: 100
|
|
6341
|
+
};
|
|
6342
|
+
this._support100msStall = checkVideoFrameCallback();
|
|
6343
|
+
this._handleVisibilityChange = function() {
|
|
6206
6344
|
if (document.visibilityState === "hidden") {
|
|
6207
6345
|
_this._framePause();
|
|
6208
6346
|
}
|
|
6209
|
-
}
|
|
6210
|
-
|
|
6211
|
-
if (_this._prePts) {
|
|
6347
|
+
};
|
|
6348
|
+
this._framePause = function() {
|
|
6349
|
+
if (_this._prePts && _this._stallList) {
|
|
6212
6350
|
var current = performance.now();
|
|
6213
6351
|
var delta = current - _this._prePts;
|
|
6214
6352
|
_this._stallList.push({
|
|
@@ -6217,23 +6355,7 @@ var VideoStallObserver = /* @__PURE__ */ function() {
|
|
|
6217
6355
|
});
|
|
6218
6356
|
_this._prePts = void 0;
|
|
6219
6357
|
}
|
|
6220
|
-
});
|
|
6221
|
-
this._removeHandler = void 0;
|
|
6222
|
-
this._remotePlayPauseHandler = void 0;
|
|
6223
|
-
this._prePts = void 0;
|
|
6224
|
-
this._stallList = void 0;
|
|
6225
|
-
this._videoInWaiting100ms = false;
|
|
6226
|
-
this._videoInWaiting500ms = false;
|
|
6227
|
-
this._isPaused = void 0;
|
|
6228
|
-
this._pauseStart = 0;
|
|
6229
|
-
this._pauseDuration = 0;
|
|
6230
|
-
this._requestVideoFrameCallbackTimer = void 0;
|
|
6231
|
-
this._player = void 0;
|
|
6232
|
-
this._stallTimeThreshold = {
|
|
6233
|
-
stall500ms: isSafari() || isFirefox() ? 550 : 500,
|
|
6234
|
-
stall100ms: 100
|
|
6235
6358
|
};
|
|
6236
|
-
this._support100msStall = checkVideoFrameCallback();
|
|
6237
6359
|
}
|
|
6238
6360
|
_createClass$3(VideoStallObserver2, [{
|
|
6239
6361
|
key: "start",
|
|
@@ -6271,7 +6393,7 @@ var VideoStallObserver = /* @__PURE__ */ function() {
|
|
|
6271
6393
|
player.removeEventListener("play", handlePlay);
|
|
6272
6394
|
};
|
|
6273
6395
|
document.addEventListener("visibilitychange", this._handleVisibilityChange);
|
|
6274
|
-
|
|
6396
|
+
window.addEventListener("pagehide", this._framePause);
|
|
6275
6397
|
}
|
|
6276
6398
|
}, {
|
|
6277
6399
|
key: "stop",
|
|
@@ -6290,7 +6412,7 @@ var VideoStallObserver = /* @__PURE__ */ function() {
|
|
|
6290
6412
|
this._videoInWaiting100ms = false;
|
|
6291
6413
|
this._videoInWaiting500ms = false;
|
|
6292
6414
|
document.removeEventListener("visibilitychange", this._handleVisibilityChange);
|
|
6293
|
-
|
|
6415
|
+
window.removeEventListener("pagehide", this._framePause);
|
|
6294
6416
|
}
|
|
6295
6417
|
}, {
|
|
6296
6418
|
key: "destroy",
|
|
@@ -6359,7 +6481,7 @@ var VideoStallObserver = /* @__PURE__ */ function() {
|
|
|
6359
6481
|
}
|
|
6360
6482
|
var _stallInfo$stall = stallInfo.stall, stallDuration500ms = _stallInfo$stall.stallDuration500ms, stallDuration100ms = _stallInfo$stall.stallDuration100ms;
|
|
6361
6483
|
stallInfo.stall.stallRate500ms = Math.min(Number((stallDuration500ms / interval).toFixed(4)), 1);
|
|
6362
|
-
if (this._support100msStall) {
|
|
6484
|
+
if (this._support100msStall && stallDuration100ms) {
|
|
6363
6485
|
stallInfo.stall.stallRate100ms = Math.min(Number((stallDuration100ms / interval).toFixed(4)), 1);
|
|
6364
6486
|
} else {
|
|
6365
6487
|
delete stallInfo.stall.stallRate100ms;
|
|
@@ -6525,7 +6647,7 @@ function diffRecvAudioStats(oldStats, newStats) {
|
|
|
6525
6647
|
receivedSampleRate: diffNumber(oldStats, newStats, "totalSamplesReceived") / statsInterval,
|
|
6526
6648
|
concealedSamples: Math.round(diffNumber(oldStats, newStats, "concealedSamples")),
|
|
6527
6649
|
concealmentEvent: Math.round(diffNumber(oldStats, newStats, "concealmentEvents")),
|
|
6528
|
-
e2eDelay: Math.round(newStats.rtt + jitterBufferDelay)
|
|
6650
|
+
e2eDelay: Math.round((newStats.rtt || 0) + jitterBufferDelay)
|
|
6529
6651
|
};
|
|
6530
6652
|
}
|
|
6531
6653
|
function getRecvVideoStats(_x2) {
|
|
@@ -6596,12 +6718,16 @@ function diffRecvVideoStats(oldStats, newStats) {
|
|
|
6596
6718
|
var nackCount = diffNumber(oldStats, newStats, "nackCount");
|
|
6597
6719
|
var packetsReceived = diffNumber(oldStats, newStats, "packetsReceived");
|
|
6598
6720
|
var jitterBufferDelay = Math.round(diffNumber(oldStats, newStats, "jitterBufferDelay") / diffNumber(oldStats, newStats, "jitterBufferEmittedCount") * 1e3);
|
|
6721
|
+
var newResolution = (newStats.width || 0) * (newStats.height || 0);
|
|
6722
|
+
var oldResolution = (oldStats.width || 0) * (oldStats.height || 0);
|
|
6723
|
+
var abrState = newResolution === 0 || oldResolution === 0 ? "none" : newResolution > oldResolution ? "upgrade" : newResolution < oldResolution ? "degrade" : "none";
|
|
6599
6724
|
return {
|
|
6600
6725
|
statsInterval,
|
|
6726
|
+
abrState,
|
|
6601
6727
|
width: newStats.width || 0,
|
|
6602
6728
|
height: newStats.height || 0,
|
|
6603
6729
|
estimatedPlayoutTimestamp: newStats.estimatedPlayoutTimestamp,
|
|
6604
|
-
videoLossRate: +(packetsLostDiff / (diffNumber(oldStats, newStats, "packetsReceived") + packetsLostDiff)),
|
|
6730
|
+
videoLossRate: +(packetsLostDiff / (diffNumber(oldStats, newStats, "packetsReceived") + packetsLostDiff)).toFixed(2),
|
|
6605
6731
|
receivedKBitrate: +(diffNumber(oldStats, newStats, "bytesReceived") * 8 / statsInterval).toFixed(2),
|
|
6606
6732
|
decoderOutputFrameRate: Math.round(diffNumber(oldStats, newStats, "framesDecoded") * 1e3 / statsInterval),
|
|
6607
6733
|
receivedFrameRate: Math.round(diffNumber(oldStats, newStats, "framesReceived") * 1e3 / statsInterval),
|
|
@@ -6616,7 +6742,7 @@ function diffRecvVideoStats(oldStats, newStats) {
|
|
|
6616
6742
|
firCount: diffNumber(oldStats, newStats, "firCount"),
|
|
6617
6743
|
nackCount,
|
|
6618
6744
|
pliCount: diffNumber(oldStats, newStats, "pliCount"),
|
|
6619
|
-
e2eDelay: Math.round(newStats.rtt + jitterBufferDelay),
|
|
6745
|
+
e2eDelay: Math.round((newStats.rtt || 0) + jitterBufferDelay),
|
|
6620
6746
|
retransmittedRate: +(nackCount / (packetsReceived + packetsLostDiff)).toFixed(2)
|
|
6621
6747
|
};
|
|
6622
6748
|
}
|
|
@@ -6649,11 +6775,11 @@ var Quality = {
|
|
|
6649
6775
|
DOWN: 6
|
|
6650
6776
|
};
|
|
6651
6777
|
var NetworkQuality = /* @__PURE__ */ function() {
|
|
6652
|
-
function NetworkQuality2(
|
|
6778
|
+
function NetworkQuality2(_peer, _networkQualityParams) {
|
|
6653
6779
|
_classCallCheck$3(this, NetworkQuality2);
|
|
6654
|
-
|
|
6655
|
-
this.
|
|
6656
|
-
this.
|
|
6780
|
+
this._peer = _peer;
|
|
6781
|
+
this._networkQualityParams = _networkQualityParams;
|
|
6782
|
+
this._preDownlinkStats = [];
|
|
6657
6783
|
}
|
|
6658
6784
|
_createClass$3(NetworkQuality2, [{
|
|
6659
6785
|
key: "getDownlinkQuality",
|
|
@@ -6708,11 +6834,11 @@ var NetworkQuality = /* @__PURE__ */ function() {
|
|
|
6708
6834
|
} else {
|
|
6709
6835
|
quality = QosLevel.VBAD;
|
|
6710
6836
|
}
|
|
6711
|
-
if (retransmittedRate > qosQualityParams[QosLevel.BAD].minRetransmittedRate) {
|
|
6837
|
+
if (retransmittedRate > (qosQualityParams[QosLevel.BAD].minRetransmittedRate || 0.5)) {
|
|
6712
6838
|
quality = Math.max(quality, QosLevel.BAD);
|
|
6713
|
-
} else if (retransmittedRate > qosQualityParams[QosLevel.POOR].minRetransmittedRate) {
|
|
6839
|
+
} else if (retransmittedRate > (qosQualityParams[QosLevel.POOR].minRetransmittedRate || 0.35)) {
|
|
6714
6840
|
quality = Math.max(quality, QosLevel.POOR);
|
|
6715
|
-
} else if (retransmittedRate > qosQualityParams[QosLevel.GOOD].minRetransmittedRate) {
|
|
6841
|
+
} else if (retransmittedRate > (qosQualityParams[QosLevel.GOOD].minRetransmittedRate || 0.2)) {
|
|
6716
6842
|
quality = Math.max(quality, QosLevel.GOOD);
|
|
6717
6843
|
}
|
|
6718
6844
|
return quality;
|
|
@@ -6753,6 +6879,240 @@ var NetworkQuality = /* @__PURE__ */ function() {
|
|
|
6753
6879
|
}]);
|
|
6754
6880
|
return NetworkQuality2;
|
|
6755
6881
|
}();
|
|
6882
|
+
var FIRST_FRAME_STATE_ORDER = [RTC_FIRST_FRAME_STATE.LOAD_START, RTC_FIRST_FRAME_STATE.OFFER_SDP_READY, RTC_FIRST_FRAME_STATE.ANSWER_SDP_RECV, RTC_FIRST_FRAME_STATE.ANSWER_SDP_READY, RTC_FIRST_FRAME_STATE.ICE_CONNECTED, RTC_FIRST_FRAME_STATE.DTLS_CONNECTED, RTC_FIRST_FRAME_STATE.PEER_CONNECTED, RTC_FIRST_FRAME_STATE.FIRST_PACKET_RECV, RTC_FIRST_FRAME_STATE.FIRST_FRAME_RECV, RTC_FIRST_FRAME_STATE.FIRST_FRAME_DECODED, RTC_FIRST_FRAME_STATE.VIDEO_LOADEDDATA, RTC_FIRST_FRAME_STATE.VIDEO_CANPLAY, RTC_FIRST_FRAME_STATE.VIDEO_PLAYING];
|
|
6883
|
+
var FirstFrameObserver = /* @__PURE__ */ function() {
|
|
6884
|
+
function FirstFrameObserver2(_emitFirstFrameState) {
|
|
6885
|
+
var _this = this;
|
|
6886
|
+
_classCallCheck$3(this, FirstFrameObserver2);
|
|
6887
|
+
this._emitFirstFrameState = _emitFirstFrameState;
|
|
6888
|
+
this._startConnectTs = 0;
|
|
6889
|
+
this._firstVideoFrameInterval = null;
|
|
6890
|
+
this._preState = null;
|
|
6891
|
+
this._state = {};
|
|
6892
|
+
this._pc = null;
|
|
6893
|
+
this._video = null;
|
|
6894
|
+
this._videoTransceiver = null;
|
|
6895
|
+
this._extraInfo = {
|
|
6896
|
+
is_preload: false
|
|
6897
|
+
};
|
|
6898
|
+
this._handleConnectionStateChange = function() {
|
|
6899
|
+
var _this$_pc;
|
|
6900
|
+
if (((_this$_pc = _this._pc) === null || _this$_pc === void 0 ? void 0 : _this$_pc.connectionState) === "connected" && _this._videoTransceiver) {
|
|
6901
|
+
_this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.PEER_CONNECTED);
|
|
6902
|
+
_this._watchForFirstVideoFrameRecv(_this._videoTransceiver);
|
|
6903
|
+
}
|
|
6904
|
+
};
|
|
6905
|
+
this._handleICEConnectionStateChange = function() {
|
|
6906
|
+
var _this$_pc2;
|
|
6907
|
+
if (((_this$_pc2 = _this._pc) === null || _this$_pc2 === void 0 ? void 0 : _this$_pc2.iceConnectionState) === "connected") {
|
|
6908
|
+
_this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.ICE_CONNECTED);
|
|
6909
|
+
}
|
|
6910
|
+
};
|
|
6911
|
+
this._handlePlaying = function() {
|
|
6912
|
+
if (!_this._state[RTC_FIRST_FRAME_STATE.PEER_CONNECTED]) {
|
|
6913
|
+
return;
|
|
6914
|
+
}
|
|
6915
|
+
_this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.VIDEO_PLAYING);
|
|
6916
|
+
_this.reset();
|
|
6917
|
+
};
|
|
6918
|
+
this._handleCanplay = function() {
|
|
6919
|
+
if (!_this._state[RTC_FIRST_FRAME_STATE.PEER_CONNECTED]) {
|
|
6920
|
+
return;
|
|
6921
|
+
}
|
|
6922
|
+
_this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.VIDEO_CANPLAY);
|
|
6923
|
+
};
|
|
6924
|
+
this._handleLoadeddata = function() {
|
|
6925
|
+
if (!_this._state[RTC_FIRST_FRAME_STATE.PEER_CONNECTED]) {
|
|
6926
|
+
return;
|
|
6927
|
+
}
|
|
6928
|
+
_this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.VIDEO_LOADEDDATA);
|
|
6929
|
+
};
|
|
6930
|
+
this._handleError = function() {
|
|
6931
|
+
_this.reset();
|
|
6932
|
+
};
|
|
6933
|
+
}
|
|
6934
|
+
_createClass$3(FirstFrameObserver2, [{
|
|
6935
|
+
key: "start",
|
|
6936
|
+
value: function start() {
|
|
6937
|
+
this.reset();
|
|
6938
|
+
this._startConnectTs = Date.now();
|
|
6939
|
+
this.changeFirstFrameState(RTC_FIRST_FRAME_STATE.LOAD_START);
|
|
6940
|
+
}
|
|
6941
|
+
}, {
|
|
6942
|
+
key: "changeFirstFrameState",
|
|
6943
|
+
value: function changeFirstFrameState(state) {
|
|
6944
|
+
var _ref, _this2 = this;
|
|
6945
|
+
var preIdx = (_ref = this._preState && FIRST_FRAME_STATE_ORDER.indexOf(this._preState)) !== null && _ref !== void 0 ? _ref : -1;
|
|
6946
|
+
var curIdx = FIRST_FRAME_STATE_ORDER.indexOf(state);
|
|
6947
|
+
var elapsed = Date.now() - this._startConnectTs;
|
|
6948
|
+
if (curIdx > preIdx) {
|
|
6949
|
+
FIRST_FRAME_STATE_ORDER.slice(preIdx + 1, curIdx + 1).forEach(function(s) {
|
|
6950
|
+
_this2._state[s] = elapsed;
|
|
6951
|
+
});
|
|
6952
|
+
this._preState = state;
|
|
6953
|
+
}
|
|
6954
|
+
}
|
|
6955
|
+
}, {
|
|
6956
|
+
key: "setIsPreload",
|
|
6957
|
+
value: function setIsPreload(isPreload) {
|
|
6958
|
+
this._extraInfo.is_preload = isPreload;
|
|
6959
|
+
}
|
|
6960
|
+
}, {
|
|
6961
|
+
key: "setFailureReason",
|
|
6962
|
+
value: function setFailureReason(reason) {
|
|
6963
|
+
this._extraInfo.failure_reason = reason;
|
|
6964
|
+
}
|
|
6965
|
+
}, {
|
|
6966
|
+
key: "bindEvents",
|
|
6967
|
+
value: function bindEvents(pc, videoTransceiver, video) {
|
|
6968
|
+
var _this3 = this;
|
|
6969
|
+
this._pc = pc;
|
|
6970
|
+
this._video = video;
|
|
6971
|
+
this._videoTransceiver = videoTransceiver;
|
|
6972
|
+
pc.addEventListener("connectionstatechange", this._handleConnectionStateChange);
|
|
6973
|
+
pc.addEventListener("iceconnectionstatechange", this._handleICEConnectionStateChange);
|
|
6974
|
+
var _ref2 = (videoTransceiver === null || videoTransceiver === void 0 ? void 0 : videoTransceiver.receiver) || {}, transport = _ref2.transport;
|
|
6975
|
+
if (transport) {
|
|
6976
|
+
transport.onstatechange = function() {
|
|
6977
|
+
transport.state === "connected" && _this3.changeFirstFrameState(RTC_FIRST_FRAME_STATE.DTLS_CONNECTED);
|
|
6978
|
+
};
|
|
6979
|
+
}
|
|
6980
|
+
video === null || video === void 0 ? void 0 : video.addEventListener("playing", this._handlePlaying);
|
|
6981
|
+
video === null || video === void 0 ? void 0 : video.addEventListener("canplay", this._handleCanplay);
|
|
6982
|
+
video === null || video === void 0 ? void 0 : video.addEventListener("loadeddata", this._handleLoadeddata);
|
|
6983
|
+
video === null || video === void 0 ? void 0 : video.addEventListener("error", this._handleError);
|
|
6984
|
+
}
|
|
6985
|
+
}, {
|
|
6986
|
+
key: "_watchForFirstVideoFrameRecv",
|
|
6987
|
+
value: function _watchForFirstVideoFrameRecv(videoTransceiver) {
|
|
6988
|
+
var _this4 = this;
|
|
6989
|
+
var hasPacketsReceived = false;
|
|
6990
|
+
var hasFrameReceived = false;
|
|
6991
|
+
var hasFrameDecoded = false;
|
|
6992
|
+
this._cancelWatchForFirstVideoFrameRecv();
|
|
6993
|
+
this._firstVideoFrameInterval = window.setInterval(/* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee() {
|
|
6994
|
+
var _inboundRtpStats, _inboundRtpStats2, _inboundRtpStats3;
|
|
6995
|
+
var receiver, reports, inboundRtpStats;
|
|
6996
|
+
return _regeneratorRuntime$1().wrap(function _callee$(_context) {
|
|
6997
|
+
while (1)
|
|
6998
|
+
switch (_context.prev = _context.next) {
|
|
6999
|
+
case 0:
|
|
7000
|
+
receiver = videoTransceiver.receiver;
|
|
7001
|
+
_context.next = 3;
|
|
7002
|
+
return receiver.getStats();
|
|
7003
|
+
case 3:
|
|
7004
|
+
reports = _context.sent;
|
|
7005
|
+
reports.forEach(function(report) {
|
|
7006
|
+
if (report.type === "inbound-rtp") {
|
|
7007
|
+
inboundRtpStats = report;
|
|
7008
|
+
}
|
|
7009
|
+
});
|
|
7010
|
+
if (!hasPacketsReceived && (_inboundRtpStats = inboundRtpStats) !== null && _inboundRtpStats !== void 0 && _inboundRtpStats.packetsReceived && inboundRtpStats.packetsReceived > 0) {
|
|
7011
|
+
hasPacketsReceived = true;
|
|
7012
|
+
_this4.changeFirstFrameState(RTC_FIRST_FRAME_STATE.FIRST_PACKET_RECV);
|
|
7013
|
+
}
|
|
7014
|
+
if (!hasFrameReceived && (_inboundRtpStats2 = inboundRtpStats) !== null && _inboundRtpStats2 !== void 0 && _inboundRtpStats2.framesReceived && inboundRtpStats.framesReceived > 0) {
|
|
7015
|
+
hasFrameReceived = true;
|
|
7016
|
+
_this4.changeFirstFrameState(RTC_FIRST_FRAME_STATE.FIRST_FRAME_RECV);
|
|
7017
|
+
}
|
|
7018
|
+
if (!hasFrameDecoded && (_inboundRtpStats3 = inboundRtpStats) !== null && _inboundRtpStats3 !== void 0 && _inboundRtpStats3.framesDecoded && inboundRtpStats.framesDecoded > 0) {
|
|
7019
|
+
hasFrameDecoded = true;
|
|
7020
|
+
_this4.changeFirstFrameState(RTC_FIRST_FRAME_STATE.FIRST_FRAME_DECODED);
|
|
7021
|
+
_this4._cancelWatchForFirstVideoFrameRecv();
|
|
7022
|
+
}
|
|
7023
|
+
case 8:
|
|
7024
|
+
case "end":
|
|
7025
|
+
return _context.stop();
|
|
7026
|
+
}
|
|
7027
|
+
}, _callee);
|
|
7028
|
+
})), 200);
|
|
7029
|
+
}
|
|
7030
|
+
}, {
|
|
7031
|
+
key: "_cancelWatchForFirstVideoFrameRecv",
|
|
7032
|
+
value: function _cancelWatchForFirstVideoFrameRecv() {
|
|
7033
|
+
if (this._firstVideoFrameInterval) {
|
|
7034
|
+
window.clearInterval(this._firstVideoFrameInterval);
|
|
7035
|
+
this._firstVideoFrameInterval = null;
|
|
7036
|
+
}
|
|
7037
|
+
}
|
|
7038
|
+
}, {
|
|
7039
|
+
key: "reset",
|
|
7040
|
+
value: function reset() {
|
|
7041
|
+
var _this5 = this, _this$_video, _this$_video2, _this$_video3, _this$_video4, _this$_pc3, _this$_pc4;
|
|
7042
|
+
if (Object.keys(this._state).length > 0) {
|
|
7043
|
+
var state = _objectSpread2$2({}, this._state);
|
|
7044
|
+
var extraInfo = _objectSpread2$2({}, this._extraInfo);
|
|
7045
|
+
getTransportInfo(this._videoTransceiver, extraInfo).then(function() {
|
|
7046
|
+
_this5._emitFirstFrameState(state, extraInfo);
|
|
7047
|
+
});
|
|
7048
|
+
}
|
|
7049
|
+
this._preState = null;
|
|
7050
|
+
this._extraInfo = {
|
|
7051
|
+
is_preload: false
|
|
7052
|
+
};
|
|
7053
|
+
this._state = {};
|
|
7054
|
+
(_this$_video = this._video) === null || _this$_video === void 0 ? void 0 : _this$_video.removeEventListener("playing", this._handlePlaying);
|
|
7055
|
+
(_this$_video2 = this._video) === null || _this$_video2 === void 0 ? void 0 : _this$_video2.removeEventListener("canplay", this._handleCanplay);
|
|
7056
|
+
(_this$_video3 = this._video) === null || _this$_video3 === void 0 ? void 0 : _this$_video3.removeEventListener("loadeddata", this._handleLoadeddata);
|
|
7057
|
+
(_this$_video4 = this._video) === null || _this$_video4 === void 0 ? void 0 : _this$_video4.removeEventListener("error", this._handleError);
|
|
7058
|
+
(_this$_pc3 = this._pc) === null || _this$_pc3 === void 0 ? void 0 : _this$_pc3.removeEventListener("connectionstatechange", this._handleConnectionStateChange);
|
|
7059
|
+
(_this$_pc4 = this._pc) === null || _this$_pc4 === void 0 ? void 0 : _this$_pc4.removeEventListener("iceconnectionstatechange", this._handleICEConnectionStateChange);
|
|
7060
|
+
this._cancelWatchForFirstVideoFrameRecv();
|
|
7061
|
+
this._pc = null;
|
|
7062
|
+
this._video = null;
|
|
7063
|
+
this._videoTransceiver = null;
|
|
7064
|
+
}
|
|
7065
|
+
}]);
|
|
7066
|
+
return FirstFrameObserver2;
|
|
7067
|
+
}();
|
|
7068
|
+
var getTransportInfo = /* @__PURE__ */ function() {
|
|
7069
|
+
var _ref4 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2(videoTransceiver, extraInfo) {
|
|
7070
|
+
var _videoTransceiver$rec;
|
|
7071
|
+
var reports, candidatePairStats, localCandidateStats, remoteCandidateStats;
|
|
7072
|
+
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
7073
|
+
while (1)
|
|
7074
|
+
switch (_context2.prev = _context2.next) {
|
|
7075
|
+
case 0:
|
|
7076
|
+
_context2.next = 2;
|
|
7077
|
+
return videoTransceiver === null || videoTransceiver === void 0 ? void 0 : (_videoTransceiver$rec = videoTransceiver.receiver) === null || _videoTransceiver$rec === void 0 ? void 0 : _videoTransceiver$rec.getStats().catch(function() {
|
|
7078
|
+
});
|
|
7079
|
+
case 2:
|
|
7080
|
+
reports = _context2.sent;
|
|
7081
|
+
reports === null || reports === void 0 ? void 0 : reports.forEach(function(report) {
|
|
7082
|
+
if (report.type === "candidate-pair") {
|
|
7083
|
+
candidatePairStats = report;
|
|
7084
|
+
localCandidateStats = reports.get(report.localCandidateId);
|
|
7085
|
+
remoteCandidateStats = reports.get(report.remoteCandidateId);
|
|
7086
|
+
}
|
|
7087
|
+
});
|
|
7088
|
+
if (remoteCandidateStats) {
|
|
7089
|
+
extraInfo.remote_ip = remoteCandidateStats.ip || remoteCandidateStats.address;
|
|
7090
|
+
extraInfo.remote_port = remoteCandidateStats.port;
|
|
7091
|
+
extraInfo.remote_candidate_type = remoteCandidateStats.candidateType;
|
|
7092
|
+
extraInfo.protocol = remoteCandidateStats.protocol;
|
|
7093
|
+
}
|
|
7094
|
+
if (localCandidateStats) {
|
|
7095
|
+
extraInfo.local_ip = localCandidateStats.ip || localCandidateStats.address;
|
|
7096
|
+
extraInfo.local_port = localCandidateStats.port;
|
|
7097
|
+
extraInfo.local_candidate_type = localCandidateStats.candidateType;
|
|
7098
|
+
}
|
|
7099
|
+
if (candidatePairStats) {
|
|
7100
|
+
extraInfo.rtt = candidatePairStats.currentRoundTripTime;
|
|
7101
|
+
extraInfo.stun_requests_sent = candidatePairStats.requestsSent;
|
|
7102
|
+
extraInfo.stun_requests_received = candidatePairStats.requestsReceived;
|
|
7103
|
+
extraInfo.stun_responses_sent = candidatePairStats.responsesSent;
|
|
7104
|
+
extraInfo.stun_responses_received = candidatePairStats.responsesReceived;
|
|
7105
|
+
}
|
|
7106
|
+
case 7:
|
|
7107
|
+
case "end":
|
|
7108
|
+
return _context2.stop();
|
|
7109
|
+
}
|
|
7110
|
+
}, _callee2);
|
|
7111
|
+
}));
|
|
7112
|
+
return function getTransportInfo2(_x, _x2) {
|
|
7113
|
+
return _ref4.apply(this, arguments);
|
|
7114
|
+
};
|
|
7115
|
+
}();
|
|
6756
7116
|
function changeNumberInRange(source, min, max, delta) {
|
|
6757
7117
|
var target = source + delta;
|
|
6758
7118
|
if (target > max) {
|
|
@@ -6763,6 +7123,111 @@ function changeNumberInRange(source, min, max, delta) {
|
|
|
6763
7123
|
function isHarmonyOS() {
|
|
6764
7124
|
return /(HarmonyOS|OpenHarmony|ArkWeb)/i.test(navigator.userAgent);
|
|
6765
7125
|
}
|
|
7126
|
+
function compareURL(url1, url2) {
|
|
7127
|
+
var queryKeys = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
|
|
7128
|
+
if (typeof url1 !== "string" || typeof url2 !== "string") {
|
|
7129
|
+
return false;
|
|
7130
|
+
}
|
|
7131
|
+
if (!url1.includes("://")) {
|
|
7132
|
+
url1 = window.location.protocol + "//" + url1;
|
|
7133
|
+
}
|
|
7134
|
+
if (!url2.includes("://")) {
|
|
7135
|
+
url2 = window.location.protocol + "//" + url2;
|
|
7136
|
+
}
|
|
7137
|
+
var url1Obj;
|
|
7138
|
+
var url2Obj;
|
|
7139
|
+
try {
|
|
7140
|
+
url1Obj = new URL(url1);
|
|
7141
|
+
url2Obj = new URL(url2);
|
|
7142
|
+
} catch (e) {
|
|
7143
|
+
return false;
|
|
7144
|
+
}
|
|
7145
|
+
if (url1Obj.host + url1Obj.pathname !== url2Obj.host + url2Obj.pathname) {
|
|
7146
|
+
return false;
|
|
7147
|
+
}
|
|
7148
|
+
var _iterator = _createForOfIteratorHelper$1(queryKeys), _step;
|
|
7149
|
+
try {
|
|
7150
|
+
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
|
|
7151
|
+
var key = _step.value;
|
|
7152
|
+
if (url1Obj.searchParams.get(key) !== url2Obj.searchParams.get(key)) {
|
|
7153
|
+
return false;
|
|
7154
|
+
}
|
|
7155
|
+
}
|
|
7156
|
+
} catch (err) {
|
|
7157
|
+
_iterator.e(err);
|
|
7158
|
+
} finally {
|
|
7159
|
+
_iterator.f();
|
|
7160
|
+
}
|
|
7161
|
+
return true;
|
|
7162
|
+
}
|
|
7163
|
+
function addUrlParams(url, params) {
|
|
7164
|
+
if (!params || Object.keys(params).length === 0) {
|
|
7165
|
+
return url;
|
|
7166
|
+
}
|
|
7167
|
+
var urlParams = url.includes("?") ? new URLSearchParams(url.split("?")[1]) : new URLSearchParams();
|
|
7168
|
+
Object.keys(params).forEach(function(key) {
|
|
7169
|
+
urlParams.set(key, params[key]);
|
|
7170
|
+
});
|
|
7171
|
+
return url.split("?")[0] + "?" + urlParams.toString();
|
|
7172
|
+
}
|
|
7173
|
+
function isHeyTapBrowser() {
|
|
7174
|
+
return /(HeyTapBrowser)/i.test(navigator.userAgent);
|
|
7175
|
+
}
|
|
7176
|
+
function isVivoBrowser() {
|
|
7177
|
+
return /(VivoBrowser)/i.test(navigator.userAgent);
|
|
7178
|
+
}
|
|
7179
|
+
var VideoFrameRecvCallback = /* @__PURE__ */ function() {
|
|
7180
|
+
function VideoFrameRecvCallback2() {
|
|
7181
|
+
var _this = this;
|
|
7182
|
+
_classCallCheck$3(this, VideoFrameRecvCallback2);
|
|
7183
|
+
this._onVideoRefresh = function(_, data) {
|
|
7184
|
+
var _this$_domElement;
|
|
7185
|
+
_this._recentVideoInfo = data;
|
|
7186
|
+
_this._requestVideoFrameCallbackTimer = (_this$_domElement = _this._domElement) === null || _this$_domElement === void 0 ? void 0 : _this$_domElement.requestVideoFrameCallback(_this._onVideoRefresh);
|
|
7187
|
+
};
|
|
7188
|
+
}
|
|
7189
|
+
_createClass$3(VideoFrameRecvCallback2, [{
|
|
7190
|
+
key: "start",
|
|
7191
|
+
value: function start(domElement) {
|
|
7192
|
+
var _this2 = this;
|
|
7193
|
+
this._domElement = domElement;
|
|
7194
|
+
if (typeof HTMLVideoElement.prototype.requestVideoFrameCallback === "function") {
|
|
7195
|
+
if (domElement) {
|
|
7196
|
+
this._requestVideoFrameCallbackTimer = domElement.requestVideoFrameCallback(this._onVideoRefresh.bind(this));
|
|
7197
|
+
this._removeHandler = function() {
|
|
7198
|
+
_this2._requestVideoFrameCallbackTimer && (domElement === null || domElement === void 0 ? void 0 : domElement.cancelVideoFrameCallback(_this2._requestVideoFrameCallbackTimer));
|
|
7199
|
+
};
|
|
7200
|
+
}
|
|
7201
|
+
}
|
|
7202
|
+
}
|
|
7203
|
+
}, {
|
|
7204
|
+
key: "stop",
|
|
7205
|
+
value: function stop() {
|
|
7206
|
+
var _this$_removeHandler;
|
|
7207
|
+
delete this._recentVideoInfo;
|
|
7208
|
+
delete this._domElement;
|
|
7209
|
+
(_this$_removeHandler = this._removeHandler) === null || _this$_removeHandler === void 0 ? void 0 : _this$_removeHandler.call(this);
|
|
7210
|
+
delete this._removeHandler;
|
|
7211
|
+
}
|
|
7212
|
+
}, {
|
|
7213
|
+
key: "getRecentRenderInfo4Report",
|
|
7214
|
+
value: function getRecentRenderInfo4Report() {
|
|
7215
|
+
var _this3 = this;
|
|
7216
|
+
var obj = {};
|
|
7217
|
+
if (this._recentVideoInfo) {
|
|
7218
|
+
Object.keys(this._recentVideoInfo).forEach(function(k) {
|
|
7219
|
+
var _this3$_recentVideoIn;
|
|
7220
|
+
var key = k.replace(/[a-z]{1}[A-Z]{1}/g, function(e) {
|
|
7221
|
+
return "".concat(e[0], "_").concat(e[1].toLowerCase());
|
|
7222
|
+
});
|
|
7223
|
+
obj["video_".concat(key)] = (_this3$_recentVideoIn = _this3._recentVideoInfo) === null || _this3$_recentVideoIn === void 0 ? void 0 : _this3$_recentVideoIn[k];
|
|
7224
|
+
});
|
|
7225
|
+
}
|
|
7226
|
+
return obj;
|
|
7227
|
+
}
|
|
7228
|
+
}]);
|
|
7229
|
+
return VideoFrameRecvCallback2;
|
|
7230
|
+
}();
|
|
6766
7231
|
var logger = new Logger("rts");
|
|
6767
7232
|
var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
6768
7233
|
_inherits$1(Rts2, _EventEmitter);
|
|
@@ -6771,31 +7236,28 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6771
7236
|
var _this;
|
|
6772
7237
|
_classCallCheck$3(this, Rts2);
|
|
6773
7238
|
_this = _super.call(this);
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
|
|
6783
|
-
|
|
6784
|
-
|
|
6785
|
-
|
|
6786
|
-
|
|
6787
|
-
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6796
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_networkQualityResult", []);
|
|
6797
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_peerStateTimer", null);
|
|
6798
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_checkStatsError", /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
7239
|
+
_this._url = "";
|
|
7240
|
+
_this._pc = null;
|
|
7241
|
+
_this._audioTransceicer = null;
|
|
7242
|
+
_this._videoTransceicer = null;
|
|
7243
|
+
_this._mediaStream = null;
|
|
7244
|
+
_this._lastMediaStream = null;
|
|
7245
|
+
_this._loader = null;
|
|
7246
|
+
_this._networkEvaluate = null;
|
|
7247
|
+
_this._retry = 0;
|
|
7248
|
+
_this._player = null;
|
|
7249
|
+
_this._waitingTimer = 0;
|
|
7250
|
+
_this._rctConnectStartTs = 0;
|
|
7251
|
+
_this._isReplacing = false;
|
|
7252
|
+
_this._firstFrameObserver = new FirstFrameObserver(_this._emitFirstFrameState.bind(_assertThisInitialized$1(_this)));
|
|
7253
|
+
_this._audio = null;
|
|
7254
|
+
_this._video = null;
|
|
7255
|
+
_this._preAudioStats = null;
|
|
7256
|
+
_this._preVideoStats = null;
|
|
7257
|
+
_this._rtcReportTimer = null;
|
|
7258
|
+
_this._networkQualityResult = [];
|
|
7259
|
+
_this._videoJitterBufferDelay = 0;
|
|
7260
|
+
_this._checkStatsError = /* @__PURE__ */ _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee2() {
|
|
6799
7261
|
return _regeneratorRuntime$1().wrap(function _callee2$(_context2) {
|
|
6800
7262
|
while (1)
|
|
6801
7263
|
switch (_context2.prev = _context2.next) {
|
|
@@ -6836,12 +7298,16 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6836
7298
|
return _context2.stop();
|
|
6837
7299
|
}
|
|
6838
7300
|
}, _callee2);
|
|
6839
|
-
}))
|
|
6840
|
-
|
|
7301
|
+
}));
|
|
7302
|
+
_this._onTrack = function(e) {
|
|
6841
7303
|
logger.log("addTrack: ", e.track, e.streams);
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
7304
|
+
if (e.track.kind === "audio") {
|
|
7305
|
+
_this._audio = e.track;
|
|
7306
|
+
} else {
|
|
7307
|
+
_this._video = e.track;
|
|
7308
|
+
}
|
|
7309
|
+
};
|
|
7310
|
+
_this._mockWaitingByTimeupdate = function() {
|
|
6845
7311
|
var _this$_pc, _this$_pc2;
|
|
6846
7312
|
if (!(((_this$_pc = _this._pc) === null || _this$_pc === void 0 ? void 0 : _this$_pc.connectionState) === "connected" || ((_this$_pc2 = _this._pc) === null || _this$_pc2 === void 0 ? void 0 : _this$_pc2.iceConnectionState) === "connected"))
|
|
6847
7313
|
return;
|
|
@@ -6852,8 +7318,8 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6852
7318
|
return;
|
|
6853
7319
|
_this.emit("waiting");
|
|
6854
7320
|
}, _this._opts.stallInterval);
|
|
6855
|
-
}
|
|
6856
|
-
|
|
7321
|
+
};
|
|
7322
|
+
_this._onLoadedData = function() {
|
|
6857
7323
|
logger.log("loadeddata emit");
|
|
6858
7324
|
_this.getStatsSnapshoot().then(function(snap) {
|
|
6859
7325
|
_this.emit(EVENT.METADATA_PARSED, {
|
|
@@ -6867,19 +7333,15 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6867
7333
|
meta: snap.audio
|
|
6868
7334
|
});
|
|
6869
7335
|
});
|
|
6870
|
-
}
|
|
6871
|
-
|
|
7336
|
+
};
|
|
7337
|
+
_this._setDelay = function(delayHint) {
|
|
6872
7338
|
if (_this._opts.progressiveSetDelay) {
|
|
6873
7339
|
_this._startSetDelayLoop(delayHint);
|
|
6874
7340
|
} else {
|
|
6875
7341
|
var _this$_audioTransceic2;
|
|
6876
|
-
var key = [
|
|
6877
|
-
"playoutDelayHint",
|
|
6878
|
-
"jitterBufferDelayHint",
|
|
6879
|
-
"jitterBufferTarget"
|
|
6880
|
-
].find(function(key2) {
|
|
7342
|
+
var key = ["playoutDelayHint", "jitterBufferDelayHint", "jitterBufferTarget"].find(function(key2) {
|
|
6881
7343
|
var _this$_audioTransceic, _this$_videoTransceic;
|
|
6882
|
-
return key2 in ((_this$_audioTransceic = _this._audioTransceicer) === null || _this$_audioTransceic === void 0 ? void 0 : _this$_audioTransceic.receiver) && key2 in ((_this$_videoTransceic = _this._videoTransceicer) === null || _this$_videoTransceic === void 0 ? void 0 : _this$_videoTransceic.receiver);
|
|
7344
|
+
return key2 in (((_this$_audioTransceic = _this._audioTransceicer) === null || _this$_audioTransceic === void 0 ? void 0 : _this$_audioTransceic.receiver) || {}) && key2 in (((_this$_videoTransceic = _this._videoTransceicer) === null || _this$_videoTransceic === void 0 ? void 0 : _this$_videoTransceic.receiver) || {});
|
|
6883
7345
|
});
|
|
6884
7346
|
if (!key)
|
|
6885
7347
|
return;
|
|
@@ -6889,24 +7351,19 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6889
7351
|
_this._audioTransceicer.receiver[key] = delayHint;
|
|
6890
7352
|
_this._videoTransceicer.receiver[key] = delayHint;
|
|
6891
7353
|
}
|
|
6892
|
-
}
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_startSetDelayLoop", /* @__PURE__ */ function() {
|
|
7354
|
+
};
|
|
7355
|
+
_this._targetDelayHint = null;
|
|
7356
|
+
_this._setDelayError = null;
|
|
7357
|
+
_this._startSetDelayLoop = /* @__PURE__ */ function() {
|
|
6897
7358
|
var _ref3 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee4(delayHint) {
|
|
6898
7359
|
var key, preAudioStats, preVideoStats, _this$_opts$adaptiveJ, loopInterval, maxAvSyncDelay, maxJitterBufferDiff, maxStep, avDiffTooMuchCount;
|
|
6899
7360
|
return _regeneratorRuntime$1().wrap(function _callee4$(_context4) {
|
|
6900
7361
|
while (1)
|
|
6901
7362
|
switch (_context4.prev = _context4.next) {
|
|
6902
7363
|
case 0:
|
|
6903
|
-
key = [
|
|
6904
|
-
"playoutDelayHint",
|
|
6905
|
-
"jitterBufferDelayHint",
|
|
6906
|
-
"jitterBufferTarget"
|
|
6907
|
-
].find(function(key2) {
|
|
7364
|
+
key = ["playoutDelayHint", "jitterBufferDelayHint", "jitterBufferTarget"].find(function(key2) {
|
|
6908
7365
|
var _this$_audioTransceic3, _this$_videoTransceic2;
|
|
6909
|
-
return key2 in ((_this$_audioTransceic3 = _this._audioTransceicer) === null || _this$_audioTransceic3 === void 0 ? void 0 : _this$_audioTransceic3.receiver) && key2 in ((_this$_videoTransceic2 = _this._videoTransceicer) === null || _this$_videoTransceic2 === void 0 ? void 0 : _this$_videoTransceic2.receiver);
|
|
7366
|
+
return key2 in (((_this$_audioTransceic3 = _this._audioTransceicer) === null || _this$_audioTransceic3 === void 0 ? void 0 : _this$_audioTransceic3.receiver) || {}) && key2 in (((_this$_videoTransceic2 = _this._videoTransceicer) === null || _this$_videoTransceic2 === void 0 ? void 0 : _this$_videoTransceic2.receiver) || {});
|
|
6910
7367
|
});
|
|
6911
7368
|
if (key) {
|
|
6912
7369
|
_context4.next = 3;
|
|
@@ -6921,13 +7378,14 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6921
7378
|
}
|
|
6922
7379
|
return _context4.abrupt("return");
|
|
6923
7380
|
case 6:
|
|
7381
|
+
logger.log("_startSetDelayLoop()", "invoked, delayHint: ".concat(delayHint));
|
|
6924
7382
|
_this._targetDelayHint = delayHint;
|
|
6925
7383
|
if (!_this._setDelayTimer) {
|
|
6926
|
-
_context4.next =
|
|
7384
|
+
_context4.next = 10;
|
|
6927
7385
|
break;
|
|
6928
7386
|
}
|
|
6929
7387
|
return _context4.abrupt("return");
|
|
6930
|
-
case
|
|
7388
|
+
case 10:
|
|
6931
7389
|
preAudioStats = null;
|
|
6932
7390
|
preVideoStats = null;
|
|
6933
7391
|
_this$_opts$adaptiveJ = _this._opts.adaptiveJitterBuffer, loopInterval = _this$_opts$adaptiveJ.loopInterval, maxAvSyncDelay = _this$_opts$adaptiveJ.maxAvSyncDelay, maxJitterBufferDiff = _this$_opts$adaptiveJ.maxJitterBufferDiff, maxStep = _this$_opts$adaptiveJ.maxStep;
|
|
@@ -6954,7 +7412,7 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6954
7412
|
}
|
|
6955
7413
|
return _context3.abrupt("return");
|
|
6956
7414
|
case 8:
|
|
6957
|
-
targetDelayMs = _this._targetDelayHint * 1e3;
|
|
7415
|
+
targetDelayMs = (_this._targetDelayHint || 0) * 1e3;
|
|
6958
7416
|
currentTargetDelayMs = currentTargetDelay * 1e3;
|
|
6959
7417
|
_context3.next = 12;
|
|
6960
7418
|
return Promise.all([getRecvAudioStats(_this._audioTransceicer.receiver.getStats()), getRecvVideoStats(_this._videoTransceicer.receiver.getStats())]);
|
|
@@ -6983,7 +7441,7 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
6983
7441
|
break;
|
|
6984
7442
|
}
|
|
6985
7443
|
if (avDiffTooMuchCount++ > 8 && currentVideoDelay > currentAudioDelay) {
|
|
6986
|
-
_this._audioTransceicer.receiver[key] = Math.min(currentVideoDelay / 1e3, _this._targetDelayHint);
|
|
7444
|
+
_this._audioTransceicer.receiver[key] = Math.min(currentVideoDelay / 1e3, _this._targetDelayHint || 0);
|
|
6987
7445
|
avDiffTooMuchCount = 0;
|
|
6988
7446
|
}
|
|
6989
7447
|
logger.log("av_jb_diff(".concat(currentAudioDelay - currentVideoDelay, "=").concat(currentAudioDelay, "-").concat(currentVideoDelay, ") or av_sync_diff(").concat(av_sync_diff, ") too much, skip setting"));
|
|
@@ -7018,7 +7476,7 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7018
7476
|
}
|
|
7019
7477
|
}, _callee3, null, [[0, 40]]);
|
|
7020
7478
|
})), loopInterval);
|
|
7021
|
-
case
|
|
7479
|
+
case 15:
|
|
7022
7480
|
case "end":
|
|
7023
7481
|
return _context4.stop();
|
|
7024
7482
|
}
|
|
@@ -7027,26 +7485,31 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7027
7485
|
return function(_x) {
|
|
7028
7486
|
return _ref3.apply(this, arguments);
|
|
7029
7487
|
};
|
|
7030
|
-
}()
|
|
7031
|
-
|
|
7488
|
+
}();
|
|
7489
|
+
_this._getDelay = function() {
|
|
7032
7490
|
try {
|
|
7491
|
+
var _this$_audioTransceic6;
|
|
7033
7492
|
var key = ["playoutDelayHint", "jitterBufferDelayHint", "jitterBufferTarget"].find(function(key2) {
|
|
7034
|
-
|
|
7493
|
+
var _this$_videoTransceic4, _this$_audioTransceic5;
|
|
7494
|
+
return key2 in (((_this$_videoTransceic4 = _this._videoTransceicer) === null || _this$_videoTransceic4 === void 0 ? void 0 : _this$_videoTransceic4.receiver) || {}) && key2 in (((_this$_audioTransceic5 = _this._audioTransceicer) === null || _this$_audioTransceic5 === void 0 ? void 0 : _this$_audioTransceic5.receiver) || {});
|
|
7035
7495
|
});
|
|
7036
|
-
|
|
7496
|
+
if (!key)
|
|
7497
|
+
return;
|
|
7498
|
+
return (_this$_audioTransceic6 = _this._audioTransceicer) === null || _this$_audioTransceic6 === void 0 ? void 0 : _this$_audioTransceic6.receiver[key];
|
|
7037
7499
|
} catch (error) {
|
|
7038
7500
|
logger.error("get delay error");
|
|
7039
7501
|
}
|
|
7040
|
-
}
|
|
7041
|
-
|
|
7502
|
+
};
|
|
7503
|
+
_this._onLoaderRetry = function(error, retryTime) {
|
|
7504
|
+
console.log(error, "retryTime", retryTime);
|
|
7042
7505
|
_this.emit(EVENT.LOAD_RETRY, {
|
|
7043
7506
|
error: StreamingError.network(error),
|
|
7044
7507
|
retryTime
|
|
7045
7508
|
});
|
|
7046
|
-
}
|
|
7509
|
+
};
|
|
7047
7510
|
_this._opts = getOption(opts);
|
|
7048
7511
|
_this._media = _this._opts.media;
|
|
7049
|
-
_this._player = _this._opts.player;
|
|
7512
|
+
_this._player = _this._opts.player || null;
|
|
7050
7513
|
_this._loader = new NetLoader(_objectSpread2$2(_objectSpread2$2({}, opts.fetchOptions), {}, {
|
|
7051
7514
|
responseType: "json",
|
|
7052
7515
|
method: "POST",
|
|
@@ -7056,9 +7519,12 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7056
7519
|
onRetryError: _this._onLoaderRetry,
|
|
7057
7520
|
logger
|
|
7058
7521
|
}));
|
|
7059
|
-
_this._retry = _this._opts.retryCount;
|
|
7522
|
+
_this._retry = _this._opts.retryCount || 0;
|
|
7523
|
+
_this._preloadPromise = _this._opts.preloadPromise;
|
|
7060
7524
|
_this._bindMediaEvent();
|
|
7525
|
+
logger.log("constructor()", opts);
|
|
7061
7526
|
_this._changeVolumeInHarmonyWorkaround();
|
|
7527
|
+
_this._mutedBeforePlayingWorkaround();
|
|
7062
7528
|
if (_this._opts.mediaStream && _this._opts.seamlesslyReload) {
|
|
7063
7529
|
_this._lastMediaStream = _this._opts.mediaStream;
|
|
7064
7530
|
}
|
|
@@ -7079,6 +7545,11 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7079
7545
|
get: function get() {
|
|
7080
7546
|
return this._video;
|
|
7081
7547
|
}
|
|
7548
|
+
}, {
|
|
7549
|
+
key: "getJitterBufferDelay",
|
|
7550
|
+
value: function getJitterBufferDelay() {
|
|
7551
|
+
return this._videoJitterBufferDelay;
|
|
7552
|
+
}
|
|
7082
7553
|
}, {
|
|
7083
7554
|
key: "loader",
|
|
7084
7555
|
get: function get() {
|
|
@@ -7092,9 +7563,24 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7092
7563
|
}
|
|
7093
7564
|
}, {
|
|
7094
7565
|
key: "getStats",
|
|
7095
|
-
value: function
|
|
7096
|
-
|
|
7097
|
-
|
|
7566
|
+
value: function() {
|
|
7567
|
+
var _getStats22 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee5() {
|
|
7568
|
+
return _regeneratorRuntime$1().wrap(function _callee5$(_context5) {
|
|
7569
|
+
while (1)
|
|
7570
|
+
switch (_context5.prev = _context5.next) {
|
|
7571
|
+
case 0:
|
|
7572
|
+
return _context5.abrupt("return", getStats(this._pc));
|
|
7573
|
+
case 1:
|
|
7574
|
+
case "end":
|
|
7575
|
+
return _context5.stop();
|
|
7576
|
+
}
|
|
7577
|
+
}, _callee5, this);
|
|
7578
|
+
}));
|
|
7579
|
+
function getStats$1() {
|
|
7580
|
+
return _getStats22.apply(this, arguments);
|
|
7581
|
+
}
|
|
7582
|
+
return getStats$1;
|
|
7583
|
+
}()
|
|
7098
7584
|
}, {
|
|
7099
7585
|
key: "getStatsSnapshoot",
|
|
7100
7586
|
value: function getStatsSnapshoot$1() {
|
|
@@ -7105,51 +7591,105 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7105
7591
|
}, {
|
|
7106
7592
|
key: "load",
|
|
7107
7593
|
value: function() {
|
|
7108
|
-
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
7594
|
+
var _load = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee6(url, failureReason) {
|
|
7109
7595
|
var _this2 = this;
|
|
7110
|
-
var
|
|
7111
|
-
return _regeneratorRuntime$1().wrap(function
|
|
7596
|
+
var lastPc, answerSdp, errorStr, preloadPromise, info, encodedTransformSupported;
|
|
7597
|
+
return _regeneratorRuntime$1().wrap(function _callee6$(_context6) {
|
|
7112
7598
|
while (1)
|
|
7113
|
-
switch (
|
|
7599
|
+
switch (_context6.prev = _context6.next) {
|
|
7114
7600
|
case 0:
|
|
7115
|
-
|
|
7601
|
+
logger.log("load()", 'invoked, url: "'.concat(url, '"'));
|
|
7602
|
+
this._disconnect(failureReason || "invoke load");
|
|
7116
7603
|
this._url = url;
|
|
7117
|
-
|
|
7604
|
+
lastPc = this._pc;
|
|
7118
7605
|
if (!this._opts.hackCreateOfferIssue) {
|
|
7119
|
-
|
|
7606
|
+
_context6.next = 7;
|
|
7120
7607
|
break;
|
|
7121
7608
|
}
|
|
7122
|
-
|
|
7609
|
+
_context6.next = 7;
|
|
7123
7610
|
return this._createEmptyPeer();
|
|
7124
|
-
case
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7611
|
+
case 7:
|
|
7612
|
+
_context6.prev = 7;
|
|
7613
|
+
this._firstFrameObserver.start();
|
|
7614
|
+
if (!this._preloadPromise) {
|
|
7615
|
+
_context6.next = 38;
|
|
7616
|
+
break;
|
|
7617
|
+
}
|
|
7618
|
+
logger.log("load()", "in preload process...");
|
|
7619
|
+
_context6.prev = 11;
|
|
7620
|
+
this._firstFrameObserver.setIsPreload(true);
|
|
7621
|
+
if (compareURL(this._url, this._preloadPromise.url, ["tabr_start_bitrate"])) {
|
|
7622
|
+
_context6.next = 17;
|
|
7623
|
+
break;
|
|
7624
|
+
}
|
|
7625
|
+
errorStr = "preload url not match, current url: ".concat(this._url, ", preload url: ").concat(this._preloadPromise.url);
|
|
7626
|
+
delete this._preloadPromise;
|
|
7627
|
+
throw new Error(errorStr);
|
|
7628
|
+
case 17:
|
|
7629
|
+
preloadPromise = this._preloadPromise.promise;
|
|
7630
|
+
delete this._preloadPromise;
|
|
7631
|
+
_context6.next = 21;
|
|
7632
|
+
return preloadPromise;
|
|
7633
|
+
case 21:
|
|
7634
|
+
info = _context6.sent;
|
|
7635
|
+
if (!(info.pc.signalingState !== "have-local-offer")) {
|
|
7636
|
+
_context6.next = 24;
|
|
7637
|
+
break;
|
|
7638
|
+
}
|
|
7639
|
+
throw new Error('pc.signalingState not equal "have-local-offer", current state is '.concat(info.pc.signalingState));
|
|
7640
|
+
case 24:
|
|
7641
|
+
this._pc = info.pc;
|
|
7642
|
+
answerSdp = info.answerSdp;
|
|
7643
|
+
this._videoTransceicer = info.videoTransceiver;
|
|
7644
|
+
this._audioTransceicer = info.audioTransceiver;
|
|
7645
|
+
if (this._opts.enableSei) {
|
|
7646
|
+
this.initVideoEncodedTransform();
|
|
7647
|
+
this.initAudioEncodedTransform();
|
|
7130
7648
|
}
|
|
7649
|
+
_context6.next = 36;
|
|
7650
|
+
break;
|
|
7651
|
+
case 31:
|
|
7652
|
+
_context6.prev = 31;
|
|
7653
|
+
_context6.t0 = _context6["catch"](11);
|
|
7654
|
+
logger.warn("load()", "preload failed, ".concat(_context6.t0.message || _context6.t0.toString()));
|
|
7655
|
+
this.load(url, _context6.t0.message || _context6.t0.toString());
|
|
7656
|
+
return _context6.abrupt("return");
|
|
7657
|
+
case 36:
|
|
7658
|
+
_context6.next = 44;
|
|
7659
|
+
break;
|
|
7660
|
+
case 38:
|
|
7661
|
+
encodedTransformSupported = isLegacyEncodedTransformSupported();
|
|
7662
|
+
logger.log("load()", "isLegacyEncodedTransformSupported: ".concat(encodedTransformSupported));
|
|
7131
7663
|
this._pc = new RTCPeerConnection({
|
|
7132
7664
|
encodedInsertableStreams: encodedTransformSupported && this._opts.enableSei ? true : void 0
|
|
7133
7665
|
});
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7666
|
+
_context6.next = 43;
|
|
7667
|
+
return this._getAnswerSdp(this._pc);
|
|
7668
|
+
case 43:
|
|
7669
|
+
answerSdp = _context6.sent;
|
|
7670
|
+
case 44:
|
|
7671
|
+
this._bindRTCEvents(this._pc);
|
|
7672
|
+
_context6.next = 47;
|
|
7673
|
+
return this._handleAnswerSdp(this._pc, answerSdp);
|
|
7674
|
+
case 47:
|
|
7675
|
+
if (lastPc) {
|
|
7676
|
+
lastPc.close();
|
|
7677
|
+
}
|
|
7678
|
+
_context6.next = 53;
|
|
7139
7679
|
break;
|
|
7140
|
-
case
|
|
7141
|
-
|
|
7142
|
-
|
|
7680
|
+
case 50:
|
|
7681
|
+
_context6.prev = 50;
|
|
7682
|
+
_context6.t1 = _context6["catch"](7);
|
|
7143
7683
|
setTimeout(function() {
|
|
7144
|
-
return _this2._emitError(StreamingError.create(ERR.OTHER, null,
|
|
7684
|
+
return _this2._emitError(StreamingError.create(ERR.OTHER, null, _context6.t1));
|
|
7145
7685
|
});
|
|
7146
|
-
case
|
|
7686
|
+
case 53:
|
|
7147
7687
|
case "end":
|
|
7148
|
-
return
|
|
7688
|
+
return _context6.stop();
|
|
7149
7689
|
}
|
|
7150
|
-
},
|
|
7690
|
+
}, _callee6, this, [[7, 50], [11, 31]]);
|
|
7151
7691
|
}));
|
|
7152
|
-
function load(_x2) {
|
|
7692
|
+
function load(_x2, _x3) {
|
|
7153
7693
|
return _load.apply(this, arguments);
|
|
7154
7694
|
}
|
|
7155
7695
|
return load;
|
|
@@ -7157,13 +7697,13 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7157
7697
|
}, {
|
|
7158
7698
|
key: "switchURL",
|
|
7159
7699
|
value: function switchURL(url) {
|
|
7160
|
-
|
|
7700
|
+
logger.log("switchURL()", 'invoked, url: "'.concat(url, '"'));
|
|
7701
|
+
this.load(url || this._url, "invoke switchURL");
|
|
7161
7702
|
}
|
|
7162
7703
|
}, {
|
|
7163
7704
|
key: "_bindRTCEvents",
|
|
7164
|
-
value: function _bindRTCEvents() {
|
|
7705
|
+
value: function _bindRTCEvents(pc) {
|
|
7165
7706
|
var _this3 = this;
|
|
7166
|
-
var pc = this._pc;
|
|
7167
7707
|
pc.addEventListener("track", this._onTrack);
|
|
7168
7708
|
pc.addEventListener("connectionstatechange", function() {
|
|
7169
7709
|
logger.warn("onconnectionstatechange:", pc.connectionState);
|
|
@@ -7182,7 +7722,7 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7182
7722
|
return;
|
|
7183
7723
|
}
|
|
7184
7724
|
_this3._retry--;
|
|
7185
|
-
_this3.load(_this3._url);
|
|
7725
|
+
_this3.load(_this3._url, "rtc connect failed");
|
|
7186
7726
|
}
|
|
7187
7727
|
if (pc.connectionState === "connected") {
|
|
7188
7728
|
_this3._handleMediaStream();
|
|
@@ -7201,7 +7741,7 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7201
7741
|
value: function _handleMediaStream() {
|
|
7202
7742
|
var _this4 = this;
|
|
7203
7743
|
if (this._lastMediaStream) {
|
|
7204
|
-
var _this$
|
|
7744
|
+
var _this$_player2, _this$_player3, _this$_player3$play;
|
|
7205
7745
|
var videoTrack = this._lastMediaStream.getVideoTracks()[0];
|
|
7206
7746
|
var audioTrack = this._lastMediaStream.getAudioTracks()[0];
|
|
7207
7747
|
if (videoTrack) {
|
|
@@ -7214,20 +7754,15 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7214
7754
|
this._audio && this._mediaStream.addTrack(this._audio);
|
|
7215
7755
|
this._video && this._mediaStream.addTrack(this._video);
|
|
7216
7756
|
this._isReplacing = true;
|
|
7217
|
-
this._player.pause();
|
|
7218
|
-
(_this$_player$play =
|
|
7757
|
+
(_this$_player2 = this._player) === null || _this$_player2 === void 0 ? void 0 : _this$_player2.pause();
|
|
7758
|
+
(_this$_player3 = this._player) === null || _this$_player3 === void 0 ? void 0 : (_this$_player3$play = _this$_player3.play()) === null || _this$_player3$play === void 0 ? void 0 : _this$_player3$play.finally(function() {
|
|
7219
7759
|
_this4._isReplacing = false;
|
|
7220
7760
|
});
|
|
7221
7761
|
} else {
|
|
7222
7762
|
this._mediaStream = new MediaStream();
|
|
7223
7763
|
this._audio && this._mediaStream.addTrack(this._audio);
|
|
7224
7764
|
this._video && this._mediaStream.addTrack(this._video);
|
|
7225
|
-
this._media.srcObject = this._mediaStream;
|
|
7226
|
-
var req = this._player.play();
|
|
7227
|
-
if (req && req.catch) {
|
|
7228
|
-
req.catch(function(e) {
|
|
7229
|
-
});
|
|
7230
|
-
}
|
|
7765
|
+
this._media && (this._media.srcObject = this._mediaStream);
|
|
7231
7766
|
}
|
|
7232
7767
|
}
|
|
7233
7768
|
}, {
|
|
@@ -7281,21 +7816,22 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7281
7816
|
}, {
|
|
7282
7817
|
key: "_bindMediaEvent",
|
|
7283
7818
|
value: function _bindMediaEvent() {
|
|
7284
|
-
|
|
7285
|
-
this._media.addEventListener("
|
|
7819
|
+
var _this$_media, _this$_media2;
|
|
7820
|
+
(_this$_media = this._media) === null || _this$_media === void 0 ? void 0 : _this$_media.addEventListener("timeupdate", this._mockWaitingByTimeupdate);
|
|
7821
|
+
(_this$_media2 = this._media) === null || _this$_media2 === void 0 ? void 0 : _this$_media2.addEventListener("loadeddata", this._onLoadedData);
|
|
7286
7822
|
}
|
|
7287
7823
|
}, {
|
|
7288
|
-
key: "
|
|
7824
|
+
key: "_getAnswerSdp",
|
|
7289
7825
|
value: function() {
|
|
7290
|
-
var
|
|
7291
|
-
var
|
|
7292
|
-
return _regeneratorRuntime$1().wrap(function
|
|
7826
|
+
var _getAnswerSdp2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee7(pc) {
|
|
7827
|
+
var offer, answerSdp, parsed, finnalUrl, _this$_opts, _this$_loader, _this$_opts2, _parsed$media, parseSession, sessionId, reqStart, res, answer, err;
|
|
7828
|
+
return _regeneratorRuntime$1().wrap(function _callee7$(_context7) {
|
|
7293
7829
|
while (1)
|
|
7294
|
-
switch (
|
|
7830
|
+
switch (_context7.prev = _context7.next) {
|
|
7295
7831
|
case 0:
|
|
7296
|
-
|
|
7832
|
+
logger.log("_getAnswerSdp()");
|
|
7297
7833
|
if (!pc.addTransceiver) {
|
|
7298
|
-
|
|
7834
|
+
_context7.next = 11;
|
|
7299
7835
|
break;
|
|
7300
7836
|
}
|
|
7301
7837
|
this._audioTransceicer = pc.addTransceiver("audio", {
|
|
@@ -7304,32 +7840,37 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7304
7840
|
this._videoTransceicer = pc.addTransceiver("video", {
|
|
7305
7841
|
direction: "recvonly"
|
|
7306
7842
|
});
|
|
7307
|
-
this._setDelay(this._opts.delayHint);
|
|
7843
|
+
this._setDelay(this._opts.delayHint || null);
|
|
7308
7844
|
if (this._opts.enableSei) {
|
|
7309
7845
|
this.initVideoEncodedTransform();
|
|
7310
7846
|
this.initAudioEncodedTransform();
|
|
7311
7847
|
}
|
|
7312
|
-
|
|
7848
|
+
_context7.next = 8;
|
|
7313
7849
|
return pc.createOffer();
|
|
7314
7850
|
case 8:
|
|
7315
|
-
offer =
|
|
7316
|
-
|
|
7851
|
+
offer = _context7.sent;
|
|
7852
|
+
_context7.next = 14;
|
|
7317
7853
|
break;
|
|
7318
7854
|
case 11:
|
|
7319
|
-
|
|
7855
|
+
_context7.next = 13;
|
|
7320
7856
|
return pc.createOffer({
|
|
7321
7857
|
iceRestart: true,
|
|
7322
7858
|
offerToReceiveAudio: true,
|
|
7323
7859
|
offerToReceiveVideo: true
|
|
7324
7860
|
});
|
|
7325
7861
|
case 13:
|
|
7326
|
-
offer =
|
|
7862
|
+
offer = _context7.sent;
|
|
7327
7863
|
case 14:
|
|
7328
7864
|
if (this._opts.hackCreateOfferIssue) {
|
|
7329
7865
|
this._createEmptyPeer();
|
|
7330
7866
|
}
|
|
7331
|
-
logger.log("local offer");
|
|
7332
|
-
|
|
7867
|
+
logger.log("local offer", offer);
|
|
7868
|
+
if (offer.sdp) {
|
|
7869
|
+
_context7.next = 18;
|
|
7870
|
+
break;
|
|
7871
|
+
}
|
|
7872
|
+
throw new Error("create offer failed");
|
|
7873
|
+
case 18:
|
|
7333
7874
|
parsed = lib.parse(offer.sdp);
|
|
7334
7875
|
parsed.media.filter(function(x) {
|
|
7335
7876
|
return x.type === "audio";
|
|
@@ -7350,62 +7891,71 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7350
7891
|
type: "nack"
|
|
7351
7892
|
});
|
|
7352
7893
|
});
|
|
7894
|
+
parsed.media.filter(function(x) {
|
|
7895
|
+
return x.type === "video";
|
|
7896
|
+
}).forEach(function(x) {
|
|
7897
|
+
x.fmtp.forEach(function(x2) {
|
|
7898
|
+
if (x2.config.indexOf("profile-level-id") !== -1) {
|
|
7899
|
+
x2.config = "".concat(x2.config, ";sps-pps-idr-in-keyframe=1");
|
|
7900
|
+
}
|
|
7901
|
+
});
|
|
7902
|
+
});
|
|
7353
7903
|
offer.sdp = lib.write(parsed);
|
|
7354
|
-
logger.log("local offer modified:\n", offer
|
|
7355
|
-
|
|
7904
|
+
logger.log("local offer modified:\n", offer);
|
|
7905
|
+
_context7.next = 25;
|
|
7356
7906
|
return pc.setLocalDescription(offer);
|
|
7357
|
-
case
|
|
7907
|
+
case 25:
|
|
7358
7908
|
finnalUrl = this._url;
|
|
7359
|
-
|
|
7909
|
+
_context7.prev = 26;
|
|
7360
7910
|
if (this._opts.preProcessUrl) {
|
|
7361
7911
|
finnalUrl = this._opts.preProcessUrl(finnalUrl).url;
|
|
7362
7912
|
}
|
|
7363
|
-
|
|
7913
|
+
finnalUrl = addUrlParams(finnalUrl, this._opts.urlParams);
|
|
7914
|
+
this._loader && (this._loader.finnalUrl = finnalUrl);
|
|
7364
7915
|
parseSession = /_?session_id=([^&$]+)/.exec(finnalUrl);
|
|
7365
7916
|
sessionId = parseSession ? parseSession[1] : Date.now() + "666";
|
|
7917
|
+
this._firstFrameObserver.changeFirstFrameState(RTC_FIRST_FRAME_STATE.OFFER_SDP_READY);
|
|
7366
7918
|
this.emit(EVENT.LOAD_START, {
|
|
7367
7919
|
url: finnalUrl,
|
|
7368
7920
|
offersdp: (_this$_opts = this._opts) !== null && _this$_opts !== void 0 && _this$_opts.enableOriginSdpLogger ? offer.sdp : void 0,
|
|
7369
7921
|
sessionId
|
|
7370
7922
|
});
|
|
7371
7923
|
reqStart = Date.now();
|
|
7372
|
-
|
|
7373
|
-
return this._loader.load(finnalUrl, {
|
|
7924
|
+
_context7.next = 37;
|
|
7925
|
+
return (_this$_loader = this._loader) === null || _this$_loader === void 0 ? void 0 : _this$_loader.load(finnalUrl, {
|
|
7374
7926
|
body: JSON.stringify({
|
|
7375
7927
|
sessionId,
|
|
7376
7928
|
version: "1.0-html",
|
|
7377
7929
|
localSdp: offer
|
|
7378
7930
|
})
|
|
7379
7931
|
});
|
|
7380
|
-
case
|
|
7381
|
-
res =
|
|
7932
|
+
case 37:
|
|
7933
|
+
res = _context7.sent;
|
|
7382
7934
|
this.emit(EVENT.LOAD_RESPONSE_HEADERS, {
|
|
7383
7935
|
headers: res.response.headers
|
|
7384
7936
|
});
|
|
7385
7937
|
answer = res === null || res === void 0 ? void 0 : res.data;
|
|
7386
7938
|
if (!((answer === null || answer === void 0 ? void 0 : answer.code) === 404 || (answer === null || answer === void 0 ? void 0 : answer.code) === 403)) {
|
|
7387
|
-
|
|
7939
|
+
_context7.next = 45;
|
|
7388
7940
|
break;
|
|
7389
7941
|
}
|
|
7390
7942
|
err = StreamingError.create(answer.code === 404 ? ERR.NETWORK_NOTFOUND : ERR.NETWORK_FORBIDDEN, null, answer);
|
|
7391
7943
|
err.errorType = ERR.NETWORK;
|
|
7392
7944
|
this._emitError(err);
|
|
7393
|
-
return
|
|
7394
|
-
case
|
|
7945
|
+
return _context7.abrupt("return");
|
|
7946
|
+
case 45:
|
|
7395
7947
|
if (!((answer === null || answer === void 0 ? void 0 : answer.code) !== 200)) {
|
|
7396
|
-
|
|
7948
|
+
_context7.next = 47;
|
|
7397
7949
|
break;
|
|
7398
7950
|
}
|
|
7399
7951
|
throw new Error("code: ".concat(answer === null || answer === void 0 ? void 0 : answer.code, ", message:").concat(answer === null || answer === void 0 ? void 0 : answer.message));
|
|
7400
|
-
case
|
|
7401
|
-
|
|
7402
|
-
logger.log((_answer$remoteSdp = answer.remoteSdp) === null || _answer$remoteSdp === void 0 ? void 0 : _answer$remoteSdp.sdp);
|
|
7403
|
-
_parsed = lib.parse(answer.remoteSdp.sdp);
|
|
7952
|
+
case 47:
|
|
7953
|
+
answerSdp = res.data.remoteSdp.sdp;
|
|
7404
7954
|
this.emit(EVENT.LOAD_COMPLETE, {
|
|
7405
7955
|
url: finnalUrl,
|
|
7406
7956
|
elapsed: Date.now() - reqStart,
|
|
7407
|
-
answersdp: (_this$_opts2 = this._opts) !== null && _this$_opts2 !== void 0 && _this$_opts2.enableOriginSdpLogger ?
|
|
7408
|
-
parsedSdp:
|
|
7957
|
+
answersdp: (_this$_opts2 = this._opts) !== null && _this$_opts2 !== void 0 && _this$_opts2.enableOriginSdpLogger ? answerSdp : void 0,
|
|
7958
|
+
parsedSdp: parsed === null || parsed === void 0 ? void 0 : (_parsed$media = parsed.media) === null || _parsed$media === void 0 ? void 0 : _parsed$media.map(function(media) {
|
|
7409
7959
|
return {
|
|
7410
7960
|
candidates: media.candidates,
|
|
7411
7961
|
rtp: media.rtp,
|
|
@@ -7413,9 +7963,50 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7413
7963
|
};
|
|
7414
7964
|
})
|
|
7415
7965
|
});
|
|
7416
|
-
|
|
7966
|
+
_context7.next = 54;
|
|
7967
|
+
break;
|
|
7968
|
+
case 51:
|
|
7969
|
+
_context7.prev = 51;
|
|
7970
|
+
_context7.t0 = _context7["catch"](26);
|
|
7971
|
+
this._emitError(StreamingError.network(_context7.t0));
|
|
7972
|
+
case 54:
|
|
7973
|
+
return _context7.abrupt("return", answerSdp);
|
|
7974
|
+
case 55:
|
|
7975
|
+
case "end":
|
|
7976
|
+
return _context7.stop();
|
|
7977
|
+
}
|
|
7978
|
+
}, _callee7, this, [[26, 51]]);
|
|
7979
|
+
}));
|
|
7980
|
+
function _getAnswerSdp(_x4) {
|
|
7981
|
+
return _getAnswerSdp2.apply(this, arguments);
|
|
7982
|
+
}
|
|
7983
|
+
return _getAnswerSdp;
|
|
7984
|
+
}()
|
|
7985
|
+
}, {
|
|
7986
|
+
key: "_handleAnswerSdp",
|
|
7987
|
+
value: function() {
|
|
7988
|
+
var _handleAnswerSdp2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee8(pc, answerSdp) {
|
|
7989
|
+
var parsed, answer;
|
|
7990
|
+
return _regeneratorRuntime$1().wrap(function _callee8$(_context8) {
|
|
7991
|
+
while (1)
|
|
7992
|
+
switch (_context8.prev = _context8.next) {
|
|
7993
|
+
case 0:
|
|
7994
|
+
logger.log("_handleAnswerSdp()", "invoked, answerSdp:", {
|
|
7995
|
+
answerSdp
|
|
7996
|
+
});
|
|
7997
|
+
if (answerSdp) {
|
|
7998
|
+
_context8.next = 3;
|
|
7999
|
+
break;
|
|
8000
|
+
}
|
|
8001
|
+
return _context8.abrupt("return");
|
|
8002
|
+
case 3:
|
|
8003
|
+
this._firstFrameObserver.changeFirstFrameState(RTC_FIRST_FRAME_STATE.ANSWER_SDP_RECV);
|
|
8004
|
+
parsed = lib.parse(answerSdp);
|
|
8005
|
+
parsed.media.forEach(function(x) {
|
|
7417
8006
|
var _x$ssrcs, _x$ssrcs$find;
|
|
7418
|
-
|
|
8007
|
+
if (x.fingerprint) {
|
|
8008
|
+
x.fingerprint.hash = x.fingerprint.hash.toUpperCase();
|
|
8009
|
+
}
|
|
7419
8010
|
var msid = (_x$ssrcs = x.ssrcs) === null || _x$ssrcs === void 0 ? void 0 : (_x$ssrcs$find = _x$ssrcs.find(function(s) {
|
|
7420
8011
|
return s.attribute === "msid";
|
|
7421
8012
|
})) === null || _x$ssrcs$find === void 0 ? void 0 : _x$ssrcs$find.value;
|
|
@@ -7423,42 +8014,43 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7423
8014
|
x.msid = msid;
|
|
7424
8015
|
}
|
|
7425
8016
|
});
|
|
7426
|
-
answer
|
|
7427
|
-
logger.log("answer modified:\n",
|
|
8017
|
+
answer = lib.write(parsed);
|
|
8018
|
+
logger.log("answer modified:\n", {
|
|
8019
|
+
answer
|
|
8020
|
+
});
|
|
7428
8021
|
this._rctConnectStartTs = Date.now();
|
|
7429
8022
|
if (!(pc.signalingState === "closed")) {
|
|
7430
|
-
|
|
8023
|
+
_context8.next = 11;
|
|
7431
8024
|
break;
|
|
7432
8025
|
}
|
|
7433
|
-
return
|
|
7434
|
-
case
|
|
7435
|
-
|
|
7436
|
-
return pc.setRemoteDescription(
|
|
7437
|
-
|
|
8026
|
+
return _context8.abrupt("return");
|
|
8027
|
+
case 11:
|
|
8028
|
+
_context8.next = 13;
|
|
8029
|
+
return pc.setRemoteDescription({
|
|
8030
|
+
type: "answer",
|
|
8031
|
+
sdp: answer
|
|
8032
|
+
});
|
|
8033
|
+
case 13:
|
|
8034
|
+
this._firstFrameObserver.changeFirstFrameState(RTC_FIRST_FRAME_STATE.ANSWER_SDP_READY);
|
|
7438
8035
|
this._networkEvaluate = new NetworkEvaluate(pc, this._opts.networkEvaluateInterval);
|
|
7439
8036
|
this._listenPeerStateTimeout();
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
case 59:
|
|
7443
|
-
_context6.prev = 59;
|
|
7444
|
-
_context6.t0 = _context6["catch"](24);
|
|
7445
|
-
this._emitError(StreamingError.network(_context6.t0));
|
|
7446
|
-
case 62:
|
|
8037
|
+
this._firstFrameObserver.bindEvents(pc, this._videoTransceicer, this._media);
|
|
8038
|
+
case 17:
|
|
7447
8039
|
case "end":
|
|
7448
|
-
return
|
|
8040
|
+
return _context8.stop();
|
|
7449
8041
|
}
|
|
7450
|
-
},
|
|
8042
|
+
}, _callee8, this);
|
|
7451
8043
|
}));
|
|
7452
|
-
function
|
|
7453
|
-
return
|
|
8044
|
+
function _handleAnswerSdp(_x5, _x6) {
|
|
8045
|
+
return _handleAnswerSdp2.apply(this, arguments);
|
|
7454
8046
|
}
|
|
7455
|
-
return
|
|
8047
|
+
return _handleAnswerSdp;
|
|
7456
8048
|
}()
|
|
7457
8049
|
}, {
|
|
7458
8050
|
key: "_listenPeerStateTimeout",
|
|
7459
8051
|
value: function _listenPeerStateTimeout() {
|
|
7460
8052
|
var _this6 = this;
|
|
7461
|
-
this.
|
|
8053
|
+
this._clearPeerStateTimeout();
|
|
7462
8054
|
if (this._opts.connectionStateChangeTimeout) {
|
|
7463
8055
|
this._peerStateTimer = setTimeout(function() {
|
|
7464
8056
|
_this6._emitError(StreamingError.create(ERR.MEDIA, ERR.SUB_TYPES.MEDIA_ERR_SRC_NOT_SUPPORTED, {
|
|
@@ -7470,128 +8062,162 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7470
8062
|
}, {
|
|
7471
8063
|
key: "_clearPeerStateTimeout",
|
|
7472
8064
|
value: function _clearPeerStateTimeout() {
|
|
7473
|
-
|
|
7474
|
-
|
|
8065
|
+
if (this._peerStateTimer) {
|
|
8066
|
+
clearTimeout(this._peerStateTimer);
|
|
8067
|
+
delete this._peerStateTimer;
|
|
8068
|
+
}
|
|
7475
8069
|
}
|
|
7476
8070
|
}, {
|
|
7477
8071
|
key: "_startRtcReport",
|
|
7478
8072
|
value: function _startRtcReport() {
|
|
7479
8073
|
var _this7 = this;
|
|
7480
8074
|
this._stopRtcReport();
|
|
7481
|
-
|
|
7482
|
-
var
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
_this7._audioStallObserver
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
_this7._videoStallObserver
|
|
7502
|
-
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
_this7
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
8075
|
+
var report = /* @__PURE__ */ function() {
|
|
8076
|
+
var _ref5 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee9() {
|
|
8077
|
+
var _this7$_audioTranscei, _this7$_videoTranscei;
|
|
8078
|
+
var _this7$_frameRecvCall, _yield$Promise$all3, _yield$Promise$all4, curAudioStats, curVideoStats, _this7$_audioStallObs, _this7$_videoStallObs, _this7$_networkQualit, _this7$_networkQualit2, _this7$_media, _this7$_media2, _this7$_media3, _this7$_media4, _this7$_media5, _this7$_media6, _this7$_frameRecvCall2, audioStats, videoStats, audioStallInfo, videoStallInfo, _ref6, _ref7, quality, qualityInfo, av_sync_diff;
|
|
8079
|
+
return _regeneratorRuntime$1().wrap(function _callee9$(_context9) {
|
|
8080
|
+
while (1)
|
|
8081
|
+
switch (_context9.prev = _context9.next) {
|
|
8082
|
+
case 0:
|
|
8083
|
+
if (!(!((_this7$_audioTranscei = _this7._audioTransceicer) !== null && _this7$_audioTranscei !== void 0 && _this7$_audioTranscei.receiver) || !((_this7$_videoTranscei = _this7._videoTransceicer) !== null && _this7$_videoTranscei !== void 0 && _this7$_videoTranscei.receiver))) {
|
|
8084
|
+
_context9.next = 4;
|
|
8085
|
+
break;
|
|
8086
|
+
}
|
|
8087
|
+
_this7._preAudioStats = null;
|
|
8088
|
+
_this7._preVideoStats = null;
|
|
8089
|
+
return _context9.abrupt("return");
|
|
8090
|
+
case 4:
|
|
8091
|
+
if (!_this7._audioStallObserver && _this7._audioTransceicer) {
|
|
8092
|
+
_this7._audioStallObserver = new AudioStallObserver();
|
|
8093
|
+
_this7._audioStallObserver.start(_this7._audioTransceicer);
|
|
8094
|
+
}
|
|
8095
|
+
if (!_this7._videoStallObserver && _this7._video && _this7._media) {
|
|
8096
|
+
_this7._videoStallObserver = new VideoStallObserver();
|
|
8097
|
+
_this7._videoStallObserver.start(_this7._media);
|
|
8098
|
+
}
|
|
8099
|
+
if (!_this7._frameRecvCallback && _this7._media) {
|
|
8100
|
+
_this7._frameRecvCallback = new VideoFrameRecvCallback();
|
|
8101
|
+
(_this7$_frameRecvCall = _this7._frameRecvCallback) === null || _this7$_frameRecvCall === void 0 ? void 0 : _this7$_frameRecvCall.start(_this7._media);
|
|
8102
|
+
}
|
|
8103
|
+
if (_this7._pc && !_this7._networkQuality && _this7._opts.enableNetworkQuality && _this7._opts.networkQuality) {
|
|
8104
|
+
_this7._networkQuality = new NetworkQuality(_this7._pc, _this7._opts.networkQuality);
|
|
8105
|
+
}
|
|
8106
|
+
_context9.next = 10;
|
|
8107
|
+
return Promise.all([getRecvAudioStats(_this7._audioTransceicer.receiver.getStats()), getRecvVideoStats(_this7._videoTransceicer.receiver.getStats())]);
|
|
8108
|
+
case 10:
|
|
8109
|
+
_yield$Promise$all3 = _context9.sent;
|
|
8110
|
+
_yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 2);
|
|
8111
|
+
curAudioStats = _yield$Promise$all4[0];
|
|
8112
|
+
curVideoStats = _yield$Promise$all4[1];
|
|
8113
|
+
if (!(_this7._preAudioStats && _this7._preVideoStats)) {
|
|
8114
|
+
_context9.next = 28;
|
|
8115
|
+
break;
|
|
8116
|
+
}
|
|
8117
|
+
audioStats = diffRecvAudioStats(_this7._preAudioStats, curAudioStats);
|
|
8118
|
+
videoStats = diffRecvVideoStats(_this7._preVideoStats, curVideoStats);
|
|
8119
|
+
_this7._videoJitterBufferDelay = videoStats.jitterBufferDelay;
|
|
8120
|
+
_context9.next = 20;
|
|
8121
|
+
return (_this7$_audioStallObs = _this7._audioStallObserver) === null || _this7$_audioStallObs === void 0 ? void 0 : _this7$_audioStallObs.getAudioStallInfo();
|
|
8122
|
+
case 20:
|
|
8123
|
+
audioStallInfo = _context9.sent;
|
|
8124
|
+
_context9.next = 23;
|
|
8125
|
+
return (_this7$_videoStallObs = _this7._videoStallObserver) === null || _this7$_videoStallObs === void 0 ? void 0 : _this7$_videoStallObs.getStallInfo({
|
|
8126
|
+
interval: videoStats.statsInterval,
|
|
8127
|
+
frameRateReceived: videoStats.receivedFrameRate,
|
|
8128
|
+
frameRateDecoded: videoStats.decoderOutputFrameRate,
|
|
8129
|
+
bitrate: videoStats.receivedKBitrate
|
|
8130
|
+
});
|
|
8131
|
+
case 23:
|
|
8132
|
+
videoStallInfo = _context9.sent;
|
|
8133
|
+
_ref6 = (_this7$_networkQualit = (_this7$_networkQualit2 = _this7._networkQuality) === null || _this7$_networkQualit2 === void 0 ? void 0 : _this7$_networkQualit2.getDownlinkQuality(_objectSpread2$2(_objectSpread2$2({}, audioStats), {}, {
|
|
8134
|
+
stallDuration: (audioStallInfo === null || audioStallInfo === void 0 ? void 0 : audioStallInfo.stallDuration) || 0
|
|
8135
|
+
}), _objectSpread2$2(_objectSpread2$2({}, videoStats), {}, {
|
|
8136
|
+
stallDuration: (videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallDuration100ms) || (videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallDuration500ms) || 0
|
|
8137
|
+
}))) !== null && _this7$_networkQualit !== void 0 ? _this7$_networkQualit : [], _ref7 = _slicedToArray(_ref6, 2), quality = _ref7[0], qualityInfo = _ref7[1];
|
|
8138
|
+
if (_this7._opts.enableAdaptiveJitterBuffer) {
|
|
8139
|
+
_this7._handleJitterBuffer(qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.qualityQos, _this7._opts.adaptiveJitterBuffer, _this7._opts.networkStrategy);
|
|
8140
|
+
}
|
|
8141
|
+
if (videoStats.estimatedPlayoutTimestamp && audioStats.estimatedPlayoutTimestamp) {
|
|
8142
|
+
av_sync_diff = videoStats.estimatedPlayoutTimestamp - audioStats.estimatedPlayoutTimestamp;
|
|
8143
|
+
}
|
|
8144
|
+
_this7.emit(EXTEND_EVENTS.RTC_NETWORK, _objectSpread2$2({
|
|
8145
|
+
interval: videoStats.statsInterval,
|
|
8146
|
+
network_quality: quality,
|
|
8147
|
+
audio_stall_duration: audioStallInfo === null || audioStallInfo === void 0 ? void 0 : audioStallInfo.stallDuration,
|
|
8148
|
+
audio_stall_count: audioStallInfo === null || audioStallInfo === void 0 ? void 0 : audioStallInfo.stallCount,
|
|
8149
|
+
audio_stall_time_per_100sec: ((audioStallInfo === null || audioStallInfo === void 0 ? void 0 : audioStallInfo.stallDuration) || 0) / audioStats.statsInterval * 100,
|
|
8150
|
+
audio_stall_count_per_100sec: ((audioStallInfo === null || audioStallInfo === void 0 ? void 0 : audioStallInfo.stallCount) || 0) / audioStats.statsInterval * 100 * 1e3,
|
|
8151
|
+
video_stall_duration: videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallDuration500ms,
|
|
8152
|
+
video_stall_count: videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallCount500ms,
|
|
8153
|
+
video_stall_duration_100ms: videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallDuration100ms,
|
|
8154
|
+
video_stall_count_100ms: videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallCount100ms,
|
|
8155
|
+
video_stall_time_per_100sec: ((videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallDuration500ms) || 0) / videoStats.statsInterval * 100,
|
|
8156
|
+
video_stall_count_per_100sec: ((videoStallInfo === null || videoStallInfo === void 0 ? void 0 : videoStallInfo.stall.stallCount500ms) || 0) / videoStats.statsInterval * 100 * 1e3,
|
|
8157
|
+
rtt: videoStats.rtt,
|
|
8158
|
+
video_jb_delay: videoStats.jitterBufferDelay,
|
|
8159
|
+
audio_jb_delay: audioStats.jitterBufferDelay,
|
|
8160
|
+
audio_lost_rate: audioStats.audioLossRate,
|
|
8161
|
+
video_lost_rate: videoStats.videoLossRate,
|
|
8162
|
+
video_retransmitted_rate: videoStats.retransmittedRate,
|
|
8163
|
+
quality_audio_level: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.audioLevel,
|
|
8164
|
+
quality_video_level: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.videoLevel,
|
|
8165
|
+
quality_audio_qos: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.audioQos,
|
|
8166
|
+
quality_video_qos: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.videoQos,
|
|
8167
|
+
quality_qos: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.qualityQos,
|
|
8168
|
+
quality_audio_qoe: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.audioQoe,
|
|
8169
|
+
quality_video_qoe: qualityInfo === null || qualityInfo === void 0 ? void 0 : qualityInfo.videoQoe,
|
|
8170
|
+
current_delay: _this7._getDelay(),
|
|
8171
|
+
visibility_state: document.visibilityState,
|
|
8172
|
+
target_delay: _this7._targetDelayHint,
|
|
8173
|
+
av_sync_diff,
|
|
8174
|
+
set_delay_error: _this7._setDelayError || null,
|
|
8175
|
+
video_width: ((_this7$_media = _this7._media) === null || _this7$_media === void 0 ? void 0 : _this7$_media.videoWidth) || 0,
|
|
8176
|
+
video_height: ((_this7$_media2 = _this7._media) === null || _this7$_media2 === void 0 ? void 0 : _this7$_media2.videoHeight) || 0,
|
|
8177
|
+
abr_state: videoStats.abrState || "none",
|
|
8178
|
+
recv_frame_rate: videoStats.receivedFrameRate,
|
|
8179
|
+
decode_frame_rate: videoStats.decoderOutputFrameRate,
|
|
8180
|
+
pli: videoStats.pliCount,
|
|
8181
|
+
drop_frame_rate: videoStats.framesDropped,
|
|
8182
|
+
audio_packets_received: audioStats.packetsReceived,
|
|
8183
|
+
video_packets_received: videoStats.packetsReceived,
|
|
8184
|
+
video_muted: (_this7$_media3 = _this7._media) === null || _this7$_media3 === void 0 ? void 0 : _this7$_media3.muted,
|
|
8185
|
+
video_paused: (_this7$_media4 = _this7._media) === null || _this7$_media4 === void 0 ? void 0 : _this7$_media4.paused,
|
|
8186
|
+
video_volume: (_this7$_media5 = _this7._media) === null || _this7$_media5 === void 0 ? void 0 : _this7$_media5.volume,
|
|
8187
|
+
video_current_time: (_this7$_media6 = _this7._media) === null || _this7$_media6 === void 0 ? void 0 : _this7$_media6.currentTime
|
|
8188
|
+
}, ((_this7$_frameRecvCall2 = _this7._frameRecvCallback) === null || _this7$_frameRecvCall2 === void 0 ? void 0 : _this7$_frameRecvCall2.getRecentRenderInfo4Report()) || {}));
|
|
8189
|
+
case 28:
|
|
8190
|
+
_this7._preAudioStats = curAudioStats;
|
|
8191
|
+
_this7._preVideoStats = curVideoStats;
|
|
8192
|
+
_this7._setDelayError = null;
|
|
8193
|
+
case 31:
|
|
8194
|
+
case "end":
|
|
8195
|
+
return _context9.stop();
|
|
8196
|
+
}
|
|
8197
|
+
}, _callee9);
|
|
8198
|
+
}));
|
|
8199
|
+
return function report2() {
|
|
8200
|
+
return _ref5.apply(this, arguments);
|
|
8201
|
+
};
|
|
8202
|
+
}();
|
|
8203
|
+
this._rtcReportTimer = setInterval(function() {
|
|
8204
|
+
return report();
|
|
8205
|
+
}, 2e3);
|
|
8206
|
+
report();
|
|
7586
8207
|
}
|
|
7587
8208
|
}, {
|
|
7588
8209
|
key: "_handleJitterBuffer",
|
|
7589
8210
|
value: function _handleJitterBuffer(quality, adaptiveJitterBuffer, networkStrategy) {
|
|
8211
|
+
if (!adaptiveJitterBuffer || !networkStrategy) {
|
|
8212
|
+
return;
|
|
8213
|
+
}
|
|
7590
8214
|
this._networkQualityResult.push(quality);
|
|
7591
8215
|
if (this._networkQualityResult.length > adaptiveJitterBuffer.networkWindow) {
|
|
7592
8216
|
this._networkQualityResult.shift();
|
|
7593
8217
|
}
|
|
7594
|
-
var validNetworkQualityResult = this._networkQualityResult.filter(
|
|
8218
|
+
var validNetworkQualityResult = this._networkQualityResult.filter(function(v) {
|
|
8219
|
+
return typeof v === "number";
|
|
8220
|
+
});
|
|
7595
8221
|
if (validNetworkQualityResult.length === adaptiveJitterBuffer.networkWindow) {
|
|
7596
8222
|
var _networkStrategy$aver;
|
|
7597
8223
|
var averageQuality;
|
|
@@ -7615,13 +8241,15 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7615
8241
|
}, {
|
|
7616
8242
|
key: "_stopRtcReport",
|
|
7617
8243
|
value: function _stopRtcReport() {
|
|
7618
|
-
var _this$_audioStallObse, _this$_videoStallObse, _this$_networkQuality;
|
|
8244
|
+
var _this$_audioStallObse, _this$_videoStallObse, _this$_frameRecvCallb, _this$_networkQuality;
|
|
7619
8245
|
(_this$_audioStallObse = this._audioStallObserver) === null || _this$_audioStallObse === void 0 ? void 0 : _this$_audioStallObse.destroy();
|
|
7620
8246
|
(_this$_videoStallObse = this._videoStallObserver) === null || _this$_videoStallObse === void 0 ? void 0 : _this$_videoStallObse.destroy();
|
|
8247
|
+
(_this$_frameRecvCallb = this._frameRecvCallback) === null || _this$_frameRecvCallb === void 0 ? void 0 : _this$_frameRecvCallb.stop();
|
|
8248
|
+
delete this._frameRecvCallback;
|
|
7621
8249
|
(_this$_networkQuality = this._networkQuality) === null || _this$_networkQuality === void 0 ? void 0 : _this$_networkQuality.destroy();
|
|
7622
|
-
this._audioStallObserver
|
|
7623
|
-
this._videoStallObserver
|
|
7624
|
-
this._networkQuality
|
|
8250
|
+
delete this._audioStallObserver;
|
|
8251
|
+
delete this._videoStallObserver;
|
|
8252
|
+
delete this._networkQuality;
|
|
7625
8253
|
this._preAudioStats = null;
|
|
7626
8254
|
this._preVideoStats = null;
|
|
7627
8255
|
if (this._rtcReportTimer) {
|
|
@@ -7629,60 +8257,89 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7629
8257
|
this._rtcReportTimer = 0;
|
|
7630
8258
|
}
|
|
7631
8259
|
}
|
|
8260
|
+
}, {
|
|
8261
|
+
key: "_clearDelay",
|
|
8262
|
+
value: function _clearDelay() {
|
|
8263
|
+
if (this._setDelayTimer) {
|
|
8264
|
+
clearInterval(this._setDelayTimer);
|
|
8265
|
+
delete this._setDelayTimer;
|
|
8266
|
+
}
|
|
8267
|
+
this._targetDelayHint = null;
|
|
8268
|
+
this._setDelayError = null;
|
|
8269
|
+
}
|
|
7632
8270
|
}, {
|
|
7633
8271
|
key: "_disconnect",
|
|
7634
|
-
value: function _disconnect() {
|
|
7635
|
-
var _this$
|
|
7636
|
-
|
|
8272
|
+
value: function _disconnect(reason) {
|
|
8273
|
+
var _this$_loader2, _this$_networkEvaluat2;
|
|
8274
|
+
this._clearDelay();
|
|
8275
|
+
this._clearMediaSrc();
|
|
8276
|
+
(_this$_loader2 = this._loader) === null || _this$_loader2 === void 0 ? void 0 : _this$_loader2.cancel();
|
|
7637
8277
|
(_this$_networkEvaluat2 = this._networkEvaluate) === null || _this$_networkEvaluat2 === void 0 ? void 0 : _this$_networkEvaluat2.destroy();
|
|
7638
8278
|
this._stopRtcReport();
|
|
7639
8279
|
clearTimeout(this._checkStatsErrorTimer);
|
|
7640
8280
|
this._clearPeerStateTimeout();
|
|
8281
|
+
this._firstFrameObserver.setFailureReason(reason);
|
|
8282
|
+
this._firstFrameObserver.reset();
|
|
7641
8283
|
this._audioTransceicer = null;
|
|
7642
8284
|
this._videoTransceicer = null;
|
|
7643
8285
|
this._mediaStream = null;
|
|
7644
|
-
|
|
8286
|
+
}
|
|
8287
|
+
}, {
|
|
8288
|
+
key: "_clearMediaSrc",
|
|
8289
|
+
value: function _clearMediaSrc() {
|
|
8290
|
+
if (this._media) {
|
|
8291
|
+
this._media.srcObject = null;
|
|
8292
|
+
this._media.removeAttribute("src");
|
|
8293
|
+
}
|
|
7645
8294
|
}
|
|
7646
8295
|
}, {
|
|
7647
8296
|
key: "_emitError",
|
|
7648
8297
|
value: function _emitError(error) {
|
|
8298
|
+
var _error$originError;
|
|
8299
|
+
logger.warn(error);
|
|
8300
|
+
this._clearDelay();
|
|
8301
|
+
this._firstFrameObserver.setFailureReason((error === null || error === void 0 ? void 0 : (_error$originError = error.originError) === null || _error$originError === void 0 ? void 0 : _error$originError.message) || (error === null || error === void 0 ? void 0 : error.originError) || error);
|
|
8302
|
+
this._firstFrameObserver.reset();
|
|
7649
8303
|
this.emit(EVENT.ERROR, error);
|
|
7650
8304
|
clearTimeout(this._checkStatsErrorTimer);
|
|
7651
8305
|
this._clearPeerStateTimeout();
|
|
7652
8306
|
if (this._pc) {
|
|
7653
8307
|
this._pc.close();
|
|
7654
|
-
|
|
7655
|
-
this._media.srcObject = null;
|
|
7656
|
-
this._media.removeAttribute("src");
|
|
7657
|
-
}
|
|
8308
|
+
this._clearMediaSrc();
|
|
7658
8309
|
}
|
|
7659
8310
|
}
|
|
7660
8311
|
}, {
|
|
7661
8312
|
key: "_createEmptyPeer",
|
|
7662
8313
|
value: function() {
|
|
7663
|
-
var _createEmptyPeer2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function
|
|
8314
|
+
var _createEmptyPeer2 = _asyncToGenerator$1(/* @__PURE__ */ _regeneratorRuntime$1().mark(function _callee10() {
|
|
7664
8315
|
var pc;
|
|
7665
|
-
return _regeneratorRuntime$1().wrap(function
|
|
8316
|
+
return _regeneratorRuntime$1().wrap(function _callee10$(_context10) {
|
|
7666
8317
|
while (1)
|
|
7667
|
-
switch (
|
|
8318
|
+
switch (_context10.prev = _context10.next) {
|
|
7668
8319
|
case 0:
|
|
7669
8320
|
pc = new RTCPeerConnection();
|
|
7670
|
-
|
|
8321
|
+
_context10.next = 3;
|
|
7671
8322
|
return pc.createOffer();
|
|
7672
8323
|
case 3:
|
|
7673
8324
|
pc.close();
|
|
7674
|
-
|
|
7675
|
-
case 5:
|
|
8325
|
+
case 4:
|
|
7676
8326
|
case "end":
|
|
7677
|
-
return
|
|
8327
|
+
return _context10.stop();
|
|
7678
8328
|
}
|
|
7679
|
-
},
|
|
8329
|
+
}, _callee10);
|
|
7680
8330
|
}));
|
|
7681
8331
|
function _createEmptyPeer() {
|
|
7682
8332
|
return _createEmptyPeer2.apply(this, arguments);
|
|
7683
8333
|
}
|
|
7684
8334
|
return _createEmptyPeer;
|
|
7685
8335
|
}()
|
|
8336
|
+
}, {
|
|
8337
|
+
key: "_emitFirstFrameState",
|
|
8338
|
+
value: function _emitFirstFrameState(info, extra) {
|
|
8339
|
+
this.emit(EXTEND_EVENTS.RTC_FIRST_FRAME, _objectSpread2$2(_objectSpread2$2(_objectSpread2$2({}, info), extra), {}, {
|
|
8340
|
+
initOptionsIncludePreload: !!this._opts.preloadPromise
|
|
8341
|
+
}));
|
|
8342
|
+
}
|
|
7686
8343
|
}, {
|
|
7687
8344
|
key: "_changeVolumeInHarmonyWorkaround",
|
|
7688
8345
|
value: function _changeVolumeInHarmonyWorkaround() {
|
|
@@ -7696,7 +8353,8 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7696
8353
|
enumerable: true,
|
|
7697
8354
|
get: originalDescriptor.get,
|
|
7698
8355
|
set: function set(val) {
|
|
7699
|
-
|
|
8356
|
+
var _originalDescriptor$s;
|
|
8357
|
+
(_originalDescriptor$s = originalDescriptor.set) === null || _originalDescriptor$s === void 0 ? void 0 : _originalDescriptor$s.call(this, val);
|
|
7700
8358
|
var _changeNumberInRange = changeNumberInRange(this.volume, 0, 1, 0.01), _changeNumberInRange2 = _slicedToArray(_changeNumberInRange, 2), sourceVolume = _changeNumberInRange2[0], targetVolume = _changeNumberInRange2[1];
|
|
7701
8359
|
this.volume = targetVolume;
|
|
7702
8360
|
this.volume = sourceVolume;
|
|
@@ -7712,14 +8370,47 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7712
8370
|
}
|
|
7713
8371
|
}
|
|
7714
8372
|
}
|
|
8373
|
+
}, {
|
|
8374
|
+
key: "_mutedBeforePlayingWorkaround",
|
|
8375
|
+
value: function _mutedBeforePlayingWorkaround() {
|
|
8376
|
+
var _this9 = this;
|
|
8377
|
+
if (isHeyTapBrowser() || isVivoBrowser()) {
|
|
8378
|
+
var originalDescriptor = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, "muted");
|
|
8379
|
+
if (this._media && originalDescriptor) {
|
|
8380
|
+
logger.log("apply muted workaround for vivo & oppo");
|
|
8381
|
+
var originalMuted = this._media.muted;
|
|
8382
|
+
this._media.muted = true;
|
|
8383
|
+
Object.defineProperty(this._media, "muted", {
|
|
8384
|
+
configurable: true,
|
|
8385
|
+
enumerable: true,
|
|
8386
|
+
get: function get() {
|
|
8387
|
+
return originalMuted;
|
|
8388
|
+
},
|
|
8389
|
+
set: function set(val) {
|
|
8390
|
+
logger.log("muted workaround. set muted =", val);
|
|
8391
|
+
originalMuted = val;
|
|
8392
|
+
}
|
|
8393
|
+
});
|
|
8394
|
+
var revertMutedProxy = function revertMutedProxy2() {
|
|
8395
|
+
logger.log("revert muted workaround. muted:", originalMuted);
|
|
8396
|
+
if (_this9._media) {
|
|
8397
|
+
Object.defineProperty(_this9._media, "muted", originalDescriptor);
|
|
8398
|
+
_this9._media.muted = originalMuted;
|
|
8399
|
+
_this9._media.removeEventListener("playing", revertMutedProxy2);
|
|
8400
|
+
}
|
|
8401
|
+
};
|
|
8402
|
+
this._media.addEventListener("playing", revertMutedProxy);
|
|
8403
|
+
}
|
|
8404
|
+
}
|
|
8405
|
+
}
|
|
7715
8406
|
}, {
|
|
7716
8407
|
key: "destroy",
|
|
7717
8408
|
value: function destroy(keepClearMediaStream) {
|
|
7718
|
-
var _this$_revertVolumeWo, _this$
|
|
7719
|
-
this._disconnect();
|
|
8409
|
+
var _this$_revertVolumeWo, _this$_media3;
|
|
8410
|
+
this._disconnect("invoke destroy");
|
|
7720
8411
|
(_this$_revertVolumeWo = this._revertVolumeWorkaround) === null || _this$_revertVolumeWo === void 0 ? void 0 : _this$_revertVolumeWo.call(this);
|
|
7721
8412
|
delete this._revertVolumeWorkaround;
|
|
7722
|
-
(_this$
|
|
8413
|
+
(_this$_media3 = this._media) === null || _this$_media3 === void 0 ? void 0 : _this$_media3.removeEventListener("timeupdate", this._mockWaitingByTimeupdate);
|
|
7723
8414
|
if (this._media && !keepClearMediaStream) {
|
|
7724
8415
|
this._media.srcObject = null;
|
|
7725
8416
|
}
|
|
@@ -7730,7 +8421,6 @@ var Rts = /* @__PURE__ */ function(_EventEmitter) {
|
|
|
7730
8421
|
this._media = null;
|
|
7731
8422
|
this._player = null;
|
|
7732
8423
|
this._pc = null;
|
|
7733
|
-
this._opts = null;
|
|
7734
8424
|
}
|
|
7735
8425
|
}], [{
|
|
7736
8426
|
key: "enableLogger",
|
|
@@ -7759,15 +8449,11 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7759
8449
|
function RtsPlugin2() {
|
|
7760
8450
|
var _this;
|
|
7761
8451
|
_classCallCheck$3(this, RtsPlugin2);
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
_this =
|
|
7766
|
-
|
|
7767
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_mediaStream", null);
|
|
7768
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_disconnectTimer", void 0);
|
|
7769
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_rtsOpts", null);
|
|
7770
|
-
_defineProperty$2(_assertThisInitialized$1(_this), "_onPause", function() {
|
|
8452
|
+
_this = _super.apply(this, arguments);
|
|
8453
|
+
_this._rts = null;
|
|
8454
|
+
_this._rtsOpts = null;
|
|
8455
|
+
_this._mediaStream = null;
|
|
8456
|
+
_this._onPause = function() {
|
|
7771
8457
|
if (_this._disconnectTimer) {
|
|
7772
8458
|
return;
|
|
7773
8459
|
}
|
|
@@ -7775,8 +8461,8 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7775
8461
|
_this._closeAfterPause();
|
|
7776
8462
|
_this._clearDisconnectTimer();
|
|
7777
8463
|
}, _this.config.disconnectTime * 1e3);
|
|
7778
|
-
}
|
|
7779
|
-
|
|
8464
|
+
};
|
|
8465
|
+
_this._reInit = function() {
|
|
7780
8466
|
var _this$_rts;
|
|
7781
8467
|
_this._clearDisconnectTimer();
|
|
7782
8468
|
if ((_this$_rts = _this._rts) !== null && _this$_rts !== void 0 && _this$_rts._pc) {
|
|
@@ -7784,8 +8470,8 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7784
8470
|
}
|
|
7785
8471
|
_this._init();
|
|
7786
8472
|
_this._bindRtsEvents();
|
|
7787
|
-
}
|
|
7788
|
-
|
|
8473
|
+
};
|
|
8474
|
+
_this._init = function() {
|
|
7789
8475
|
var _this$_rts2;
|
|
7790
8476
|
(_this$_rts2 = _this._rts) === null || _this$_rts2 === void 0 ? void 0 : _this$_rts2.destroy();
|
|
7791
8477
|
var config = _this.player.config;
|
|
@@ -7804,9 +8490,11 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7804
8490
|
}
|
|
7805
8491
|
}, rtsOpts));
|
|
7806
8492
|
_this._rts.load(config.url);
|
|
7807
|
-
}
|
|
7808
|
-
|
|
7809
|
-
if (url) {
|
|
8493
|
+
};
|
|
8494
|
+
_this._onSwitchURL = function(url) {
|
|
8495
|
+
if (url.startsWith("blob:") || url === "") {
|
|
8496
|
+
url = _this.player.config.url;
|
|
8497
|
+
} else if (url) {
|
|
7810
8498
|
_this.player.config.url = url;
|
|
7811
8499
|
}
|
|
7812
8500
|
if (_this._rts) {
|
|
@@ -7814,14 +8502,25 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7814
8502
|
} else {
|
|
7815
8503
|
_this._reInit();
|
|
7816
8504
|
}
|
|
7817
|
-
}
|
|
7818
|
-
|
|
8505
|
+
};
|
|
8506
|
+
_this.__retry = function() {
|
|
8507
|
+
_this.player.removeClass(STATE_CLASS.ERROR);
|
|
8508
|
+
_this.player.addClass(STATE_CLASS.LOADING);
|
|
8509
|
+
runHooks(_assertThisInitialized$1(_this), "retry", function() {
|
|
8510
|
+
_this.player.src = "";
|
|
8511
|
+
_this.player.once(CANPLAY, function() {
|
|
8512
|
+
_this.player.mediaPlay();
|
|
8513
|
+
});
|
|
8514
|
+
});
|
|
8515
|
+
};
|
|
8516
|
+
_this.destroy = function() {
|
|
7819
8517
|
var _this$_rts3;
|
|
7820
8518
|
_this.player.switchURL = _this._originSwitchFn;
|
|
8519
|
+
_this.player.retry = _this._originRetry;
|
|
7821
8520
|
_this._clearDisconnectTimer();
|
|
7822
8521
|
(_this$_rts3 = _this._rts) === null || _this$_rts3 === void 0 ? void 0 : _this$_rts3.destroy();
|
|
7823
8522
|
_this._rts = null;
|
|
7824
|
-
}
|
|
8523
|
+
};
|
|
7825
8524
|
return _this;
|
|
7826
8525
|
}
|
|
7827
8526
|
_createClass$3(RtsPlugin2, [{
|
|
@@ -7831,32 +8530,38 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7831
8530
|
return (_this$_rts4 = this._rts) === null || _this$_rts4 === void 0 ? void 0 : _this$_rts4.pc;
|
|
7832
8531
|
}
|
|
7833
8532
|
}, {
|
|
7834
|
-
key: "
|
|
8533
|
+
key: "jitterBufferDelay",
|
|
7835
8534
|
get: function get() {
|
|
7836
8535
|
var _this$_rts5;
|
|
7837
|
-
return (_this$_rts5 = this._rts) === null || _this$_rts5 === void 0 ? void 0 : _this$_rts5.
|
|
8536
|
+
return ((_this$_rts5 = this._rts) === null || _this$_rts5 === void 0 ? void 0 : _this$_rts5.getJitterBufferDelay()) || 0;
|
|
7838
8537
|
}
|
|
7839
8538
|
}, {
|
|
7840
|
-
key: "
|
|
8539
|
+
key: "loader",
|
|
7841
8540
|
get: function get() {
|
|
7842
8541
|
var _this$_rts6;
|
|
7843
|
-
return (_this$_rts6 = this._rts) === null || _this$_rts6 === void 0 ? void 0 : _this$_rts6.
|
|
8542
|
+
return (_this$_rts6 = this._rts) === null || _this$_rts6 === void 0 ? void 0 : _this$_rts6.loader;
|
|
7844
8543
|
}
|
|
7845
8544
|
}, {
|
|
7846
|
-
key: "
|
|
8545
|
+
key: "videoTrack",
|
|
7847
8546
|
get: function get() {
|
|
7848
|
-
|
|
8547
|
+
var _this$_rts7;
|
|
8548
|
+
return (_this$_rts7 = this._rts) === null || _this$_rts7 === void 0 ? void 0 : _this$_rts7.videoTack;
|
|
7849
8549
|
}
|
|
7850
8550
|
}, {
|
|
7851
|
-
key: "
|
|
8551
|
+
key: "audioTrack",
|
|
7852
8552
|
get: function get() {
|
|
7853
|
-
var _this$
|
|
7854
|
-
return (_this$
|
|
8553
|
+
var _this$_rts8;
|
|
8554
|
+
return (_this$_rts8 = this._rts) === null || _this$_rts8 === void 0 ? void 0 : _this$_rts8.audioTrack;
|
|
8555
|
+
}
|
|
8556
|
+
}, {
|
|
8557
|
+
key: "core",
|
|
8558
|
+
get: function get() {
|
|
8559
|
+
return this._rts;
|
|
7855
8560
|
}
|
|
7856
8561
|
}, {
|
|
7857
8562
|
key: "version",
|
|
7858
8563
|
get: function get() {
|
|
7859
|
-
return "0.2.1-alpha.
|
|
8564
|
+
return "0.2.1-alpha.53";
|
|
7860
8565
|
}
|
|
7861
8566
|
}, {
|
|
7862
8567
|
key: "beforePlayerInit",
|
|
@@ -7864,9 +8569,15 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7864
8569
|
var _this$player2, _this$player$config, _this$player$config$r, _this2 = this;
|
|
7865
8570
|
this._init();
|
|
7866
8571
|
if (!this._originSwitchFn) {
|
|
7867
|
-
|
|
8572
|
+
var _this$player$switchUR;
|
|
8573
|
+
this._originSwitchFn = (_this$player$switchUR = this.player.switchURL) === null || _this$player$switchUR === void 0 ? void 0 : _this$player$switchUR.bind(this.player);
|
|
8574
|
+
}
|
|
8575
|
+
if (!this._originRetry) {
|
|
8576
|
+
var _this$player$retry;
|
|
8577
|
+
this._originRetry = (_this$player$retry = this.player.retry) === null || _this$player$retry === void 0 ? void 0 : _this$player$retry.bind(this.player);
|
|
7868
8578
|
}
|
|
7869
8579
|
this.player.switchURL = this._onSwitchURL;
|
|
8580
|
+
this.player.retry = this.__retry;
|
|
7870
8581
|
(_this$player2 = this.player) === null || _this$player2 === void 0 ? void 0 : _this$player2.useHooks("replay", this._onSwitchURL);
|
|
7871
8582
|
this.on(URL_CHANGE, this._onSwitchURL);
|
|
7872
8583
|
this.on(DESTROY, this.destroy);
|
|
@@ -7896,6 +8607,7 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7896
8607
|
if (!((_this2$player = _this2.player) !== null && _this2$player !== void 0 && (_this2$player$video = _this2$player.video) !== null && _this2$player$video !== void 0 && _this2$player$video.srcObject)) {
|
|
7897
8608
|
_this2.player.video.srcObject = new MediaStream();
|
|
7898
8609
|
}
|
|
8610
|
+
return "";
|
|
7899
8611
|
}
|
|
7900
8612
|
}
|
|
7901
8613
|
}
|
|
@@ -7906,26 +8618,26 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7906
8618
|
}, {
|
|
7907
8619
|
key: "getStats",
|
|
7908
8620
|
value: function getStats2() {
|
|
7909
|
-
var _this$
|
|
7910
|
-
return (_this$
|
|
8621
|
+
var _this$_rts9;
|
|
8622
|
+
return (_this$_rts9 = this._rts) === null || _this$_rts9 === void 0 ? void 0 : _this$_rts9.getStats();
|
|
7911
8623
|
}
|
|
7912
8624
|
}, {
|
|
7913
8625
|
key: "getStatsSnapshoot",
|
|
7914
8626
|
value: function getStatsSnapshoot2() {
|
|
7915
|
-
var _this$
|
|
7916
|
-
return (_this$
|
|
8627
|
+
var _this$_rts10;
|
|
8628
|
+
return (_this$_rts10 = this._rts) === null || _this$_rts10 === void 0 ? void 0 : _this$_rts10.getStatsSnapshoot();
|
|
7917
8629
|
}
|
|
7918
8630
|
}, {
|
|
7919
8631
|
key: "getNetWorkInfo",
|
|
7920
8632
|
value: function getNetWorkInfo() {
|
|
7921
|
-
var _this$
|
|
7922
|
-
return (_this$
|
|
8633
|
+
var _this$_rts11;
|
|
8634
|
+
return (_this$_rts11 = this._rts) === null || _this$_rts11 === void 0 ? void 0 : _this$_rts11.networkStats;
|
|
7923
8635
|
}
|
|
7924
8636
|
}, {
|
|
7925
8637
|
key: "setDelay",
|
|
7926
8638
|
value: function setDelay(delayHint) {
|
|
7927
|
-
var _this$
|
|
7928
|
-
(_this$
|
|
8639
|
+
var _this$_rts12;
|
|
8640
|
+
(_this$_rts12 = this._rts) === null || _this$_rts12 === void 0 ? void 0 : _this$_rts12._setDelay(delayHint);
|
|
7929
8641
|
}
|
|
7930
8642
|
}, {
|
|
7931
8643
|
key: "_clearDisconnectTimer",
|
|
@@ -7936,15 +8648,15 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7936
8648
|
}, {
|
|
7937
8649
|
key: "_closeAfterPause",
|
|
7938
8650
|
value: function _closeAfterPause() {
|
|
7939
|
-
var _this$
|
|
7940
|
-
if (!((_this$
|
|
8651
|
+
var _this$_rts13, _this$config, _this$_rts15;
|
|
8652
|
+
if (!((_this$_rts13 = this._rts) !== null && _this$_rts13 !== void 0 && _this$_rts13._pc)) {
|
|
7941
8653
|
return;
|
|
7942
8654
|
}
|
|
7943
8655
|
if ((_this$config = this.config) !== null && _this$config !== void 0 && _this$config.seamlesslyReload) {
|
|
7944
|
-
var _this$
|
|
7945
|
-
this._mediaStream = (_this$
|
|
8656
|
+
var _this$_rts14;
|
|
8657
|
+
this._mediaStream = (_this$_rts14 = this._rts) === null || _this$_rts14 === void 0 ? void 0 : _this$_rts14._mediaStream;
|
|
7946
8658
|
}
|
|
7947
|
-
(_this$
|
|
8659
|
+
(_this$_rts15 = this._rts) === null || _this$_rts15 === void 0 ? void 0 : _this$_rts15.destroy(true);
|
|
7948
8660
|
this._rts = null;
|
|
7949
8661
|
}
|
|
7950
8662
|
}, {
|
|
@@ -7960,16 +8672,17 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7960
8672
|
this._transCoreEvent(EVENT.SEI);
|
|
7961
8673
|
this._transCoreEvent(EXTEND_EVENTS.RTC_STATE_CHANGE);
|
|
7962
8674
|
this._transCoreEvent(EXTEND_EVENTS.RTC_NETWORK);
|
|
8675
|
+
this._transCoreEvent(EXTEND_EVENTS.RTC_FIRST_FRAME);
|
|
7963
8676
|
}
|
|
7964
8677
|
}, {
|
|
7965
8678
|
key: "_transErrorEvent",
|
|
7966
8679
|
value: function _transErrorEvent() {
|
|
7967
|
-
var _this3 = this;
|
|
7968
|
-
this._rts.on(EVENT.ERROR, function(err) {
|
|
8680
|
+
var _this$_rts16, _this3 = this, _this$_rts17;
|
|
8681
|
+
(_this$_rts16 = this._rts) === null || _this$_rts16 === void 0 ? void 0 : _this$_rts16.on(EVENT.ERROR, function(err) {
|
|
7969
8682
|
if (!_this3.player)
|
|
7970
8683
|
return;
|
|
7971
8684
|
var e = new Errors(_this3.player, err);
|
|
7972
|
-
var
|
|
8685
|
+
var _ref = _this3._rtsOpts || {}, backupConstruct = _ref.backupConstruct, backupURL = _ref.backupURL;
|
|
7973
8686
|
if (backupURL) {
|
|
7974
8687
|
var _player$video;
|
|
7975
8688
|
var player = _this3.player;
|
|
@@ -7989,6 +8702,7 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
7989
8702
|
});
|
|
7990
8703
|
player.unRegisterPlugin("rts");
|
|
7991
8704
|
player.switchURL = _this3._originSwitchFn;
|
|
8705
|
+
player.retry = _this3._originRetry;
|
|
7992
8706
|
_this3._rts = null;
|
|
7993
8707
|
player.rts = null;
|
|
7994
8708
|
if ((_player$video = player.video) !== null && _player$video !== void 0 && _player$video.srcObject) {
|
|
@@ -8005,7 +8719,7 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
8005
8719
|
}
|
|
8006
8720
|
_this3.player.emit(ERROR, e);
|
|
8007
8721
|
});
|
|
8008
|
-
this._rts.on("waiting", function() {
|
|
8722
|
+
(_this$_rts17 = this._rts) === null || _this$_rts17 === void 0 ? void 0 : _this$_rts17.on("waiting", function() {
|
|
8009
8723
|
var _this3$player;
|
|
8010
8724
|
(_this3$player = _this3.player) === null || _this3$player === void 0 ? void 0 : _this3$player.emit("waiting");
|
|
8011
8725
|
});
|
|
@@ -8013,8 +8727,8 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
8013
8727
|
}, {
|
|
8014
8728
|
key: "_transCoreEvent",
|
|
8015
8729
|
value: function _transCoreEvent(eventName) {
|
|
8016
|
-
var _this4 = this;
|
|
8017
|
-
this._rts.on(eventName, function(e) {
|
|
8730
|
+
var _this$_rts18, _this4 = this;
|
|
8731
|
+
(_this$_rts18 = this._rts) === null || _this$_rts18 === void 0 ? void 0 : _this$_rts18.on(eventName, function(e) {
|
|
8018
8732
|
if (_this4.player) {
|
|
8019
8733
|
_this4.player.emit("core_event", _objectSpread2$2(_objectSpread2$2({}, e), {}, {
|
|
8020
8734
|
eventName
|
|
@@ -8052,7 +8766,8 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
8052
8766
|
case 3:
|
|
8053
8767
|
res = _context.sent;
|
|
8054
8768
|
hasH264 = (_res$video = res.video) === null || _res$video === void 0 ? void 0 : _res$video.filter(function(x) {
|
|
8055
|
-
|
|
8769
|
+
var _x$config;
|
|
8770
|
+
return x.codec === "H264" && (!targetProfileLevel || ((_x$config = x.config) === null || _x$config === void 0 ? void 0 : _x$config.indexOf(targetProfileLevel)) !== -1);
|
|
8056
8771
|
}).length;
|
|
8057
8772
|
if (hasH264) {
|
|
8058
8773
|
_context.next = 10;
|
|
@@ -8063,7 +8778,8 @@ var RtsPlugin = /* @__PURE__ */ function(_BasePlugin) {
|
|
|
8063
8778
|
case 8:
|
|
8064
8779
|
res1 = _context.sent;
|
|
8065
8780
|
hasH264 = (_res1$video = res1.video) === null || _res1$video === void 0 ? void 0 : _res1$video.filter(function(x) {
|
|
8066
|
-
|
|
8781
|
+
var _x$config2;
|
|
8782
|
+
return x.codec === "H264" && (!targetProfileLevel || ((_x$config2 = x.config) === null || _x$config2 === void 0 ? void 0 : _x$config2.indexOf(targetProfileLevel)) !== -1);
|
|
8067
8783
|
}).length;
|
|
8068
8784
|
case 10:
|
|
8069
8785
|
return _context.abrupt("return", !!hasH264);
|