@techsee/techsee-media-service 0.7.0-alpha.2 → 0.7.1
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 +21 -0
- package/lib/LocalStreamManager.d.ts.map +1 -0
- package/lib/LocalStreamManager.js +268 -0
- package/lib/LocalStreamManager.js.map +1 -0
- package/lib/MediaConstants.d.ts +52 -0
- package/lib/MediaConstants.d.ts.map +1 -0
- package/lib/MediaConstants.js +68 -0
- package/lib/MediaConstants.js.map +1 -0
- package/lib/MediaContracts.d.ts +122 -0
- package/lib/MediaContracts.d.ts.map +1 -0
- package/lib/MediaContracts.js +6 -0
- package/lib/MediaContracts.js.map +1 -0
- package/lib/MediaPublisher.d.ts +14 -0
- package/lib/MediaPublisher.d.ts.map +1 -0
- package/lib/MediaPublisher.js +43 -0
- package/lib/MediaPublisher.js.map +1 -0
- package/lib/MediaServiceBase.d.ts +64 -0
- package/lib/MediaServiceBase.d.ts.map +1 -0
- package/lib/MediaServiceBase.js +591 -0
- package/lib/MediaServiceBase.js.map +1 -0
- package/lib/MediaSession/MediaSessionBase.d.ts +23 -0
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -0
- package/lib/MediaSession/MediaSessionBase.js +63 -0
- package/lib/MediaSession/MediaSessionBase.js.map +1 -0
- package/lib/MediaSession/SessionOpentok.d.ts +49 -0
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -0
- package/lib/MediaSession/SessionOpentok.js +379 -0
- package/lib/MediaSession/SessionOpentok.js.map +1 -0
- package/lib/MediaSession/SessionTurn.d.ts +32 -0
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -0
- package/lib/MediaSession/SessionTurn.js +439 -0
- package/lib/MediaSession/SessionTurn.js.map +1 -0
- package/lib/MediaSession/TurnConstants.d.ts +18 -0
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -0
- package/lib/MediaSession/TurnConstants.js +36 -0
- package/lib/MediaSession/TurnConstants.js.map +1 -0
- package/lib/MediaSubscriber.d.ts +36 -0
- package/lib/MediaSubscriber.d.ts.map +1 -0
- package/lib/MediaSubscriber.js +208 -0
- package/lib/MediaSubscriber.js.map +1 -0
- package/lib/MediaUtils/Compatibility.d.ts +11 -0
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -0
- package/lib/MediaUtils/Compatibility.js +71 -0
- package/lib/MediaUtils/Compatibility.js.map +1 -0
- package/lib/MediaUtils/MediaDomUtils.d.ts +4 -0
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -0
- package/lib/MediaUtils/MediaDomUtils.js +200 -0
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -0
- package/lib/MediaUtils/MediaTracer.d.ts +3 -0
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -0
- package/lib/MediaUtils/MediaTracer.js +12 -0
- package/lib/MediaUtils/MediaTracer.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +14 -0
- package/lib/TechseeMediaStream.d.ts.map +1 -0
- package/lib/TechseeMediaStream.js +58 -0
- package/lib/TechseeMediaStream.js.map +1 -0
- package/lib/oldCode/constants.js.map +1 -0
- package/lib/oldCode/event-emitter.js.map +1 -0
- package/lib/{index.js → oldCode/index.js} +1 -1
- package/lib/oldCode/index.js.map +1 -0
- package/lib/{opentok → oldCode/opentok}/session.js +6 -0
- package/lib/oldCode/opentok/session.js.map +1 -0
- package/lib/oldCode/opentok/stream.js.map +1 -0
- package/lib/oldCode/publisher.js.map +1 -0
- package/lib/{service.js → oldCode/service.js} +4 -6
- package/lib/oldCode/service.js.map +1 -0
- package/lib/oldCode/session.js.map +1 -0
- package/lib/oldCode/stream.js.map +1 -0
- package/lib/oldCode/subscriber.js.map +1 -0
- package/lib/oldCode/tracer.d.ts +35 -0
- package/lib/oldCode/tracer.d.ts.map +1 -0
- package/lib/oldCode/tracer.js +151 -0
- package/lib/oldCode/tracer.js.map +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
- package/lib/oldCode/utils/ImageFixer.js +58 -0
- package/lib/oldCode/utils/ImageFixer.js.map +1 -0
- package/lib/oldCode/webrtc/constants.js.map +1 -0
- package/lib/{webrtc → oldCode/webrtc}/helper.js +2 -4
- package/lib/oldCode/webrtc/helper.js.map +1 -0
- package/lib/oldCode/webrtc/session-kms.js.map +1 -0
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
- package/lib/{webrtc → oldCode/webrtc}/session-turn.js +47 -41
- package/lib/oldCode/webrtc/session-turn.js.map +1 -0
- package/lib/{webrtc → oldCode/webrtc}/session-turn.v2.js +85 -48
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
- package/lib/oldCode/webrtc/session.js.map +1 -0
- package/lib/{webrtc → oldCode/webrtc}/stream.js +7 -9
- package/lib/oldCode/webrtc/stream.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +3066 -0
- package/lib/webrtc-ie-shim.js.map +1 -0
- package/package.json +7 -5
- package/lib/constants.js.map +0 -1
- package/lib/event-emitter.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/opentok/session.js.map +0 -1
- package/lib/opentok/stream.js.map +0 -1
- package/lib/publisher.js.map +0 -1
- package/lib/service.js.map +0 -1
- package/lib/session.js.map +0 -1
- package/lib/stream.js.map +0 -1
- package/lib/subscriber.js.map +0 -1
- package/lib/tracer.js +0 -22
- package/lib/tracer.js.map +0 -1
- package/lib/v2/Contracts.d.ts +0 -41
- package/lib/v2/Contracts.d.ts.map +0 -1
- package/lib/v2/Contracts.js +0 -31
- package/lib/v2/Contracts.js.map +0 -1
- package/lib/v2/LocalStreamManager.d.ts +0 -8
- package/lib/v2/LocalStreamManager.d.ts.map +0 -1
- package/lib/v2/LocalStreamManager.js +0 -94
- package/lib/v2/LocalStreamManager.js.map +0 -1
- package/lib/v2/MediaServiceBase.d.ts +0 -24
- package/lib/v2/MediaServiceBase.d.ts.map +0 -1
- package/lib/v2/MediaServiceBase.js +0 -85
- package/lib/v2/MediaServiceBase.js.map +0 -1
- package/lib/v2/MediaSubscriber.d.ts +0 -8
- package/lib/v2/MediaSubscriber.d.ts.map +0 -1
- package/lib/v2/MediaSubscriber.js +0 -17
- package/lib/v2/MediaSubscriber.js.map +0 -1
- package/lib/webrtc/constants.js.map +0 -1
- package/lib/webrtc/helper.js.map +0 -1
- package/lib/webrtc/session-kms.js.map +0 -1
- package/lib/webrtc/session-loopback.js.map +0 -1
- package/lib/webrtc/session-turn.js.map +0 -1
- package/lib/webrtc/session-turn.v2.js.map +0 -1
- package/lib/webrtc/session.js.map +0 -1
- package/lib/webrtc/stream.js.map +0 -1
- package/lib/webrtc/temasys/adapter-loader.js.map +0 -1
- package/lib/webrtc/temasys/adapter.js.map +0 -1
- package/lib/webrtc/webrtc-ie-shim.js.map +0 -1
- /package/lib/{constants.js → oldCode/constants.js} +0 -0
- /package/lib/{event-emitter.js → oldCode/event-emitter.js} +0 -0
- /package/lib/{opentok → oldCode/opentok}/stream.js +0 -0
- /package/lib/{publisher.js → oldCode/publisher.js} +0 -0
- /package/lib/{session.js → oldCode/session.js} +0 -0
- /package/lib/{stream.js → oldCode/stream.js} +0 -0
- /package/lib/{subscriber.js → oldCode/subscriber.js} +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/constants.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/session-kms.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/session-loopback.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/session.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/temasys/adapter-loader.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/temasys/adapter.js +0 -0
- /package/lib/{webrtc → oldCode/webrtc}/webrtc-ie-shim.js +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
var TsTracerType;
|
|
5
|
+
(function (TsTracerType) {
|
|
6
|
+
TsTracerType["WebRtcSessionTrace"] = "WebRtcSessionTrace";
|
|
7
|
+
TsTracerType["TSMediaServiceHelper"] = "TSMediaServiceHelper";
|
|
8
|
+
})(TsTracerType = exports.TsTracerType || (exports.TsTracerType = {}));
|
|
9
|
+
var TsTracerEvent = /** @class */function () {
|
|
10
|
+
function TsTracerEvent(type, message, extra) {
|
|
11
|
+
this._type = TsTracerType.WebRtcSessionTrace;
|
|
12
|
+
this._message = '';
|
|
13
|
+
this._type = type;
|
|
14
|
+
this._message = message;
|
|
15
|
+
this._extra = extra;
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(TsTracerEvent.prototype, "Type", {
|
|
18
|
+
get: function get() {
|
|
19
|
+
return this._type;
|
|
20
|
+
},
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(TsTracerEvent.prototype, "Message", {
|
|
25
|
+
get: function get() {
|
|
26
|
+
return this._message;
|
|
27
|
+
},
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(TsTracerEvent.prototype, "Extra", {
|
|
32
|
+
get: function get() {
|
|
33
|
+
return this._extra;
|
|
34
|
+
},
|
|
35
|
+
enumerable: true,
|
|
36
|
+
configurable: true
|
|
37
|
+
});
|
|
38
|
+
return TsTracerEvent;
|
|
39
|
+
}();
|
|
40
|
+
var TsTracer = /** @class */function () {
|
|
41
|
+
function TsTracer(tracerType, enabled, callback) {
|
|
42
|
+
this._enabled = false;
|
|
43
|
+
this._type = TsTracerType.WebRtcSessionTrace;
|
|
44
|
+
this.consoleOutputEnabled = false;
|
|
45
|
+
this._type = tracerType;
|
|
46
|
+
this._enabled = enabled;
|
|
47
|
+
this._callback = callback;
|
|
48
|
+
}
|
|
49
|
+
Object.defineProperty(TsTracer.prototype, "Enabled", {
|
|
50
|
+
get: function get() {
|
|
51
|
+
return this._enabled;
|
|
52
|
+
},
|
|
53
|
+
set: function set(enabled) {
|
|
54
|
+
this._enabled = enabled;
|
|
55
|
+
},
|
|
56
|
+
enumerable: true,
|
|
57
|
+
configurable: true
|
|
58
|
+
});
|
|
59
|
+
Object.defineProperty(TsTracer.prototype, "TracerType", {
|
|
60
|
+
get: function get() {
|
|
61
|
+
return this._type;
|
|
62
|
+
},
|
|
63
|
+
enumerable: true,
|
|
64
|
+
configurable: true
|
|
65
|
+
});
|
|
66
|
+
TsTracer.prototype.trace = function (message) {
|
|
67
|
+
var rest = [];
|
|
68
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
69
|
+
rest[_i - 1] = arguments[_i];
|
|
70
|
+
}
|
|
71
|
+
if (this.consoleOutputEnabled) {
|
|
72
|
+
console.log.apply(console, [this._type + ":" + message].concat(rest));
|
|
73
|
+
}
|
|
74
|
+
if (!this.Enabled) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (this._callback) {
|
|
78
|
+
this._callback(new TsTracerEvent(this._type, message, rest));
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
return TsTracer;
|
|
82
|
+
}();
|
|
83
|
+
exports.TsTracer = TsTracer;
|
|
84
|
+
var TsTracers = /** @class */function () {
|
|
85
|
+
function TsTracers() {
|
|
86
|
+
var _this = this;
|
|
87
|
+
this._tracers = [];
|
|
88
|
+
this._callbacks = [];
|
|
89
|
+
// @ts-ignore
|
|
90
|
+
_.keys(TsTracerType).forEach(function (tracerType) {
|
|
91
|
+
// @ts-ignore
|
|
92
|
+
_this._add(TsTracerType[tracerType]);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
TsTracers.prototype.register = function (callback) {
|
|
96
|
+
if (this._callbacks.indexOf(callback) < 0) {
|
|
97
|
+
this._callbacks.push(callback);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
TsTracers.prototype.unregister = function (callback) {
|
|
101
|
+
var index = this._callbacks.indexOf(callback);
|
|
102
|
+
if (index >= 0) {
|
|
103
|
+
this._callbacks.splice(index, 1);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
TsTracers.prototype._add = function (tracerType) {
|
|
107
|
+
var _this = this;
|
|
108
|
+
var tracer = new TsTracer(tracerType, false, function (event) {
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
_.forEach(_this._callbacks, function (callback) {
|
|
111
|
+
return callback(event);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
this._tracers.push(tracer);
|
|
115
|
+
};
|
|
116
|
+
TsTracers.prototype.enableTracers = function (value) {
|
|
117
|
+
// @ts-ignore
|
|
118
|
+
_.forEach(this._tracers, function (tracer) {
|
|
119
|
+
tracer.Enabled = value;
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
TsTracers.prototype.enableConsoleOutput = function () {
|
|
123
|
+
// @ts-ignore
|
|
124
|
+
_.forEach(this._tracers, function (tracer) {
|
|
125
|
+
tracer.consoleOutputEnabled = true;
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
TsTracers.prototype.getTracer = function (tracerType) {
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
return _.find(this._tracers, function (tracer) {
|
|
131
|
+
return tracer.TracerType === tracerType;
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
return TsTracers;
|
|
135
|
+
}();
|
|
136
|
+
exports.TsTracers = TsTracers;
|
|
137
|
+
var tracers = new TsTracers();
|
|
138
|
+
function getTracers() {
|
|
139
|
+
return tracers;
|
|
140
|
+
}
|
|
141
|
+
exports.getTracers = getTracers;
|
|
142
|
+
function getTracer(tracerType) {
|
|
143
|
+
if (tracerType === void 0) {
|
|
144
|
+
tracerType = TsTracerType.WebRtcSessionTrace;
|
|
145
|
+
}
|
|
146
|
+
return getTracers().getTracer(tracerType);
|
|
147
|
+
}
|
|
148
|
+
exports.getTracer = getTracer;
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=tracer.js.map
|
|
151
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/tracer.js"],"names":["Object","defineProperty","exports","value","TsTracerType","TsTracerEvent","type","message","extra","_type","WebRtcSessionTrace","_message","_extra","prototype","get","enumerable","configurable","TsTracer","tracerType","enabled","callback","_enabled","consoleOutputEnabled","_callback","set","trace","rest","_i","arguments","length","console","log","apply","concat","Enabled","TsTracers","_this","_tracers","_callbacks","_","keys","forEach","_add","register","indexOf","push","unregister","index","splice","tracer","event","enableTracers","enableConsoleOutput","getTracer","find","TracerType","tracers","getTracers"],"mappings":"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","file":"tracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TsTracerType;\n(function (TsTracerType) {\n TsTracerType[\"WebRtcSessionTrace\"] = \"WebRtcSessionTrace\";\n TsTracerType[\"TSMediaServiceHelper\"] = \"TSMediaServiceHelper\";\n})(TsTracerType = exports.TsTracerType || (exports.TsTracerType = {}));\nvar TsTracerEvent = /** @class */ (function () {\n function TsTracerEvent(type, message, extra) {\n this._type = TsTracerType.WebRtcSessionTrace;\n this._message = '';\n this._type = type;\n this._message = message;\n this._extra = extra;\n }\n Object.defineProperty(TsTracerEvent.prototype, \"Type\", {\n get: function () {\n return this._type;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TsTracerEvent.prototype, \"Message\", {\n get: function () {\n return this._message;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TsTracerEvent.prototype, \"Extra\", {\n get: function () {\n return this._extra;\n },\n enumerable: true,\n configurable: true\n });\n return TsTracerEvent;\n}());\nvar TsTracer = /** @class */ (function () {\n function TsTracer(tracerType, enabled, callback) {\n this._enabled = false;\n this._type = TsTracerType.WebRtcSessionTrace;\n this.consoleOutputEnabled = false;\n this._type = tracerType;\n this._enabled = enabled;\n this._callback = callback;\n }\n Object.defineProperty(TsTracer.prototype, \"Enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (enabled) {\n this._enabled = enabled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TsTracer.prototype, \"TracerType\", {\n get: function () {\n return this._type;\n },\n enumerable: true,\n configurable: true\n });\n TsTracer.prototype.trace = function (message) {\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n if (this.consoleOutputEnabled) {\n console.log.apply(console, [this._type + \":\" + message].concat(rest));\n }\n if (!this.Enabled) {\n return;\n }\n if (this._callback) {\n this._callback(new TsTracerEvent(this._type, message, rest));\n }\n };\n return TsTracer;\n}());\nexports.TsTracer = TsTracer;\nvar TsTracers = /** @class */ (function () {\n function TsTracers() {\n var _this = this;\n this._tracers = [];\n this._callbacks = [];\n // @ts-ignore\n _.keys(TsTracerType).forEach(function (tracerType) {\n // @ts-ignore\n _this._add(TsTracerType[tracerType]);\n });\n }\n TsTracers.prototype.register = function (callback) {\n if (this._callbacks.indexOf(callback) < 0) {\n this._callbacks.push(callback);\n }\n };\n TsTracers.prototype.unregister = function (callback) {\n var index = this._callbacks.indexOf(callback);\n if (index >= 0) {\n this._callbacks.splice(index, 1);\n }\n };\n TsTracers.prototype._add = function (tracerType) {\n var _this = this;\n var tracer = new TsTracer(tracerType, false, function (event) {\n // @ts-ignore\n _.forEach(_this._callbacks, function (callback) { return callback(event); });\n });\n this._tracers.push(tracer);\n };\n TsTracers.prototype.enableTracers = function (value) {\n // @ts-ignore\n _.forEach(this._tracers, function (tracer) {\n tracer.Enabled = value;\n });\n };\n TsTracers.prototype.enableConsoleOutput = function () {\n // @ts-ignore\n _.forEach(this._tracers, function (tracer) {\n tracer.consoleOutputEnabled = true;\n });\n };\n TsTracers.prototype.getTracer = function (tracerType) {\n // @ts-ignore\n return _.find(this._tracers, function (tracer) { return tracer.TracerType === tracerType; });\n };\n return TsTracers;\n}());\nexports.TsTracers = TsTracers;\nvar tracers = new TsTracers();\nfunction getTracers() {\n return tracers;\n}\nexports.getTracers = getTracers;\nfunction getTracer(tracerType) {\n if (tracerType === void 0) { tracerType = TsTracerType.WebRtcSessionTrace; }\n return getTracers().getTracer(tracerType);\n}\nexports.getTracer = getTracer;\n\n//# sourceMappingURL=tracer.js.map\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fixDataUrl(dataUrl: string, useHighQuality: boolean): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/oldCode/utils/ImageFixer.ts"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpF","file":"ImageFixer.d.ts","sourcesContent":["const FIX_SETTINGS = {\n imageSizeThreshold: 640000, // 0.64 MP images and larger get resized\n highQualityImageSizeThreshold: 16000000, // 4000x4000 MP images and larger get resized\n defaultMime: 'image/jpeg',\n imageQuality: 0.8\n};\n\nexport function fixDataUrl(dataUrl: string, useHighQuality: boolean): Promise<string> {\n return _dataUrlToImage(dataUrl)\n .then((image: any) => {\n const resizeRequirement = _isResizeRequired(image, useHighQuality);\n\n if (resizeRequirement.resized) {\n return _resizeCanvas(image, resizeRequirement);\n }\n\n return dataUrl;\n });\n}\n\nfunction _dataUrlToImage(dataUrl: string) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n\n img.onload = () => resolve(img);\n img.onerror = (err) => reject(err);\n img.src = dataUrl;\n });\n}\n\nfunction _isResizeRequired(image: any, useHighQuality?: boolean) {\n const maxImageSize = useHighQuality\n ? FIX_SETTINGS.highQualityImageSizeThreshold\n : FIX_SETTINGS.imageSizeThreshold;\n\n if (image.naturalWidth * image.naturalHeight > maxImageSize) {\n const ratio = image.naturalWidth / image.naturalHeight,\n newWidth = Math.sqrt(maxImageSize * ratio),\n newHeight = newWidth / ratio;\n\n return {resized: true, width: newWidth, height: newHeight};\n }\n\n return {width: image.naturalWidth, height: image.naturalHeight};\n}\n\nfunction _resizeCanvas(image: any, size: any) {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('RESIZE_CANVAS_FAILED');\n }\n\n const {width, height} = size || _isResizeRequired(image);\n\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
var FIX_SETTINGS = {
|
|
5
|
+
imageSizeThreshold: 640000,
|
|
6
|
+
highQualityImageSizeThreshold: 16000000,
|
|
7
|
+
defaultMime: 'image/jpeg',
|
|
8
|
+
imageQuality: 0.8
|
|
9
|
+
};
|
|
10
|
+
function fixDataUrl(dataUrl, useHighQuality) {
|
|
11
|
+
return _dataUrlToImage(dataUrl).then(function (image) {
|
|
12
|
+
var resizeRequirement = _isResizeRequired(image, useHighQuality);
|
|
13
|
+
if (resizeRequirement.resized) {
|
|
14
|
+
return _resizeCanvas(image, resizeRequirement);
|
|
15
|
+
}
|
|
16
|
+
return dataUrl;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
exports.fixDataUrl = fixDataUrl;
|
|
20
|
+
function _dataUrlToImage(dataUrl) {
|
|
21
|
+
return new Promise(function (resolve, reject) {
|
|
22
|
+
var img = new Image();
|
|
23
|
+
img.onload = function () {
|
|
24
|
+
return resolve(img);
|
|
25
|
+
};
|
|
26
|
+
img.onerror = function (err) {
|
|
27
|
+
return reject(err);
|
|
28
|
+
};
|
|
29
|
+
img.src = dataUrl;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function _isResizeRequired(image, useHighQuality) {
|
|
33
|
+
var maxImageSize = useHighQuality ? FIX_SETTINGS.highQualityImageSizeThreshold : FIX_SETTINGS.imageSizeThreshold;
|
|
34
|
+
if (image.naturalWidth * image.naturalHeight > maxImageSize) {
|
|
35
|
+
var ratio = image.naturalWidth / image.naturalHeight,
|
|
36
|
+
newWidth = Math.sqrt(maxImageSize * ratio),
|
|
37
|
+
newHeight = newWidth / ratio;
|
|
38
|
+
return { resized: true, width: newWidth, height: newHeight };
|
|
39
|
+
}
|
|
40
|
+
return { width: image.naturalWidth, height: image.naturalHeight };
|
|
41
|
+
}
|
|
42
|
+
function _resizeCanvas(image, size) {
|
|
43
|
+
var canvas = document.createElement('canvas');
|
|
44
|
+
var ctx = canvas.getContext('2d');
|
|
45
|
+
if (!ctx) {
|
|
46
|
+
throw new Error('RESIZE_CANVAS_FAILED');
|
|
47
|
+
}
|
|
48
|
+
var _a = size || _isResizeRequired(image),
|
|
49
|
+
width = _a.width,
|
|
50
|
+
height = _a.height;
|
|
51
|
+
canvas.width = width;
|
|
52
|
+
canvas.height = height;
|
|
53
|
+
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
|
|
54
|
+
return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=ImageFixer.js.map
|
|
58
|
+
//# sourceMappingURL=ImageFixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/utils/ImageFixer.js"],"names":["Object","defineProperty","exports","value","FIX_SETTINGS","imageSizeThreshold","highQualityImageSizeThreshold","defaultMime","imageQuality","fixDataUrl","dataUrl","useHighQuality","_dataUrlToImage","then","image","resizeRequirement","_isResizeRequired","resized","_resizeCanvas","Promise","resolve","reject","img","Image","onload","onerror","err","src","maxImageSize","naturalWidth","naturalHeight","ratio","newWidth","Math","sqrt","newHeight","width","height","size","canvas","document","createElement","ctx","getContext","Error","_a","drawImage","toDataURL"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACA,IAAIC,eAAe;AACfC,wBAAoB,MADL;AAEfC,mCAA+B,QAFhB;AAGfC,iBAAa,YAHE;AAIfC,kBAAc;AAJC,CAAnB;AAMA,SAASC,UAAT,CAAoBC,OAApB,EAA6BC,cAA7B,EAA6C;AACzC,WAAOC,gBAAgBF,OAAhB,EACFG,IADE,CACG,UAAUC,KAAV,EAAiB;AACvB,YAAIC,oBAAoBC,kBAAkBF,KAAlB,EAAyBH,cAAzB,CAAxB;AACA,YAAII,kBAAkBE,OAAtB,EAA+B;AAC3B,mBAAOC,cAAcJ,KAAd,EAAqBC,iBAArB,CAAP;AACH;AACD,eAAOL,OAAP;AACH,KAPM,CAAP;AAQH;AACDR,QAAQO,UAAR,GAAqBA,UAArB;AACA,SAASG,eAAT,CAAyBF,OAAzB,EAAkC;AAC9B,WAAO,IAAIS,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;AAC1C,YAAIC,MAAM,IAAIC,KAAJ,EAAV;AACAD,YAAIE,MAAJ,GAAa,YAAY;AAAE,mBAAOJ,QAAQE,GAAR,CAAP;AAAsB,SAAjD;AACAA,YAAIG,OAAJ,GAAc,UAAUC,GAAV,EAAe;AAAE,mBAAOL,OAAOK,GAAP,CAAP;AAAqB,SAApD;AACAJ,YAAIK,GAAJ,GAAUjB,OAAV;AACH,KALM,CAAP;AAMH;AACD,SAASM,iBAAT,CAA2BF,KAA3B,EAAkCH,cAAlC,EAAkD;AAC9C,QAAIiB,eAAejB,iBACbP,aAAaE,6BADA,GAEbF,aAAaC,kBAFnB;AAGA,QAAIS,MAAMe,YAAN,GAAqBf,MAAMgB,aAA3B,GAA2CF,YAA/C,EAA6D;AACzD,YAAIG,QAAQjB,MAAMe,YAAN,GAAqBf,MAAMgB,aAAvC;AAAA,YAAsDE,WAAWC,KAAKC,IAAL,CAAUN,eAAeG,KAAzB,CAAjE;AAAA,YAAkGI,YAAYH,WAAWD,KAAzH;AACA,eAAO,EAAEd,SAAS,IAAX,EAAiBmB,OAAOJ,QAAxB,EAAkCK,QAAQF,SAA1C,EAAP;AACH;AACD,WAAO,EAAEC,OAAOtB,MAAMe,YAAf,EAA6BQ,QAAQvB,MAAMgB,aAA3C,EAAP;AACH;AACD,SAASZ,aAAT,CAAuBJ,KAAvB,EAA8BwB,IAA9B,EAAoC;AAChC,QAAIC,SAASC,SAASC,aAAT,CAAuB,QAAvB,CAAb;AACA,QAAIC,MAAMH,OAAOI,UAAP,CAAkB,IAAlB,CAAV;AACA,QAAI,CAACD,GAAL,EAAU;AACN,cAAM,IAAIE,KAAJ,CAAU,sBAAV,CAAN;AACH;AACD,QAAIC,KAAKP,QAAQtB,kBAAkBF,KAAlB,CAAjB;AAAA,QAA2CsB,QAAQS,GAAGT,KAAtD;AAAA,QAA6DC,SAASQ,GAAGR,MAAzE;AACAE,WAAOH,KAAP,GAAeA,KAAf;AACAG,WAAOF,MAAP,GAAgBA,MAAhB;AACAK,QAAII,SAAJ,CAAchC,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2ByB,OAAOH,KAAlC,EAAyCG,OAAOF,MAAhD;AACA,WAAOE,OAAOQ,SAAP,CAAiB3C,aAAaG,WAA9B,EAA2CH,aAAaI,YAAxD,CAAP;AACH;;AAED","file":"ImageFixer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar FIX_SETTINGS = {\n imageSizeThreshold: 640000,\n highQualityImageSizeThreshold: 16000000,\n defaultMime: 'image/jpeg',\n imageQuality: 0.8\n};\nfunction fixDataUrl(dataUrl, useHighQuality) {\n return _dataUrlToImage(dataUrl)\n .then(function (image) {\n var resizeRequirement = _isResizeRequired(image, useHighQuality);\n if (resizeRequirement.resized) {\n return _resizeCanvas(image, resizeRequirement);\n }\n return dataUrl;\n });\n}\nexports.fixDataUrl = fixDataUrl;\nfunction _dataUrlToImage(dataUrl) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = function (err) { return reject(err); };\n img.src = dataUrl;\n });\n}\nfunction _isResizeRequired(image, useHighQuality) {\n var maxImageSize = useHighQuality\n ? FIX_SETTINGS.highQualityImageSizeThreshold\n : FIX_SETTINGS.imageSizeThreshold;\n if (image.naturalWidth * image.naturalHeight > maxImageSize) {\n var ratio = image.naturalWidth / image.naturalHeight, newWidth = Math.sqrt(maxImageSize * ratio), newHeight = newWidth / ratio;\n return { resized: true, width: newWidth, height: newHeight };\n }\n return { width: image.naturalWidth, height: image.naturalHeight };\n}\nfunction _resizeCanvas(image, size) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('RESIZE_CANVAS_FAILED');\n }\n var _a = size || _isResizeRequired(image), width = _a.width, height = _a.height;\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);\n}\n\n//# sourceMappingURL=ImageFixer.js.map\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/constants.js"],"names":["SOCKET_EVENTS","OUTGOING","ICE_CANDIDATE","JOIN_PIPELINE","DESTROY_PIPELINE","JOIN_ROOM","SDP_OFFER","SDP_ANSWER","INCOMING","JOIN_RESPONSE","ERROR","PIPELINE_DESTROYED","SEND_OFFER","PUBLISHER_RECONNECT","PEER_DISCONNECTED","PIPELINE_TYPES","AUDIO_VIDEO_TO_SUBSCRIBERS","AUDIO_VIDEO_TO_SUBSCRIBERS_WITH_SMART","CLIENT_TYPES","PUBLISHER","SUBSCRIBER","INITIATOR","GUEST","PEER_CONNECTION_TYPES","SEND_ONLY","RECV_ONLY","SEND_RECV","COOKIES","UID","DEFAULT_STREAM_NAMES","MOBILE_CLIENT_VIDEO_STREAM","MOBILE_CLIENT_AUDIO_STREAM","DASHBOARD_AUDIO_STREAM","RECONNECT_TURN_SERVER_INTERVAL","FAILED_CONNECTING_TURN_SERVER_INTERVAL","WAIT_FOR_PC_INTERVAL","PUBLISH_APPROVAL_CHECK_INTERVAL","SOCKET_RECONNECTION_DELAY","SOCKET_RECONNECTION_DELAY_MAX","SOCKET_RECONNECTION_ATTEMPTS","SOCKET_PATH"],"mappings":";;;AAAO,IAAMA,wCAAgB;AACzBC,cAAU;AACN;AACAC,uBAAe,gBAFT;;AAIN;AACA;AACA;;AAEA;AACAC,uBAAe,cATT;;AAWN;AACAC,0BAAkB,iBAZZ;;AAcN;AACA;AACA;;AAEA;AACAC,mBAAW,UAnBL;;AAqBN;AACAC,mBAAW,cAtBL;;AAwBN;AACAC,oBAAY;AAzBN,KADe;AA4BzBC,cAAU;AACN;AACA;AACAC,uBAAe,cAHT,EAGyB;;AAE/B;AACAP,uBAAe,cANT;;AAQN;AACAQ,eAAO,cATD;;AAWN;AACA;AACA;;AAEA;AACAC,4BAAoB,mBAhBd;;AAkBN;AACA;AACA;;AAEA;AACAC,oBAAY,WAvBN;;AAyBN;AACAN,mBAAW,cA1BL;;AA4BN;AACAO,6BAAqB,oBA7Bf;;AA+BN;AACAC,2BAAmB;AAhCb;AA5Be,CAAtB;;AAgEP;AACO,IAAMC,0CAAiB;AAC1BC,gCAA4B,iBADF;AAE1BC,2CAAuC;AAFb,CAAvB;;AAKA,IAAMC,sCAAe;AACxBC,eAAW,WADa;AAExBC,gBAAY,YAFY;AAGxBC,eAAW,WAHa;AAIxBC,WAAO;AAJiB,CAArB;;AAOA,IAAMC,wDAAwB;AACjCC,eAAW,oBADsB;AAEjCC,eAAW,oBAFsB;AAGjCC,eAAW;AAHsB,CAA9B;;AAMP;AACO,IAAMC,4BAAU;AACnBC,SAAK;AADc,CAAhB;;AAIA,IAAMC,sDAAuB;AAChCC,gCAA4B,4BADI;AAEhCC,gCAA4B,4BAFI;AAGhCC,4BAAwB;AAHQ,CAA7B;;AAMP;AACO,IAAMC,0EAAiC,IAAvC;;AAEP;AACO,IAAMC,0FAAyC,KAA/C;;AAEP;AACO,IAAMC,sDAAuB,IAA7B;;AAEP;AACO,IAAMC,4EAAkC,IAAxC;;AAEA,IAAMC,gEAA4B,IAAlC;AAAA,IACHC,wEAAgC,IAD7B;AAAA,IAEHC,sEAA+B,GAF5B;AAAA,IAGHC,oCAAc,aAHX","file":"constants.js","sourcesContent":["export const SOCKET_EVENTS = {\n OUTGOING: {\n // Emitted to a peer, offering an ICE candidate\n ICE_CANDIDATE: 'onIceCandidate',\n\n //\n // KMS Events\n //\n\n // Initial event, sent by pub/sub as a request to create/join a pipeline\n JOIN_PIPELINE: 'joinPipeline',\n\n // Final event, sent by pub/sub as a request to destroy a pipeline, or response to PIPELINE_DESTROYED event\n DESTROY_PIPELINE: 'destroyPipeline',\n\n //\n // TURN Events\n //\n\n // Initial event, sent by pub/sub as a request to create/join a room\n JOIN_ROOM: 'joinRoom',\n\n // Sent by publisher, as a response to an SDP offer request (SEND_OFFER)\n SDP_OFFER: 'sdpOfferSend',\n\n // An SDP response (emitted after receiving an SDP offer)\n SDP_ANSWER: 'sdpAnswerSend'\n },\n INCOMING: {\n // In TURN - Received by a publisher, as a response to an SDP_ANSWER sent by a subscriber\n // In KMS - Received after JOIN_PIPELINE is processed\n JOIN_RESPONSE: 'joinResponse', // This event is received by a publisher, when the sig server receive an SDP answer from subscriber\n\n // An incoming ICE candidate sent by a peer\n ICE_CANDIDATE: 'iceCandidate',\n\n // An error occured in the signaling server\n ERROR: 'errorOccured',\n\n //\n // KMS Events\n //\n\n // KMS pipeline was destroyed, in response we do a cleanup\n PIPELINE_DESTROYED: 'pipelineDestroyed',\n\n //\n // TURN Events\n //\n\n // Received by a publisher (sent by signaling server when a peer joining a room)\n SEND_OFFER: 'sendOffer',\n\n // Recieved by a subscriber when publisher sent an SDP offer\n SDP_OFFER: 'sdpOfferRecv',\n\n // Recieved by all subscribers, when the publisher has reconnected\n PUBLISHER_RECONNECT: 'publisherReconnect',\n\n // Recieved by the publisher, when a subscriber has disconnected\n PEER_DISCONNECTED: 'peerDisconnected'\n }\n};\n\n// KMS - Pipeline types\nexport const PIPELINE_TYPES = {\n AUDIO_VIDEO_TO_SUBSCRIBERS: 'AudioVideoToSub',\n AUDIO_VIDEO_TO_SUBSCRIBERS_WITH_SMART: 'AudioVideoToSubWithSmart'\n};\n\nexport const CLIENT_TYPES = {\n PUBLISHER: 'publisher',\n SUBSCRIBER: 'subscriber',\n INITIATOR: 'publisher',\n GUEST: 'subscriber'\n};\n\nexport const PEER_CONNECTION_TYPES = {\n SEND_ONLY: 'WebRtcPeerSendonly',\n RECV_ONLY: 'WebRtcPeerRecvonly',\n SEND_RECV: 'WebRtcPeerSendrecv'\n};\n\n// Used to store the peer unique identifier (UID)\nexport const COOKIES = {\n UID: 'media-client.uid'\n};\n\nexport const DEFAULT_STREAM_NAMES = {\n MOBILE_CLIENT_VIDEO_STREAM: 'MOBILE_CLIENT_VIDEO_STREAM',\n MOBILE_CLIENT_AUDIO_STREAM: 'MOBILE_CLIENT_AUDIO_STREAM',\n DASHBOARD_AUDIO_STREAM: 'DASHBOARD_AUDIO_STREAM'\n};\n\n// When ICE exchange fail, an interval between reconnection attempts\nexport const RECONNECT_TURN_SERVER_INTERVAL = 1000;\n\n// When ICE exchange start, this is the timeout until the connection is deemed failed\nexport const FAILED_CONNECTING_TURN_SERVER_INTERVAL = 15000;\n\n// Grace to to wait before creating a publisher, if peer connection has not been created yet\nexport const WAIT_FOR_PC_INTERVAL = 2000;\n\n// Interval between checks of video publishing ability attempts\nexport const PUBLISH_APPROVAL_CHECK_INTERVAL = 1000;\n\nexport const SOCKET_RECONNECTION_DELAY = 3000,\n SOCKET_RECONNECTION_DELAY_MAX = 6000,\n SOCKET_RECONNECTION_ATTEMPTS = 100,\n SOCKET_PATH = '/socket2.io';\n"]}
|
|
@@ -7,9 +7,7 @@ var _service = require('../service');
|
|
|
7
7
|
|
|
8
8
|
var _tracer = require('../tracer');
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
return window.TSMediaServiceHelper === true;
|
|
12
|
-
});
|
|
10
|
+
var tracer = (0, _tracer.getTracer)('TSMediaServiceHelper');
|
|
13
11
|
|
|
14
12
|
function _resolutionToConstraints(resolution) {
|
|
15
13
|
var _resolution$split = resolution.split('x'),
|
|
@@ -60,7 +58,7 @@ var getMediaConstraints = exports.getMediaConstraints = function getMediaConstra
|
|
|
60
58
|
var audioDevice = deviceOpts.audio && _.last(groupedDevices.audio);
|
|
61
59
|
|
|
62
60
|
var mediaConstraints = {};
|
|
63
|
-
trace('getMediaConstraints', videoDevice);
|
|
61
|
+
tracer.trace('getMediaConstraints', videoDevice);
|
|
64
62
|
if (videoDevice) {
|
|
65
63
|
var videoResolution = _resolutionToConstraints(resolution);
|
|
66
64
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/helper.js"],"names":["tracer","_resolutionToConstraints","resolution","split","width","height","CONSTRAINTS_TYPES","MIN","IDEAL","POSSIBLE_RESOLUTIONS","FALLBACK_RESOLUTION","_constraintByType","value","type","min","ideal","getMediaConstraints","deviceOpts","constraintType","TsMediaService","getDevices","then","devices","groupedDevices","video","_","filter","device","kind","toLowerCase","audio","videoDevice","last","audioDevice","mediaConstraints","trace","videoResolution","assign","deviceId","facingMode","frameRate","max","getVideoTrackSettings","stream","videoTracks","getTracks","track","isEmpty","videoTrack","getSettings","_constraintsByResolution","_handleGetUserMediaError","error","errorName","get","code","name","getHighestResolutionStream","constraints","createLocalMediaStream","successfulConstraintsFound","Promise","resolve","reject","reduce","total","potentialConstraints","catch","err"],"mappings":"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","file":"helper.js","sourcesContent":["import {TsMediaService} from '../service';\n\nimport {getTracer} from '../tracer';\n\nconst tracer = getTracer('TSMediaServiceHelper');\n\nfunction _resolutionToConstraints(resolution) {\n const [width, height] = resolution.split('x');\n\n return {width, height};\n}\n\nexport const CONSTRAINTS_TYPES = {\n MIN: 'min',\n IDEAL: 'ideal'\n};\n\nexport const POSSIBLE_RESOLUTIONS = [\n //'3840x2160', // 4k - disabled since it's an overkill\n '1920x1080', // FHD\n '1280x720' // HD\n];\n\n// In case all possible resolution fails, we'll attempt to set the highest resolution as ideal\nexport const FALLBACK_RESOLUTION = POSSIBLE_RESOLUTIONS[0];\n\nfunction _constraintByType(value, type) {\n switch (type) {\n case CONSTRAINTS_TYPES.MIN:\n return {min: value};\n default:\n return {ideal: value};\n }\n}\n\nexport const getMediaConstraints = ({resolution, deviceOpts, constraintType}) =>\n TsMediaService.getDevices()\n .then((devices) => {\n const groupedDevices = {\n video: _.filter(devices, (device) =>\n device.kind.toLowerCase() === 'videoinput'),\n audio: _.filter(devices, (device) =>\n device.kind.toLowerCase() === 'audioinput')\n };\n\n const videoDevice = deviceOpts.video && _.last(groupedDevices.video);\n const audioDevice = deviceOpts.audio && _.last(groupedDevices.audio);\n\n const mediaConstraints = {};\n tracer.trace('getMediaConstraints', videoDevice);\n if (videoDevice) {\n const videoResolution = _resolutionToConstraints(resolution);\n\n _.assign(mediaConstraints, {\n video: {\n deviceId: videoDevice.deviceId,\n width: _constraintByType(videoResolution.width, constraintType),\n height: _constraintByType(videoResolution.height, constraintType),\n facingMode: 'environment',\n frameRate: {ideal: 15, max: 30}\n }\n });\n }\n\n if (audioDevice) {\n _.assign(mediaConstraints, {\n audio: {deviceId: audioDevice.deviceId}\n });\n }\n\n return mediaConstraints;\n });\n\nexport const getVideoTrackSettings = (stream) => {\n const videoTracks = stream.getTracks()\n .filter((track) => (track.kind === 'video'));\n\n if (_.isEmpty(videoTracks)) {\n return;\n }\n\n const videoTrack = videoTracks[0];\n\n return videoTrack.getSettings && videoTrack.getSettings();\n};\n\nfunction _constraintsByResolution(resolution, deviceOpts, constraintType) {\n return getMediaConstraints({\n resolution: resolution,\n deviceOpts: deviceOpts,\n constraintType: constraintType\n });\n}\n\nfunction _handleGetUserMediaError(error) {\n const errorName = _.get(error, 'name');\n\n if (errorName === 'NotAllowedError') {\n return {code: 1500, name: 'NotAllowedError'};\n }\n\n if (errorName === 'PermissionDismissedError') {\n return {code: 8, name: 'PermissionDismissedError'};\n }\n\n return {code: 999, name: errorName || 'UnknownError'};\n}\n\n/**\n * Scan possible resolutions from high to low, trying to set each as minimal.\n * Eventually, use a fallback as ideal so the browser may decide which to use.\n *\n * @method\n * @param {Object} [deviceOpts] Devices to limit to in the constraints\n * @param {Object} [constraints] Media constraints\n *\n * @returns { Promise }\n *\n */\nexport const getHighestResolutionStream = (deviceOpts, constraints) => {\n // In case we had a constraints scan before, return the best\n if (constraints) {\n return TsMediaService.createLocalMediaStream(constraints)\n .then((stream) => ({stream, constraints}));\n }\n\n let successfulConstraintsFound = false;\n\n return new Promise((resolve, reject) => {\n Promise.reduce(POSSIBLE_RESOLUTIONS, (total, resolution) => {\n if (successfulConstraintsFound) {\n return;\n }\n\n return _constraintsByResolution(resolution, deviceOpts, CONSTRAINTS_TYPES.MIN)\n .then((potentialConstraints) => TsMediaService.createLocalMediaStream(potentialConstraints)\n .then((stream) => {\n successfulConstraintsFound = true;\n\n return resolve({stream, constraints: potentialConstraints});\n }))\n .catch(() => null);\n }, 0)\n .then(() => {\n if (successfulConstraintsFound) {\n return;\n }\n\n _constraintsByResolution(FALLBACK_RESOLUTION, deviceOpts, CONSTRAINTS_TYPES.IDEAL)\n .then((potentialConstraints) => TsMediaService.createLocalMediaStream(potentialConstraints)\n .then((stream) => resolve({stream, constraints: potentialConstraints})))\n .catch((err) => reject(_handleGetUserMediaError(err)));\n });\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/session-kms.js"],"names":["io","isIE11","TsEnvironmentDetect","require","WebRtcPeer","KMSWebRTCSession","credentials","isMobile","resolution","deviceOpts","_credentials","_isMobile","_resolution","_deviceOpts","iceServers","ice","map","item","urls","url","username","login","credential","password","_configuration","iceTransportPolicy","_socket","_pc","_connectSocket","Promise","resolve","reject","socket","connect","forceNew","done","_","once","err","on","SOCKET_EVENTS","INCOMING","ERROR","_setupConnection","pc","sessionId","uid","Cookies","get","COOKIES","UID","clientType","CLIENT_TYPES","PUBLISHER","SUBSCRIBER","PIPELINE_DESTROYED","destroyed","off","disconnect","emit","EVENTS","DISCONNECTED","reason","generateOffer","error","offer","OUTGOING","JOIN_PIPELINE","pipelineType","sdpOffer","_getPeerType","constraints","audio","PEER_CONNECTION_TYPES","SEND_RECV","RECV_ONLY","_connectRTCPeer","configuration","peerConnectionType","mediaConstraints","onicecandidate","candidate","ICE_CANDIDATE","JOIN_RESPONSE","sdpAnswer","set","processAnswer","CONNECTED","addIceCandidate","then","catch","_setTrackStateTo","state","track","setEnabled","enabled","video","peerConnection","getLocalStreams","forEach","stream","getTracks","onaddstream","tsStream","TsWebRTCStream","STREAM_CREATED","close","DESTROY_PIPELINE","event","createPublisher","target","params","mediaStream","tracks","reduce","result","filter","kind","videoDevice","audioDevice","push","tsstream","name","remote","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","publish","PUBLISHER_EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","document","createElement","src","URL","createObjectURL","_mediaStream","playsInline","autoplay","appendChild","_element","attachMediaStream","assign","fitMode","insertMode","mirror","elementHeight","elementWidth","style","position","setupDimensionsListener","destroyPublisher","remove","DESTROYED","PIPELINE_TYPES","AUDIO_VIDEO_TO_SUBSCRIBERS","TsMediaSession"],"mappings":"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","file":"session-kms.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher\n} from '../publisher';\n\nimport {\n TsWebRTCStream\n} from './stream';\n\nimport * as io from 'socket.io-client';\n\nimport Cookies from 'js-cookie';\n\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nconst {WebRtcPeer} = require('kurento-utils');\n\nimport {\n CLIENT_TYPES,\n COOKIES,\n PEER_CONNECTION_TYPES,\n PIPELINE_TYPES,\n SOCKET_EVENTS\n} from './constants';\n\nimport {\n getMediaConstraints\n} from './helper';\n\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'MEDIA_SERVER' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class KMSWebRTCSession extends TsMediaSession {\n constructor({credentials, isMobile, resolution, deviceOpts}) {\n super();\n\n this._credentials = credentials;\n this._isMobile = isMobile;\n this._resolution = resolution;\n this._deviceOpts = deviceOpts;\n\n const iceServers = credentials.ice.map((item) => ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }));\n\n this._configuration = {\n iceServers,\n\n iceTransportPolicy: 'relay'\n };\n\n /**\n * Socket.io connection to the signaling server\n *\n * @private\n * @member { Object }\n */\n this._socket = null;\n\n /**\n * RTCPeerConnection to the media server.\n *\n * For now kurento-utils is used for connection establishment.\n *\n * @private\n * @member { Object }\n */\n this._pc = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return this._credentials.sessionId;\n }\n\n /**\n * PipelineType of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get pipelineType() {\n return this._credentials.pipelineType || PIPELINE_TYPES.AUDIO_VIDEO_TO_SUBSCRIBERS;\n }\n\n _connectSocket(url) {\n return new Promise((resolve, reject) => {\n const socket = io.connect(url, {forceNew: true});\n\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n\n //\n // When connection is established\n //\n socket.once('connect', () => done());\n //\n // errorOccured is ts-media-client signal\n //\n socket.on(SOCKET_EVENTS.INCOMING.ERROR, done);\n //\n // And these 2 are socket.io connection failed events\n //\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n\n this._socket = socket;\n });\n }\n\n _setupConnection(pc, sessionId) {\n const uid = Cookies.get(COOKIES.UID);\n const clientType = this._isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER;\n\n return new Promise((resolve, reject) => {\n this._socket.on(SOCKET_EVENTS.INCOMING.PIPELINE_DESTROYED, () => {\n this.destroyed = true;\n\n this._socket.off();\n this._socket.disconnect();\n\n this.emit(EVENTS.DISCONNECTED, {\n reason: 'Client disconnected'\n });\n });\n\n pc.generateOffer((error, offer) => {\n if (error) {\n return reject(error);\n }\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.JOIN_PIPELINE, {\n uid,\n sessionId,\n clientType,\n\n pipelineType: this.pipelineType,\n sdpOffer: offer\n });\n\n resolve();\n });\n });\n }\n\n _getPeerType(constraints, isMobile) {\n if (isMobile || constraints.audio) {\n return PEER_CONNECTION_TYPES.SEND_RECV;\n }\n\n return PEER_CONNECTION_TYPES.RECV_ONLY;\n }\n\n _connectRTCPeer({\n constraints,\n configuration,\n sessionId,\n isMobile\n }) {\n return new Promise((resolve, reject) => {\n const done = _.once((err) => {\n err ? reject(err) : resolve();\n });\n const peerConnectionType = this._getPeerType(constraints, isMobile);\n\n const pc = WebRtcPeer[peerConnectionType]({\n configuration,\n\n mediaConstraints: constraints,\n onicecandidate: (candidate) => {\n this._socket.emit(SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId,\n\n candidate,\n clientType: isMobile ? CLIENT_TYPES.PUBLISHER : CLIENT_TYPES.SUBSCRIBER\n });\n }\n }, (error) => {\n if (error) {\n return done(error);\n }\n\n this._socket.on(SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, ({sdpAnswer, uid}) => {\n Cookies.set(COOKIES.UID, uid);\n\n pc.processAnswer(sdpAnswer, (error) => {\n if (error) {\n return done(error);\n }\n });\n\n this.emit(EVENTS.CONNECTED);\n\n this._socket.off(SOCKET_EVENTS.INCOMING.ERROR);\n this._socket.off('connect_error');\n this._socket.off('connect_timeout');\n\n return done();\n });\n\n this._socket.on(SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, ({candidate}) => {\n pc.addIceCandidate(candidate);\n });\n\n this._setupConnection(pc, sessionId)\n .then(done)\n .catch(done);\n });\n\n this._pc = pc;\n });\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Establish socket and peer connection to the media server.\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#CONNECTED\n */\n connect() {\n return this._connectSocket(this._credentials.url)\n .then(() => (\n getMediaConstraints({\n resolution: this._resolution,\n deviceOpts: this._deviceOpts\n })\n ))\n .then((constraints) => {\n // streaming from dashboard is not supported and we\n // don't want to access the camera without a reason\n if (!this._isMobile && constraints.video) {\n delete constraints.video;\n }\n\n return this._connectRTCPeer({\n constraints,\n\n configuration: this._configuration,\n sessionId: this._credentials.sessionId,\n isMobile: this._isMobile\n });\n })\n .then(() => {\n this._pc.peerConnection.getLocalStreams().forEach((stream) => {\n stream.getTracks().forEach(this._setTrackStateTo(false));\n });\n\n this._pc.peerConnection.onaddstream = ({stream}) => {\n const tsStream = new TsWebRTCStream(this, stream);\n\n this.emit(EVENTS.STREAM_CREATED, tsStream);\n };\n });\n }\n\n /**\n * Close all media streams, disconnect RTCPeerConnection and socket.io\n *\n * @method\n * @returns { Promise }\n *\n * @fires SESSION_EVENTS#DISCONNECTED\n */\n disconnect() {\n return Promise.resolve()\n .then(() => {\n if (this.destroyed) {\n return null;\n }\n\n this._pc.peerConnection.close();\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.DESTROY_PIPELINE, {\n sessionId: this._credentials.sessionId\n });\n this._socket.disconnect();\n\n const event = {reason: 'disconnected'};\n\n this.emit(EVENTS.DISCONNECTED, event);\n\n return event;\n });\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n return Promise.resolve()\n .then(() => {\n //\n // Get media streams that were created on session initialization\n //\n const mediaStream = this._pc.peerConnection.getLocalStreams()[0];\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = this._pc.peerConnection.getLocalStreams().reduce((result, mediaStream) => {\n mediaStream.getTracks()\n .filter((track) => (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice))\n .forEach((track) => result.push(track));\n\n return result;\n }, []);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name);\n\n tsstream.remote = false;\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target\n });\n\n tsstream.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio\n });\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: '480x640',\n width: '100%',\n height: '100%'\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n publisher.tracks.forEach(this._setTrackStateTo(true));\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher.tracks.forEach(this._setTrackStateTo(false));\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/session-loopback.js"],"names":["isIE11","TsEnvironmentDetect","LoopbackWebRTCSession","credentials","deviceOpts","_credentials","_deviceOpts","_constraints","_setTrackStateTo","state","track","setEnabled","enabled","connect","Promise","resolve","_toggleAllStreams","_","isEmpty","_streams","forEach","stream","_mediaStream","getTracks","_stopAllStreams","stop","disconnect","createPublisher","t","p","target","params","reject","then","result","constraints","catch","error","mediaStream","clear","tracks","filter","kind","videoDevice","audioDevice","videoTrackSettings","tsstream","TsWebRTCStream","name","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","publish","emit","PUBLISHER_EVENTS","STREAM_CREATED","EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","_element","video","document","createElement","src","URL","createObjectURL","playsInline","autoplay","appendChild","attachMediaStream","streamDimensions","assign","fitMode","insertMode","mirror","resolution","elementHeight","elementWidth","style","position","setupDimensionsListener","destroyPublisher","remove","DESTROYED","get","TsMediaSession"],"mappings":"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","file":"session-loopback.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher\n} from '../publisher';\n\nimport { TsEnvironmentDetect } from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nimport {\n TsWebRTCStream,\n} from './stream';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nimport {\n getVideoTrackSettings,\n getHighestResolutionStream\n} from './helper';\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'LOOPBACK' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class LoopbackWebRTCSession extends TsMediaSession {\n constructor({ credentials, deviceOpts }) {\n super();\n\n this._credentials = credentials;\n this._deviceOpts = deviceOpts;\n this._constraints = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return _.get(this._credentials, 'sessionId');\n }\n\n get isLoopback() {\n return true;\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Loopback does not connect, but still need to provide an implementation.\n *\n * @method\n * @returns { Promise }\n *\n */\n connect() {\n return Promise.resolve();\n }\n\n _toggleAllStreams(state) {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach(this._setTrackStateTo(state)));\n }\n }\n\n _stopAllStreams() {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach((track) => track.stop()));\n }\n }\n\n /**\n * Cleanup\n *\n * @method\n * @returns { Promise }\n *\n */\n disconnect() {\n return Promise.resolve();\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(t, p) {\n let target = t,\n params = p;\n\n if (!params) {\n params = target;\n target = null;\n }\n\n return new Promise((resolve, reject) => {\n getHighestResolutionStream(this._deviceOpts, this._constraints)\n .then((result) => {\n this._constraints = result.constraints;\n\n return resolve(result.stream);\n })\n .catch((error) => reject(error));\n })\n .then((mediaStream) => {\n // Clear previous streams\n this._streams.clear();\n\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = mediaStream.getTracks()\n .filter((track) => (\n (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice)));\n\n const videoTrackSettings = getVideoTrackSettings(mediaStream);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name, false, videoTrackSettings);\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target,\n });\n\n tsstream.publisher = publisher;\n this.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo,\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio,\n });\n\n if (this.publisher._element) {\n return;\n }\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const streamDimensions = publisher.stream.videoDimensions;\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: `${streamDimensions.width}x${streamDimensions.height}`,\n width: '100%',\n height: '100%',\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode,\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n this._toggleAllStreams(true);\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n this._toggleAllStreams(false);\n this._stopAllStreams();\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n this.publisher = null;\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"]}
|