@techsee/techsee-media-service 999.19.3-alphasap → 999.19.6-nodejs20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +27 -28
  2. package/lib/LocalStreamManager.d.ts +1 -0
  3. package/lib/LocalStreamManager.d.ts.map +1 -1
  4. package/lib/LocalStreamManager.js +82 -84
  5. package/lib/LocalStreamManager.js.map +1 -1
  6. package/lib/MediaConstants.d.ts +20 -3
  7. package/lib/MediaConstants.d.ts.map +1 -1
  8. package/lib/MediaConstants.js +31 -13
  9. package/lib/MediaConstants.js.map +1 -1
  10. package/lib/MediaContracts.d.ts +7 -1
  11. package/lib/MediaContracts.d.ts.map +1 -1
  12. package/lib/MediaContracts.js +1 -4
  13. package/lib/MediaContracts.js.map +1 -1
  14. package/lib/MediaPublisher.d.ts +1 -0
  15. package/lib/MediaPublisher.d.ts.map +1 -1
  16. package/lib/MediaPublisher.js +7 -10
  17. package/lib/MediaPublisher.js.map +1 -1
  18. package/lib/MediaServiceBase.d.ts +1 -0
  19. package/lib/MediaServiceBase.d.ts.map +1 -1
  20. package/lib/MediaServiceBase.js +169 -198
  21. package/lib/MediaServiceBase.js.map +1 -1
  22. package/lib/MediaSession/MediaServer.d.ts +1 -0
  23. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  24. package/lib/MediaSession/MediaServer.js +62 -74
  25. package/lib/MediaSession/MediaServer.js.map +1 -1
  26. package/lib/MediaSession/MediaSessionBase.d.ts +1 -0
  27. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  28. package/lib/MediaSession/MediaSessionBase.js +19 -23
  29. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  30. package/lib/MediaSession/SessionOpentok.d.ts +1 -0
  31. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  32. package/lib/MediaSession/SessionOpentok.js +51 -80
  33. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  34. package/lib/MediaSession/SessionTurn.d.ts +1 -0
  35. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  36. package/lib/MediaSession/SessionTurn.js +109 -151
  37. package/lib/MediaSession/SessionTurn.js.map +1 -1
  38. package/lib/MediaSession/TurnConstants.d.ts +1 -0
  39. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  40. package/lib/MediaSession/TurnConstants.js +1 -16
  41. package/lib/MediaSession/TurnConstants.js.map +1 -1
  42. package/lib/MediaSubscriber.d.ts +1 -0
  43. package/lib/MediaSubscriber.d.ts.map +1 -1
  44. package/lib/MediaSubscriber.js +37 -43
  45. package/lib/MediaSubscriber.js.map +1 -1
  46. package/lib/MediaUtils/Compatibility.d.ts +3 -0
  47. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  48. package/lib/MediaUtils/Compatibility.js +76 -34
  49. package/lib/MediaUtils/Compatibility.js.map +1 -1
  50. package/lib/MediaUtils/MediaDomUtils.d.ts +4 -2
  51. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  52. package/lib/MediaUtils/MediaDomUtils.js +64 -62
  53. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  54. package/lib/MediaUtils/MediaTracer.d.ts +1 -0
  55. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  56. package/lib/MediaUtils/MediaTracer.js +2 -5
  57. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  58. package/lib/MediaUtils/index.d.ts +2 -0
  59. package/lib/MediaUtils/index.d.ts.map +1 -0
  60. package/lib/MediaUtils/index.js +6 -0
  61. package/lib/MediaUtils/index.js.map +1 -0
  62. package/lib/MultiParty/DetectWebRtcService.d.ts +17 -14
  63. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  64. package/lib/MultiParty/DetectWebRtcService.js +98 -54
  65. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  66. package/lib/MultiParty/MediaCapabilitiesService.d.ts +18 -0
  67. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
  68. package/lib/MultiParty/MediaCapabilitiesService.js +158 -0
  69. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
  70. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +6 -0
  71. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
  72. package/lib/MultiParty/MediaCapabilitiesUtils.js +123 -0
  73. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
  74. package/lib/MultiParty/MediaTracer.d.ts +4 -0
  75. package/lib/MultiParty/MediaTracer.d.ts.map +1 -0
  76. package/lib/MultiParty/MediaTracer.js +10 -0
  77. package/lib/MultiParty/MediaTracer.js.map +1 -0
  78. package/lib/MultiParty/MultiPartyService.d.ts +49 -0
  79. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
  80. package/lib/MultiParty/MultiPartyService.js +30 -0
  81. package/lib/MultiParty/MultiPartyService.js.map +1 -0
  82. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +4 -0
  83. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
  84. package/lib/MultiParty/MultiPartyServiceFactory.js +13 -0
  85. package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
  86. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +89 -0
  87. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -0
  88. package/lib/MultiParty/MultipartyServiceEventTypes.js +16 -0
  89. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -0
  90. package/lib/MultiParty/index.d.ts +7 -0
  91. package/lib/MultiParty/index.d.ts.map +1 -0
  92. package/lib/MultiParty/index.js +25 -0
  93. package/lib/MultiParty/index.js.map +1 -0
  94. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +38 -0
  95. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -0
  96. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +492 -0
  97. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -0
  98. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +34 -0
  99. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -0
  100. package/lib/MultiParty/opentok/OpentokPublisher.js +121 -0
  101. package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -0
  102. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +20 -0
  103. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -0
  104. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +49 -0
  105. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -0
  106. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +6 -0
  107. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -0
  108. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +48 -0
  109. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -0
  110. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +2 -0
  111. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -0
  112. package/lib/MultiParty/opentok/OpentokSubscriber.js +26 -0
  113. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -0
  114. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +19 -0
  115. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -0
  116. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +182 -0
  117. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -0
  118. package/lib/MultiParty/opentok/trace.d.ts +3 -0
  119. package/lib/MultiParty/opentok/trace.d.ts.map +1 -0
  120. package/lib/MultiParty/opentok/trace.js +18 -0
  121. package/lib/MultiParty/opentok/trace.js.map +1 -0
  122. package/lib/MultiParty/opentok.d.ts +463 -0
  123. package/lib/MultiParty/types.d.ts +33 -0
  124. package/lib/MultiParty/types.d.ts.map +1 -0
  125. package/lib/MultiParty/types.js +3 -0
  126. package/lib/MultiParty/types.js.map +1 -0
  127. package/lib/MultiParty/utils.d.ts +10 -0
  128. package/lib/MultiParty/utils.d.ts.map +1 -0
  129. package/lib/MultiParty/utils.js +17 -0
  130. package/lib/MultiParty/utils.js.map +1 -0
  131. package/lib/TechseeMediaStream.d.ts +1 -0
  132. package/lib/TechseeMediaStream.d.ts.map +1 -1
  133. package/lib/TechseeMediaStream.js +9 -12
  134. package/lib/TechseeMediaStream.js.map +1 -1
  135. package/lib/qos/raw-qos.d.ts +29 -0
  136. package/lib/qos/raw-qos.d.ts.map +1 -0
  137. package/lib/qos/raw-qos.js +84 -145
  138. package/lib/qos/raw-qos.js.map +1 -1
  139. package/lib/webrtc-ie-shim.d.ts +4 -0
  140. package/lib/webrtc-ie-shim.d.ts.map +1 -0
  141. package/lib/webrtc-ie-shim.js +1896 -2950
  142. package/lib/webrtc-ie-shim.js.map +1 -1
  143. package/package.json +66 -60
  144. package/lib/MultiParty/Contracts.d.ts +0 -11
  145. package/lib/MultiParty/Contracts.d.ts.map +0 -1
  146. package/lib/MultiParty/Contracts.js +0 -6
  147. package/lib/MultiParty/Contracts.js.map +0 -1
  148. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +0 -12
  149. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +0 -1
  150. package/lib/MultiParty/MediaCapabilitiesHelper.js +0 -167
  151. package/lib/MultiParty/MediaCapabilitiesHelper.js.map +0 -1
  152. package/lib/MultiParty/MultiParty.d.ts +0 -21
  153. package/lib/MultiParty/MultiParty.d.ts.map +0 -1
  154. package/lib/MultiParty/MultiParty.js +0 -155
  155. package/lib/MultiParty/MultiParty.js.map +0 -1
  156. package/lib/MultiParty/MultipartyFactory.d.ts +0 -2
  157. package/lib/MultiParty/MultipartyFactory.d.ts.map +0 -1
  158. package/lib/MultiParty/MultipartyFactory.js +0 -15
  159. package/lib/MultiParty/MultipartyFactory.js.map +0 -1
  160. package/lib/MultiParty/OpentokMultiparty.d.ts +0 -24
  161. package/lib/MultiParty/OpentokMultiparty.d.ts.map +0 -1
  162. package/lib/MultiParty/OpentokMultiparty.js +0 -408
  163. package/lib/MultiParty/OpentokMultiparty.js.map +0 -1
  164. package/lib/oldCode/constants.js +0 -20
  165. package/lib/oldCode/constants.js.map +0 -1
  166. package/lib/oldCode/event-emitter.js +0 -39
  167. package/lib/oldCode/event-emitter.js.map +0 -1
  168. package/lib/oldCode/index.js +0 -64
  169. package/lib/oldCode/index.js.map +0 -1
  170. package/lib/oldCode/opentok/session.js +0 -310
  171. package/lib/oldCode/opentok/session.js.map +0 -1
  172. package/lib/oldCode/opentok/stream.js +0 -310
  173. package/lib/oldCode/opentok/stream.js.map +0 -1
  174. package/lib/oldCode/publisher.js +0 -143
  175. package/lib/oldCode/publisher.js.map +0 -1
  176. package/lib/oldCode/service.js +0 -395
  177. package/lib/oldCode/service.js.map +0 -1
  178. package/lib/oldCode/session.js +0 -110
  179. package/lib/oldCode/session.js.map +0 -1
  180. package/lib/oldCode/stream.js +0 -195
  181. package/lib/oldCode/stream.js.map +0 -1
  182. package/lib/oldCode/subscriber.js +0 -90
  183. package/lib/oldCode/subscriber.js.map +0 -1
  184. package/lib/oldCode/tracer.d.ts +0 -36
  185. package/lib/oldCode/tracer.d.ts.map +0 -1
  186. package/lib/oldCode/tracer.js +0 -161
  187. package/lib/oldCode/tracer.js.map +0 -1
  188. package/lib/oldCode/utils/ImageFixer.d.ts +0 -1
  189. package/lib/oldCode/utils/ImageFixer.d.ts.map +0 -1
  190. package/lib/oldCode/utils/ImageFixer.js +0 -59
  191. package/lib/oldCode/utils/ImageFixer.js.map +0 -1
  192. package/lib/oldCode/webrtc/constants.js +0 -114
  193. package/lib/oldCode/webrtc/constants.js.map +0 -1
  194. package/lib/oldCode/webrtc/helper.js +0 -173
  195. package/lib/oldCode/webrtc/helper.js.map +0 -1
  196. package/lib/oldCode/webrtc/session-kms.js +0 -558
  197. package/lib/oldCode/webrtc/session-kms.js.map +0 -1
  198. package/lib/oldCode/webrtc/session-loopback.js +0 -336
  199. package/lib/oldCode/webrtc/session-loopback.js.map +0 -1
  200. package/lib/oldCode/webrtc/session-turn.js +0 -880
  201. package/lib/oldCode/webrtc/session-turn.js.map +0 -1
  202. package/lib/oldCode/webrtc/session-turn.v2.js +0 -583
  203. package/lib/oldCode/webrtc/session-turn.v2.js.map +0 -1
  204. package/lib/oldCode/webrtc/session.js +0 -52
  205. package/lib/oldCode/webrtc/session.js.map +0 -1
  206. package/lib/oldCode/webrtc/stream.js +0 -674
  207. package/lib/oldCode/webrtc/stream.js.map +0 -1
  208. package/lib/oldCode/webrtc/temasys/adapter-loader.js +0 -12
  209. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +0 -1
  210. package/lib/oldCode/webrtc/temasys/adapter.js +0 -5861
  211. package/lib/oldCode/webrtc/temasys/adapter.js.map +0 -1
  212. package/lib/oldCode/webrtc/webrtc-ie-shim.js +0 -3007
  213. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +0 -1
