livekit-client 0.17.5 → 0.17.6-rc1

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 (153) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +26 -20
  3. package/dist/api/SignalClient.d.ts +1 -0
  4. package/dist/connect.d.ts +2 -0
  5. package/dist/index.d.ts +2 -2
  6. package/dist/livekit-client.esm.js +17344 -0
  7. package/dist/livekit-client.esm.js.map +1 -0
  8. package/dist/livekit-client.umd.js +17388 -0
  9. package/dist/livekit-client.umd.js.map +1 -0
  10. package/dist/logger.d.ts +22 -11
  11. package/dist/options.d.ts +4 -2
  12. package/dist/proto/google/protobuf/timestamp.d.ts +1 -1
  13. package/dist/proto/livekit_models.d.ts +4 -1
  14. package/dist/proto/livekit_rtc.d.ts +45 -2
  15. package/dist/room/DeviceManager.d.ts +1 -1
  16. package/dist/room/RTCEngine.d.ts +1 -1
  17. package/dist/room/Room.d.ts +2 -2
  18. package/dist/room/events.d.ts +1 -1
  19. package/dist/room/participant/LocalParticipant.d.ts +9 -5
  20. package/dist/room/participant/RemoteParticipant.d.ts +9 -0
  21. package/dist/room/track/RemoteAudioTrack.d.ts +11 -0
  22. package/dist/test/mocks.d.ts +11 -0
  23. package/package.json +40 -15
  24. package/.eslintrc.js +0 -17
  25. package/.gitmodules +0 -3
  26. package/dist/api/RequestQueue.js +0 -61
  27. package/dist/api/RequestQueue.js.map +0 -1
  28. package/dist/api/SignalClient.js +0 -428
  29. package/dist/api/SignalClient.js.map +0 -1
  30. package/dist/connect.js +0 -130
  31. package/dist/connect.js.map +0 -1
  32. package/dist/index.js +0 -71
  33. package/dist/index.js.map +0 -1
  34. package/dist/logger.js +0 -24
  35. package/dist/logger.js.map +0 -1
  36. package/dist/options.js +0 -3
  37. package/dist/options.js.map +0 -1
  38. package/dist/proto/google/protobuf/timestamp.js +0 -108
  39. package/dist/proto/google/protobuf/timestamp.js.map +0 -1
  40. package/dist/proto/livekit_models.js +0 -2262
  41. package/dist/proto/livekit_models.js.map +0 -1
  42. package/dist/proto/livekit_rtc.js +0 -2544
  43. package/dist/proto/livekit_rtc.js.map +0 -1
  44. package/dist/room/DeviceManager.js +0 -62
  45. package/dist/room/DeviceManager.js.map +0 -1
  46. package/dist/room/PCTransport.js +0 -91
  47. package/dist/room/PCTransport.js.map +0 -1
  48. package/dist/room/RTCEngine.js +0 -562
  49. package/dist/room/RTCEngine.js.map +0 -1
  50. package/dist/room/Room.js +0 -767
  51. package/dist/room/Room.js.map +0 -1
  52. package/dist/room/errors.js +0 -68
  53. package/dist/room/errors.js.map +0 -1
  54. package/dist/room/events.js +0 -385
  55. package/dist/room/events.js.map +0 -1
  56. package/dist/room/participant/LocalParticipant.js +0 -647
  57. package/dist/room/participant/LocalParticipant.js.map +0 -1
  58. package/dist/room/participant/Participant.js +0 -189
  59. package/dist/room/participant/Participant.js.map +0 -1
  60. package/dist/room/participant/ParticipantTrackPermission.js +0 -16
  61. package/dist/room/participant/ParticipantTrackPermission.js.map +0 -1
  62. package/dist/room/participant/RemoteParticipant.js +0 -194
  63. package/dist/room/participant/RemoteParticipant.js.map +0 -1
  64. package/dist/room/participant/publishUtils.js +0 -189
  65. package/dist/room/participant/publishUtils.js.map +0 -1
  66. package/dist/room/participant/publishUtils.test.d.ts +0 -1
  67. package/dist/room/participant/publishUtils.test.js +0 -118
  68. package/dist/room/participant/publishUtils.test.js.map +0 -1
  69. package/dist/room/stats.js +0 -26
  70. package/dist/room/stats.js.map +0 -1
  71. package/dist/room/track/LocalAudioTrack.js +0 -153
  72. package/dist/room/track/LocalAudioTrack.js.map +0 -1
  73. package/dist/room/track/LocalTrack.js +0 -158
  74. package/dist/room/track/LocalTrack.js.map +0 -1
  75. package/dist/room/track/LocalTrackPublication.js +0 -64
  76. package/dist/room/track/LocalTrackPublication.js.map +0 -1
  77. package/dist/room/track/LocalVideoTrack.js +0 -297
  78. package/dist/room/track/LocalVideoTrack.js.map +0 -1
  79. package/dist/room/track/LocalVideoTrack.test.d.ts +0 -1
  80. package/dist/room/track/LocalVideoTrack.test.js +0 -68
  81. package/dist/room/track/LocalVideoTrack.test.js.map +0 -1
  82. package/dist/room/track/RemoteAudioTrack.js +0 -64
  83. package/dist/room/track/RemoteAudioTrack.js.map +0 -1
  84. package/dist/room/track/RemoteTrack.js +0 -49
  85. package/dist/room/track/RemoteTrack.js.map +0 -1
  86. package/dist/room/track/RemoteTrackPublication.js +0 -178
  87. package/dist/room/track/RemoteTrackPublication.js.map +0 -1
  88. package/dist/room/track/RemoteVideoTrack.js +0 -201
  89. package/dist/room/track/RemoteVideoTrack.js.map +0 -1
  90. package/dist/room/track/Track.js +0 -283
  91. package/dist/room/track/Track.js.map +0 -1
  92. package/dist/room/track/TrackPublication.js +0 -92
  93. package/dist/room/track/TrackPublication.js.map +0 -1
  94. package/dist/room/track/create.js +0 -131
  95. package/dist/room/track/create.js.map +0 -1
  96. package/dist/room/track/defaults.js +0 -21
  97. package/dist/room/track/defaults.js.map +0 -1
  98. package/dist/room/track/options.js +0 -100
  99. package/dist/room/track/options.js.map +0 -1
  100. package/dist/room/track/types.js +0 -3
  101. package/dist/room/track/types.js.map +0 -1
  102. package/dist/room/track/utils.js +0 -113
  103. package/dist/room/track/utils.js.map +0 -1
  104. package/dist/room/track/utils.test.d.ts +0 -1
  105. package/dist/room/track/utils.test.js +0 -85
  106. package/dist/room/track/utils.test.js.map +0 -1
  107. package/dist/room/utils.js +0 -79
  108. package/dist/room/utils.js.map +0 -1
  109. package/dist/version.js +0 -6
  110. package/dist/version.js.map +0 -1
  111. package/jest.config.js +0 -6
  112. package/src/api/RequestQueue.ts +0 -53
  113. package/src/api/SignalClient.ts +0 -499
  114. package/src/connect.ts +0 -100
  115. package/src/index.ts +0 -47
  116. package/src/logger.ts +0 -22
  117. package/src/options.ts +0 -149
  118. package/src/proto/google/protobuf/timestamp.ts +0 -232
  119. package/src/proto/livekit_models.ts +0 -2676
  120. package/src/proto/livekit_rtc.ts +0 -3269
  121. package/src/room/DeviceManager.ts +0 -57
  122. package/src/room/PCTransport.ts +0 -86
  123. package/src/room/RTCEngine.ts +0 -652
  124. package/src/room/Room.ts +0 -951
  125. package/src/room/errors.ts +0 -65
  126. package/src/room/events.ts +0 -424
  127. package/src/room/participant/LocalParticipant.ts +0 -734
  128. package/src/room/participant/Participant.ts +0 -269
  129. package/src/room/participant/ParticipantTrackPermission.ts +0 -32
  130. package/src/room/participant/RemoteParticipant.ts +0 -243
  131. package/src/room/participant/publishUtils.test.ts +0 -145
  132. package/src/room/participant/publishUtils.ts +0 -225
  133. package/src/room/stats.ts +0 -130
  134. package/src/room/track/LocalAudioTrack.ts +0 -137
  135. package/src/room/track/LocalTrack.ts +0 -161
  136. package/src/room/track/LocalTrackPublication.ts +0 -66
  137. package/src/room/track/LocalVideoTrack.test.ts +0 -70
  138. package/src/room/track/LocalVideoTrack.ts +0 -293
  139. package/src/room/track/RemoteAudioTrack.ts +0 -58
  140. package/src/room/track/RemoteTrack.ts +0 -62
  141. package/src/room/track/RemoteTrackPublication.ts +0 -198
  142. package/src/room/track/RemoteVideoTrack.ts +0 -235
  143. package/src/room/track/Track.ts +0 -343
  144. package/src/room/track/TrackPublication.ts +0 -120
  145. package/src/room/track/create.ts +0 -121
  146. package/src/room/track/defaults.ts +0 -23
  147. package/src/room/track/options.ts +0 -281
  148. package/src/room/track/types.ts +0 -20
  149. package/src/room/track/utils.test.ts +0 -93
  150. package/src/room/track/utils.ts +0 -115
  151. package/src/room/utils.ts +0 -70
  152. package/src/version.ts +0 -2
  153. package/tsconfig.eslint.json +0 -11
