@techsee/techsee-media-service 18.6.1 → 19.0.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.
Files changed (141) hide show
  1. package/lib/LocalStreamManager.d.ts +1 -0
  2. package/lib/LocalStreamManager.d.ts.map +1 -1
  3. package/lib/LocalStreamManager.js +320 -441
  4. package/lib/LocalStreamManager.js.map +1 -1
  5. package/lib/MediaConstants.d.ts +1 -0
  6. package/lib/MediaConstants.d.ts.map +1 -1
  7. package/lib/MediaConstants.js +53 -95
  8. package/lib/MediaConstants.js.map +1 -1
  9. package/lib/MediaContracts.d.ts +1 -0
  10. package/lib/MediaContracts.d.ts.map +1 -1
  11. package/lib/MediaContracts.js +2 -5
  12. package/lib/MediaContracts.js.map +1 -1
  13. package/lib/MediaPublisher.d.ts +1 -0
  14. package/lib/MediaPublisher.d.ts.map +1 -1
  15. package/lib/MediaPublisher.js +36 -49
  16. package/lib/MediaPublisher.js.map +1 -1
  17. package/lib/MediaServiceBase.d.ts +1 -0
  18. package/lib/MediaServiceBase.d.ts.map +1 -1
  19. package/lib/MediaServiceBase.js +687 -937
  20. package/lib/MediaServiceBase.js.map +1 -1
  21. package/lib/MediaSession/MediaServer.d.ts +1 -0
  22. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  23. package/lib/MediaSession/MediaServer.js +372 -517
  24. package/lib/MediaSession/MediaServer.js.map +1 -1
  25. package/lib/MediaSession/MediaSessionBase.d.ts +1 -0
  26. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  27. package/lib/MediaSession/MediaSessionBase.js +88 -127
  28. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  29. package/lib/MediaSession/SessionOpentok.d.ts +1 -0
  30. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  31. package/lib/MediaSession/SessionOpentok.js +357 -503
  32. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  33. package/lib/MediaSession/SessionTurn.d.ts +1 -0
  34. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  35. package/lib/MediaSession/SessionTurn.js +431 -613
  36. package/lib/MediaSession/SessionTurn.js.map +1 -1
  37. package/lib/MediaSession/TurnConstants.d.ts +1 -0
  38. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  39. package/lib/MediaSession/TurnConstants.js +17 -32
  40. package/lib/MediaSession/TurnConstants.js.map +1 -1
  41. package/lib/MediaSubscriber.d.ts +1 -0
  42. package/lib/MediaSubscriber.d.ts.map +1 -1
  43. package/lib/MediaSubscriber.js +189 -245
  44. package/lib/MediaSubscriber.js.map +1 -1
  45. package/lib/MediaUtils/Compatibility.d.ts +1 -0
  46. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  47. package/lib/MediaUtils/Compatibility.js +129 -283
  48. package/lib/MediaUtils/Compatibility.js.map +1 -1
  49. package/lib/MediaUtils/MediaDomUtils.d.ts +1 -0
  50. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  51. package/lib/MediaUtils/MediaDomUtils.js +184 -252
  52. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  53. package/lib/MediaUtils/MediaTracer.d.ts +1 -0
  54. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  55. package/lib/MediaUtils/MediaTracer.js +3 -10
  56. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  57. package/lib/MediaUtils/index.d.ts +1 -0
  58. package/lib/MediaUtils/index.d.ts.map +1 -1
  59. package/lib/MediaUtils/index.js +3 -13
  60. package/lib/MediaUtils/index.js.map +1 -1
  61. package/lib/MultiParty/DetectWebRtcService.d.ts +1 -0
  62. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  63. package/lib/MultiParty/DetectWebRtcService.js +92 -241
  64. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  65. package/lib/MultiParty/MediaCapabilitiesService.d.ts +1 -0
  66. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -1
  67. package/lib/MultiParty/MediaCapabilitiesService.js +143 -312
  68. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
  69. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +1 -0
  70. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -1
  71. package/lib/MultiParty/MediaCapabilitiesUtils.js +95 -277
  72. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -1
  73. package/lib/MultiParty/MediaTracer.d.ts +1 -0
  74. package/lib/MultiParty/MediaTracer.d.ts.map +1 -1
  75. package/lib/MultiParty/MediaTracer.js +3 -10
  76. package/lib/MultiParty/MediaTracer.js.map +1 -1
  77. package/lib/MultiParty/MultiPartyService.d.ts +1 -0
  78. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -1
  79. package/lib/MultiParty/MultiPartyService.js +24 -47
  80. package/lib/MultiParty/MultiPartyService.js.map +1 -1
  81. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +2 -1
  82. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -1
  83. package/lib/MultiParty/MultiPartyServiceFactory.js +7 -15
  84. package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -1
  85. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +1 -0
  86. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -1
  87. package/lib/MultiParty/MultipartyServiceEventTypes.js +11 -15
  88. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -1
  89. package/lib/MultiParty/index.d.ts +1 -0
  90. package/lib/MultiParty/index.d.ts.map +1 -1
  91. package/lib/MultiParty/index.js +15 -35
  92. package/lib/MultiParty/index.js.map +1 -1
  93. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +2 -1
  94. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -1
  95. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +457 -839
  96. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
  97. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +1 -0
  98. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -1
  99. package/lib/MultiParty/opentok/OpentokPublisher.js +107 -269
  100. package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -1
  101. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +1 -0
  102. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -1
  103. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +34 -54
  104. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -1
  105. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +1 -0
  106. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -1
  107. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +40 -77
  108. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -1
  109. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +1 -0
  110. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -1
  111. package/lib/MultiParty/opentok/OpentokSubscriber.js +20 -28
  112. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -1
  113. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +1 -0
  114. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -1
  115. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +150 -355
  116. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
  117. package/lib/MultiParty/opentok/trace.d.ts +1 -0
  118. package/lib/MultiParty/opentok/trace.d.ts.map +1 -1
  119. package/lib/MultiParty/opentok/trace.js +11 -24
  120. package/lib/MultiParty/opentok/trace.js.map +1 -1
  121. package/lib/MultiParty/types.d.ts +1 -0
  122. package/lib/MultiParty/types.d.ts.map +1 -1
  123. package/lib/MultiParty/types.js +2 -5
  124. package/lib/MultiParty/types.js.map +1 -1
  125. package/lib/MultiParty/utils.d.ts +1 -0
  126. package/lib/MultiParty/utils.d.ts.map +1 -1
  127. package/lib/MultiParty/utils.js +5 -15
  128. package/lib/MultiParty/utils.js.map +1 -1
  129. package/lib/TechseeMediaStream.d.ts +1 -0
  130. package/lib/TechseeMediaStream.d.ts.map +1 -1
  131. package/lib/TechseeMediaStream.js +53 -61
  132. package/lib/TechseeMediaStream.js.map +1 -1
  133. package/lib/qos/raw-qos.d.ts +29 -0
  134. package/lib/qos/raw-qos.d.ts.map +1 -0
  135. package/lib/qos/raw-qos.js +247 -382
  136. package/lib/qos/raw-qos.js.map +1 -1
  137. package/lib/webrtc-ie-shim.d.ts +4 -0
  138. package/lib/webrtc-ie-shim.d.ts.map +1 -0
  139. package/lib/webrtc-ie-shim.js +1999 -3454
  140. package/lib/webrtc-ie-shim.js.map +1 -1
  141. package/package.json +42 -45
