livekit-client 0.17.3 → 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 (155) 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 +12 -2
  13. package/dist/proto/livekit_models.d.ts +524 -17
  14. package/dist/proto/livekit_rtc.d.ts +3449 -31
  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/room/track/options.d.ts +1 -1
  23. package/dist/test/mocks.d.ts +11 -0
  24. package/dist/version.d.ts +1 -1
  25. package/package.json +41 -16
  26. package/.eslintrc.js +0 -17
  27. package/.gitmodules +0 -3
  28. package/dist/api/RequestQueue.js +0 -61
  29. package/dist/api/RequestQueue.js.map +0 -1
  30. package/dist/api/SignalClient.js +0 -428
  31. package/dist/api/SignalClient.js.map +0 -1
  32. package/dist/connect.js +0 -130
  33. package/dist/connect.js.map +0 -1
  34. package/dist/index.js +0 -71
  35. package/dist/index.js.map +0 -1
  36. package/dist/logger.js +0 -24
  37. package/dist/logger.js.map +0 -1
  38. package/dist/options.js +0 -3
  39. package/dist/options.js.map +0 -1
  40. package/dist/proto/google/protobuf/timestamp.js +0 -93
  41. package/dist/proto/google/protobuf/timestamp.js.map +0 -1
  42. package/dist/proto/livekit_models.js +0 -2688
  43. package/dist/proto/livekit_models.js.map +0 -1
  44. package/dist/proto/livekit_rtc.js +0 -2995
  45. package/dist/proto/livekit_rtc.js.map +0 -1
  46. package/dist/room/DeviceManager.js +0 -62
  47. package/dist/room/DeviceManager.js.map +0 -1
  48. package/dist/room/PCTransport.js +0 -91
  49. package/dist/room/PCTransport.js.map +0 -1
  50. package/dist/room/RTCEngine.js +0 -562
  51. package/dist/room/RTCEngine.js.map +0 -1
  52. package/dist/room/Room.js +0 -759
  53. package/dist/room/Room.js.map +0 -1
  54. package/dist/room/errors.js +0 -68
  55. package/dist/room/errors.js.map +0 -1
  56. package/dist/room/events.js +0 -385
  57. package/dist/room/events.js.map +0 -1
  58. package/dist/room/participant/LocalParticipant.js +0 -647
  59. package/dist/room/participant/LocalParticipant.js.map +0 -1
  60. package/dist/room/participant/Participant.js +0 -189
  61. package/dist/room/participant/Participant.js.map +0 -1
  62. package/dist/room/participant/ParticipantTrackPermission.js +0 -16
  63. package/dist/room/participant/ParticipantTrackPermission.js.map +0 -1
  64. package/dist/room/participant/RemoteParticipant.js +0 -194
  65. package/dist/room/participant/RemoteParticipant.js.map +0 -1
  66. package/dist/room/participant/publishUtils.js +0 -189
  67. package/dist/room/participant/publishUtils.js.map +0 -1
  68. package/dist/room/participant/publishUtils.test.d.ts +0 -1
  69. package/dist/room/participant/publishUtils.test.js +0 -118
  70. package/dist/room/participant/publishUtils.test.js.map +0 -1
  71. package/dist/room/stats.js +0 -26
  72. package/dist/room/stats.js.map +0 -1
  73. package/dist/room/track/LocalAudioTrack.js +0 -153
  74. package/dist/room/track/LocalAudioTrack.js.map +0 -1
  75. package/dist/room/track/LocalTrack.js +0 -158
  76. package/dist/room/track/LocalTrack.js.map +0 -1
  77. package/dist/room/track/LocalTrackPublication.js +0 -64
  78. package/dist/room/track/LocalTrackPublication.js.map +0 -1
  79. package/dist/room/track/LocalVideoTrack.js +0 -297
  80. package/dist/room/track/LocalVideoTrack.js.map +0 -1
  81. package/dist/room/track/LocalVideoTrack.test.d.ts +0 -1
  82. package/dist/room/track/LocalVideoTrack.test.js +0 -68
  83. package/dist/room/track/LocalVideoTrack.test.js.map +0 -1
  84. package/dist/room/track/RemoteAudioTrack.js +0 -64
  85. package/dist/room/track/RemoteAudioTrack.js.map +0 -1
  86. package/dist/room/track/RemoteTrack.js +0 -49
  87. package/dist/room/track/RemoteTrack.js.map +0 -1
  88. package/dist/room/track/RemoteTrackPublication.js +0 -178
  89. package/dist/room/track/RemoteTrackPublication.js.map +0 -1
  90. package/dist/room/track/RemoteVideoTrack.js +0 -201
  91. package/dist/room/track/RemoteVideoTrack.js.map +0 -1
  92. package/dist/room/track/Track.js +0 -276
  93. package/dist/room/track/Track.js.map +0 -1
  94. package/dist/room/track/TrackPublication.js +0 -92
  95. package/dist/room/track/TrackPublication.js.map +0 -1
  96. package/dist/room/track/create.js +0 -131
  97. package/dist/room/track/create.js.map +0 -1
  98. package/dist/room/track/defaults.js +0 -21
  99. package/dist/room/track/defaults.js.map +0 -1
  100. package/dist/room/track/options.js +0 -100
  101. package/dist/room/track/options.js.map +0 -1
  102. package/dist/room/track/types.js +0 -3
  103. package/dist/room/track/types.js.map +0 -1
  104. package/dist/room/track/utils.js +0 -113
  105. package/dist/room/track/utils.js.map +0 -1
  106. package/dist/room/track/utils.test.d.ts +0 -1
  107. package/dist/room/track/utils.test.js +0 -85
  108. package/dist/room/track/utils.test.js.map +0 -1
  109. package/dist/room/utils.js +0 -79
  110. package/dist/room/utils.js.map +0 -1
  111. package/dist/version.js +0 -6
  112. package/dist/version.js.map +0 -1
  113. package/jest.config.js +0 -6
  114. package/src/api/RequestQueue.ts +0 -53
  115. package/src/api/SignalClient.ts +0 -499
  116. package/src/connect.ts +0 -100
  117. package/src/index.ts +0 -47
  118. package/src/logger.ts +0 -22
  119. package/src/options.ts +0 -149
  120. package/src/proto/google/protobuf/timestamp.ts +0 -222
  121. package/src/proto/livekit_models.ts +0 -3019
  122. package/src/proto/livekit_rtc.ts +0 -3677
  123. package/src/room/DeviceManager.ts +0 -57
  124. package/src/room/PCTransport.ts +0 -86
  125. package/src/room/RTCEngine.ts +0 -652
  126. package/src/room/Room.ts +0 -943
  127. package/src/room/errors.ts +0 -65
  128. package/src/room/events.ts +0 -424
  129. package/src/room/participant/LocalParticipant.ts +0 -734
  130. package/src/room/participant/Participant.ts +0 -269
  131. package/src/room/participant/ParticipantTrackPermission.ts +0 -32
  132. package/src/room/participant/RemoteParticipant.ts +0 -243
  133. package/src/room/participant/publishUtils.test.ts +0 -145
  134. package/src/room/participant/publishUtils.ts +0 -225
  135. package/src/room/stats.ts +0 -130
  136. package/src/room/track/LocalAudioTrack.ts +0 -137
  137. package/src/room/track/LocalTrack.ts +0 -161
  138. package/src/room/track/LocalTrackPublication.ts +0 -66
  139. package/src/room/track/LocalVideoTrack.test.ts +0 -70
  140. package/src/room/track/LocalVideoTrack.ts +0 -293
  141. package/src/room/track/RemoteAudioTrack.ts +0 -58
  142. package/src/room/track/RemoteTrack.ts +0 -62
  143. package/src/room/track/RemoteTrackPublication.ts +0 -198
  144. package/src/room/track/RemoteVideoTrack.ts +0 -235
  145. package/src/room/track/Track.ts +0 -337
  146. package/src/room/track/TrackPublication.ts +0 -120
  147. package/src/room/track/create.ts +0 -121
  148. package/src/room/track/defaults.ts +0 -23
  149. package/src/room/track/options.ts +0 -281
  150. package/src/room/track/types.ts +0 -20
  151. package/src/room/track/utils.test.ts +0 -93
  152. package/src/room/track/utils.ts +0 -115
  153. package/src/room/utils.ts +0 -70
  154. package/src/version.ts +0 -2
  155. 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 {};