@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,200 +1,261 @@
|
|
|
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.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;
|
|
13
|
+
|
|
14
|
+
var isUndefined_1 = __importDefault(require("lodash/isUndefined")); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
15
|
//@ts-ignore
|
|
16
|
+
|
|
17
|
+
|
|
9
18
|
var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
|
|
19
|
+
|
|
10
20
|
var retry_with_timeout_1 = require("@techsee/techsee-common/lib/core/retry-with-timeout");
|
|
21
|
+
|
|
11
22
|
var MediaTracer_1 = require("./MediaTracer");
|
|
23
|
+
|
|
24
|
+
var MediaConstants_1 = require("../MediaConstants");
|
|
25
|
+
|
|
12
26
|
var trace = MediaTracer_1.getMediaTracer('DomUtils');
|
|
13
27
|
var isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
} else if (!isIE11) {
|
|
46
|
-
doResolve(videoEl);
|
|
47
|
-
}
|
|
48
|
-
if (playRes && playRes.catch) {
|
|
49
|
-
playRes.catch(function (error) {
|
|
50
|
-
trace.error('Reject while executing play method on video element', error);
|
|
51
|
-
reject(error);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
} catch (error) {
|
|
55
|
-
reject(error);
|
|
56
|
-
trace.error('Error while executing play method on video element', error);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (isIE11) {
|
|
60
|
-
var handleComplete = function handleComplete() {
|
|
61
|
-
return videoEl.parentElement.tagName !== 'OBJECT';
|
|
62
|
-
};
|
|
63
|
-
var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };
|
|
64
|
-
retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {
|
|
65
|
-
//We will wait, until video is played, then we resolve
|
|
66
|
-
var isVideoPlaying = function isVideoPlaying() {
|
|
67
|
-
return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;
|
|
68
|
-
};
|
|
69
|
-
var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };
|
|
70
|
-
retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings).then(function () {
|
|
71
|
-
return doResolve(videoEl.parentElement);
|
|
72
|
-
}).catch(function () {
|
|
73
|
-
return reject(new Error('Timeout while waiting for video to play'));
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
} else {
|
|
77
|
-
container.appendChild(videoEl);
|
|
78
|
-
//doResolve(videoEl);
|
|
79
|
-
}
|
|
28
|
+
|
|
29
|
+
function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
|
|
30
|
+
return new Promise(function (resolve, reject) {
|
|
31
|
+
if (!document.body.contains(container)) {
|
|
32
|
+
reject(new Error('Cannot render to container that is not attached to dom'));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var doResolve = function doResolve(videoEl) {
|
|
37
|
+
trace.info('Video element created successfully', {
|
|
38
|
+
videoEl: videoEl
|
|
39
|
+
});
|
|
40
|
+
resolve(videoEl);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var videoEl = document.createElement('video');
|
|
44
|
+
videoEl.muted = true;
|
|
45
|
+
videoEl.playsInline = true;
|
|
46
|
+
|
|
47
|
+
if (isIE11 && window.WebRTCAdapter) {
|
|
48
|
+
container.appendChild(videoEl);
|
|
49
|
+
window.WebRTCAdapter.bindVideoElement(videoEl);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
videoEl.srcObject = mediaStream; // When unplugged the headphones in ios the video element got paused.
|
|
53
|
+
|
|
54
|
+
videoEl.addEventListener('pause', function () {
|
|
55
|
+
if ([MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM].indexOf(streamType) > -1) {
|
|
56
|
+
trace.info('Video element got paused. IOS headphones disconnected');
|
|
57
|
+
videoEl.play();
|
|
58
|
+
}
|
|
80
59
|
});
|
|
60
|
+
|
|
61
|
+
if (!isIE11) {
|
|
62
|
+
// Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play
|
|
63
|
+
videoEl.setAttribute('muted', '');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
var playRes = videoEl.play();
|
|
68
|
+
|
|
69
|
+
if (playRes && playRes.then) {
|
|
70
|
+
playRes.then(function () {
|
|
71
|
+
trace.info('Video element play success');
|
|
72
|
+
|
|
73
|
+
if (!isIE11) {
|
|
74
|
+
doResolve(videoEl);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
} else if (!isIE11) {
|
|
78
|
+
doResolve(videoEl);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (playRes && playRes["catch"]) {
|
|
82
|
+
playRes["catch"](function (error) {
|
|
83
|
+
trace.error('Reject while executing play method on video element', error);
|
|
84
|
+
reject(error);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
} catch (error) {
|
|
88
|
+
reject(error);
|
|
89
|
+
trace.error('Error while executing play method on video element', error);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (isIE11) {
|
|
94
|
+
var handleComplete = function handleComplete() {
|
|
95
|
+
return videoEl.parentElement.tagName !== 'OBJECT';
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
var waitForObjectSettings = {
|
|
99
|
+
intervalInMs: 30,
|
|
100
|
+
timeoutInMs: 200
|
|
101
|
+
};
|
|
102
|
+
retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {
|
|
103
|
+
//We will wait, until video is played, then we resolve
|
|
104
|
+
var isVideoPlaying = function isVideoPlaying() {
|
|
105
|
+
return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
var waitForVideoSettings = {
|
|
109
|
+
intervalInMs: 50,
|
|
110
|
+
timeoutInMs: 10000
|
|
111
|
+
};
|
|
112
|
+
retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings).then(function () {
|
|
113
|
+
return doResolve(videoEl.parentElement);
|
|
114
|
+
})["catch"](function () {
|
|
115
|
+
return reject(new Error('Timeout while waiting for video to play'));
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
} else {
|
|
119
|
+
container.appendChild(videoEl); //doResolve(videoEl);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
81
122
|
}
|
|
123
|
+
|
|
82
124
|
exports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;
|
|
125
|
+
|
|
83
126
|
function removeVideoElementFromDom(videoEl) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
127
|
+
return new Promise(function (resolve) {
|
|
128
|
+
if (isIE11 && window.WebRTCAdapter) {
|
|
129
|
+
window.WebRTCAdapter.unBindVideoElement(videoEl);
|
|
130
|
+
|
|
131
|
+
if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {
|
|
132
|
+
videoEl.parentNode.removeChild(videoEl);
|
|
133
|
+
trace.info('Video element removed successfully');
|
|
134
|
+
} else {
|
|
135
|
+
trace.warn('Video element not removed', videoEl, videoEl.parentNode);
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
videoEl.remove();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
resolve();
|
|
142
|
+
});
|
|
98
143
|
}
|
|
144
|
+
|
|
99
145
|
exports.removeVideoElementFromDom = removeVideoElementFromDom;
|
|
100
146
|
var defaultSnapshot = {
|
|
101
|
-
|
|
102
|
-
|
|
147
|
+
format: 'image/png',
|
|
148
|
+
quality: 0.92
|
|
103
149
|
};
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
150
|
+
|
|
151
|
+
function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {
|
|
152
|
+
if (snapshotOptions === void 0) {
|
|
153
|
+
snapshotOptions = defaultSnapshot;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var format = snapshotOptions.format,
|
|
157
|
+
quality = snapshotOptions.quality,
|
|
158
|
+
x = snapshotOptions.x,
|
|
159
|
+
y = snapshotOptions.y,
|
|
160
|
+
w = snapshotOptions.w,
|
|
161
|
+
h = snapshotOptions.h;
|
|
162
|
+
var crop = !isUndefined_1["default"](x) && !isUndefined_1["default"](y) && !isUndefined_1["default"](w) && !isUndefined_1["default"](h);
|
|
163
|
+
var resize = !crop && (!isUndefined_1["default"](w) || !isUndefined_1["default"](h));
|
|
164
|
+
return new Promise(function (resolve, reject) {
|
|
165
|
+
var tempContainer = document.createElement('div');
|
|
166
|
+
tempContainer.style.cssText = 'position:absolute;left: -10000px;';
|
|
167
|
+
document.body.appendChild(tempContainer);
|
|
168
|
+
|
|
169
|
+
var doneFn = function doneFn(err, image) {
|
|
170
|
+
if (err) {
|
|
171
|
+
reject(err);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
setTimeout(function () {
|
|
176
|
+
document.body.removeChild(tempContainer);
|
|
177
|
+
|
|
178
|
+
if (!err) {
|
|
179
|
+
resolve(image);
|
|
180
|
+
}
|
|
181
|
+
}, 50);
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream).then(function (videoElement) {
|
|
185
|
+
return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {
|
|
186
|
+
if (!imgData || imgData.length < 10) {
|
|
187
|
+
throw new Error('Failed to create a snapshot - imgData is null or empty');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
doneFn(null, imgData);
|
|
191
|
+
});
|
|
192
|
+
})["catch"](function (error) {
|
|
193
|
+
doneFn(error || new Error('Failed to create a snapshot - can\'t render MediaStream To VideoEl '));
|
|
142
194
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
195
|
+
}); //Gets image in all browsers except of IE
|
|
196
|
+
|
|
197
|
+
function getImgData(videoElement) {
|
|
198
|
+
var videoWidth = videoElement.videoWidth,
|
|
199
|
+
videoHeight = videoElement.videoHeight;
|
|
200
|
+
var canvas = document.createElement('canvas');
|
|
201
|
+
var ctx = canvas.getContext('2d');
|
|
202
|
+
|
|
203
|
+
if (crop) {
|
|
204
|
+
canvas.width = w;
|
|
205
|
+
canvas.height = h;
|
|
206
|
+
ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
|
|
207
|
+
} else if (resize) {
|
|
208
|
+
canvas.width = w;
|
|
209
|
+
canvas.height = h;
|
|
210
|
+
ctx.drawImage(videoElement, 0, 0, w, h);
|
|
211
|
+
} else {
|
|
212
|
+
canvas.height = videoHeight;
|
|
213
|
+
canvas.width = videoWidth;
|
|
214
|
+
ctx.drawImage(videoElement, 0, 0);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return canvas.toDataURL(format, quality);
|
|
218
|
+
} //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
function getImgDataIE11(videoElement) {
|
|
222
|
+
return new Promise(function (resolve) {
|
|
223
|
+
var videoWidth = videoElement.videoWidth,
|
|
224
|
+
videoHeight = videoElement.videoHeight;
|
|
225
|
+
var canvas = document.createElement('canvas');
|
|
226
|
+
var ctx = canvas.getContext('2d');
|
|
227
|
+
|
|
228
|
+
if (crop || resize) {
|
|
229
|
+
canvas.width = w;
|
|
230
|
+
canvas.height = h;
|
|
231
|
+
} else {
|
|
232
|
+
canvas.height = videoHeight;
|
|
233
|
+
canvas.width = videoWidth;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function _drawAndRemove(image) {
|
|
149
237
|
if (crop) {
|
|
150
|
-
|
|
151
|
-
canvas.height = h;
|
|
152
|
-
ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
|
|
238
|
+
ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
|
|
153
239
|
} else if (resize) {
|
|
154
|
-
|
|
155
|
-
canvas.height = h;
|
|
156
|
-
ctx.drawImage(videoElement, 0, 0, w, h);
|
|
240
|
+
ctx.drawImage(image, 0, 0, w, h);
|
|
157
241
|
} else {
|
|
158
|
-
|
|
159
|
-
canvas.width = videoWidth;
|
|
160
|
-
ctx.drawImage(videoElement, 0, 0);
|
|
242
|
+
ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
|
|
161
243
|
}
|
|
244
|
+
|
|
162
245
|
return canvas.toDataURL(format, quality);
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
canvas.height = videoHeight;
|
|
176
|
-
canvas.width = videoWidth;
|
|
177
|
-
}
|
|
178
|
-
function _drawAndRemove(image) {
|
|
179
|
-
if (crop) {
|
|
180
|
-
ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
|
|
181
|
-
} else if (resize) {
|
|
182
|
-
ctx.drawImage(image, 0, 0, w, h);
|
|
183
|
-
} else {
|
|
184
|
-
ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
|
|
185
|
-
}
|
|
186
|
-
return canvas.toDataURL(format, quality);
|
|
187
|
-
}
|
|
188
|
-
var base64 = videoElement.getFrame();
|
|
189
|
-
var image = new Image();
|
|
190
|
-
image.onload = function () {
|
|
191
|
-
return resolve(_drawAndRemove(image));
|
|
192
|
-
};
|
|
193
|
-
image.setAttribute('src', 'data:image/bmp;base64,' + base64);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
var base64 = videoElement.getFrame();
|
|
249
|
+
var image = new Image();
|
|
250
|
+
|
|
251
|
+
image.onload = function () {
|
|
252
|
+
return resolve(_drawAndRemove(image));
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
image.setAttribute('src', 'data:image/bmp;base64,' + base64);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
196
258
|
}
|
|
197
|
-
exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
|
|
198
259
|
|
|
199
|
-
|
|
260
|
+
exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
|
|
200
261
|
//# sourceMappingURL=MediaDomUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","renderMediaStreamToVideoEl","container","mediaStream","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","setAttribute","playRes","play","then","catch","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","removeVideoElementFromDom","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","getSnapshotFromMediaStream","snapshotOptions","x","y","w","h","crop","default","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.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 isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\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 try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.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.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\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 retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n if ([MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM]\n .indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\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 try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;
|
|
7
|
+
|
|
4
8
|
var Tracer_1 = require("@techsee/techsee-common/lib/core/Tracer");
|
|
9
|
+
|
|
5
10
|
exports.TECHSEE_MEDIA_TRACER = 'MediaTracer';
|
|
11
|
+
|
|
6
12
|
function getMediaTracer(postfixName) {
|
|
7
|
-
|
|
13
|
+
return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);
|
|
8
14
|
}
|
|
9
|
-
exports.getMediaTracer = getMediaTracer;
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
exports.getMediaTracer = getMediaTracer;
|
|
12
17
|
//# sourceMappingURL=MediaTracer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyBF,OAAO,CAACG,oBAAR,GAA+B,KAAK,CAA7D;;AACA,IAAIC,QAAQ,GAAGC,OAAO,CAAC,yCAAD,CAAtB;;AACAL,OAAO,CAACG,oBAAR,GAA+B,aAA/B;;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;AACjC,SAAOF,QAAQ,CAACG,SAAT,CAAmBP,OAAO,CAACG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;;AACDN,OAAO,CAACE,cAAR,GAAyBA,cAAzB","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n\n//# sourceMappingURL=MediaTracer.js.map\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getMediaTracer } from './MediaTracer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/MediaUtils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC","file":"index.d.ts","sourcesContent":["export {getMediaTracer} from './MediaTracer';\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMediaTracer = void 0;
|
|
7
|
+
|
|
8
|
+
var MediaTracer_1 = require("./MediaTracer");
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "getMediaTracer", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return MediaTracer_1.getMediaTracer;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MediaUtils/index.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","MediaTracer_1","require","enumerable","get"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyB,KAAK,CAA9B;;AACA,IAAIC,aAAa,GAAGC,OAAO,CAAC,eAAD,CAA3B;;AACAN,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,gBAA/B,EAAiD;AAAEK,EAAAA,UAAU,EAAE,IAAd;AAAoBC,EAAAA,GAAG,EAAE,eAAY;AAAE,WAAOH,aAAa,CAACD,cAArB;AAAsC;AAA7E,CAAjD","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = void 0;\nvar MediaTracer_1 = require(\"./MediaTracer\");\nObject.defineProperty(exports, \"getMediaTracer\", { enumerable: true, get: function () { return MediaTracer_1.getMediaTracer; } });\n\n//# sourceMappingURL=index.js.map\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MultiPartyCameraTypes, MediaServiceType } from '../MediaConstants';
|
|
2
|
+
export declare type Credentials = {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
token: string;
|
|
6
|
+
};
|
|
7
|
+
export declare type BrandingSettings = {
|
|
8
|
+
backgroundImageURI?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare type SessionSettings = {
|
|
11
|
+
selectedCamera: MultiPartyCameraTypes;
|
|
12
|
+
cameraEnabled: boolean;
|
|
13
|
+
startWithAudioMuted: boolean;
|
|
14
|
+
mediaServiceType: MediaServiceType;
|
|
15
|
+
branding?: BrandingSettings;
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/MultiParty/Contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE1E,oBAAY,WAAW,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,gBAAgB,GAAG;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC1B,cAAc,EAAE,qBAAqB,CAAC;IACtC,aAAa,EAAE,OAAO,CAAA;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC9B,CAAA","file":"Contracts.d.ts","sourcesContent":["import {MultiPartyCameraTypes, MediaServiceType} from '../MediaConstants';\n\nexport type Credentials = {\n apiKey: string,\n sessionId: string,\n token: string\n}\n\nexport type BrandingSettings = {\n backgroundImageURI?: string;\n};\n\nexport type SessionSettings = {\n selectedCamera: MultiPartyCameraTypes,\n cameraEnabled: boolean\n startWithAudioMuted: boolean,\n mediaServiceType: MediaServiceType,\n branding?: BrandingSettings\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MultiParty/Contracts.js"],"names":["Object","defineProperty","exports","value"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n//# sourceMappingURL=Contracts.js.map\n"],"file":"Contracts.js"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ClientWebRtcInfo } from '@techsee/techsee-common/lib/data-contracts/ClientInfo';
|
|
2
|
+
export declare const DETECT_RTC_ADVISED_TIMEOUT = 20;
|
|
3
|
+
export interface WebRtcNativeService extends ClientWebRtcInfo {
|
|
4
|
+
load(doneCb: Function): void;
|
|
5
|
+
}
|
|
6
|
+
export interface IWebRtcDetector {
|
|
7
|
+
getWebRtcInfo(): Promise<ClientWebRtcInfo>;
|
|
8
|
+
}
|
|
9
|
+
export declare class DetectWebRtcService implements IWebRtcDetector {
|
|
10
|
+
private _cachedResult;
|
|
11
|
+
private readonly _nativeService;
|
|
12
|
+
private readonly _detectionTimeoutSec;
|
|
13
|
+
constructor(detectionTimeoutSec: number);
|
|
14
|
+
getWebRtcInfo(): Promise<ClientWebRtcInfo>;
|
|
15
|
+
private static getDefaultResult;
|
|
16
|
+
}
|