vani-meeting-client-native 0.4.5 → 0.4.6-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/inter-communication-handler/CommunicationHandler.js +2 -0
- package/lib/model/MeetingStartRequest.d.ts +2 -1
- package/lib/model/MeetingStartRequest.js +1 -0
- package/lib/model/Participant.d.ts +1 -0
- package/lib/model/Participant.js +3 -0
- package/lib/video-call-handler/WebrtcHandler.js +65 -38
- package/lib/websocket-handler/WebsocketHandler.js +2 -0
- package/package.json +1 -1
|
@@ -573,6 +573,8 @@ var CommunicationHandler = /** @class */ (function () {
|
|
|
573
573
|
CommunicationHandler.prototype.sendWebSocketMessage = function (type, data) {
|
|
574
574
|
var _a;
|
|
575
575
|
(_a = this.websocketCallHandler) === null || _a === void 0 ? void 0 : _a.sendSocketMessage(type, data);
|
|
576
|
+
// this.meetingStartRequest && this.meetingStartRequest.logLevel === LogLevel.Debug &&
|
|
577
|
+
// console.log("sendSocketMessage",type,data)
|
|
576
578
|
};
|
|
577
579
|
// public sendWebSocketMessageForWebrtc(type: WebrtcMessageType, data: any, to : string) {
|
|
578
580
|
// this.websocketCallHandler?.sendSocketMessage(type, data)
|
|
@@ -16,6 +16,7 @@ export declare class Participant {
|
|
|
16
16
|
isRecordingUser: boolean;
|
|
17
17
|
private peerConnections;
|
|
18
18
|
getPeerConnections: () => Map<string, PeerConnection>;
|
|
19
|
+
isPeerConnectionsViaUserIdPresent: (userId: string) => PeerConnection;
|
|
19
20
|
getPeerConnectionsViaUserId: (userId: string, meetingStartRequest: MeetingStartRequest) => PeerConnection;
|
|
20
21
|
constructor(_userId: string, _roomId: string, _userData?: any, _isAdmin?: boolean);
|
|
21
22
|
}
|
package/lib/model/Participant.js
CHANGED
|
@@ -22,6 +22,9 @@ var Participant = /** @class */ (function () {
|
|
|
22
22
|
}
|
|
23
23
|
return _this.peerConnections;
|
|
24
24
|
};
|
|
25
|
+
this.isPeerConnectionsViaUserIdPresent = function (userId) {
|
|
26
|
+
return _this.getPeerConnections().get(userId);
|
|
27
|
+
};
|
|
25
28
|
this.getPeerConnectionsViaUserId = function (userId, meetingStartRequest) {
|
|
26
29
|
if (!_this.getPeerConnections().has(userId)) {
|
|
27
30
|
var peerConnection = new PeerConnection();
|
|
@@ -140,21 +140,37 @@ var WebrtcHandler = /** @class */ (function (_super) {
|
|
|
140
140
|
switch (_c.label) {
|
|
141
141
|
case 0:
|
|
142
142
|
transceiver = peerConnection.rtcPeerConnection.getTransceivers().find(function (t) { var _a, _b; return ((_b = (_a = t === null || t === void 0 ? void 0 : t.sender) === null || _a === void 0 ? void 0 : _a.track) === null || _b === void 0 ? void 0 : _b.kind) === eachKind; });
|
|
143
|
-
if (!!transceiver) return [3 /*break*/,
|
|
143
|
+
if (!!transceiver) return [3 /*break*/, 1];
|
|
144
144
|
this.printLogIfRequired("addTransceiverifRequired", eachKind);
|
|
145
145
|
realTrack = (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.getAllSelfTracks().find(function (t) { var _a; return ((_a = t.track) === null || _a === void 0 ? void 0 : _a.kind) === eachKind; });
|
|
146
146
|
newTransceiver = void 0;
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
if (realTrack && realTrack.track) {
|
|
148
|
+
this.printLogIfRequired("addTransceiverifRequired track real", eachKind, realTrack.track);
|
|
149
|
+
// newTransceiver = await peerConnection.rtcPeerConnection.addTrack(realTrack.track)
|
|
150
|
+
if (realTrack.track.kind === 'audio') {
|
|
151
|
+
newTransceiver = peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, {
|
|
152
|
+
direction: 'sendonly',
|
|
153
|
+
sendEncodings: [
|
|
154
|
+
{
|
|
155
|
+
maxBitrate: 32000,
|
|
156
|
+
priority: 'high',
|
|
157
|
+
networkPriority: 'high',
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
else if (realTrack.track.kind === 'video') {
|
|
163
|
+
newTransceiver = peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, {
|
|
164
|
+
direction: 'sendonly',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
150
167
|
// newTransceiver = await peerConnection.rtcPeerConnection.addTransceiver(realTrack.track, { direction: "sendrecv" })
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
case 2:
|
|
168
|
+
this.printLogIfRequired("addTransceiverifRequired track real end", eachKind, realTrack.track);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
// this.printLogIfRequired("addTransceiverifRequired track fake",eachKind)
|
|
172
|
+
// newTransceiver = await peerConnection.rtcPeerConnection.addTransceiver(eachKind, { direction: "sendrecv" })
|
|
173
|
+
}
|
|
158
174
|
if (eachKind === 'audio') {
|
|
159
175
|
transceiver = peerConnection.rtcPeerConnection.getTransceivers().find(function (t) { var _a, _b; return ((_b = (_a = t === null || t === void 0 ? void 0 : t.sender) === null || _a === void 0 ? void 0 : _a.track) === null || _b === void 0 ? void 0 : _b.kind) === eachKind; });
|
|
160
176
|
if (transceiver) {
|
|
@@ -162,21 +178,21 @@ var WebrtcHandler = /** @class */ (function (_super) {
|
|
|
162
178
|
}
|
|
163
179
|
// this.setOpusParams(newTransceiver);
|
|
164
180
|
}
|
|
165
|
-
return [3 /*break*/,
|
|
166
|
-
case
|
|
167
|
-
if (!shouldReplaceIfExist) return [3 /*break*/,
|
|
181
|
+
return [3 /*break*/, 3];
|
|
182
|
+
case 1:
|
|
183
|
+
if (!shouldReplaceIfExist) return [3 /*break*/, 3];
|
|
168
184
|
realTrack = (_b = this.communicationHandler) === null || _b === void 0 ? void 0 : _b.getAllSelfTracks().find(function (t) { var _a; return ((_a = t.track) === null || _a === void 0 ? void 0 : _a.kind) === eachKind; });
|
|
169
|
-
if (!(realTrack && realTrack.track)) return [3 /*break*/,
|
|
185
|
+
if (!(realTrack && realTrack.track)) return [3 /*break*/, 3];
|
|
170
186
|
this.printLogIfRequired("transceiver.sender.", transceiver.sender, eachKind);
|
|
171
187
|
return [4 /*yield*/, transceiver.sender.replaceTrack(realTrack.track)];
|
|
172
|
-
case
|
|
188
|
+
case 2:
|
|
173
189
|
_c.sent();
|
|
174
190
|
if (eachKind === 'audio') {
|
|
175
191
|
this.applyAudioPriority(transceiver);
|
|
176
192
|
// this.setOpusParams(newTransceiver);
|
|
177
193
|
}
|
|
178
|
-
_c.label =
|
|
179
|
-
case
|
|
194
|
+
_c.label = 3;
|
|
195
|
+
case 3: return [2 /*return*/];
|
|
180
196
|
}
|
|
181
197
|
});
|
|
182
198
|
});
|
|
@@ -245,10 +261,19 @@ var WebrtcHandler = /** @class */ (function (_super) {
|
|
|
245
261
|
_this.loopSendOffer = function (peerConnectionObject, participant, mungedOffer, count) {
|
|
246
262
|
if (count === void 0) { count = 0; }
|
|
247
263
|
return __awaiter(_this, void 0, void 0, function () {
|
|
248
|
-
var messageJson;
|
|
264
|
+
var selfParticpant, messageJson;
|
|
249
265
|
var _this = this;
|
|
250
|
-
|
|
251
|
-
|
|
266
|
+
var _a;
|
|
267
|
+
return __generator(this, function (_b) {
|
|
268
|
+
selfParticpant = (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.getSelfParticipant();
|
|
269
|
+
if (!selfParticpant) {
|
|
270
|
+
return [2 /*return*/];
|
|
271
|
+
}
|
|
272
|
+
if (!selfParticpant.isPeerConnectionsViaUserIdPresent(participant.userId)) {
|
|
273
|
+
this.printLogIfRequired("loopSendOffer", "Not found", selfParticpant, participant);
|
|
274
|
+
return [2 /*return*/];
|
|
275
|
+
}
|
|
276
|
+
this.printLogIfRequired("Send Offer", mungedOffer, participant);
|
|
252
277
|
messageJson = { to: participant.userId, type: WebrtcMessageType.SendOffer, data: mungedOffer };
|
|
253
278
|
this.sendWebrtcMessage(messageJson);
|
|
254
279
|
if (peerConnectionObject.remoteAnswer || count > 20) {
|
|
@@ -346,15 +371,18 @@ var WebrtcHandler = /** @class */ (function (_super) {
|
|
|
346
371
|
peerConnectionObject.remoteAnswer = data.sdp;
|
|
347
372
|
}
|
|
348
373
|
peerConnection = peerConnectionObject.rtcPeerConnection ? peerConnectionObject.rtcPeerConnection : this.dynamicLibHelper.getRTCPeerConnection(this.meetingStartRequest);
|
|
349
|
-
if (!peerConnection) return [3 /*break*/,
|
|
374
|
+
if (!peerConnection) return [3 /*break*/, 3];
|
|
375
|
+
if (!(peerConnection.signalingState === 'have-local-offer')) return [3 /*break*/, 2];
|
|
350
376
|
return [4 /*yield*/, peerConnection.setRemoteDescription({ type: 'answer', sdp: peerConnectionObject.remoteAnswer })];
|
|
351
377
|
case 1:
|
|
352
378
|
_b.sent();
|
|
379
|
+
_b.label = 2;
|
|
380
|
+
case 2:
|
|
353
381
|
peerConnectionObject.isRtcRestartIceInProgess = false;
|
|
354
382
|
this.printLogIfRequired("REMOTE SDP", (_a = peerConnection.remoteDescription) === null || _a === void 0 ? void 0 : _a.sdp);
|
|
355
383
|
this.printLogIfRequired("On New Answer setRemoteDescription", { type: 'answer', sdp: peerConnectionObject.remoteAnswer });
|
|
356
|
-
_b.label =
|
|
357
|
-
case
|
|
384
|
+
_b.label = 3;
|
|
385
|
+
case 3: return [2 /*return*/];
|
|
358
386
|
}
|
|
359
387
|
});
|
|
360
388
|
}); };
|
|
@@ -789,23 +817,22 @@ var WebrtcHandler = /** @class */ (function (_super) {
|
|
|
789
817
|
};
|
|
790
818
|
_this.applyAudioPriority = function (transceiver) {
|
|
791
819
|
var _a, _b;
|
|
792
|
-
//
|
|
793
|
-
// ✅ 1. Codec preference — Opus first
|
|
820
|
+
// Codec preference — Opus first
|
|
794
821
|
var capabilities = (_a = RTCRtpSender.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(RTCRtpSender, 'audio');
|
|
795
|
-
if (capabilities === null || capabilities === void 0 ? void 0 : capabilities.codecs)
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
//
|
|
822
|
+
if (!(capabilities === null || capabilities === void 0 ? void 0 : capabilities.codecs))
|
|
823
|
+
return;
|
|
824
|
+
var opus = capabilities.codecs.filter(function (c) {
|
|
825
|
+
return c.mimeType.toLowerCase() === 'audio/opus';
|
|
826
|
+
});
|
|
827
|
+
var rest = capabilities.codecs.filter(function (c) {
|
|
828
|
+
return c.mimeType.toLowerCase() !== 'audio/opus';
|
|
829
|
+
});
|
|
830
|
+
transceiver.setCodecPreferences(__spreadArray(__spreadArray([], __read(opus), false), __read(rest), false));
|
|
831
|
+
// maxBitrate only — priority/networkPriority already set at addTransceiver
|
|
805
832
|
var params = transceiver.sender.getParameters();
|
|
806
833
|
if (!((_b = params.encodings) === null || _b === void 0 ? void 0 : _b.length))
|
|
807
|
-
|
|
808
|
-
params.encodings[0] = __assign(__assign({}, params.encodings[0]), { maxBitrate: 32000
|
|
834
|
+
return; // nothing to update, encoding slot not ready
|
|
835
|
+
params.encodings[0] = __assign(__assign({}, params.encodings[0]), { maxBitrate: 32000 });
|
|
809
836
|
transceiver.sender.setParameters(params).catch(console.error);
|
|
810
837
|
};
|
|
811
838
|
_this.onNewTrack = function (track, receiver, transceiver, remoteParticipant) { return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -373,6 +373,8 @@ var WebsocketHandler = /** @class */ (function (_super) {
|
|
|
373
373
|
if (this.isWebScoketConnectedWithoutSetup()) {
|
|
374
374
|
var paylod = { type: type, data: data };
|
|
375
375
|
(_a = this.wss) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(paylod));
|
|
376
|
+
this.meetingStartRequest && this.meetingStartRequest.logLevel === LogLevel.Debug &&
|
|
377
|
+
console.log("sendSocketMessage", type, JSON.stringify(paylod));
|
|
376
378
|
// console.log("sendSocketMessage",type,data)
|
|
377
379
|
}
|
|
378
380
|
};
|