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