@@ -1,189 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConnectionQuality = void 0;
4
- const events_1 = require("events");
5
- const livekit_models_1 = require("../../proto/livekit_models");
6
- const events_2 = require("../events");
7
- const Track_1 = require("../track/Track");
8
- var ConnectionQuality;
9
- (function (ConnectionQuality) {
10
- ConnectionQuality["Excellent"] = "excellent";
11
- ConnectionQuality["Good"] = "good";
12
- ConnectionQuality["Poor"] = "poor";
13
- ConnectionQuality["Unknown"] = "unknown";
14
- })(ConnectionQuality = exports.ConnectionQuality || (exports.ConnectionQuality = {}));
15
- function qualityFromProto(q) {
16
- switch (q) {
17
- case livekit_models_1.ConnectionQuality.EXCELLENT:
18
- return ConnectionQuality.Excellent;
19
- case livekit_models_1.ConnectionQuality.GOOD:
20
- return ConnectionQuality.Good;
21
- case livekit_models_1.ConnectionQuality.POOR:
22
- return ConnectionQuality.Poor;
23
- default:
24
- return ConnectionQuality.Unknown;
25
- }
26
- }
27
- class Participant extends events_1.EventEmitter {
28
- /** @internal */
29
- constructor(sid, identity) {
30
- super();
31
- /** audio level between 0-1.0, 1 being loudest, 0 being softest */
32
- this.audioLevel = 0;
33
- /** if participant is currently speaking */
34
- this.isSpeaking = false;
35
- this._connectionQuality = ConnectionQuality.Unknown;
36
- this.sid = sid;
37
- this.identity = identity;
38
- this.audioTracks = new Map();
39
- this.videoTracks = new Map();
40
- this.tracks = new Map();
41
- }
42
- getTracks() {
43
- return Array.from(this.tracks.values());
44
- }
45
- /**
46
- * Finds the first track that matches the source filter, for example, getting
47
- * the user's camera track with getTrackBySource(Track.Source.Camera).
48
- * @param source
49
- * @returns
50
- */
51
- getTrack(source) {
52
- if (source === Track_1.Track.Source.Unknown) {
53
- return;
54
- }
55
- for (const [, pub] of this.tracks) {
56
- if (pub.source === source) {
57
- return pub;
58
- }
59
- if (pub.source === Track_1.Track.Source.Unknown) {
60
- if (source === Track_1.Track.Source.Microphone && pub.kind === Track_1.Track.Kind.Audio && pub.trackName !== 'screen') {
61
- return pub;
62
- }
63
- if (source === Track_1.Track.Source.Camera && pub.kind === Track_1.Track.Kind.Video && pub.trackName !== 'screen') {
64
- return pub;
65
- }
66
- if (source === Track_1.Track.Source.ScreenShare && pub.kind === Track_1.Track.Kind.Video && pub.trackName === 'screen') {
67
- return pub;
68
- }
69
- if (source === Track_1.Track.Source.ScreenShareAudio && pub.kind === Track_1.Track.Kind.Audio && pub.trackName === 'screen') {
70
- return pub;
71
- }
72
- }
73
- }
74
- }
75
- /**
76
- * Finds the first track that matches the track's name.
77
- * @param name
78
- * @returns
79
- */
80
- getTrackByName(name) {
81
- for (const [, pub] of this.tracks) {
82
- if (pub.trackName === name) {
83
- return pub;
84
- }
85
- }
86
- }
87
- get connectionQuality() {
88
- return this._connectionQuality;
89
- }
90
- get isCameraEnabled() {
91
- var _a;
92
- const track = this.getTrack(Track_1.Track.Source.Camera);
93
- return !((_a = track === null || track === void 0 ? void 0 : track.isMuted) !== null && _a !== void 0 ? _a : true);
94
- }
95
- get isMicrophoneEnabled() {
96
- var _a;
97
- const track = this.getTrack(Track_1.Track.Source.Microphone);
98
- return !((_a = track === null || track === void 0 ? void 0 : track.isMuted) !== null && _a !== void 0 ? _a : true);
99
- }
100
- get isScreenShareEnabled() {
101
- const track = this.getTrack(Track_1.Track.Source.ScreenShare);
102
- return !!track;
103
- }
104
- /** when participant joined the room */
105
- get joinedAt() {
106
- if (this.participantInfo) {
107
- return new Date(this.participantInfo.joinedAt * 1000);
108
- }
109
- return new Date();
110
- }
111
- /** @internal */
112
- updateInfo(info) {
113
- this.identity = info.identity;
114
- this.sid = info.sid;
115
- this.name = info.name;
116
- this.setMetadata(info.metadata);
117
- if (info.permission) {
118
- this.setPermissions(info.permission);
119
- }
120
- // set this last so setMetadata can detect changes
121
- this.participantInfo = info;
122
- }
123
- /** @internal */
124
- setMetadata(md) {
125
- const changed = this.metadata !== md;
126
- const prevMetadata = this.metadata;
127
- this.metadata = md;
128
- if (changed) {
129
- this.emit(events_2.ParticipantEvent.MetadataChanged, prevMetadata);
130
- this.emit(events_2.ParticipantEvent.ParticipantMetadataChanged, prevMetadata);
131
- }
132
- }
133
- /** @internal */
134
- setPermissions(permissions) {
135
- var _a, _b, _c, _d, _e;
136
- const changed = permissions.canPublish !== ((_a = this.permissions) === null || _a === void 0 ? void 0 : _a.canPublish)
137
- || permissions.canSubscribe !== ((_b = this.permissions) === null || _b === void 0 ? void 0 : _b.canSubscribe)
138
- || permissions.canPublishData !== ((_c = this.permissions) === null || _c === void 0 ? void 0 : _c.canPublishData)
139
- || permissions.hidden !== ((_d = this.permissions) === null || _d === void 0 ? void 0 : _d.hidden)
140
- || permissions.recorder !== ((_e = this.permissions) === null || _e === void 0 ? void 0 : _e.recorder);
141
- this.permissions = permissions;
142
- return changed;
143
- }
144
- /** @internal */
145
- setIsSpeaking(speaking) {
146
- if (speaking === this.isSpeaking) {
147
- return;
148
- }
149
- this.isSpeaking = speaking;
150
- if (speaking) {
151
- this.lastSpokeAt = new Date();
152
- }
153
- this.emit(events_2.ParticipantEvent.IsSpeakingChanged, speaking);
154
- }
155
- /** @internal */
156
- setConnectionQuality(q) {
157
- const prevQuality = this._connectionQuality;
158
- this._connectionQuality = qualityFromProto(q);
159
- if (prevQuality !== this._connectionQuality) {
160
- this.emit(events_2.ParticipantEvent.ConnectionQualityChanged, this._connectionQuality);
161
- }
162
- }
163
- addTrackPublication(publication) {
164
- // forward publication driven events
165
- publication.on(events_2.TrackEvent.Muted, () => {
166
- this.emit(events_2.ParticipantEvent.TrackMuted, publication);
167
- });
168
- publication.on(events_2.TrackEvent.Unmuted, () => {
169
- this.emit(events_2.ParticipantEvent.TrackUnmuted, publication);
170
- });
171
- const pub = publication;
172
- if (pub.track) {
173
- pub.track.sid = publication.trackSid;
174
- }
175
- this.tracks.set(publication.trackSid, publication);
176
- switch (publication.kind) {
177
- case Track_1.Track.Kind.Audio:
178
- this.audioTracks.set(publication.trackSid, publication);
179
- break;
180
- case Track_1.Track.Kind.Video:
181
- this.videoTracks.set(publication.trackSid, publication);
182
- break;
183
- default:
184
- break;
185
- }
186
- }
187
- }
188
- exports.default = Participant;
189
- //# sourceMappingURL=Participant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Participant.js","sourceRoot":"","sources":["../../../src/room/participant/Participant.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.trackPermissionToProto = void 0;
4
- function trackPermissionToProto(perms) {
5
- var _a;
6
- if (!perms.participantSid) {
7
- throw new Error('Invalid track permission, missing participantSid');
8
- }
9
- return {
10
- participantSid: perms.participantSid,
11
- allTracks: (_a = perms.allowAll) !== null && _a !== void 0 ? _a : false,
12
- trackSids: perms.allowedTrackSids || [],
13
- };
14
- }
15
- exports.trackPermissionToProto = trackPermissionToProto;
16
- //# sourceMappingURL=ParticipantTrackPermission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ParticipantTrackPermission.js","sourceRoot":"","sources":["../../../src/room/participant/ParticipantTrackPermission.ts"],"names":[],"mappings":";;;AAsBA,SAAgB,sBAAsB,CAAC,KAAiC;;IACtE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACrE;IACD,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,KAAK;QAClC,SAAS,EAAE,KAAK,CAAC,gBAAgB,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AATD,wDASC"}
@@ -1,194 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const logger_1 = __importDefault(require("../../logger"));
7
- const events_1 = require("../events");
8
- const RemoteAudioTrack_1 = __importDefault(require("../track/RemoteAudioTrack"));
9
- const RemoteTrackPublication_1 = __importDefault(require("../track/RemoteTrackPublication"));
10
- const RemoteVideoTrack_1 = __importDefault(require("../track/RemoteVideoTrack"));
11
- const Track_1 = require("../track/Track");
12
- const Participant_1 = __importDefault(require("./Participant"));
13
- class RemoteParticipant extends Participant_1.default {
14
- /** @internal */
15
- constructor(signalClient, id, name) {
16
- super(id, name || '');
17
- this.signalClient = signalClient;
18
- this.tracks = new Map();
19
- this.audioTracks = new Map();
20
- this.videoTracks = new Map();
21
- }
22
- /** @internal */
23
- static fromParticipantInfo(signalClient, pi) {
24
- const rp = new RemoteParticipant(signalClient, pi.sid, pi.identity);
25
- rp.updateInfo(pi);
26
- return rp;
27
- }
28
- addTrackPublication(publication) {
29
- super.addTrackPublication(publication);
30
- // register action events
31
- publication.on(events_1.TrackEvent.UpdateSettings, (settings) => {
32
- this.signalClient.sendUpdateTrackSettings(settings);
33
- });
34
- publication.on(events_1.TrackEvent.UpdateSubscription, (sub) => {
35
- sub.participantTracks.forEach((pt) => {
36
- pt.participantSid = this.sid;
37
- });
38
- this.signalClient.sendUpdateSubscription(sub);
39
- });
40
- publication.on(events_1.TrackEvent.Ended, (track) => {
41
- this.emit(events_1.ParticipantEvent.TrackUnsubscribed, track, publication);
42
- });
43
- }
44
- getTrack(source) {
45
- const track = super.getTrack(source);
46
- if (track) {
47
- return track;
48
- }
49
- }
50
- getTrackByName(name) {
51
- const track = super.getTrackByName(name);
52
- if (track) {
53
- return track;
54
- }
55
- }
56
- /** @internal */
57
- addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft) {
58
- // find the track publication
59
- // it's possible for the media track to arrive before participant info
60
- let publication = this.getTrackPublication(sid);
61
- // it's also possible that the browser didn't honor our original track id
62
- // FireFox would use its own local uuid instead of server track id
63
- if (!publication) {
64
- if (!sid.startsWith('TR')) {
65
- // find the first track that matches type
66
- this.tracks.forEach((p) => {
67
- if (!publication && mediaTrack.kind === p.kind.toString()) {
68
- publication = p;
69
- }
70
- });
71
- }
72
- }
73
- // when we couldn't locate the track, it's possible that the metadata hasn't
74
- // yet arrived. Wait a bit longer for it to arrive, or fire an error
75
- if (!publication) {
76
- if (triesLeft === 0) {
77
- logger_1.default.error('could not find published track', this.sid, sid);
78
- this.emit(events_1.ParticipantEvent.TrackSubscriptionFailed, sid);
79
- return;
80
- }
81
- if (triesLeft === undefined)
82
- triesLeft = 20;
83
- setTimeout(() => {
84
- this.addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft - 1);
85
- }, 150);
86
- return;
87
- }
88
- const isVideo = mediaTrack.kind === 'video';
89
- let track;
90
- if (isVideo) {
91
- track = new RemoteVideoTrack_1.default(mediaTrack, sid, receiver, adaptiveStreamSettings);
92
- }
93
- else {
94
- track = new RemoteAudioTrack_1.default(mediaTrack, sid, receiver);
95
- }
96
- // set track info
97
- track.source = publication.source;
98
- // keep publication's muted status
99
- track.isMuted = publication.isMuted;
100
- track.setMediaStream(mediaStream);
101
- track.start();
102
- publication.setTrack(track);
103
- this.emit(events_1.ParticipantEvent.TrackSubscribed, track, publication);
104
- return publication;
105
- }
106
- /** @internal */
107
- get hasMetadata() {
108
- return !!this.participantInfo;
109
- }
110
- getTrackPublication(sid) {
111
- return this.tracks.get(sid);
112
- }
113
- /** @internal */
114
- updateInfo(info) {
115
- const alreadyHasMetadata = this.hasMetadata;
116
- super.updateInfo(info);
117
- // we are getting a list of all available tracks, reconcile in here
118
- // and send out events for changes
119
- // reconcile track publications, publish events only if metadata is already there
120
- // i.e. changes since the local participant has joined
121
- const validTracks = new Map();
122
- const newTracks = new Map();
123
- info.tracks.forEach((ti) => {
124
- let publication = this.getTrackPublication(ti.sid);
125
- if (!publication) {
126
- // new publication
127
- const kind = Track_1.Track.kindFromProto(ti.type);
128
- if (!kind) {
129
- return;
130
- }
131
- publication = new RemoteTrackPublication_1.default(kind, ti.sid, ti.name);
132
- publication.updateInfo(ti);
133
- newTracks.set(ti.sid, publication);
134
- this.addTrackPublication(publication);
135
- }
136
- else {
137
- publication.updateInfo(ti);
138
- }
139
- validTracks.set(ti.sid, publication);
140
- });
141
- // send new tracks
142
- if (alreadyHasMetadata) {
143
- newTracks.forEach((publication) => {
144
- this.emit(events_1.ParticipantEvent.TrackPublished, publication);
145
- });
146
- }
147
- // detect removed tracks
148
- this.tracks.forEach((publication) => {
149
- if (!validTracks.has(publication.trackSid)) {
150
- this.unpublishTrack(publication.trackSid, true);
151
- }
152
- });
153
- }
154
- /** @internal */
155
- unpublishTrack(sid, sendUnpublish) {
156
- const publication = this.tracks.get(sid);
157
- if (!publication) {
158
- return;
159
- }
160
- this.tracks.delete(sid);
161
- // remove from the right type map
162
- switch (publication.kind) {
163
- case Track_1.Track.Kind.Audio:
164
- this.audioTracks.delete(sid);
165
- break;
166
- case Track_1.Track.Kind.Video:
167
- this.videoTracks.delete(sid);
168
- break;
169
- default:
170
- break;
171
- }
172
- // also send unsubscribe, if track is actively subscribed
173
- const { track } = publication;
174
- if (track) {
175
- const { isSubscribed } = publication;
176
- track.stop();
177
- publication.setTrack(undefined);
178
- // always send unsubscribed, since apps may rely on this
179
- if (isSubscribed) {
180
- this.emit(events_1.ParticipantEvent.TrackUnsubscribed, track, publication);
181
- }
182
- }
183
- if (sendUnpublish) {
184
- this.emit(events_1.ParticipantEvent.TrackUnpublished, publication);
185
- }
186
- }
187
- /** @internal */
188
- emit(event, ...args) {
189
- logger_1.default.trace('participant event', this.sid, event, ...args);
190
- return super.emit(event, ...args);
191
- }
192
- }
193
- exports.default = RemoteParticipant;
194
- //# sourceMappingURL=RemoteParticipant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteParticipant.js","sourceRoot":"","sources":["../../../src/room/participant/RemoteParticipant.ts"],"names":[],"mappings":"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"}
@@ -1,189 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sortPresets = exports.defaultSimulcastLayers = exports.presetsForResolution = exports.determineAppropriateEncoding = exports.computeVideoEncodings = exports.computeDefaultScreenShareSimulcastPresets = exports.defaultSimulcastPresets43 = exports.defaultSimulcastPresets169 = exports.presetsScreenShare = exports.presets43 = exports.presets169 = exports.mediaTrackToLocalTrack = void 0;
7
- const logger_1 = __importDefault(require("../../logger"));
8
- const errors_1 = require("../errors");
9
- const LocalAudioTrack_1 = __importDefault(require("../track/LocalAudioTrack"));
10
- const LocalVideoTrack_1 = __importDefault(require("../track/LocalVideoTrack"));
11
- const options_1 = require("../track/options");
12
- /** @internal */
13
- function mediaTrackToLocalTrack(mediaStreamTrack, constraints) {
14
- switch (mediaStreamTrack.kind) {
15
- case 'audio':
16
- return new LocalAudioTrack_1.default(mediaStreamTrack, constraints);
17
- case 'video':
18
- return new LocalVideoTrack_1.default(mediaStreamTrack, constraints);
19
- default:
20
- throw new errors_1.TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);
21
- }
22
- }
23
- exports.mediaTrackToLocalTrack = mediaTrackToLocalTrack;
24
- /* @internal */
25
- exports.presets169 = Object.values(options_1.VideoPresets);
26
- /* @internal */
27
- exports.presets43 = Object.values(options_1.VideoPresets43);
28
- /* @internal */
29
- exports.presetsScreenShare = Object.values(options_1.ScreenSharePresets);
30
- /* @internal */
31
- exports.defaultSimulcastPresets169 = [
32
- options_1.VideoPresets.h180,
33
- options_1.VideoPresets.h360,
34
- ];
35
- /* @internal */
36
- exports.defaultSimulcastPresets43 = [
37
- options_1.VideoPresets43.h180,
38
- options_1.VideoPresets43.h360,
39
- ];
40
- /* @internal */
41
- const computeDefaultScreenShareSimulcastPresets = (fromPreset) => {
42
- const layers = [{ scaleResolutionDownBy: 2, fps: 3 }];
43
- return layers.map((t) => {
44
- var _a;
45
- return new options_1.VideoPreset(Math.floor(fromPreset.width / t.scaleResolutionDownBy), Math.floor(fromPreset.height / t.scaleResolutionDownBy), Math.max(150000, Math.floor(fromPreset.encoding.maxBitrate
46
- / (Math.pow(t.scaleResolutionDownBy, 2) * (((_a = fromPreset.encoding.maxFramerate) !== null && _a !== void 0 ? _a : 30) / t.fps)))), t.fps);
47
- });
48
- };
49
- exports.computeDefaultScreenShareSimulcastPresets = computeDefaultScreenShareSimulcastPresets;
50
- const videoRids = ['q', 'h', 'f'];
51
- /* @internal */
52
- function computeVideoEncodings(isScreenShare, width, height, options) {
53
- var _a, _b;
54
- let videoEncoding = options === null || options === void 0 ? void 0 : options.videoEncoding;
55
- if (isScreenShare) {
56
- videoEncoding = options === null || options === void 0 ? void 0 : options.screenShareEncoding;
57
- }
58
- const useSimulcast = options === null || options === void 0 ? void 0 : options.simulcast;
59
- if ((!videoEncoding && !useSimulcast) || !width || !height) {
60
- // when we aren't simulcasting, will need to return a single encoding without
61
- // capping bandwidth. we always require a encoding for dynacast
62
- return [{}];
63
- }
64
- if (!videoEncoding) {
65
- // find the right encoding based on width/height
66
- videoEncoding = determineAppropriateEncoding(isScreenShare, width, height);
67
- logger_1.default.debug('using video encoding', videoEncoding);
68
- }
69
- if (!useSimulcast) {
70
- return [videoEncoding];
71
- }
72
- const original = new options_1.VideoPreset(width, height, videoEncoding.maxBitrate, videoEncoding.maxFramerate);
73
- let presets = [];
74
- if (isScreenShare) {
75
- presets = (_a = sortPresets(options === null || options === void 0 ? void 0 : options.screenShareSimulcastLayers)) !== null && _a !== void 0 ? _a : defaultSimulcastLayers(isScreenShare, original);
76
- }
77
- else {
78
- presets = (_b = sortPresets(options === null || options === void 0 ? void 0 : options.videoSimulcastLayers)) !== null && _b !== void 0 ? _b : defaultSimulcastLayers(isScreenShare, original);
79
- }
80
- let midPreset;
81
- const lowPreset = presets[0];
82
- if (presets.length > 1) {
83
- [, midPreset] = presets;
84
- }
85
- // NOTE:
86
- // 1. Ordering of these encodings is important. Chrome seems
87
- // to use the index into encodings to decide which layer
88
- // to disable when CPU constrained.
89
- // So encodings should be ordered in increasing spatial
90
- // resolution order.
91
- // 2. ion-sfu translates rids into layers. So, all encodings
92
- // should have the base layer `q` and then more added
93
- // based on other conditions.
94
- const size = Math.max(width, height);
95
- if (size >= 960 && midPreset) {
96
- return encodingsFromPresets(width, height, [
97
- lowPreset, midPreset, original,
98
- ]);
99
- }
100
- if (size >= 480) {
101
- return encodingsFromPresets(width, height, [
102
- lowPreset, original,
103
- ]);
104
- }
105
- return encodingsFromPresets(width, height, [
106
- original,
107
- ]);
108
- }
109
- exports.computeVideoEncodings = computeVideoEncodings;
110
- /* @internal */
111
- function determineAppropriateEncoding(isScreenShare, width, height) {
112
- const presets = presetsForResolution(isScreenShare, width, height);
113
- let { encoding } = presets[0];
114
- // handle portrait by swapping dimensions
115
- const size = Math.max(width, height);
116
- for (let i = 0; i < presets.length; i += 1) {
117
- const preset = presets[i];
118
- encoding = preset.encoding;
119
- if (preset.width >= size) {
120
- break;
121
- }
122
- }
123
- return encoding;
124
- }
125
- exports.determineAppropriateEncoding = determineAppropriateEncoding;
126
- /* @internal */
127
- function presetsForResolution(isScreenShare, width, height) {
128
- if (isScreenShare) {
129
- return exports.presetsScreenShare;
130
- }
131
- const aspect = width > height ? width / height : height / width;
132
- if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
133
- return exports.presets169;
134
- }
135
- return exports.presets43;
136
- }
137
- exports.presetsForResolution = presetsForResolution;
138
- /* @internal */
139
- function defaultSimulcastLayers(isScreenShare, original) {
140
- if (isScreenShare) {
141
- return exports.computeDefaultScreenShareSimulcastPresets(original);
142
- }
143
- const { width, height } = original;
144
- const aspect = width > height ? width / height : height / width;
145
- if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
146
- return exports.defaultSimulcastPresets169;
147
- }
148
- return exports.defaultSimulcastPresets43;
149
- }
150
- exports.defaultSimulcastLayers = defaultSimulcastLayers;
151
- // presets should be ordered by low, medium, high
152
- function encodingsFromPresets(width, height, presets) {
153
- const encodings = [];
154
- presets.forEach((preset, idx) => {
155
- if (idx >= videoRids.length) {
156
- return;
157
- }
158
- const size = Math.min(width, height);
159
- const rid = videoRids[idx];
160
- encodings.push({
161
- rid,
162
- scaleResolutionDownBy: size / Math.min(preset.width, preset.height),
163
- maxBitrate: preset.encoding.maxBitrate,
164
- /* @ts-ignore */
165
- maxFramerate: preset.encoding.maxFramerate,
166
- });
167
- });
168
- return encodings;
169
- }
170
- /** @internal */
171
- function sortPresets(presets) {
172
- if (!presets)
173
- return;
174
- return presets.sort((a, b) => {
175
- const { encoding: aEnc } = a;
176
- const { encoding: bEnc } = b;
177
- if (aEnc.maxBitrate > bEnc.maxBitrate) {
178
- return 1;
179
- }
180
- if (aEnc.maxBitrate < bEnc.maxBitrate)
181
- return -1;
182
- if (aEnc.maxBitrate === bEnc.maxBitrate && aEnc.maxFramerate && bEnc.maxFramerate) {
183
- return aEnc.maxFramerate > bEnc.maxFramerate ? 1 : -1;
184
- }
185
- return 0;
186
- });
187
- }
188
- exports.sortPresets = sortPresets;
189
- //# sourceMappingURL=publishUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"publishUtils.js","sourceRoot":"","sources":["../../../src/room/participant/publishUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};