@@ -1,324 +1,170 @@
1
1
  "use strict";
2
-
3
- var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) {
5
- return value instanceof P ? value : new P(function (resolve) {
6
- resolve(value);
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
7
9
  });
8
- }
9
-
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) {
12
- try {
13
- step(generator.next(value));
14
- } catch (e) {
15
- reject(e);
16
- }
17
- }
18
-
19
- function rejected(value) {
20
- try {
21
- step(generator["throw"](value));
22
- } catch (e) {
23
- reject(e);
24
- }
25
- }
26
-
27
- function step(result) {
28
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
29
- }
30
-
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
10
  };
34
-
35
- var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
36
- var _ = {
37
- label: 0,
38
- sent: function sent() {
39
- if (t[0] & 1) throw t[1];
40
- return t[1];
41
- },
42
- trys: [],
43
- ops: []
44
- },
45
- f,
46
- y,
47
- t,
48
- g;
49
- return g = {
50
- next: verb(0),
51
- "throw": verb(1),
52
- "return": verb(2)
53
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
54
- return this;
55
- }), g;
56
-
57
- function verb(n) {
58
- return function (v) {
59
- return step([n, v]);
60
- };
61
- }
62
-
63
- function step(op) {
64
- if (f) throw new TypeError("Generator is already executing.");
65
-
66
- while (_) {
67
- try {
68
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
69
- if (y = 0, t) op = [op[0] & 2, t.value];
70
-
71
- switch (op[0]) {
72
- case 0:
73
- case 1:
74
- t = op;
75
- break;
76
-
77
- case 4:
78
- _.label++;
79
- return {
80
- value: op[1],
81
- done: false
82
- };
83
-
84
- case 5:
85
- _.label++;
86
- y = op[1];
87
- op = [0];
88
- continue;
89
-
90
- case 7:
91
- op = _.ops.pop();
92
-
93
- _.trys.pop();
94
-
95
- continue;
96
-
97
- default:
98
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
99
- _ = 0;
100
- continue;
101
- }
102
-
103
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
104
- _.label = op[1];
105
- break;
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
106
32
  }
107
-
108
- if (op[0] === 6 && _.label < t[1]) {
109
- _.label = t[1];
110
- t = op;
111
- break;
112
- }
113
-
114
- if (t && _.label < t[2]) {
115
- _.label = t[2];
116
-
117
- _.ops.push(op);
118
-
119
- break;
120
- }
121
-
122
- if (t[2]) _.ops.pop();
123
-
124
- _.trys.pop();
125
-
126
- continue;
127
- }
128
-
129
- op = body.call(thisArg, _);
130
- } catch (e) {
131
- op = [6, e];
132
- y = 0;
133
- } finally {
134
- f = t = 0;
135
- }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
136
36
  }
