@techsee/techsee-media-service 999.0.4-switch → 999.0.6-switch

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.
@@ -30,7 +30,6 @@ var MediaDomUtils_1 = require("./MediaUtils/MediaDomUtils");
30
30
  var Compatibility_1 = require("./MediaUtils/Compatibility");
31
31
  var SessionOpentok_1 = require("./MediaSession/SessionOpentok");
32
32
  var MediaConstants_1 = require("./MediaConstants");
33
- var get_1 = __importDefault(require("lodash/get"));
34
33
  var guards_1 = require("@techsee/techsee-common/lib/core/guards");
35
34
  var MediaTracer_1 = require("./MediaUtils/MediaTracer");
36
35
  var trace = MediaTracer_1.getMediaTracer('MediaServiceBase');
@@ -193,53 +192,48 @@ var TechseeMediaServiceBase = /** @class */function () {
193
192
  TechseeMediaServiceBase.prototype.onStreamCreated = function (callback) {
194
193
  this.registerEventCallback(privateEvents.STREAM_CREATED, callback);
195
194
  };
195
+ TechseeMediaServiceBase.prototype.getSwitchCameraConstraints = function () {
196
+ var constraints = cloneDeep_1.default(window.latestLocalMediaConstraints);
197
+ if (!constraints) {
198
+ throw new Error('getSwitchCameraConstraints: unexpected use case constraints is null.');
199
+ }
200
+ trace.info('switchCamera - Start switch camera with constraints:', constraints);
201
+ var videoSourceType = constraints.video.videoSourceType === MediaConstants_1.LocalVideoSourceType.CAMERA ? MediaConstants_1.LocalVideoSourceType.CAMERA_FORNT : MediaConstants_1.LocalVideoSourceType.CAMERA;
202
+ trace.info("switchCamera - switch to videoSourceType: " + videoSourceType);
203
+ constraints.video.videoSourceType = videoSourceType;
204
+ return constraints;
205
+ };
196
206
  TechseeMediaServiceBase.prototype.switchCamera = function () {
197
207
  var _this = this;
198
- trace.info('XXXXX: start switch camera');
199
- var videoSourceType = MediaConstants_1.LocalVideoSourceType.CAMERA;
200
- var constraints = cloneDeep_1.default(window.latestLocalMediaConstraints);
201
- trace.info("XXXXX: switch camera - constraints " + JSON.stringify(constraints));
202
- if (constraints) {
203
- if (constraints.video.videoSourceType === MediaConstants_1.LocalVideoSourceType.CAMERA) {
204
- videoSourceType = MediaConstants_1.LocalVideoSourceType.CAMERA_FORNT;
205
- }
206
- trace.info("XXXXX: switch camera - videoSourceType: " + videoSourceType);
207
- constraints.video.videoSourceType = videoSourceType;
208
- window.latestLocalMediaConstraints = null;
209
- var regPromises_1 = [];
210
- this._localStreamsManager.getUserMediaStreamMediaDevice({ audio: false, video: { deviceId: get_1.default(this._localStreamsManager.groupedDevices, 'video.front.deviceId'),
211
- frameRate: { ideal: 15, max: 30 },
212
- height: { ideal: 480 },
213
- width: { ideal: 640 } } }, false).then(function (stream) {
214
- trace.info('XXXXX: new stream: ', stream);
215
- trace.info('XXXXX: beore replaceTrack');
216
- _this._session.instance && _this._session.instance.replaceStreamTracks(stream);
217
- stream && stream.getTracks().forEach(function (track) {
218
- var newDedicatedStream = new TechseeMediaStream_1.TechseeMediaStream(track, MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM, false);
219
- regPromises_1.push(_this.registerStream(newDedicatedStream, true)); //phone
220
- });
221
- return Promise.all(regPromises_1).then(function () {
222
- return undefined;
223
- });
208
+ var constraints = this.getSwitchCameraConstraints();
209
+ this._localStreamsManager.destroyUserMediaStream();
210
+ return this._localStreamsManager.getUserMediaStream(constraints).then(function (streamResult) {
211
+ var stream = streamResult.mediaStream;
212
+ trace.info('switchCamera: new stream: ', stream);
213
+ _this.replaceStreamTracks(stream);
214
+ return _this.registerStreamResult(constraints, streamResult, _this.registerTrack).then(function () {
215
+ return { constraints: constraints, streamResult: streamResult };
216
+ });
217
+ }).catch(function (err) {
218
+ trace.error('switchCamera: Failed to switch camera: ', err);
219
+ return Promise.reject('Failed to switch camera.');
220
+ });
221
+ };
222
+ TechseeMediaServiceBase.prototype.replaceStreamTracks = function (mediaStream) {
223
+ this._session.instance && this._session.instance.replaceStreamTracks(mediaStream);
224
+ };
225
+ TechseeMediaServiceBase.prototype.registerStreamResult = function (constraints, streamResult, registerMediaStream) {
226
+ var regPromises = [];
227
+ if (streamResult.isNew) {
228
+ trace.info('registerStreamResult: stream result from getUserMediaStream:', streamResult.mediaStream);
229
+ streamResult.mediaStream.getTracks().forEach(function (mediaTrack) {
230
+ trace.info('registerStreamResult: stream result from mediaTrack:', mediaTrack);
231
+ var streamType = mediaTrack.kind === 'video' ? MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM : MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;
232
+ var newDedicatedStream = new TechseeMediaStream_1.TechseeMediaStream(mediaTrack, streamType, false);
233
+ regPromises.push(registerMediaStream(newDedicatedStream));
224
234
  });
225
- // return this._localStreamsManager.getUserMediaStream(constraints)
226
- // .then((streamResult: MediaRequestSuccessResult) => {
227
- // trace.info(`XXXXX: switch acmera- success create new stream: ${JSON.stringify(streamResult)}`, streamResult);
228
- // const stream = streamResult.mediaStream;
229
- // trace.info('XXXXX: switch camera- before replacing trace');
230
- // this._session && this._session.instance && this._session.instance.replaceStreamTracks(stream);
231
- // trace.info('XXXXX: switch camera- after replacing trace');
232
- // stream && stream.getTracks().forEach((track) => {
233
- // const newDedicatedStream = new TechseeMediaStream(track, KnownMediaStream.USER_VIDEO_STREAM, false);
234
- // trace.info(`XXXXX: switch camera- set register stream ${newDedicatedStream.streamType}`);
235
- // this._registeredStreams.set(newDedicatedStream.streamType, newDedicatedStream);
236
- // });
237
- // })
238
- // .catch((err) => {
239
- // trace.info(`XXXXX: switch acmera- error: ${err}`, err);
240
- // });
241
235
  }
242
- return Promise.reject('Something wrong with constraints.');
236
+ return Promise.all(regPromises);
243
237
  };
244
238
  //#endregion Media Streams Management
245
239
  //#region Session Management
@@ -498,24 +492,27 @@ var TechseeMediaServiceBase = /** @class */function () {
498
492
  var newDedicatedStream = new TechseeMediaStream_1.TechseeMediaStream(remoteMediaTrack.mediaTrack, remoteMediaTrack.trackType, true);
499
493
  return this.registerStream(newDedicatedStream);
500
494
  };
501
- TechseeMediaServiceBase.prototype.registerStream = function (mediaStream, update) {
495
+ TechseeMediaServiceBase.prototype.registerTrack = function (mediaStream) {
496
+ var _this = this;
497
+ mediaStream.mediaTrack.onended = function () {
498
+ return _this.unregisterTechseeMediaStream(mediaStream, MediaConstants_1.MediaStreamUnregisterReason.NativeEvent);
499
+ };
500
+ this._registeredStreams.set(mediaStream.streamType, mediaStream);
501
+ trace.info("TechseeMediaStream registered - " + mediaStream.streamType, TechseeMediaStream_1.TechseeMediaStream);
502
+ return this.updateSubscribersWithNewStream(mediaStream).then(function () {
503
+ var eventArgs = { streamType: mediaStream.streamType };
504
+ _this.emitEvent(privateEvents.STREAM_CREATED, eventArgs);
505
+ });
506
+ };
507
+ TechseeMediaServiceBase.prototype.registerStream = function (mediaStream) {
502
508
  var _this = this;
503
509
  var currentStream = this._registeredStreams.get(mediaStream.streamType);
504
- var registerTrack = function registerTrack() {
505
- mediaStream.mediaTrack.onended = function () {
506
- return _this.unregisterTechseeMediaStream(mediaStream, MediaConstants_1.MediaStreamUnregisterReason.NativeEvent);
507
- };
508
- _this._registeredStreams.set(mediaStream.streamType, mediaStream);
509
- trace.info("TechseeMediaStream registered - " + mediaStream.streamType, TechseeMediaStream_1.TechseeMediaStream);
510
- return _this.updateSubscribersWithNewStream(mediaStream).then(function () {
511
- var eventArgs = { streamType: mediaStream.streamType };
512
- _this.emitEvent(privateEvents.STREAM_CREATED, eventArgs);
510
+ if (currentStream) {
511
+ return this.unregisterTechseeMediaStream(currentStream, MediaConstants_1.MediaStreamUnregisterReason.ReplacingStream).then(function () {
512
+ return _this.registerTrack(mediaStream);
513
513
  });
514
- };
515
- if (currentStream && !update) {
516
- return this.unregisterTechseeMediaStream(currentStream, MediaConstants_1.MediaStreamUnregisterReason.ReplacingStream).then(registerTrack);
517
514
  }
518
- return registerTrack();
515
+ return this.registerTrack(mediaStream);
519
516
  };
520
517
  TechseeMediaServiceBase.prototype.unregisterTechseeMediaStream = function (streamToUnregister, reason) {
521
518
  var _this = this;