@techsee/techsee-media-service 999.0.2-switch → 999.0.3-alpha2
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/lib/LocalStreamManager.d.ts +12 -0
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +440 -283
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +14 -4
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +83 -38
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +17 -14
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +3 -3
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +3 -3
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +46 -35
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +21 -7
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +924 -586
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +45 -0
- package/lib/MediaSession/MediaServer.d.ts.map +1 -0
- package/lib/MediaSession/MediaServer.js +538 -0
- package/lib/MediaSession/MediaServer.js.map +1 -0
- package/lib/MediaSession/MediaSessionBase.d.ts +10 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +128 -66
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +11 -9
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +500 -352
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +4 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +611 -422
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.js +31 -30
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +11 -11
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +236 -192
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +2 -1
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +130 -85
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -2
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +235 -174
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +9 -4
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.d.ts +1 -0
- package/lib/MediaUtils/index.d.ts.map +1 -0
- package/lib/MediaUtils/index.js +16 -0
- package/lib/MediaUtils/index.js.map +1 -0
- package/lib/MultiParty/Contracts.d.ts +16 -0
- package/lib/MultiParty/Contracts.d.ts.map +1 -0
- package/lib/MultiParty/Contracts.js +6 -0
- package/lib/MultiParty/Contracts.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +16 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.js +79 -0
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +23 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.js +369 -0
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +5 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js +305 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
- package/lib/MultiParty/MultiPartyService.d.ts +40 -0
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyService.js +70 -0
- package/lib/MultiParty/MultiPartyService.js.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +3 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js +21 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
- package/lib/MultiParty/OpentokMultiPartyService.d.ts +29 -0
- package/lib/MultiParty/OpentokMultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiPartyService.js +888 -0
- package/lib/MultiParty/OpentokMultiPartyService.js.map +1 -0
- package/lib/MultiParty/VideoLayoutType.d.ts +4 -0
- package/lib/MultiParty/VideoLayoutType.d.ts.map +1 -0
- package/lib/MultiParty/VideoLayoutType.js +13 -0
- package/lib/MultiParty/VideoLayoutType.js.map +1 -0
- package/lib/MultiParty/index.d.ts +4 -0
- package/lib/MultiParty/index.d.ts.map +1 -0
- package/lib/MultiParty/index.js +61 -0
- package/lib/MultiParty/index.js.map +1 -0
- package/lib/MultiParty/opentok.d.ts +503 -0
- package/lib/TechseeMediaStream.d.ts +6 -6
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +59 -53
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -15
- package/lib/oldCode/constants.js.map +1 -1
- package/lib/oldCode/event-emitter.js +45 -22
- package/lib/oldCode/event-emitter.js.map +1 -1
- package/lib/oldCode/index.js +48 -52
- package/lib/oldCode/index.js.map +1 -1
- package/lib/oldCode/opentok/session.js +261 -236
- package/lib/oldCode/opentok/session.js.map +1 -1
- package/lib/oldCode/opentok/stream.js +283 -269
- package/lib/oldCode/opentok/stream.js.map +1 -1
- package/lib/oldCode/publisher.js +96 -71
- package/lib/oldCode/publisher.js.map +1 -1
- package/lib/oldCode/service.js +294 -272
- package/lib/oldCode/service.js.map +1 -1
- package/lib/oldCode/session.js +82 -60
- package/lib/oldCode/session.js.map +1 -1
- package/lib/oldCode/stream.js +153 -125
- package/lib/oldCode/stream.js.map +1 -1
- package/lib/oldCode/subscriber.js +60 -35
- package/lib/oldCode/subscriber.js.map +1 -1
- package/lib/oldCode/tracer.d.ts +3 -2
- package/lib/oldCode/tracer.d.ts.map +1 -1
- package/lib/oldCode/tracer.js +181 -130
- package/lib/oldCode/tracer.js.map +1 -1
- package/lib/oldCode/utils/ImageFixer.js +67 -44
- package/lib/oldCode/utils/ImageFixer.js.map +1 -1
- package/lib/oldCode/webrtc/constants.js +102 -110
- package/lib/oldCode/webrtc/constants.js.map +1 -1
- package/lib/oldCode/webrtc/helper.js +176 -124
- package/lib/oldCode/webrtc/helper.js.map +1 -1
- package/lib/oldCode/webrtc/session-kms.js +408 -393
- package/lib/oldCode/webrtc/session-kms.js.map +1 -1
- package/lib/oldCode/webrtc/session-loopback.js +245 -227
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -1
- package/lib/oldCode/webrtc/session-turn.js +705 -658
- package/lib/oldCode/webrtc/session-turn.js.map +1 -1
- package/lib/oldCode/webrtc/session-turn.v2.js +480 -471
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -1
- package/lib/oldCode/webrtc/session.js +12 -6
- package/lib/oldCode/webrtc/session.js.map +1 -1
- package/lib/oldCode/webrtc/stream.js +526 -504
- package/lib/oldCode/webrtc/stream.js.map +1 -1
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +5 -6
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -1
- package/lib/oldCode/webrtc/temasys/adapter.js +5264 -5192
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -1
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3357 -2927
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -1
- package/lib/qos/raw-qos.js +348 -273
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +3386 -2985
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +54 -42
|
@@ -1,120 +1,165 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __importDefault =
|
|
4
|
-
|
|
3
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : {
|
|
5
|
+
"default": mod
|
|
6
|
+
};
|
|
5
7
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "__esModule", {
|
|
10
|
+
value: true
|
|
11
|
+
});
|
|
12
|
+
exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;
|
|
13
|
+
|
|
14
|
+
var MediaConstants_1 = require("../MediaConstants");
|
|
15
|
+
|
|
16
|
+
var isEqual_1 = __importDefault(require("lodash/isEqual")); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
17
|
//@ts-ignore
|
|
18
|
+
|
|
19
|
+
|
|
9
20
|
var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
|
|
21
|
+
|
|
10
22
|
var MediaTracer_1 = require("./MediaTracer");
|
|
23
|
+
|
|
11
24
|
var trace = MediaTracer_1.getMediaTracer('Compatibility');
|
|
12
25
|
var environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();
|
|
13
26
|
var isIE11 = environmentDetect.isIE11();
|
|
14
|
-
var monitoredIeElements = new Map();
|
|
15
|
-
// Grace period to wait in the unlikely case that Opentok has not finished initializing,
|
|
27
|
+
var monitoredIeElements = new Map(); // Grace period to wait in the unlikely case that Opentok has not finished initializing,
|
|
16
28
|
// and a session initialization was requested
|
|
29
|
+
|
|
17
30
|
exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
|
|
18
31
|
exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
|
|
32
|
+
|
|
19
33
|
function _isOTDefined() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
try {
|
|
35
|
+
return !!window.OT;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
25
39
|
}
|
|
40
|
+
|
|
26
41
|
function waitForOpenTokIsLoaded() {
|
|
27
|
-
|
|
28
|
-
|
|
42
|
+
if (_isOTDefined()) {
|
|
43
|
+
return Promise.resolve();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var isDefined = false;
|
|
47
|
+
return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
|
|
48
|
+
if (isDefined || _isOTDefined()) {
|
|
49
|
+
isDefined = true;
|
|
50
|
+
return Promise.resolve();
|
|
29
51
|
}
|
|
30
|
-
|
|
31
|
-
return Promise.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
|
|
37
|
-
}, 0).then(function () {
|
|
38
|
-
return isDefined || Promise.reject(new Error('OT is undefined'));
|
|
39
|
-
});
|
|
52
|
+
|
|
53
|
+
return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
|
|
54
|
+
}, 0).then(function () {
|
|
55
|
+
return isDefined || Promise.reject(new Error('OT is undefined'));
|
|
56
|
+
});
|
|
40
57
|
}
|
|
58
|
+
|
|
41
59
|
exports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;
|
|
60
|
+
|
|
42
61
|
function enumerateMediaDevices() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
return new Promise(function (resolve, reject) {
|
|
63
|
+
if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {
|
|
64
|
+
window.OT.getDevices(function (error, devices) {
|
|
65
|
+
return error ? reject(error) : resolve(devices);
|
|
66
|
+
});
|
|
67
|
+
} else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
|
|
68
|
+
navigator.mediaDevices.enumerateDevices().then(resolve)["catch"](reject);
|
|
69
|
+
} else {
|
|
70
|
+
reject(new Error('Enumerating media devices is not supported'));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
54
73
|
}
|
|
74
|
+
|
|
55
75
|
exports.enumerateMediaDevices = enumerateMediaDevices;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
76
|
+
|
|
77
|
+
function isVideoPlaySupportedOnDevice(mediaServiceType) {
|
|
78
|
+
var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;
|
|
79
|
+
var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;
|
|
80
|
+
|
|
81
|
+
if (!isIE11) {
|
|
82
|
+
return Promise.resolve(true);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (isOpenTokService) {
|
|
86
|
+
return waitForOpenTokIsLoaded().then(function () {
|
|
87
|
+
return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (isMediaServer) {
|
|
68
92
|
return Promise.resolve(false);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (window.WebRTCAdapter) {
|
|
96
|
+
return Promise.resolve(true);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return Promise.resolve(false);
|
|
69
100
|
}
|
|
101
|
+
|
|
70
102
|
exports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;
|
|
103
|
+
|
|
71
104
|
function onMediaElementResize(mediaElement, onResizeHandler) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
105
|
+
var checkTimeoutPtr = null;
|
|
106
|
+
|
|
107
|
+
var unsubscribeIE = function unsubscribeIE() {
|
|
108
|
+
clearTimeout(checkTimeoutPtr);
|
|
109
|
+
monitoredIeElements["delete"](mediaElement);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
if (!isIE11) {
|
|
113
|
+
mediaElement.addEventListener('resize', onResizeHandler, false);
|
|
114
|
+
} else {
|
|
115
|
+
monitoredIeElements.set(mediaElement, {
|
|
116
|
+
videoWidth: mediaElement.videoWidth,
|
|
117
|
+
videoHeight: mediaElement.videoHeight
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
var checkElementSize_1 = function checkElementSize_1() {
|
|
121
|
+
var lastElementSize = monitoredIeElements.get(mediaElement);
|
|
122
|
+
|
|
123
|
+
if (!lastElementSize) {
|
|
124
|
+
unsubscribeIE();
|
|
125
|
+
} else {
|
|
126
|
+
var currentSize = {
|
|
127
|
+
videoWidth: mediaElement.videoWidth,
|
|
128
|
+
videoHeight: mediaElement.videoHeight
|
|
129
|
+
};
|
|
130
|
+
checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
|
|
131
|
+
|
|
132
|
+
if (!isEqual_1["default"](currentSize, lastElementSize)) {
|
|
133
|
+
monitoredIeElements.set(mediaElement, lastElementSize);
|
|
134
|
+
setTimeout(onResizeHandler);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
76
137
|
};
|
|
138
|
+
|
|
139
|
+
checkElementSize_1();
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return function () {
|
|
77
143
|
if (!isIE11) {
|
|
78
|
-
|
|
144
|
+
mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
|
|
79
145
|
} else {
|
|
80
|
-
|
|
81
|
-
videoWidth: mediaElement.videoWidth,
|
|
82
|
-
videoHeight: mediaElement.videoHeight
|
|
83
|
-
});
|
|
84
|
-
var checkElementSize_1 = function checkElementSize_1() {
|
|
85
|
-
var lastElementSize = monitoredIeElements.get(mediaElement);
|
|
86
|
-
if (!lastElementSize) {
|
|
87
|
-
unsubscribeIE();
|
|
88
|
-
} else {
|
|
89
|
-
var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };
|
|
90
|
-
checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
|
|
91
|
-
if (!isEqual_1.default(currentSize, lastElementSize)) {
|
|
92
|
-
monitoredIeElements.set(mediaElement, lastElementSize);
|
|
93
|
-
setTimeout(onResizeHandler);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
checkElementSize_1();
|
|
146
|
+
unsubscribeIE();
|
|
98
147
|
}
|
|
99
|
-
|
|
100
|
-
if (!isIE11) {
|
|
101
|
-
mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
|
|
102
|
-
} else {
|
|
103
|
-
unsubscribeIE();
|
|
104
|
-
}
|
|
105
|
-
};
|
|
148
|
+
};
|
|
106
149
|
}
|
|
150
|
+
|
|
107
151
|
exports.onMediaElementResize = onMediaElementResize;
|
|
152
|
+
|
|
108
153
|
function registerWebRTCAdapters() {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
154
|
+
if (isIE11) {
|
|
155
|
+
require('../webrtc-ie-shim.js');
|
|
156
|
+
} else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
|
|
157
|
+
require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require
|
|
158
|
+
|
|
159
|
+
} else {
|
|
160
|
+
trace.warn('no WebRTC adapters loaded.');
|
|
161
|
+
}
|
|
116
162
|
}
|
|
117
|
-
exports.registerWebRTCAdapters = registerWebRTCAdapters;
|
|
118
163
|
|
|
119
|
-
|
|
164
|
+
exports.registerWebRTCAdapters = registerWebRTCAdapters;
|
|
120
165
|
//# sourceMappingURL=Compatibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","isEqual_1","require","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","_isOTDefined","window","OT","e","waitForOpenTokIsLoaded","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","enumerateMediaDevices","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","catch","isVideoPlaySupportedOnDevice","isOpenTokService","OTPlugin","isInstalled","WebRTCAdapter","onMediaElementResize","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","delete","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","default","removeEventListener","registerWebRTCAdapters","isChrome","majorVersion","warn"],"mappings":"AAAA;;AACA,IAAIA,kBAAmB,aAAQ,UAAKA,eAAd,IAAkC,UAAUC,GAAV,EAAe;AACnE,WAAQA,OAAOA,IAAIC,UAAZ,GAA0BD,GAA1B,GAAgC,EAAE,WAAWA,GAAb,EAAvC;AACH,CAFD;AAGAE,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACA,IAAIC,YAAYP,gBAAgBQ,QAAQ,gBAAR,CAAhB,CAAhB;AACA;AACA,IAAIC,0BAA0BD,QAAQ,2DAAR,CAA9B;AACA,IAAIE,gBAAgBF,QAAQ,eAAR,CAApB;AACA,IAAIG,QAAQD,cAAcE,cAAd,CAA6B,eAA7B,CAAZ;AACA,IAAIC,oBAAoB,IAAIJ,wBAAwBK,mBAA5B,EAAxB;AACA,IAAIC,SAASF,kBAAkBE,MAAlB,EAAb;AACA,IAAIC,sBAAsB,IAAIC,GAAJ,EAA1B;AACA;AACA;AACAZ,QAAQa,4CAAR,GAAuD,EAAvD;AACAb,QAAQc,wCAAR,GAAmD,GAAnD;AACA,SAASC,YAAT,GAAwB;AACpB,QAAI;AACA,eAAO,CAAC,CAACC,OAAOC,EAAhB;AACH,KAFD,CAGA,OAAOC,CAAP,EAAU;AACN,eAAO,KAAP;AACH;AACJ;AACD,SAASC,sBAAT,GAAkC;AAC9B,QAAIJ,cAAJ,EAAoB;AAChB,eAAOK,QAAQC,OAAR,EAAP;AACH;AACD,QAAIC,YAAY,KAAhB;AACA,WAAOF,QAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAUxB,QAAQa,4CAAlB,CAAf,EAAgF,YAAY;AAC/F,YAAIS,aAAaP,cAAjB,EAAiC;AAC7BO,wBAAY,IAAZ;AACA,mBAAOF,QAAQC,OAAR,EAAP;AACH;AACD,eAAOD,QAAQK,KAAR,CAAczB,QAAQc,wCAAtB,CAAP;AACH,KANM,EAMJ,CANI,EAOFY,IAPE,CAOG,YAAY;AAAE,eAAOJ,aAAaF,QAAQO,MAAR,CAAe,IAAIC,KAAJ,CAAU,iBAAV,CAAf,CAApB;AAAmE,KAPpF,CAAP;AAQH;AACD5B,QAAQmB,sBAAR,GAAiCA,sBAAjC;AACA,SAASU,qBAAT,GAAiC;AAC7B,WAAO,IAAIT,OAAJ,CAAY,UAAUC,OAAV,EAAmBM,MAAnB,EAA2B;AAC1C,YAAK,OAAOX,OAAOC,EAAd,KAAqB,WAAtB,IAAsCD,OAAOC,EAA7C,IAAmDD,OAAOC,EAAP,CAAUa,UAAjE,EAA6E;AACzEd,mBAAOC,EAAP,CAAUa,UAAV,CAAqB,UAAUC,KAAV,EAAiBC,OAAjB,EAA0B;AAAE,uBAAQD,QAAQJ,OAAOI,KAAP,CAAR,GAAwBV,QAAQW,OAAR,CAAhC;AAAoD,aAArG;AACH,SAFD,MAGK,IAAIC,UAAUC,YAAV,IAA0BD,UAAUC,YAAV,CAAuBC,gBAArD,EAAuE;AACxEF,sBAAUC,YAAV,CAAuBC,gBAAvB,GAA0CT,IAA1C,CAA+CL,OAA/C,EAAwDe,KAAxD,CAA8DT,MAA9D;AACH,SAFI,MAGA;AACDA,mBAAO,IAAIC,KAAJ,CAAU,4CAAV,CAAP;AACH;AACJ,KAVM,CAAP;AAWH;AACD5B,QAAQ6B,qBAAR,GAAgCA,qBAAhC;AACA,SAASQ,4BAAT,CAAsCC,gBAAtC,EAAwD;AACpD,QAAI,CAAC5B,MAAL,EAAa;AACT,eAAOU,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACH;AACD,QAAIiB,gBAAJ,EAAsB;AAClB,eAAOnB,yBAAyBO,IAAzB,CAA8B,YAAY;AAAE,mBAAOV,OAAOC,EAAP,IAAaD,OAAOuB,QAApB,IAAgCvB,OAAOuB,QAAP,CAAgBC,WAAhD,IAA+DxB,OAAOuB,QAAP,CAAgBC,WAAhB,EAAtE;AAAsG,SAAlJ,CAAP;AACH;AACD,QAAIxB,OAAOyB,aAAX,EAA0B;AACtB,eAAOrB,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACH;AACD,WAAOD,QAAQC,OAAR,CAAgB,KAAhB,CAAP;AACH;AACDrB,QAAQqC,4BAAR,GAAuCA,4BAAvC;AACA,SAASK,oBAAT,CAA8BC,YAA9B,EAA4CC,eAA5C,EAA6D;AACzD,QAAIC,kBAAkB,IAAtB;AACA,QAAIC,gBAAgB,SAAhBA,aAAgB,GAAY;AAC5BC,qBAAaF,eAAb;AACAlC,4BAAoBqC,MAApB,CAA2BL,YAA3B;AACH,KAHD;AAIA,QAAI,CAACjC,MAAL,EAAa;AACTiC,qBAAaM,gBAAb,CAA8B,QAA9B,EAAwCL,eAAxC,EAAyD,KAAzD;AACH,KAFD,MAGK;AACDjC,4BAAoBuC,GAApB,CAAwBP,YAAxB,EAAsC;AAClCQ,wBAAYR,aAAaQ,UADS;AAElCC,yBAAaT,aAAaS;AAFQ,SAAtC;AAIA,YAAIC,qBAAqB,SAArBA,kBAAqB,GAAY;AACjC,gBAAIC,kBAAkB3C,oBAAoB4C,GAApB,CAAwBZ,YAAxB,CAAtB;AACA,gBAAI,CAACW,eAAL,EAAsB;AAClBR;AACH,aAFD,MAGK;AACD,oBAAIU,cAAc,EAAEL,YAAYR,aAAaQ,UAA3B,EAAuCC,aAAaT,aAAaS,WAAjE,EAAlB;AACAP,kCAAkBY,WAAWJ,kBAAX,EAA+B,GAA/B,CAAlB;AACA,oBAAI,CAACnD,UAAUwD,OAAV,CAAkBF,WAAlB,EAA+BF,eAA/B,CAAL,EAAsD;AAClD3C,wCAAoBuC,GAApB,CAAwBP,YAAxB,EAAsCW,eAAtC;AACAG,+BAAWb,eAAX;AACH;AACJ;AACJ,SAbD;AAcAS;AACH;AACD,WAAO,YAAY;AACf,YAAI,CAAC3C,MAAL,EAAa;AACTiC,4BAAgBA,aAAagB,mBAAb,CAAiC,QAAjC,EAA2Cf,eAA3C,CAAhB;AACH,SAFD,MAGK;AACDE;AACH;AACJ,KAPD;AAQH;AACD9C,QAAQ0C,oBAAR,GAA+BA,oBAA/B;AACA,SAASkB,sBAAT,GAAkC;AAC9B,QAAIlD,MAAJ,EAAY;AACRP,gBAAQ,sBAAR;AACH,KAFD,MAGK,IAAI,EAAEK,kBAAkBqD,QAAlB,MAAiCrD,kBAAkBsD,YAAlB,KAAmC,EAAtE,CAAJ,EAAgF;AACjF3D,gBAAQ,oCAAR,EADiF,CAClC;AAClD,KAFI,MAGA;AACDG,cAAMyD,IAAN,CAAW,4BAAX;AACH;AACJ;AACD/D,QAAQ4D,sBAAR,GAAiCA,sBAAjC;;AAEA","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if ((typeof window.OT !== 'undefined') && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(isOpenTokService) {\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && (environmentDetect.majorVersion() < 49))) {\n require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","e","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","removeEventListener","isChrome","majorVersion","warn"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if ((typeof window.OT !== 'undefined') && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && (environmentDetect.majorVersion() < 49))) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SnapshotOptions } from '../MediaContracts';
|
|
2
|
-
|
|
2
|
+
import { KnownMediaStream } from '../MediaConstants';
|
|
3
|
+
export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement>;
|
|
3
4
|
export declare function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void>;
|
|
4
|
-
export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
|
|
5
|
+
export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, sourceStream: KnownMediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAMnD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuFvJ;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,GAAE,eAAiC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqGxK","file":"MediaDomUtils.d.ts","sourcesContent":["import isUndefined from 'lodash/isUndefined';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {repeatWithTimeout} from '@techsee/techsee-common/lib/core/retry-with-timeout';\nimport {SnapshotOptions} from '../MediaContracts';\nimport {getMediaTracer} from './MediaTracer';\nimport {KnownMediaStream} from '../MediaConstants';\n\nconst trace = getMediaTracer('DomUtils');\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nexport function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement> {\n return new Promise((resolve, reject) => {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n\n return;\n }\n\n const doResolve = (videoEl: HTMLVideoElement): void => {\n trace.info('Video element created successfully', {videoEl});\n resolve(videoEl);\n };\n\n const videoEl = document.createElement('video') as any;\n\n videoEl.muted = true;\n videoEl.playsInline = true;\n\n if (isIE11 && (window as any).WebRTCAdapter) {\n container.appendChild(videoEl);\n (window as any).WebRTCAdapter.bindVideoElement(videoEl);\n }\n\n videoEl.srcObject = mediaStream;\n\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', () => {\n if ([KnownMediaStream.USER_AUDIO_STREAM, KnownMediaStream.AGENT_AUDIO_STREAM, KnownMediaStream.OBSERVER_AUDIO_STREAM]\n .indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n\n try {\n const playRes = videoEl.play();\n\n if (playRes && playRes.then) {\n playRes.then(() => {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n } else if (!isIE11) {\n doResolve(videoEl);\n }\n\n if (playRes && playRes.catch) {\n playRes.catch((error: any) => {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n } catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n\n return;\n }\n\n\n if (isIE11) {\n const handleComplete = (): boolean => videoEl.parentElement.tagName !== 'OBJECT';\n\n const waitForObjectSettings = {intervalInMs: 30, timeoutInMs: 200};\n\n repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(() => {\n //We will wait, until video is played, then we resolve\n const isVideoPlaying = (): boolean => videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;\n const waitForVideoSettings = {intervalInMs: 50, timeoutInMs: 10000};\n\n repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(() => doResolve(videoEl.parentElement))\n .catch(() => reject(new Error('Timeout while waiting for video to play')));\n });\n } else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\n\nexport function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void> {\n return new Promise((resolve) => {\n if (isIE11 && (window as any).WebRTCAdapter) {\n (window as any).WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n } else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n } else {\n videoEl.remove();\n }\n\n resolve();\n });\n}\n\nconst defaultSnapshot: SnapshotOptions = {\n format: 'image/png',\n quality: 0.92\n};\n\nexport function getSnapshotFromMediaStream(mediaStream: MediaStream, sourceStream: KnownMediaStream, snapshotOptions: SnapshotOptions = defaultSnapshot): Promise<string> {\n const {format, quality, x, y, w, h} = snapshotOptions;\n const crop = !isUndefined(x) && !isUndefined(y) && !isUndefined(w) && !isUndefined(h);\n const resize = !crop && (!isUndefined(w) || !isUndefined(h));\n\n return new Promise((resolve, reject) => {\n\n const tempContainer = document.createElement('div');\n\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n\n const doneFn = (err: any, image?: any): void => {\n if (err) {\n reject(err);\n\n return;\n }\n\n setTimeout(() => {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then((videoElement) => Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then((imgData: any) => {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n\n doneFn(null, imgData);\n }))\n .catch((error) => {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n\n //Gets image in all browsers except of IE\n function getImgData(videoElement: HTMLVideoElement): string {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, 0, 0, w, h);\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n\n ctx.drawImage(videoElement, 0, 0);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement: any): Promise<string> {\n return new Promise((resolve) => {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n\n function _drawAndRemove(image: any): string {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n } else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n const base64 = videoElement.getFrame();\n const image = new Image();\n\n image.onload = () => resolve(_drawAndRemove(image));\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\n"]}
|