137
-
138
- if (op[0] & 5) throw op[1];
139
- return {
140
- value: op[0] ? op[1] : void 0,
141
- done: true
142
- };
143
- }
144
37
  };
145
-
146
- var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
147
- return mod && mod.__esModule ? mod : {
148
- "default": mod
149
- };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
150
40
  };
151
-
152
- Object.defineProperty(exports, "__esModule", {
153
- value: true
154
- });
41
+ Object.defineProperty(exports, "__esModule", { value: true });
155
42
  exports.waitAfterClearingFilter = exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;
156
-
157
43
  var MediaConstants_1 = require("../MediaConstants");
158
-
159
- var isEqual_1 = __importDefault(require("lodash/isEqual")); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
160
- //@ts-ignore
161
-
162
-
44
+ var isEqual_1 = __importDefault(require("lodash/isEqual"));
163
45
  var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
164
-
165
46
  var MediaTracer_1 = require("./MediaTracer");
166
-
167
- var trace = MediaTracer_1.getMediaTracer('Compatibility');
47
+ var trace = (0, MediaTracer_1.getMediaTracer)('Compatibility');
168
48
  var environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();
169
49
  var isIE11 = environmentDetect.isIE11();
170
- var monitoredIeElements = new Map(); // Grace period to wait in the unlikely case that Opentok has not finished initializing,
171
- // and a session initialization was requested
172
-
50
+ var monitoredIeElements = new Map();
173
51
  exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
174
- exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500; // switching camera while blur effect may cause video freeze for some devices (beta version)
175
- // this tiemout prevents event loop to stuck
176
-
52
+ exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
177
53
  exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;
178
-
179
54
  function _isOTDefined() {
180
- try {
181
- return !!window.OT;
182
- } catch (e) {
183
- return false;
184
- }
55
+ try {
56
+ return !!window.OT;
57
+ }
58
+ catch (e) {
59
+ return false;
60
+ }
185
61
  }
186
-
187
62
  function waitForOpenTokIsLoaded() {
188
- if (_isOTDefined()) {
189
- return Promise.resolve();
190
- }
191
-
192
- var isDefined = false;
193
- return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
194
- if (isDefined || _isOTDefined()) {
195
- isDefined = true;
196
- return Promise.resolve();
63
+ if (_isOTDefined()) {
64
+ return Promise.resolve();
197
65
  }
198
-
199
- return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
200
- }, 0).then(function () {
201
- return isDefined || Promise.reject(new Error('OT is undefined'));
202
- });
66
+ var isDefined = false;
67
+ return Promise
68
+ .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
69
+ if (isDefined || _isOTDefined()) {
70
+ isDefined = true;
71
+ return Promise.resolve();
72
+ }
73
+ return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
74
+ }, 0)
75
+ .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });
203
76
  }
204
-
205
77
  exports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;
206
-
207
78
  function enumerateMediaDevices() {
208
- return new Promise(function (resolve, reject) {
209
- if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {
210
- window.OT.getDevices(function (error, devices) {
211
- return error ? reject(error) : resolve(devices);
212
- });
213
- } else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
214
- navigator.mediaDevices.enumerateDevices().then(resolve)["catch"](reject);
215
- } else {
216
- reject(new Error('Enumerating media devices is not supported'));
217
- }
218
- });
79
+ return new Promise(function (resolve, reject) {
80
+ if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {
81
+ window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });
82
+ }
83
+ else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
84
+ navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);
85
+ }
86
+ else {
87
+ reject(new Error('Enumerating media devices is not supported'));
88
+ }
89
+ });
219
90
  }