@@ -1,310 +0,0 @@
1
- 'use strict';
2
-
3
- exports.__esModule = true;
4
- exports.TsOpenTokStream = exports.EVENTS = undefined;
5
-
6
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7
-
8
- var _stream = require('../stream');
9
-
10
- var _subscriber = require('../subscriber');
11
-
12
- var _publisher = require('../publisher');
13
-
14
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
-
16
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
17
-
18
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
19
-
20
- exports.EVENTS = _stream.EVENTS;
21
-
22
- var TsOpenTokStream = exports.TsOpenTokStream = function (_TsMediaStream) {
23
- _inherits(TsOpenTokStream, _TsMediaStream);
24
-
25
- function TsOpenTokStream(session, otstream) {
26
- _classCallCheck(this, TsOpenTokStream);
27
-
28
- var _this = _possibleConstructorReturn(this, _TsMediaStream.call(this, otstream.id, session));
29
-
30
- _this._otstream = otstream;
31
- _this._session = session;
32
-
33
- _this._videoChannelExists = _this._otstream.channel && _this._otstream.channel.filter(function (channel) {
34
- return channel.type === 'video';
35
- }).length > 0;
36
- _this._audioChannelExists = _this._otstream.channel && _this._otstream.channel.filter(function (channel) {
37
- return channel.type === 'audio';
38
- }).length > 0;
39
- return _this;
40
- }
41
-
42
- TsOpenTokStream.prototype.publishAudio = function publishAudio(publish) {
43
- if (this.publisher) {
44
- this.publisher._otpublisher.publishAudio(publish);
45
- }
46
- };
47
-
48
- TsOpenTokStream.prototype.publishVideo = function publishVideo(publish) {
49
- if (this.publisher) {
50
- this.publisher._otpublisher.publishVideo(publish);
51
- }
52
- };
53
-
54
- TsOpenTokStream.prototype.subscribe = function subscribe(target, params) {
55
- var _this2 = this;
56
-
57
- if (!params) {
58
- params = target;
59
- target = null;
60
- }
61
-
62
- return this._session.createSubscriber(this, target, params).then(function (subscriber) {
63
- subscriber.stream = _this2;
64
- _this2.subscriber = subscriber;
65
-
66
- subscriber._otsubscriber.on('destroyed', function (e) {
67
- subscriber.emit(_subscriber.EVENTS.DESTROYED, e);
68
- });
69
-
70
- subscriber._otsubscriber.on('disconnected', function (e) {
71
- subscriber.emit(_subscriber.EVENTS.DISCONNECTED, e);
72
- });
73
-
74
- var video = _this2.getVideoElement(subscriber._otsubscriber.element)[0];
75
-
76
- if (!_this2._environment.isIE11()) {
77
- // Hack to override behavior introduced by Chrome v71 that unmuted video elements can't auto play
78
- video.setAttribute('muted', '');
79
- video.play();
80
- }
81
-
82
- _this2.setupDimensionsListener(video, subscriber);
83
-
84
- subscriber.id = subscriber._otsubscriber.id;
85
-
86
- return subscriber;
87
- });
88
- };
89
-
90
- TsOpenTokStream.prototype.getVideoElement = function getVideoElement(container) {
91
- var element = $(container).find('.OT_video-element');
92
-
93
- return element.length > 0 ? element : $(container).find('.OT_video-container > video');
94
- };
95
-
96
- TsOpenTokStream.prototype.destroySubscriber = function destroySubscriber(subscriber) {
97
- return this._session.destroySubscriber(subscriber);
98
- };
99
-
100
- TsOpenTokStream.prototype.getSnapshot = function getSnapshot(tsMediaElement) {
101
- var _this3 = this;
102
-
103
- var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
104
-
105
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
106
- _ref$format = _ref.format,
107
- format = _ref$format === undefined ? 'image/png' : _ref$format,
108
- _ref$quality = _ref.quality,
109
- quality = _ref$quality === undefined ? 0.92 : _ref$quality,
110
- x = _ref.x,
111
- y = _ref.y,
112
- w = _ref.w,
113
- h = _ref.h;
114
-
115
- return new Promise(function (resolve) {
116
- var otElement = tsMediaElement[tsMediaElement instanceof _publisher.TsMediaPublisher ? '_otpublisher' : '_otsubscriber'];
117
- var crop = !_.isUndefined(x) && !_.isUndefined(y) && !_.isUndefined(w) && !_.isUndefined(h);
118
- var resize = !crop && (!_.isUndefined(w) || !_.isUndefined(h));
119
-
120
- if (!_this3._environment.isIE11() && format.toLowerCase() === 'image/png' && !crop && !resize) {
121
- return resolve('data:image/png;base64,' + otElement.getImgData());
122
- }
123
-
124
- var videoElement = _this3.getVideoElement(otElement.element);
125
-
126
- if (!_this3._environment.isIE11()) {
127
- var videoElem = videoElement[0];
128
- var canvas = document.createElement('canvas');
129
- var ctx = canvas.getContext('2d');
130
-
131
- if (crop) {
132
- canvas.width = w;
133
- canvas.height = h;
134
-
135
- ctx.drawImage(videoElem, x, y, w, h, 0, 0, w, h);
136
- } else if (resize) {
137
- if (!h) {
138
- h = w * (videoElem.videoHeight / videoElem.videoWidth);
139
- } else if (!w) {
140
- w = h * (videoElem.videoWidth / videoElem.videoHeight);
141
- }
142
-
143
- canvas.width = w;
144
- canvas.height = h;
145
-
146
- ctx.drawImage(videoElem, 0, 0, w, h);
147
- } else {
148
- canvas.width = videoElem.videoWidth;
149
- canvas.height = videoElem.videoHeight;
150
-
151
- ctx.drawImage(videoElem, 0, 0);
152
- }
153
-
154
- return resolve(canvas.toDataURL(format, quality));
155
- }
156
-
157
- var currentWidth = videoElement.width();
158
- var currentHeight = videoElement.height();
159
- var currentPosition = videoElement.position();
160
- var _videoDimensions = _this3.videoDimensions,
161
- videoWidth = _videoDimensions.width,
162
- videoHeight = _videoDimensions.height;
163
-
164
- var ratio = Math.max(videoWidth / currentWidth, videoHeight / currentHeight);
165
-
166
- videoElement.width(videoWidth / ratio);
167
- videoElement.height(videoHeight / ratio);
168
-
169
- videoElement.css({
170
- left: currentPosition.left + Math.max(0, (currentWidth - videoWidth / ratio) / 2) + 'px',
171
-
172
- top: currentPosition.top + Math.max(0, (currentHeight - videoHeight / ratio) / 2) + 'px'
173
- });
174
-
175
- setTimeout(function () {
176
- var pngDataURL = 'data:image/png;base64,' + otElement.getImgData();
177
-
178
- if (format.toLowerCase() === 'image/png' && !crop && !resize) {
179
- resolve(pngDataURL);
180
- } else {
181
- var img = new Image(),
182
- _canvas = document.createElement('canvas'),
183
- _ctx = _canvas.getContext('2d');
184
-
185
- img.onload = function () {
186
- if (crop) {
187
- var widthRatio = img.width / videoWidth;
188
- var heightRatio = img.height / videoHeight;
189
-
190
- x = x && x * widthRatio;
191
- y = y && y * heightRatio;
192
- w = w && w * widthRatio;
193
- h = h && h * heightRatio;
194
-
195
- _canvas.width = w;
196
- _canvas.height = h;
197
-
198
- _ctx.drawImage(img, x, y, w, h, 0, 0, w, h);
199
- } else if (resize) {
200
- if (!h) {
201
- h = w * (videoHeight / videoWidth);
202
- } else if (!w) {
203
- w = h * (videoWidth / videoHeight);
204
- }
205
-
206
- _canvas.width = w;
207
- _canvas.height = h;
208
-
209
- _ctx.drawImage(img, 0, 0, w, h);
210
- } else {
211
- _canvas.width = img.width;
212
- _canvas.height = img.height;
213
-
214
- _ctx.drawImage(img);
215
- }
216
-
217
- return resolve(_canvas.toDataURL(format, quality));
218
- };
219
-
220
- img.src = pngDataURL;
221
- }
222
-
223
- videoElement.width(currentWidth);
224
- videoElement.height(currentHeight);
225
-
226
- videoElement.css({
227
- left: currentPosition.left + 'px',
228
- top: currentPosition.top + 'px'
229
- });
230
- }, timeout * 1000);
231
- }).then(function (imgData) {
232
- if (!imgData || imgData.length < 10) {
233
- return Promise.reject('Failed to get a snapshot');
234
- }
235
-
236
- return imgData;
237
- });
238
- };
239
-
240
- TsOpenTokStream.prototype.getStats = function getStats(subscriber) {
241
- return new Promise(function (resolve, reject) {
242
- subscriber._otsubscriber.getStats(function (err, stats) {
243
- if (err) {
244
- return reject(err);
245
- }
246
-
247
- return resolve(stats);
248
- });
249
- });
250
- };
251
-
252
- _createClass(TsOpenTokStream, [{
253
- key: 'id',
254
- get: function get() {
255
- return this._otstream.streamId;
256
- }
257
- }, {
258
- key: 'name',
259
- get: function get() {
260
- return this._otstream.name;
261
- }
262
-
263
- /**
264
- * Whether the stream has video. This property can change if the publisher turns on or off video
265
- * (by calling Publisher.publishVideo()). When this occurs, the Session object dispatches a streamPropertyChanged
266
- * event (see StreamPropertyChangedEvent).
267
- */
268
-
269
- }, {
270
- key: 'hasVideo',
271
- get: function get() {
272
- return this._otstream.hasVideo;
273
- }
274
-
275
- /**
276
- * Whether the stream has audio. This property can change if the publisher turns on or off audio
277
- * (by calling Publisher.publishAudio()). When this occurs, the Session object dispatches a streamPropertyChanged
278
- * event (see StreamPropertyChangedEvent).
279
- */
280
-
281
- }, {
282
- key: 'hasAudio',
283
- get: function get() {
284
- return this._otstream.hasAudio;
285
- }
286
-
287
- /**
288
- * Indicates if video channel exists in the stream.
289
- */
290
-
291
- }, {
292
- key: 'videoChannelExists',
293
- get: function get() {
294
- return this._videoChannelExists;
295
- }
296
-
297
- /**
298
- * Indicates if audio channel exists in the stream.
299
- */
300
-
301
- }, {
302
- key: 'audioChannelExists',
303
- get: function get() {
304
- return this._audioChannelExists;
305
- }
306
- }]);
307
-
308
- return TsOpenTokStream;
309
- }(_stream.TsMediaStream);
310
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["oldCode/opentok/stream.js"],"names":["EVENTS","TsOpenTokStream","session","otstream","id","_otstream","_session","_videoChannelExists","channel","filter","type","length","_audioChannelExists","publishAudio","publish","publisher","_otpublisher","publishVideo","subscribe","target","params","createSubscriber","then","subscriber","stream","_otsubscriber","on","e","emit","SUBSCRIBER_EVENTS","DESTROYED","DISCONNECTED","video","getVideoElement","element","_environment","isIE11","setAttribute","play","setupDimensionsListener","container","$","find","destroySubscriber","getSnapshot","tsMediaElement","timeout","format","quality","x","y","w","h","Promise","resolve","otElement","TsMediaPublisher","crop","_","isUndefined","resize","toLowerCase","getImgData","videoElement","videoElem","canvas","document","createElement","ctx","getContext","width","height","drawImage","videoHeight","videoWidth","toDataURL","currentWidth","currentHeight","currentPosition","position","videoDimensions","ratio","Math","max","css","left","top","setTimeout","pngDataURL","img","Image","onload","widthRatio","heightRatio","src","imgData","reject","getStats","err","stats","streamId","name","hasVideo","hasAudio","TsMediaStream"],"mappings":"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","file":"stream.js","sourcesContent":["import {\n EVENTS,\n TsMediaStream,\n} from '../stream';\n\nimport {\n EVENTS as SUBSCRIBER_EVENTS,\n} from '../subscriber';\n\nimport { TsMediaPublisher } from '../publisher';\n\nexport { EVENTS };\n\nexport class TsOpenTokStream extends TsMediaStream {\n constructor(session, otstream) {\n super(otstream.id, session);\n\n this._otstream = otstream;\n this._session = session;\n\n this._videoChannelExists = this._otstream.channel && (this._otstream.channel.filter((channel) => channel.type === 'video').length > 0);\n this._audioChannelExists = this._otstream.channel && (this._otstream.channel.filter((channel) => channel.type === 'audio').length > 0);\n }\n\n get id() {\n return this._otstream.streamId;\n }\n\n get name() {\n return this._otstream.name;\n }\n\n /**\n * Whether the stream has video. This property can change if the publisher turns on or off video\n * (by calling Publisher.publishVideo()). When this occurs, the Session object dispatches a streamPropertyChanged\n * event (see StreamPropertyChangedEvent).\n */\n get hasVideo() {\n return this._otstream.hasVideo;\n }\n\n /**\n * Whether the stream has audio. This property can change if the publisher turns on or off audio\n * (by calling Publisher.publishAudio()). When this occurs, the Session object dispatches a streamPropertyChanged\n * event (see StreamPropertyChangedEvent).\n */\n get hasAudio() {\n return this._otstream.hasAudio;\n }\n\n /**\n * Indicates if video channel exists in the stream.\n */\n get videoChannelExists() {\n return this._videoChannelExists;\n }\n\n /**\n * Indicates if audio channel exists in the stream.\n */\n get audioChannelExists() {\n return this._audioChannelExists;\n }\n\n publishAudio(publish) {\n if (this.publisher) {\n this.publisher._otpublisher.publishAudio(publish);\n }\n }\n\n publishVideo(publish) {\n if (this.publisher) {\n this.publisher._otpublisher.publishVideo(publish);\n }\n }\n\n subscribe(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n return this._session.createSubscriber(this, target, params)\n .then((subscriber) => {\n subscriber.stream = this;\n this.subscriber = subscriber;\n\n subscriber._otsubscriber.on('destroyed', (e) => {\n subscriber.emit(SUBSCRIBER_EVENTS.DESTROYED, e);\n });\n\n subscriber._otsubscriber.on('disconnected', (e) => {\n subscriber.emit(SUBSCRIBER_EVENTS.DISCONNECTED, e);\n });\n\n const video = this.getVideoElement(subscriber._otsubscriber.element)[0];\n\n if (!this._environment.isIE11()) {\n // Hack to override behavior introduced by Chrome v71 that unmuted video elements can't auto play\n video.setAttribute('muted', '');\n video.play();\n }\n\n this.setupDimensionsListener(video, subscriber);\n\n subscriber.id = subscriber._otsubscriber.id;\n\n return subscriber;\n });\n }\n\n getVideoElement(container) {\n const element = $(container).find('.OT_video-element');\n\n return (element.length > 0) ? element : $(container).find('.OT_video-container > video');\n }\n\n destroySubscriber(subscriber) {\n return this._session.destroySubscriber(subscriber);\n }\n\n getSnapshot(tsMediaElement, timeout = 0, {format = 'image/png', quality = 0.92, x, y, w, h} = {}) {\n return new Promise((resolve) => {\n const otElement = tsMediaElement[tsMediaElement instanceof TsMediaPublisher ? '_otpublisher' : '_otsubscriber'];\n const crop = !_.isUndefined(x) && !_.isUndefined(y) && !_.isUndefined(w) && !_.isUndefined(h);\n const resize = !crop && (!_.isUndefined(w) || !_.isUndefined(h));\n\n if (!this._environment.isIE11() && format.toLowerCase() === 'image/png' && !crop && !resize) {\n return resolve(`data:image/png;base64,${otElement.getImgData()}`);\n }\n\n const videoElement = this.getVideoElement(otElement.element);\n\n if (!this._environment.isIE11()) {\n const videoElem = videoElement[0];\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElem, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n if (!h) {\n h = w * (videoElem.videoHeight / videoElem.videoWidth);\n } else if (!w) {\n w = h * (videoElem.videoWidth / videoElem.videoHeight);\n }\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElem, 0, 0, w, h);\n } else {\n canvas.width = videoElem.videoWidth;\n canvas.height = videoElem.videoHeight;\n\n ctx.drawImage(videoElem, 0, 0);\n }\n\n return resolve(canvas.toDataURL(format, quality));\n }\n\n const currentWidth = videoElement.width();\n const currentHeight = videoElement.height();\n const currentPosition = videoElement.position();\n const {width: videoWidth, height: videoHeight} = this.videoDimensions;\n const ratio = Math.max(\n videoWidth / currentWidth,\n videoHeight / currentHeight\n );\n\n videoElement.width(videoWidth / ratio);\n videoElement.height(videoHeight / ratio);\n\n videoElement.css({\n left: currentPosition.left + Math.max(0,\n (currentWidth - videoWidth / ratio) / 2) + 'px',\n\n top: currentPosition.top + Math.max(0,\n (currentHeight - videoHeight / ratio) / 2) + 'px'\n });\n\n setTimeout(() => {\n const pngDataURL = `data:image/png;base64,${otElement.getImgData()}`;\n\n if (format.toLowerCase() === 'image/png' && !crop && !resize) {\n resolve(pngDataURL);\n } else {\n const img = new Image(),\n canvas = document.createElement('canvas'),\n ctx = canvas.getContext('2d');\n\n img.onload = () => {\n if (crop) {\n const widthRatio = img.width / videoWidth;\n const heightRatio = img.height / videoHeight;\n\n x = x && x * widthRatio;\n y = y && y * heightRatio;\n w = w && w * widthRatio;\n h = h && h * heightRatio;\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(img, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n if (!h) {\n h = w * (videoHeight / videoWidth);\n } else if (!w) {\n w = h * (videoWidth / videoHeight);\n }\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(img, 0, 0, w, h);\n } else {\n canvas.width = img.width;\n canvas.height = img.height;\n\n ctx.drawImage(img);\n }\n\n return resolve(canvas.toDataURL(format, quality));\n };\n\n img.src = pngDataURL;\n }\n\n videoElement.width(currentWidth);\n videoElement.height(currentHeight);\n\n videoElement.css({\n left: currentPosition.left + 'px',\n top: currentPosition.top + 'px'\n });\n }, timeout * 1000);\n })\n .then((imgData) => {\n if (!imgData || imgData.length < 10) {\n return Promise.reject('Failed to get a snapshot');\n }\n\n return imgData;\n });\n }\n\n getStats(subscriber) {\n return new Promise((resolve, reject) => {\n subscriber._otsubscriber.getStats((err, stats) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(stats);\n });\n });\n }\n}\n"]}
@@ -1,143 +0,0 @@
1
- 'use strict';
2
-
3
- exports.__esModule = true;
4
- exports.TsMediaPublisher = exports.EVENTS = undefined;
5
-
6
- var _eventEmitter = require('./event-emitter');
7
-
8
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
-
10
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
11
-
12
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
13
-
14
- /**
15
- * @enum PUBLISHER_EVENTS
16
- */
17
- var PUBLISHER_EVENTS = {
18
- STREAM_CREATED: 'STREAM_CREATED',
19
- DESTROYED: 'DESTROYED',
20
- VIDEO_DIMENSIONS_CHANGED: 'VIDEO_DIMENSIONS_CHANGED'
21
- };
22
-
23
- exports.EVENTS = PUBLISHER_EVENTS;
24
-
25
- /**
26
- * Publisher object represents publishing a media stream.
27
- *
28
- * Exposes session and stream wrapper methods specific for media publishing.
29
- *
30
- * Instance is returned by TsMediaSession.createPublisher() call
31
- *
32
- * @class
33
- *
34
- * @see TsMediaSession
35
- */
36
-
37
- var TsMediaPublisher = exports.TsMediaPublisher = function (_EventEmitter) {
38
- _inherits(TsMediaPublisher, _EventEmitter);
39
-
40
- function TsMediaPublisher(session, data) {
41
- _classCallCheck(this, TsMediaPublisher);
42
-
43
- var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));
44
-
45
- _.assign(_this, data);
46
-
47
- _this._session = session;
48
- return _this;
49
- }
50
-
51
- /**
52
- * Publish media stream to a server.
53
- *
54
- * @method
55
- *
56
- * @returns { Promise }
57
- *
58
- * @fires PUBLISHER_EVENTS#STREAM_CREATED
59
- * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED
60
- * @fires STREAM_EVENTS#PROPERTY_CHANGED
61
- */
62
-
63
-
64
- TsMediaPublisher.prototype.publish = function publish() {
65
- return this._session.publish(this);
66
- };
67
-
68
- /**
69
- * Unpublish the media strem and destroy publisher's view
70
- *
71
- * @method
72
- * @return { Promise }
73
- */
74
-
75
-
76
- TsMediaPublisher.prototype.destroy = function destroy() {
77
- return this._session.destroyPublisher(this);
78
- };
79
-
80
- /**
81
- * Whether or not publish audio
82
- *
83
- * @method
84
- * @param { Boolean } publish
85
- *
86
- * @returns { Promise }
87
- */
88
-
89
-
90
- TsMediaPublisher.prototype.publishAudio = function publishAudio(publish) {
91
- if (this.stream) {
92
- return this.stream.publishAudio(publish);
93
- }
94
-
95
- return Promise.reject();
96
- };
97
-
98
- /**
99
- * Whether or not publish video
100
- *
101
- * @method
102
- * @param { Boolean } publish
103
- *
104
- * @returns { Promise }
105
- */
106
-
107
-
108
- TsMediaPublisher.prototype.publishVideo = function publishVideo(publish) {
109
- if (this.stream) {
110
- return this.stream.publishVideo(publish);
111
- }
112
-
113
- return Promise.reject();
114
- };
115
-
116
- /**
117
- * Get snapshot of the current frame in the media stream
118
- *
119
- * @method
120
- * @param { Object } options Snapshot options: format, quality and crop positions
121
- *
122
- * @returns { Promise<String> } snapshot
123
- */
124
-
125
-
126
- TsMediaPublisher.prototype.getSnapshot = function getSnapshot(options) {
127
- // Since a video publisher (the client) won't be used in IE, we can drop the timeout.
128
- return this.stream.getSnapshot(this, 0, options);
129
- };
130
-
131
- TsMediaPublisher.prototype.turnFlashlight = function turnFlashlight() {
132
- var isTorchOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
133
-
134
- return this.stream.turnFlashlight(isTorchOn);
135
- };
136
-
137
- TsMediaPublisher.prototype.setAutoLightOffTimer = function setAutoLightOffTimer(flashlightTimeout) {
138
- return this.stream.setAutoLightOffTimer(flashlightTimeout);
139
- };
140
-
141
- return TsMediaPublisher;
142
- }(_eventEmitter.EventEmitter);
143
- //# sourceMappingURL=publisher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["oldCode/publisher.js"],"names":["PUBLISHER_EVENTS","STREAM_CREATED","DESTROYED","VIDEO_DIMENSIONS_CHANGED","EVENTS","TsMediaPublisher","session","data","_","assign","_session","publish","destroy","destroyPublisher","publishAudio","stream","Promise","reject","publishVideo","getSnapshot","options","turnFlashlight","isTorchOn","setAutoLightOffTimer","flashlightTimeout","EventEmitter"],"mappings":";;;;;AAAA;;;;;;;;AAEA;;;AAGA,IAAMA,mBAAmB;AACrBC,oBAAgB,gBADK;AAErBC,eAAW,WAFU;AAGrBC,8BAA0B;AAHL,CAAzB;;QAM6BC,M,GAApBJ,gB;;AAET;;;;;;;;;;;;IAWaK,gB,WAAAA,gB;;;AACT,8BAAYC,OAAZ,EAAqBC,IAArB,EAA2B;AAAA;;AAAA,qDACvB,wBADuB;;AAGvBC,UAAEC,MAAF,QAAeF,IAAf;;AAEA,cAAKG,QAAL,GAAgBJ,OAAhB;AALuB;AAM1B;;AAED;;;;;;;;;;;;;+BAWAK,O,sBAAU;AACN,eAAO,KAAKD,QAAL,CAAcC,OAAd,CAAsB,IAAtB,CAAP;AACH,K;;AAED;;;;;;;;+BAMAC,O,sBAAU;AACN,eAAO,KAAKF,QAAL,CAAcG,gBAAd,CAA+B,IAA/B,CAAP;AACH,K;;AAED;;;;;;;;;;+BAQAC,Y,yBAAaH,O,EAAS;AAClB,YAAI,KAAKI,MAAT,EAAiB;AACb,mBAAO,KAAKA,MAAL,CAAYD,YAAZ,CAAyBH,OAAzB,CAAP;AACH;;AAED,eAAOK,QAAQC,MAAR,EAAP;AACH,K;;AAED;;;;;;;;;;+BAQAC,Y,yBAAaP,O,EAAS;AAClB,YAAI,KAAKI,MAAT,EAAiB;AACb,mBAAO,KAAKA,MAAL,CAAYG,YAAZ,CAAyBP,OAAzB,CAAP;AACH;;AAED,eAAOK,QAAQC,MAAR,EAAP;AACH,K;;AAED;;;;;;;;;;+BAQAE,W,wBAAYC,O,EAAS;AACjB;AACA,eAAO,KAAKL,MAAL,CAAYI,WAAZ,CAAwB,IAAxB,EAA8B,CAA9B,EAAiCC,OAAjC,CAAP;AACH,K;;+BAEDC,c,6BAAiC;AAAA,YAAlBC,SAAkB,uEAAN,IAAM;;AAC7B,eAAO,KAAKP,MAAL,CAAYM,cAAZ,CAA2BC,SAA3B,CAAP;AACH,K;;+BAEDC,oB,iCAAqBC,iB,EAAmB;AACpC,eAAO,KAAKT,MAAL,CAAYQ,oBAAZ,CAAiCC,iBAAjC,CAAP;AACH,K;;;EArFiCC,0B","file":"publisher.js","sourcesContent":["import { EventEmitter } from './event-emitter';\n\n/**\n * @enum PUBLISHER_EVENTS\n */\nconst PUBLISHER_EVENTS = {\n STREAM_CREATED: 'STREAM_CREATED',\n DESTROYED: 'DESTROYED',\n VIDEO_DIMENSIONS_CHANGED: 'VIDEO_DIMENSIONS_CHANGED',\n};\n\nexport { PUBLISHER_EVENTS as EVENTS };\n\n/**\n * Publisher object represents publishing a media stream.\n *\n * Exposes session and stream wrapper methods specific for media publishing.\n *\n * Instance is returned by TsMediaSession.createPublisher() call\n *\n * @class\n *\n * @see TsMediaSession\n */\nexport class TsMediaPublisher extends EventEmitter {\n constructor(session, data) {\n super();\n\n _.assign(this, data);\n\n this._session = session;\n }\n\n /**\n * Publish media stream to a server.\n *\n * @method\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 publish() {\n return this._session.publish(this);\n }\n\n /**\n * Unpublish the media strem and destroy publisher's view\n *\n * @method\n * @return { Promise }\n */\n destroy() {\n return this._session.destroyPublisher(this);\n }\n\n /**\n * Whether or not publish audio\n *\n * @method\n * @param { Boolean } publish\n *\n * @returns { Promise }\n */\n publishAudio(publish) {\n if (this.stream) {\n return this.stream.publishAudio(publish);\n }\n\n return Promise.reject();\n }\n\n /**\n * Whether or not publish video\n *\n * @method\n * @param { Boolean } publish\n *\n * @returns { Promise }\n */\n publishVideo(publish) {\n if (this.stream) {\n return this.stream.publishVideo(publish);\n }\n\n return Promise.reject();\n }\n\n /**\n * Get snapshot of the current frame in the media stream\n *\n * @method\n * @param { Object } options Snapshot options: format, quality and crop positions\n *\n * @returns { Promise<String> } snapshot\n */\n getSnapshot(options) {\n // Since a video publisher (the client) won't be used in IE, we can drop the timeout.\n return this.stream.getSnapshot(this, 0, options);\n }\n\n turnFlashlight(isTorchOn = true) {\n return this.stream.turnFlashlight(isTorchOn);\n }\n\n setAutoLightOffTimer(flashlightTimeout) {\n return this.stream.setAutoLightOffTimer(flashlightTimeout);\n }\n}\n\n"]}