220
-
221
91
  exports.enumerateMediaDevices = enumerateMediaDevices;
222
-
223
92
  function isVideoPlaySupportedOnDevice(mediaServiceType) {
224
- var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;
225
- var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;
226
-
227
- if (!isIE11) {
228
- return Promise.resolve(true);
229
- }
230
-
231
- if (isOpenTokService) {
232
- return waitForOpenTokIsLoaded().then(function () {
233
- return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled();
234
- });
235
- }
236
-
237
- if (isMediaServer) {
93
+ var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;
94
+ var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;
95
+ if (!isIE11) {
96
+ return Promise.resolve(true);
97
+ }
98
+ if (isOpenTokService) {
99
+ return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });
100
+ }
101
+ if (isMediaServer) {
102
+ return Promise.resolve(false);
103
+ }
104
+ if (window.WebRTCAdapter) {
105
+ return Promise.resolve(true);
106
+ }
238
107
  return Promise.resolve(false);
239
- }
240
-
241
- if (window.WebRTCAdapter) {
242
- return Promise.resolve(true);
243
- }
244
-
245
- return Promise.resolve(false);
246
108
  }
247
-
248
109
  exports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;
249
-
250
110
  function onMediaElementResize(mediaElement, onResizeHandler) {
251
- var checkTimeoutPtr = null;
252
-
253
- var unsubscribeIE = function unsubscribeIE() {
254
- clearTimeout(checkTimeoutPtr);
255
- monitoredIeElements["delete"](mediaElement);
256
- };
257
-
258
- if (!isIE11) {
259
- mediaElement.addEventListener('resize', onResizeHandler, false);
260
- } else {
261
- monitoredIeElements.set(mediaElement, {
262
- videoWidth: mediaElement.videoWidth,
263
- videoHeight: mediaElement.videoHeight
264
- });
265
-
266
- var checkElementSize_1 = function checkElementSize_1() {
267
- var lastElementSize = monitoredIeElements.get(mediaElement);
268
-
269
- if (!lastElementSize) {
270
- unsubscribeIE();
271
- } else {
272
- var currentSize = {
273
- videoWidth: mediaElement.videoWidth,
274
- videoHeight: mediaElement.videoHeight
275
- };
276
- checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
277
-
278
- if (!isEqual_1["default"](currentSize, lastElementSize)) {
279
- monitoredIeElements.set(mediaElement, lastElementSize); // eslint-disable-next-line @typescript-eslint/no-implied-eval
280
-
281
- setTimeout(onResizeHandler);
282
- }
283
- }
111
+ var checkTimeoutPtr = null;
112
+ var unsubscribeIE = function () {
113
+ clearTimeout(checkTimeoutPtr);
114
+ monitoredIeElements.delete(mediaElement);
284
115
  };
285
-
286
- checkElementSize_1();
287
- }
288
-
289
- return function () {
290
116
  if (!isIE11) {
291
- mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
292
- } else {
293
- unsubscribeIE();
117
+ mediaElement.addEventListener('resize', onResizeHandler, false);
118
+ }
119
+ else {
120
+ monitoredIeElements.set(mediaElement, {
121
+ videoWidth: mediaElement.videoWidth,
122
+ videoHeight: mediaElement.videoHeight
123
+ });
124
+ var checkElementSize_1 = function () {
125
+ var lastElementSize = monitoredIeElements.get(mediaElement);
126
+ if (!lastElementSize) {
127
+ unsubscribeIE();
128
+ }
129
+ else {
130
+ var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };
131
+ checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
132
+ if (!(0, isEqual_1.default)(currentSize, lastElementSize)) {
133
+ monitoredIeElements.set(mediaElement, lastElementSize);
134
+ setTimeout(onResizeHandler);
135
+ }
136
+ }
137
+ };
138
+ checkElementSize_1();
294
139
  }
295
- };
140
+ return function () {
141
+ if (!isIE11) {
142
+ mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
143
+ }
144
+ else {
145
+ unsubscribeIE();
146
+ }
147
+ };
296
148
  }
297
-
298
149
  exports.onMediaElementResize = onMediaElementResize;
299
-
300
150
  function registerWebRTCAdapters() {
301
- if (isIE11) {
302
- require('../webrtc-ie-shim.js');
303
- } else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
304
- require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require
305
-
306
- } else {
307
- trace.warn('no WebRTC adapters loaded.');
308
- }
151
+ if (isIE11) {
152
+ require('../webrtc-ie-shim.js');
153
+ }
154
+ else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
155
+ require('webrtc-adapter/dist/adapter_core');
156
+ }
157
+ else {
158
+ trace.warn('no WebRTC adapters loaded.');
159
+ }
309
160
  }
310
-
311
161
  exports.registerWebRTCAdapters = registerWebRTCAdapters;
312
-
313
162
  function waitAfterClearingFilter() {
314
- return __awaiter(this, void 0, void 0, function () {
315
- return __generator(this, function (_a) {
316
- return [2
317
- /*return*/
318
- , Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];
163
+ return __awaiter(this, void 0, void 0, function () {
164
+ return __generator(this, function (_a) {
165
+ return [2, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];
166
+ });
319
167
  });
320
- });
321
168
  }
322
-
323
169
  exports.waitAfterClearingFilter = waitAfterClearingFilter;
324
- //# sourceMappingURL=Compatibility.js.map
170
+ //# sourceMappingURL=Compatibility.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__importDefault","mod","__esModule","Object","defineProperty","exports","waitAfterClearingFilter","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT","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","isDefined","reduce","Array","delay","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","_a"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitAfterClearingFilter = exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 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;\n// switching camera while blur effect may cause video freeze for some devices (beta version)\n// this tiemout prevents event loop to stuck\nexports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;\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\n .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 // eslint-disable-next-line @typescript-eslint/no-implied-eval\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;\nfunction waitAfterClearingFilter() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];\n });\n });\n}\nexports.waitAfterClearingFilter = waitAfterClearingFilter;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
1
+ {"version":3,"file":"Compatibility.js","sourceRoot":"","sources":["../../src/MediaUtils/Compatibility.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,4 @@ export declare function calculateResolution({ videoWidth, videoHeight }: VideoRe
4
4
  export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement>;
5
5
  export declare function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void>;
6
6
  export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, sourceStream: KnownMediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
7
+ //# sourceMappingURL=MediaDomUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAgC,MAAM,mBAAmB,CAAC;AAMzG,wBAAgB,mBAAmB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAC,EAAE,eAAe,yBAgB7E;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,gBAAgB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA0F3B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CACtC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,gBAAgB,EAC9B,eAAe,GAAE,eAAiC,GACnD,OAAO,CAAC,MAAM,CAAC,CAuGjB","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, VideoResolution} from '../MediaContracts';\nimport {getMediaTracer} from './MediaTracer';\nimport {KnownMediaStream, VideoResolutionFormat, VideoResolutionMultiplication} from '../MediaConstants';\n\nconst trace = getMediaTracer('DomUtils');\n\nconst isIE11 = new TsEnvironmentDetect().isIE11();\n\nexport function calculateResolution({videoWidth, videoHeight}: VideoResolution) {\n const multiplyResolution = videoWidth * videoHeight;\n let videoResolutionFormat = VideoResolutionFormat.NONE;\n\n if (multiplyResolution >= VideoResolutionMultiplication.HD) {\n videoResolutionFormat = VideoResolutionFormat.HD;\n }\n\n if (\n multiplyResolution >= VideoResolutionMultiplication.SD &&\n multiplyResolution < VideoResolutionMultiplication.HD\n ) {\n videoResolutionFormat = VideoResolutionFormat.SD;\n }\n\n return videoResolutionFormat;\n}\n\nexport function renderMediaStreamToVideoEl(\n container: HTMLDivElement,\n mediaStream: MediaStream,\n streamType: KnownMediaStream\n): 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 (\n [\n KnownMediaStream.USER_AUDIO_STREAM,\n KnownMediaStream.AGENT_AUDIO_STREAM,\n KnownMediaStream.OBSERVER_AUDIO_STREAM\n ].indexOf(streamType) > -1\n ) {\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 if (isIE11) {\n const handleComplete = (): boolean => videoEl.parentElement.tagName !== 'OBJECT';\n\n const waitForObjectSettings = {intervalInMs: 30, timeoutInMs: 200};\n\n repeatWithTimeout(handleComplete, waitForObjectSettings).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(\n mediaStream: MediaStream,\n sourceStream: KnownMediaStream,\n snapshotOptions: SnapshotOptions = defaultSnapshot\n): 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 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) =>\n Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(\n (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 )\n )\n .catch((error) =>\n doneFn(error || new Error('Failed to create a snapshot - cannot 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"]}
1
+ {"version":3,"file":"MediaDomUtils.d.ts","sourceRoot":"","sources":["../../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAgC,MAAM,mBAAmB,CAAC;AAMzG,wBAAgB,mBAAmB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAC,EAAE,eAAe,yBAgB7E;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,gBAAgB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA0F3B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CACtC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,gBAAgB,EAC9B,eAAe,GAAE,eAAiC,GACnD,OAAO,CAAC,MAAM,CAAC,CAuGjB"}