livekit-client 1.9.6 → 1.10.0
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/dist/livekit-client.esm.mjs +1318 -885
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts +2 -1
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/proto/livekit_models.d.ts +108 -10
- package/dist/src/proto/livekit_models.d.ts.map +1 -1
- package/dist/src/proto/livekit_rtc.d.ts +513 -194
- package/dist/src/proto/livekit_rtc.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +3 -2
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +5 -1
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +2 -2
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/publishUtils.d.ts +8 -0
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts +32 -0
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts +4 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/TrackPublication.d.ts +2 -1
- package/dist/src/room/track/TrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +1 -1
- package/dist/src/room/track/options.d.ts.map +1 -1
- package/dist/src/room/track/processor/types.d.ts +19 -0
- package/dist/src/room/track/processor/types.d.ts.map +1 -0
- package/dist/src/utils/browserParser.d.ts.map +1 -1
- package/dist/ts4.2/src/api/SignalClient.d.ts +2 -1
- package/dist/ts4.2/src/index.d.ts +1 -0
- package/dist/ts4.2/src/proto/livekit_models.d.ts +126 -12
- package/dist/ts4.2/src/proto/livekit_rtc.d.ts +617 -254
- package/dist/ts4.2/src/room/Room.d.ts +3 -2
- package/dist/ts4.2/src/room/events.d.ts +5 -1
- package/dist/ts4.2/src/room/participant/Participant.d.ts +2 -2
- package/dist/ts4.2/src/room/participant/publishUtils.d.ts +8 -0
- package/dist/ts4.2/src/room/track/LocalTrack.d.ts +32 -0
- package/dist/ts4.2/src/room/track/RemoteTrackPublication.d.ts +4 -1
- package/dist/ts4.2/src/room/track/TrackPublication.d.ts +2 -1
- package/dist/ts4.2/src/room/track/options.d.ts +1 -1
- package/dist/ts4.2/src/room/track/processor/types.d.ts +19 -0
- package/package.json +14 -13
- package/src/api/SignalClient.ts +8 -1
- package/src/index.ts +1 -0
- package/src/proto/google/protobuf/timestamp.ts +3 -3
- package/src/proto/livekit_models.ts +254 -161
- package/src/proto/livekit_rtc.ts +334 -180
- package/src/room/Room.ts +26 -1
- package/src/room/events.ts +4 -0
- package/src/room/participant/LocalParticipant.ts +23 -3
- package/src/room/participant/Participant.ts +2 -1
- package/src/room/participant/RemoteParticipant.ts +4 -1
- package/src/room/participant/publishUtils.ts +68 -12
- package/src/room/track/LocalTrack.ts +120 -16
- package/src/room/track/LocalVideoTrack.ts +96 -33
- package/src/room/track/RemoteTrackPublication.ts +8 -1
- package/src/room/track/Track.ts +3 -3
- package/src/room/track/TrackPublication.ts +2 -1
- package/src/room/track/options.ts +1 -1
- package/src/room/track/processor/types.ts +20 -0
- package/src/utils/browserParser.ts +1 -4
@@ -4302,6 +4302,43 @@ var ReconnectReason;
|
|
4302
4302
|
ReconnectReason[ReconnectReason["RR_SWITCH_CANDIDATE"] = 4] = "RR_SWITCH_CANDIDATE";
|
4303
4303
|
ReconnectReason[ReconnectReason["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
4304
4304
|
})(ReconnectReason || (ReconnectReason = {}));
|
4305
|
+
var SubscriptionError;
|
4306
|
+
(function (SubscriptionError) {
|
4307
|
+
SubscriptionError[SubscriptionError["SE_UNKOWN"] = 0] = "SE_UNKOWN";
|
4308
|
+
SubscriptionError[SubscriptionError["SE_CODEC_UNSUPPORTED"] = 1] = "SE_CODEC_UNSUPPORTED";
|
4309
|
+
SubscriptionError[SubscriptionError["SE_TRACK_NOTFOUND"] = 2] = "SE_TRACK_NOTFOUND";
|
4310
|
+
SubscriptionError[SubscriptionError["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
4311
|
+
})(SubscriptionError || (SubscriptionError = {}));
|
4312
|
+
function subscriptionErrorFromJSON(object) {
|
4313
|
+
switch (object) {
|
4314
|
+
case 0:
|
4315
|
+
case "SE_UNKOWN":
|
4316
|
+
return SubscriptionError.SE_UNKOWN;
|
4317
|
+
case 1:
|
4318
|
+
case "SE_CODEC_UNSUPPORTED":
|
4319
|
+
return SubscriptionError.SE_CODEC_UNSUPPORTED;
|
4320
|
+
case 2:
|
4321
|
+
case "SE_TRACK_NOTFOUND":
|
4322
|
+
return SubscriptionError.SE_TRACK_NOTFOUND;
|
4323
|
+
case -1:
|
4324
|
+
case "UNRECOGNIZED":
|
4325
|
+
default:
|
4326
|
+
return SubscriptionError.UNRECOGNIZED;
|
4327
|
+
}
|
4328
|
+
}
|
4329
|
+
function subscriptionErrorToJSON(object) {
|
4330
|
+
switch (object) {
|
4331
|
+
case SubscriptionError.SE_UNKOWN:
|
4332
|
+
return "SE_UNKOWN";
|
4333
|
+
case SubscriptionError.SE_CODEC_UNSUPPORTED:
|
4334
|
+
return "SE_CODEC_UNSUPPORTED";
|
4335
|
+
case SubscriptionError.SE_TRACK_NOTFOUND:
|
4336
|
+
return "SE_TRACK_NOTFOUND";
|
4337
|
+
case SubscriptionError.UNRECOGNIZED:
|
4338
|
+
default:
|
4339
|
+
return "UNRECOGNIZED";
|
4340
|
+
}
|
4341
|
+
}
|
4305
4342
|
var ParticipantInfo_State;
|
4306
4343
|
(function (ParticipantInfo_State) {
|
4307
4344
|
/** JOINING - websocket' connected, but not offered yet */
|
@@ -4582,73 +4619,73 @@ const Room$1 = {
|
|
4582
4619
|
const tag = reader.uint32();
|
4583
4620
|
switch (tag >>> 3) {
|
4584
4621
|
case 1:
|
4585
|
-
if (tag
|
4622
|
+
if (tag !== 10) {
|
4586
4623
|
break;
|
4587
4624
|
}
|
4588
4625
|
message.sid = reader.string();
|
4589
4626
|
continue;
|
4590
4627
|
case 2:
|
4591
|
-
if (tag
|
4628
|
+
if (tag !== 18) {
|
4592
4629
|
break;
|
4593
4630
|
}
|
4594
4631
|
message.name = reader.string();
|
4595
4632
|
continue;
|
4596
4633
|
case 3:
|
4597
|
-
if (tag
|
4634
|
+
if (tag !== 24) {
|
4598
4635
|
break;
|
4599
4636
|
}
|
4600
4637
|
message.emptyTimeout = reader.uint32();
|
4601
4638
|
continue;
|
4602
4639
|
case 4:
|
4603
|
-
if (tag
|
4640
|
+
if (tag !== 32) {
|
4604
4641
|
break;
|
4605
4642
|
}
|
4606
4643
|
message.maxParticipants = reader.uint32();
|
4607
4644
|
continue;
|
4608
4645
|
case 5:
|
4609
|
-
if (tag
|
4646
|
+
if (tag !== 40) {
|
4610
4647
|
break;
|
4611
4648
|
}
|
4612
4649
|
message.creationTime = longToNumber$1(reader.int64());
|
4613
4650
|
continue;
|
4614
4651
|
case 6:
|
4615
|
-
if (tag
|
4652
|
+
if (tag !== 50) {
|
4616
4653
|
break;
|
4617
4654
|
}
|
4618
4655
|
message.turnPassword = reader.string();
|
4619
4656
|
continue;
|
4620
4657
|
case 7:
|
4621
|
-
if (tag
|
4658
|
+
if (tag !== 58) {
|
4622
4659
|
break;
|
4623
4660
|
}
|
4624
4661
|
message.enabledCodecs.push(Codec.decode(reader, reader.uint32()));
|
4625
4662
|
continue;
|
4626
4663
|
case 8:
|
4627
|
-
if (tag
|
4664
|
+
if (tag !== 66) {
|
4628
4665
|
break;
|
4629
4666
|
}
|
4630
4667
|
message.metadata = reader.string();
|
4631
4668
|
continue;
|
4632
4669
|
case 9:
|
4633
|
-
if (tag
|
4670
|
+
if (tag !== 72) {
|
4634
4671
|
break;
|
4635
4672
|
}
|
4636
4673
|
message.numParticipants = reader.uint32();
|
4637
4674
|
continue;
|
4638
4675
|
case 11:
|
4639
|
-
if (tag
|
4676
|
+
if (tag !== 88) {
|
4640
4677
|
break;
|
4641
4678
|
}
|
4642
4679
|
message.numPublishers = reader.uint32();
|
4643
4680
|
continue;
|
4644
4681
|
case 10:
|
4645
|
-
if (tag
|
4682
|
+
if (tag !== 80) {
|
4646
4683
|
break;
|
4647
4684
|
}
|
4648
4685
|
message.activeRecording = reader.bool();
|
4649
4686
|
continue;
|
4650
4687
|
}
|
4651
|
-
if ((tag & 7)
|
4688
|
+
if ((tag & 7) === 4 || tag === 0) {
|
4652
4689
|
break;
|
4653
4690
|
}
|
4654
4691
|
reader.skipType(tag & 7);
|
@@ -4734,19 +4771,19 @@ const Codec = {
|
|
4734
4771
|
const tag = reader.uint32();
|
4735
4772
|
switch (tag >>> 3) {
|
4736
4773
|
case 1:
|
4737
|
-
if (tag
|
4774
|
+
if (tag !== 10) {
|
4738
4775
|
break;
|
4739
4776
|
}
|
4740
4777
|
message.mime = reader.string();
|
4741
4778
|
continue;
|
4742
4779
|
case 2:
|
4743
|
-
if (tag
|
4780
|
+
if (tag !== 18) {
|
4744
4781
|
break;
|
4745
4782
|
}
|
4746
4783
|
message.fmtpLine = reader.string();
|
4747
4784
|
continue;
|
4748
4785
|
}
|
4749
|
-
if ((tag & 7)
|
4786
|
+
if ((tag & 7) === 4 || tag === 0) {
|
4750
4787
|
break;
|
4751
4788
|
}
|
4752
4789
|
reader.skipType(tag & 7);
|
@@ -4823,29 +4860,29 @@ const ParticipantPermission = {
|
|
4823
4860
|
const tag = reader.uint32();
|
4824
4861
|
switch (tag >>> 3) {
|
4825
4862
|
case 1:
|
4826
|
-
if (tag
|
4863
|
+
if (tag !== 8) {
|
4827
4864
|
break;
|
4828
4865
|
}
|
4829
4866
|
message.canSubscribe = reader.bool();
|
4830
4867
|
continue;
|
4831
4868
|
case 2:
|
4832
|
-
if (tag
|
4869
|
+
if (tag !== 16) {
|
4833
4870
|
break;
|
4834
4871
|
}
|
4835
4872
|
message.canPublish = reader.bool();
|
4836
4873
|
continue;
|
4837
4874
|
case 3:
|
4838
|
-
if (tag
|
4875
|
+
if (tag !== 24) {
|
4839
4876
|
break;
|
4840
4877
|
}
|
4841
4878
|
message.canPublishData = reader.bool();
|
4842
4879
|
continue;
|
4843
4880
|
case 9:
|
4844
|
-
if (tag
|
4881
|
+
if (tag === 72) {
|
4845
4882
|
message.canPublishSources.push(reader.int32());
|
4846
4883
|
continue;
|
4847
4884
|
}
|
4848
|
-
if (tag
|
4885
|
+
if (tag === 74) {
|
4849
4886
|
const end2 = reader.uint32() + reader.pos;
|
4850
4887
|
while (reader.pos < end2) {
|
4851
4888
|
message.canPublishSources.push(reader.int32());
|
@@ -4854,25 +4891,25 @@ const ParticipantPermission = {
|
|
4854
4891
|
}
|
4855
4892
|
break;
|
4856
4893
|
case 7:
|
4857
|
-
if (tag
|
4894
|
+
if (tag !== 56) {
|
4858
4895
|
break;
|
4859
4896
|
}
|
4860
4897
|
message.hidden = reader.bool();
|
4861
4898
|
continue;
|
4862
4899
|
case 8:
|
4863
|
-
if (tag
|
4900
|
+
if (tag !== 64) {
|
4864
4901
|
break;
|
4865
4902
|
}
|
4866
4903
|
message.recorder = reader.bool();
|
4867
4904
|
continue;
|
4868
4905
|
case 10:
|
4869
|
-
if (tag
|
4906
|
+
if (tag !== 80) {
|
4870
4907
|
break;
|
4871
4908
|
}
|
4872
4909
|
message.canUpdateMetadata = reader.bool();
|
4873
4910
|
continue;
|
4874
4911
|
}
|
4875
|
-
if ((tag & 7)
|
4912
|
+
if ((tag & 7) === 4 || tag === 0) {
|
4876
4913
|
break;
|
4877
4914
|
}
|
4878
4915
|
reader.skipType(tag & 7);
|
@@ -4982,73 +5019,73 @@ const ParticipantInfo = {
|
|
4982
5019
|
const tag = reader.uint32();
|
4983
5020
|
switch (tag >>> 3) {
|
4984
5021
|
case 1:
|
4985
|
-
if (tag
|
5022
|
+
if (tag !== 10) {
|
4986
5023
|
break;
|
4987
5024
|
}
|
4988
5025
|
message.sid = reader.string();
|
4989
5026
|
continue;
|
4990
5027
|
case 2:
|
4991
|
-
if (tag
|
5028
|
+
if (tag !== 18) {
|
4992
5029
|
break;
|
4993
5030
|
}
|
4994
5031
|
message.identity = reader.string();
|
4995
5032
|
continue;
|
4996
5033
|
case 3:
|
4997
|
-
if (tag
|
5034
|
+
if (tag !== 24) {
|
4998
5035
|
break;
|
4999
5036
|
}
|
5000
5037
|
message.state = reader.int32();
|
5001
5038
|
continue;
|
5002
5039
|
case 4:
|
5003
|
-
if (tag
|
5040
|
+
if (tag !== 34) {
|
5004
5041
|
break;
|
5005
5042
|
}
|
5006
5043
|
message.tracks.push(TrackInfo.decode(reader, reader.uint32()));
|
5007
5044
|
continue;
|
5008
5045
|
case 5:
|
5009
|
-
if (tag
|
5046
|
+
if (tag !== 42) {
|
5010
5047
|
break;
|
5011
5048
|
}
|
5012
5049
|
message.metadata = reader.string();
|
5013
5050
|
continue;
|
5014
5051
|
case 6:
|
5015
|
-
if (tag
|
5052
|
+
if (tag !== 48) {
|
5016
5053
|
break;
|
5017
5054
|
}
|
5018
5055
|
message.joinedAt = longToNumber$1(reader.int64());
|
5019
5056
|
continue;
|
5020
5057
|
case 9:
|
5021
|
-
if (tag
|
5058
|
+
if (tag !== 74) {
|
5022
5059
|
break;
|
5023
5060
|
}
|
5024
5061
|
message.name = reader.string();
|
5025
5062
|
continue;
|
5026
5063
|
case 10:
|
5027
|
-
if (tag
|
5064
|
+
if (tag !== 80) {
|
5028
5065
|
break;
|
5029
5066
|
}
|
5030
5067
|
message.version = reader.uint32();
|
5031
5068
|
continue;
|
5032
5069
|
case 11:
|
5033
|
-
if (tag
|
5070
|
+
if (tag !== 90) {
|
5034
5071
|
break;
|
5035
5072
|
}
|
5036
5073
|
message.permission = ParticipantPermission.decode(reader, reader.uint32());
|
5037
5074
|
continue;
|
5038
5075
|
case 12:
|
5039
|
-
if (tag
|
5076
|
+
if (tag !== 98) {
|
5040
5077
|
break;
|
5041
5078
|
}
|
5042
5079
|
message.region = reader.string();
|
5043
5080
|
continue;
|
5044
5081
|
case 13:
|
5045
|
-
if (tag
|
5082
|
+
if (tag !== 104) {
|
5046
5083
|
break;
|
5047
5084
|
}
|
5048
5085
|
message.isPublisher = reader.bool();
|
5049
5086
|
continue;
|
5050
5087
|
}
|
5051
|
-
if ((tag & 7)
|
5088
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5052
5089
|
break;
|
5053
5090
|
}
|
5054
5091
|
reader.skipType(tag & 7);
|
@@ -5142,31 +5179,31 @@ const SimulcastCodecInfo = {
|
|
5142
5179
|
const tag = reader.uint32();
|
5143
5180
|
switch (tag >>> 3) {
|
5144
5181
|
case 1:
|
5145
|
-
if (tag
|
5182
|
+
if (tag !== 10) {
|
5146
5183
|
break;
|
5147
5184
|
}
|
5148
5185
|
message.mimeType = reader.string();
|
5149
5186
|
continue;
|
5150
5187
|
case 2:
|
5151
|
-
if (tag
|
5188
|
+
if (tag !== 18) {
|
5152
5189
|
break;
|
5153
5190
|
}
|
5154
5191
|
message.mid = reader.string();
|
5155
5192
|
continue;
|
5156
5193
|
case 3:
|
5157
|
-
if (tag
|
5194
|
+
if (tag !== 26) {
|
5158
5195
|
break;
|
5159
5196
|
}
|
5160
5197
|
message.cid = reader.string();
|
5161
5198
|
continue;
|
5162
5199
|
case 4:
|
5163
|
-
if (tag
|
5200
|
+
if (tag !== 34) {
|
5164
5201
|
break;
|
5165
5202
|
}
|
5166
5203
|
message.layers.push(VideoLayer.decode(reader, reader.uint32()));
|
5167
5204
|
continue;
|
5168
5205
|
}
|
5169
|
-
if ((tag & 7)
|
5206
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5170
5207
|
break;
|
5171
5208
|
}
|
5172
5209
|
reader.skipType(tag & 7);
|
@@ -5287,103 +5324,103 @@ const TrackInfo = {
|
|
5287
5324
|
const tag = reader.uint32();
|
5288
5325
|
switch (tag >>> 3) {
|
5289
5326
|
case 1:
|
5290
|
-
if (tag
|
5327
|
+
if (tag !== 10) {
|
5291
5328
|
break;
|
5292
5329
|
}
|
5293
5330
|
message.sid = reader.string();
|
5294
5331
|
continue;
|
5295
5332
|
case 2:
|
5296
|
-
if (tag
|
5333
|
+
if (tag !== 16) {
|
5297
5334
|
break;
|
5298
5335
|
}
|
5299
5336
|
message.type = reader.int32();
|
5300
5337
|
continue;
|
5301
5338
|
case 3:
|
5302
|
-
if (tag
|
5339
|
+
if (tag !== 26) {
|
5303
5340
|
break;
|
5304
5341
|
}
|
5305
5342
|
message.name = reader.string();
|
5306
5343
|
continue;
|
5307
5344
|
case 4:
|
5308
|
-
if (tag
|
5345
|
+
if (tag !== 32) {
|
5309
5346
|
break;
|
5310
5347
|
}
|
5311
5348
|
message.muted = reader.bool();
|
5312
5349
|
continue;
|
5313
5350
|
case 5:
|
5314
|
-
if (tag
|
5351
|
+
if (tag !== 40) {
|
5315
5352
|
break;
|
5316
5353
|
}
|
5317
5354
|
message.width = reader.uint32();
|
5318
5355
|
continue;
|
5319
5356
|
case 6:
|
5320
|
-
if (tag
|
5357
|
+
if (tag !== 48) {
|
5321
5358
|
break;
|
5322
5359
|
}
|
5323
5360
|
message.height = reader.uint32();
|
5324
5361
|
continue;
|
5325
5362
|
case 7:
|
5326
|
-
if (tag
|
5363
|
+
if (tag !== 56) {
|
5327
5364
|
break;
|
5328
5365
|
}
|
5329
5366
|
message.simulcast = reader.bool();
|
5330
5367
|
continue;
|
5331
5368
|
case 8:
|
5332
|
-
if (tag
|
5369
|
+
if (tag !== 64) {
|
5333
5370
|
break;
|
5334
5371
|
}
|
5335
5372
|
message.disableDtx = reader.bool();
|
5336
5373
|
continue;
|
5337
5374
|
case 9:
|
5338
|
-
if (tag
|
5375
|
+
if (tag !== 72) {
|
5339
5376
|
break;
|
5340
5377
|
}
|
5341
5378
|
message.source = reader.int32();
|
5342
5379
|
continue;
|
5343
5380
|
case 10:
|
5344
|
-
if (tag
|
5381
|
+
if (tag !== 82) {
|
5345
5382
|
break;
|
5346
5383
|
}
|
5347
5384
|
message.layers.push(VideoLayer.decode(reader, reader.uint32()));
|
5348
5385
|
continue;
|
5349
5386
|
case 11:
|
5350
|
-
if (tag
|
5387
|
+
if (tag !== 90) {
|
5351
5388
|
break;
|
5352
5389
|
}
|
5353
5390
|
message.mimeType = reader.string();
|
5354
5391
|
continue;
|
5355
5392
|
case 12:
|
5356
|
-
if (tag
|
5393
|
+
if (tag !== 98) {
|
5357
5394
|
break;
|
5358
5395
|
}
|
5359
5396
|
message.mid = reader.string();
|
5360
5397
|
continue;
|
5361
5398
|
case 13:
|
5362
|
-
if (tag
|
5399
|
+
if (tag !== 106) {
|
5363
5400
|
break;
|
5364
5401
|
}
|
5365
5402
|
message.codecs.push(SimulcastCodecInfo.decode(reader, reader.uint32()));
|
5366
5403
|
continue;
|
5367
5404
|
case 14:
|
5368
|
-
if (tag
|
5405
|
+
if (tag !== 112) {
|
5369
5406
|
break;
|
5370
5407
|
}
|
5371
5408
|
message.stereo = reader.bool();
|
5372
5409
|
continue;
|
5373
5410
|
case 15:
|
5374
|
-
if (tag
|
5411
|
+
if (tag !== 120) {
|
5375
5412
|
break;
|
5376
5413
|
}
|
5377
5414
|
message.disableRed = reader.bool();
|
5378
5415
|
continue;
|
5379
5416
|
case 16:
|
5380
|
-
if (tag
|
5417
|
+
if (tag !== 128) {
|
5381
5418
|
break;
|
5382
5419
|
}
|
5383
5420
|
message.encryption = reader.int32();
|
5384
5421
|
continue;
|
5385
5422
|
}
|
5386
|
-
if ((tag & 7)
|
5423
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5387
5424
|
break;
|
5388
5425
|
}
|
5389
5426
|
reader.skipType(tag & 7);
|
@@ -5500,37 +5537,37 @@ const VideoLayer = {
|
|
5500
5537
|
const tag = reader.uint32();
|
5501
5538
|
switch (tag >>> 3) {
|
5502
5539
|
case 1:
|
5503
|
-
if (tag
|
5540
|
+
if (tag !== 8) {
|
5504
5541
|
break;
|
5505
5542
|
}
|
5506
5543
|
message.quality = reader.int32();
|
5507
5544
|
continue;
|
5508
5545
|
case 2:
|
5509
|
-
if (tag
|
5546
|
+
if (tag !== 16) {
|
5510
5547
|
break;
|
5511
5548
|
}
|
5512
5549
|
message.width = reader.uint32();
|
5513
5550
|
continue;
|
5514
5551
|
case 3:
|
5515
|
-
if (tag
|
5552
|
+
if (tag !== 24) {
|
5516
5553
|
break;
|
5517
5554
|
}
|
5518
5555
|
message.height = reader.uint32();
|
5519
5556
|
continue;
|
5520
5557
|
case 4:
|
5521
|
-
if (tag
|
5558
|
+
if (tag !== 32) {
|
5522
5559
|
break;
|
5523
5560
|
}
|
5524
5561
|
message.bitrate = reader.uint32();
|
5525
5562
|
continue;
|
5526
5563
|
case 5:
|
5527
|
-
if (tag
|
5564
|
+
if (tag !== 40) {
|
5528
5565
|
break;
|
5529
5566
|
}
|
5530
5567
|
message.ssrc = reader.uint32();
|
5531
5568
|
continue;
|
5532
5569
|
}
|
5533
|
-
if ((tag & 7)
|
5570
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5534
5571
|
break;
|
5535
5572
|
}
|
5536
5573
|
reader.skipType(tag & 7);
|
@@ -5600,13 +5637,13 @@ const DataPacket = {
|
|
5600
5637
|
const tag = reader.uint32();
|
5601
5638
|
switch (tag >>> 3) {
|
5602
5639
|
case 1:
|
5603
|
-
if (tag
|
5640
|
+
if (tag !== 8) {
|
5604
5641
|
break;
|
5605
5642
|
}
|
5606
5643
|
message.kind = reader.int32();
|
5607
5644
|
continue;
|
5608
5645
|
case 2:
|
5609
|
-
if (tag
|
5646
|
+
if (tag !== 18) {
|
5610
5647
|
break;
|
5611
5648
|
}
|
5612
5649
|
message.value = {
|
@@ -5615,7 +5652,7 @@ const DataPacket = {
|
|
5615
5652
|
};
|
5616
5653
|
continue;
|
5617
5654
|
case 3:
|
5618
|
-
if (tag
|
5655
|
+
if (tag !== 26) {
|
5619
5656
|
break;
|
5620
5657
|
}
|
5621
5658
|
message.value = {
|
@@ -5624,7 +5661,7 @@ const DataPacket = {
|
|
5624
5661
|
};
|
5625
5662
|
continue;
|
5626
5663
|
}
|
5627
|
-
if ((tag & 7)
|
5664
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5628
5665
|
break;
|
5629
5666
|
}
|
5630
5667
|
reader.skipType(tag & 7);
|
@@ -5694,13 +5731,13 @@ const ActiveSpeakerUpdate = {
|
|
5694
5731
|
const tag = reader.uint32();
|
5695
5732
|
switch (tag >>> 3) {
|
5696
5733
|
case 1:
|
5697
|
-
if (tag
|
5734
|
+
if (tag !== 10) {
|
5698
5735
|
break;
|
5699
5736
|
}
|
5700
5737
|
message.speakers.push(SpeakerInfo.decode(reader, reader.uint32()));
|
5701
5738
|
continue;
|
5702
5739
|
}
|
5703
|
-
if ((tag & 7)
|
5740
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5704
5741
|
break;
|
5705
5742
|
}
|
5706
5743
|
reader.skipType(tag & 7);
|
@@ -5760,25 +5797,25 @@ const SpeakerInfo = {
|
|
5760
5797
|
const tag = reader.uint32();
|
5761
5798
|
switch (tag >>> 3) {
|
5762
5799
|
case 1:
|
5763
|
-
if (tag
|
5800
|
+
if (tag !== 10) {
|
5764
5801
|
break;
|
5765
5802
|
}
|
5766
5803
|
message.sid = reader.string();
|
5767
5804
|
continue;
|
5768
5805
|
case 2:
|
5769
|
-
if (tag
|
5806
|
+
if (tag !== 21) {
|
5770
5807
|
break;
|
5771
5808
|
}
|
5772
5809
|
message.level = reader.float();
|
5773
5810
|
continue;
|
5774
5811
|
case 3:
|
5775
|
-
if (tag
|
5812
|
+
if (tag !== 24) {
|
5776
5813
|
break;
|
5777
5814
|
}
|
5778
5815
|
message.active = reader.bool();
|
5779
5816
|
continue;
|
5780
5817
|
}
|
5781
|
-
if ((tag & 7)
|
5818
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5782
5819
|
break;
|
5783
5820
|
}
|
5784
5821
|
reader.skipType(tag & 7);
|
@@ -5844,31 +5881,31 @@ const UserPacket = {
|
|
5844
5881
|
const tag = reader.uint32();
|
5845
5882
|
switch (tag >>> 3) {
|
5846
5883
|
case 1:
|
5847
|
-
if (tag
|
5884
|
+
if (tag !== 10) {
|
5848
5885
|
break;
|
5849
5886
|
}
|
5850
5887
|
message.participantSid = reader.string();
|
5851
5888
|
continue;
|
5852
5889
|
case 2:
|
5853
|
-
if (tag
|
5890
|
+
if (tag !== 18) {
|
5854
5891
|
break;
|
5855
5892
|
}
|
5856
5893
|
message.payload = reader.bytes();
|
5857
5894
|
continue;
|
5858
5895
|
case 3:
|
5859
|
-
if (tag
|
5896
|
+
if (tag !== 26) {
|
5860
5897
|
break;
|
5861
5898
|
}
|
5862
5899
|
message.destinationSids.push(reader.string());
|
5863
5900
|
continue;
|
5864
5901
|
case 4:
|
5865
|
-
if (tag
|
5902
|
+
if (tag !== 34) {
|
5866
5903
|
break;
|
5867
5904
|
}
|
5868
5905
|
message.topic = reader.string();
|
5869
5906
|
continue;
|
5870
5907
|
}
|
5871
|
-
if ((tag & 7)
|
5908
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5872
5909
|
break;
|
5873
5910
|
}
|
5874
5911
|
reader.skipType(tag & 7);
|
@@ -5878,7 +5915,7 @@ const UserPacket = {
|
|
5878
5915
|
fromJSON(object) {
|
5879
5916
|
return {
|
5880
5917
|
participantSid: isSet$1(object.participantSid) ? String(object.participantSid) : "",
|
5881
|
-
payload: isSet$1(object.payload) ? bytesFromBase64(object.payload) : new Uint8Array(),
|
5918
|
+
payload: isSet$1(object.payload) ? bytesFromBase64$1(object.payload) : new Uint8Array(),
|
5882
5919
|
destinationSids: Array.isArray(object === null || object === void 0 ? void 0 : object.destinationSids) ? object.destinationSids.map(e => String(e)) : [],
|
5883
5920
|
topic: isSet$1(object.topic) ? String(object.topic) : undefined
|
5884
5921
|
};
|
@@ -5886,7 +5923,7 @@ const UserPacket = {
|
|
5886
5923
|
toJSON(message) {
|
5887
5924
|
const obj = {};
|
5888
5925
|
message.participantSid !== undefined && (obj.participantSid = message.participantSid);
|
5889
|
-
message.payload !== undefined && (obj.payload = base64FromBytes(message.payload !== undefined ? message.payload : new Uint8Array()));
|
5926
|
+
message.payload !== undefined && (obj.payload = base64FromBytes$1(message.payload !== undefined ? message.payload : new Uint8Array()));
|
5890
5927
|
if (message.destinationSids) {
|
5891
5928
|
obj.destinationSids = message.destinationSids.map(e => e);
|
5892
5929
|
} else {
|
@@ -5933,19 +5970,19 @@ const ParticipantTracks = {
|
|
5933
5970
|
const tag = reader.uint32();
|
5934
5971
|
switch (tag >>> 3) {
|
5935
5972
|
case 1:
|
5936
|
-
if (tag
|
5973
|
+
if (tag !== 10) {
|
5937
5974
|
break;
|
5938
5975
|
}
|
5939
5976
|
message.participantSid = reader.string();
|
5940
5977
|
continue;
|
5941
5978
|
case 2:
|
5942
|
-
if (tag
|
5979
|
+
if (tag !== 18) {
|
5943
5980
|
break;
|
5944
5981
|
}
|
5945
5982
|
message.trackSids.push(reader.string());
|
5946
5983
|
continue;
|
5947
5984
|
}
|
5948
|
-
if ((tag & 7)
|
5985
|
+
if ((tag & 7) === 4 || tag === 0) {
|
5949
5986
|
break;
|
5950
5987
|
}
|
5951
5988
|
reader.skipType(tag & 7);
|
@@ -6020,43 +6057,43 @@ const ServerInfo = {
|
|
6020
6057
|
const tag = reader.uint32();
|
6021
6058
|
switch (tag >>> 3) {
|
6022
6059
|
case 1:
|
6023
|
-
if (tag
|
6060
|
+
if (tag !== 8) {
|
6024
6061
|
break;
|
6025
6062
|
}
|
6026
6063
|
message.edition = reader.int32();
|
6027
6064
|
continue;
|
6028
6065
|
case 2:
|
6029
|
-
if (tag
|
6066
|
+
if (tag !== 18) {
|
6030
6067
|
break;
|
6031
6068
|
}
|
6032
6069
|
message.version = reader.string();
|
6033
6070
|
continue;
|
6034
6071
|
case 3:
|
6035
|
-
if (tag
|
6072
|
+
if (tag !== 24) {
|
6036
6073
|
break;
|
6037
6074
|
}
|
6038
6075
|
message.protocol = reader.int32();
|
6039
6076
|
continue;
|
6040
6077
|
case 4:
|
6041
|
-
if (tag
|
6078
|
+
if (tag !== 34) {
|
6042
6079
|
break;
|
6043
6080
|
}
|
6044
6081
|
message.region = reader.string();
|
6045
6082
|
continue;
|
6046
6083
|
case 5:
|
6047
|
-
if (tag
|
6084
|
+
if (tag !== 42) {
|
6048
6085
|
break;
|
6049
6086
|
}
|
6050
6087
|
message.nodeId = reader.string();
|
6051
6088
|
continue;
|
6052
6089
|
case 6:
|
6053
|
-
if (tag
|
6090
|
+
if (tag !== 50) {
|
6054
6091
|
break;
|
6055
6092
|
}
|
6056
6093
|
message.debugInfo = reader.string();
|
6057
6094
|
continue;
|
6058
6095
|
}
|
6059
|
-
if ((tag & 7)
|
6096
|
+
if ((tag & 7) === 4 || tag === 0) {
|
6060
6097
|
break;
|
6061
6098
|
}
|
6062
6099
|
reader.skipType(tag & 7);
|
@@ -6155,67 +6192,67 @@ const ClientInfo = {
|
|
6155
6192
|
const tag = reader.uint32();
|
6156
6193
|
switch (tag >>> 3) {
|
6157
6194
|
case 1:
|
6158
|
-
if (tag
|
6195
|
+
if (tag !== 8) {
|
6159
6196
|
break;
|
6160
6197
|
}
|
6161
6198
|
message.sdk = reader.int32();
|
6162
6199
|
continue;
|
6163
6200
|
case 2:
|
6164
|
-
if (tag
|
6201
|
+
if (tag !== 18) {
|
6165
6202
|
break;
|
6166
6203
|
}
|
6167
6204
|
message.version = reader.string();
|
6168
6205
|
continue;
|
6169
6206
|
case 3:
|
6170
|
-
if (tag
|
6207
|
+
if (tag !== 24) {
|
6171
6208
|
break;
|
6172
6209
|
}
|
6173
6210
|
message.protocol = reader.int32();
|
6174
6211
|
continue;
|
6175
6212
|
case 4:
|
6176
|
-
if (tag
|
6213
|
+
if (tag !== 34) {
|
6177
6214
|
break;
|
6178
6215
|
}
|
6179
6216
|
message.os = reader.string();
|
6180
6217
|
continue;
|
6181
6218
|
case 5:
|
6182
|
-
if (tag
|
6219
|
+
if (tag !== 42) {
|
6183
6220
|
break;
|
6184
6221
|
}
|
6185
6222
|
message.osVersion = reader.string();
|
6186
6223
|
continue;
|
6187
6224
|
case 6:
|
6188
|
-
if (tag
|
6225
|
+
if (tag !== 50) {
|
6189
6226
|
break;
|
6190
6227
|
}
|
6191
6228
|
message.deviceModel = reader.string();
|
6192
6229
|
continue;
|
6193
6230
|
case 7:
|
6194
|
-
if (tag
|
6231
|
+
if (tag !== 58) {
|
6195
6232
|
break;
|
6196
6233
|
}
|
6197
6234
|
message.browser = reader.string();
|
6198
6235
|
continue;
|
6199
6236
|
case 8:
|
6200
|
-
if (tag
|
6237
|
+
if (tag !== 66) {
|
6201
6238
|
break;
|
6202
6239
|
}
|
6203
6240
|
message.browserVersion = reader.string();
|
6204
6241
|
continue;
|
6205
6242
|
case 9:
|
6206
|
-
if (tag
|
6243
|
+
if (tag !== 74) {
|
6207
6244
|
break;
|
6208
6245
|
}
|
6209
6246
|
message.address = reader.string();
|
6210
6247
|
continue;
|
6211
6248
|
case 10:
|
6212
|
-
if (tag
|
6249
|
+
if (tag !== 82) {
|
6213
6250
|
break;
|
6214
6251
|
}
|
6215
6252
|
message.network = reader.string();
|
6216
6253
|
continue;
|
6217
6254
|
}
|
6218
|
-
if ((tag & 7)
|
6255
|
+
if ((tag & 7) === 4 || tag === 0) {
|
6219
6256
|
break;
|
6220
6257
|
}
|
6221
6258
|
reader.skipType(tag & 7);
|
@@ -6306,37 +6343,37 @@ const ClientConfiguration = {
|
|
6306
6343
|
const tag = reader.uint32();
|
6307
6344
|
switch (tag >>> 3) {
|
6308
6345
|
case 1:
|
6309
|
-
if (tag
|
6346
|
+
if (tag !== 10) {
|
6310
6347
|
break;
|
6311
6348
|
}
|
6312
6349
|
message.video = VideoConfiguration.decode(reader, reader.uint32());
|
6313
6350
|
continue;
|
6314
6351
|
case 2:
|
6315
|
-
if (tag
|
6352
|
+
if (tag !== 18) {
|
6316
6353
|
break;
|
6317
6354
|
}
|
6318
6355
|
message.screen = VideoConfiguration.decode(reader, reader.uint32());
|
6319
6356
|
continue;
|
6320
6357
|
case 3:
|
6321
|
-
if (tag
|
6358
|
+
if (tag !== 24) {
|
6322
6359
|
break;
|
6323
6360
|
}
|
6324
6361
|
message.resumeConnection = reader.int32();
|
6325
6362
|
continue;
|
6326
6363
|
case 4:
|
6327
|
-
if (tag
|
6364
|
+
if (tag !== 34) {
|
6328
6365
|
break;
|
6329
6366
|
}
|
6330
6367
|
message.disabledCodecs = DisabledCodecs.decode(reader, reader.uint32());
|
6331
6368
|
continue;
|
6332
6369
|
case 5:
|
6333
|
-
if (tag
|
6370
|
+
if (tag !== 40) {
|
6334
6371
|
break;
|
6335
6372
|
}
|
6336
6373
|
message.forceRelay = reader.int32();
|
6337
6374
|
continue;
|
6338
6375
|
}
|
6339
|
-
if ((tag & 7)
|
6376
|
+
if ((tag & 7) === 4 || tag === 0) {
|
6340
6377
|
break;
|
6341
6378
|
}
|
6342
6379
|
reader.skipType(tag & 7);
|
@@ -6396,13 +6433,13 @@ const VideoConfiguration = {
|
|
6396
6433
|
const tag = reader.uint32();
|
6397
6434
|
switch (tag >>> 3) {
|
6398
6435
|
case 1:
|
6399
|
-
if (tag
|
6436
|
+
if (tag !== 8) {
|
6400
6437
|
break;
|
6401
6438
|
}
|
6402
6439
|
message.hardwareEncoder = reader.int32();
|
6403
6440
|
continue;
|
6404
6441
|
}
|
6405
|
-
if ((tag & 7)
|
6442
|
+
if ((tag & 7) === 4 || tag === 0) {
|
6406
6443
|
break;
|
6407
6444
|
}
|
6408
6445
|
reader.skipType(tag & 7);
|
@@ -6431,7 +6468,8 @@ const VideoConfiguration = {
|
|
6431
6468
|
};
|
6432
6469
|
function createBaseDisabledCodecs() {
|
6433
6470
|
return {
|
6434
|
-
codecs: []
|
6471
|
+
codecs: [],
|
6472
|
+
publish: []
|
6435
6473
|
};
|
6436
6474
|
}
|
6437
6475
|
const DisabledCodecs = {
|
@@ -6440,6 +6478,9 @@ const DisabledCodecs = {
|
|
6440
6478
|
for (const v of message.codecs) {
|
6441
6479
|
Codec.encode(v, writer.uint32(10).fork()).ldelim();
|
6442
6480
|
}
|
6481
|
+
for (const v of message.publish) {
|
6482
|
+
Codec.encode(v, writer.uint32(18).fork()).ldelim();
|
6483
|
+
}
|
6443
6484
|
return writer;
|
6444
6485
|
},
|
6445
6486
|
decode(input, length) {
|
@@ -6450,13 +6491,19 @@ const DisabledCodecs = {
|
|
6450
6491
|
const tag = reader.uint32();
|
6451
6492
|
switch (tag >>> 3) {
|
6452
6493
|
case 1:
|
6453
|
-
if (tag
|
6494
|
+
if (tag !== 10) {
|
6454
6495
|
break;
|
6455
6496
|
}
|
6456
6497
|
message.codecs.push(Codec.decode(reader, reader.uint32()));
|
6457
6498
|
continue;
|
6499
|
+
case 2:
|
6500
|
+
if (tag !== 18) {
|
6501
|
+
break;
|
6502
|
+
}
|
6503
|
+
message.publish.push(Codec.decode(reader, reader.uint32()));
|
6504
|
+
continue;
|
6458
6505
|
}
|
6459
|
-
if ((tag & 7)
|
6506
|
+
if ((tag & 7) === 4 || tag === 0) {
|
6460
6507
|
break;
|
6461
6508
|
}
|
6462
6509
|
reader.skipType(tag & 7);
|
@@ -6465,7 +6512,8 @@ const DisabledCodecs = {
|
|
6465
6512
|
},
|
6466
6513
|
fromJSON(object) {
|
6467
6514
|
return {
|
6468
|
-
codecs: Array.isArray(object === null || object === void 0 ? void 0 : object.codecs) ? object.codecs.map(e => Codec.fromJSON(e)) : []
|
6515
|
+
codecs: Array.isArray(object === null || object === void 0 ? void 0 : object.codecs) ? object.codecs.map(e => Codec.fromJSON(e)) : [],
|
6516
|
+
publish: Array.isArray(object === null || object === void 0 ? void 0 : object.publish) ? object.publish.map(e => Codec.fromJSON(e)) : []
|
6469
6517
|
};
|
6470
6518
|
},
|
6471
6519
|
toJSON(message) {
|
@@ -6475,15 +6523,21 @@ const DisabledCodecs = {
|
|
6475
6523
|
} else {
|
6476
6524
|
obj.codecs = [];
|
6477
6525
|
}
|
6526
|
+
if (message.publish) {
|
6527
|
+
obj.publish = message.publish.map(e => e ? Codec.toJSON(e) : undefined);
|
6528
|
+
} else {
|
6529
|
+
obj.publish = [];
|
6530
|
+
}
|
6478
6531
|
return obj;
|
6479
6532
|
},
|
6480
6533
|
create(base) {
|
6481
6534
|
return DisabledCodecs.fromPartial(base !== null && base !== void 0 ? base : {});
|
6482
6535
|
},
|
6483
6536
|
fromPartial(object) {
|
6484
|
-
var _a;
|
6537
|
+
var _a, _b;
|
6485
6538
|
const message = createBaseDisabledCodecs();
|
6486
6539
|
message.codecs = ((_a = object.codecs) === null || _a === void 0 ? void 0 : _a.map(e => Codec.fromPartial(e))) || [];
|
6540
|
+
message.publish = ((_b = object.publish) === null || _b === void 0 ? void 0 : _b.map(e => Codec.fromPartial(e))) || [];
|
6487
6541
|
return message;
|
6488
6542
|
}
|
6489
6543
|
};
|
@@ -6502,7 +6556,7 @@ var tsProtoGlobalThis$1 = (() => {
|
|
6502
6556
|
}
|
6503
6557
|
throw "Unable to locate global object";
|
6504
6558
|
})();
|
6505
|
-
function bytesFromBase64(b64) {
|
6559
|
+
function bytesFromBase64$1(b64) {
|
6506
6560
|
if (tsProtoGlobalThis$1.Buffer) {
|
6507
6561
|
return Uint8Array.from(tsProtoGlobalThis$1.Buffer.from(b64, "base64"));
|
6508
6562
|
} else {
|
@@ -6514,7 +6568,7 @@ function bytesFromBase64(b64) {
|
|
6514
6568
|
return arr;
|
6515
6569
|
}
|
6516
6570
|
}
|
6517
|
-
function base64FromBytes(arr) {
|
6571
|
+
function base64FromBytes$1(arr) {
|
6518
6572
|
if (tsProtoGlobalThis$1.Buffer) {
|
6519
6573
|
return tsProtoGlobalThis$1.Buffer.from(arr).toString("base64");
|
6520
6574
|
} else {
|
@@ -6567,6 +6621,8 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
6567
6621
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
6568
6622
|
PERFORMANCE OF THIS SOFTWARE.
|
6569
6623
|
***************************************************************************** */
|
6624
|
+
/* global Reflect, Promise */
|
6625
|
+
|
6570
6626
|
|
6571
6627
|
function __awaiter(thisArg, _arguments, P, generator) {
|
6572
6628
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
@@ -6986,6 +7042,7 @@ var eventsExports = events.exports;
|
|
6986
7042
|
* that can be found in the LICENSE file in the root of the source
|
6987
7043
|
* tree.
|
6988
7044
|
*/
|
7045
|
+
/* eslint-env node */
|
6989
7046
|
|
6990
7047
|
let logDisabled_ = true;
|
6991
7048
|
let deprecationWarnings_ = true;
|
@@ -7232,6 +7289,7 @@ function filterStats(result, track, outbound) {
|
|
7232
7289
|
* that can be found in the LICENSE file in the root of the source
|
7233
7290
|
* tree.
|
7234
7291
|
*/
|
7292
|
+
/* eslint-env node */
|
7235
7293
|
const logging = log;
|
7236
7294
|
function shimGetUserMedia$2(window, browserDetails) {
|
7237
7295
|
const navigator = window && window.navigator;
|
@@ -7411,6 +7469,7 @@ function shimGetUserMedia$2(window, browserDetails) {
|
|
7411
7469
|
* that can be found in the LICENSE file in the root of the source
|
7412
7470
|
* tree.
|
7413
7471
|
*/
|
7472
|
+
/* eslint-env node */
|
7414
7473
|
|
7415
7474
|
function shimGetDisplayMedia$1(window, getSourceId) {
|
7416
7475
|
if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {
|
@@ -7455,6 +7514,7 @@ function shimGetDisplayMedia$1(window, getSourceId) {
|
|
7455
7514
|
* that can be found in the LICENSE file in the root of the source
|
7456
7515
|
* tree.
|
7457
7516
|
*/
|
7517
|
+
/* eslint-env node */
|
7458
7518
|
function shimMediaStream(window) {
|
7459
7519
|
window.MediaStream = window.MediaStream || window.webkitMediaStream;
|
7460
7520
|
}
|
@@ -8080,6 +8140,7 @@ var chromeShim = /*#__PURE__*/Object.freeze({
|
|
8080
8140
|
* that can be found in the LICENSE file in the root of the source
|
8081
8141
|
* tree.
|
8082
8142
|
*/
|
8143
|
+
/* eslint-env node */
|
8083
8144
|
function shimGetUserMedia$1(window, browserDetails) {
|
8084
8145
|
const navigator = window && window.navigator;
|
8085
8146
|
const MediaStreamTrack = window && window.MediaStreamTrack;
|
@@ -8134,6 +8195,7 @@ function shimGetUserMedia$1(window, browserDetails) {
|
|
8134
8195
|
* that can be found in the LICENSE file in the root of the source
|
8135
8196
|
* tree.
|
8136
8197
|
*/
|
8198
|
+
/* eslint-env node */
|
8137
8199
|
|
8138
8200
|
function shimGetDisplayMedia(window, preferredMediaSource) {
|
8139
8201
|
if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {
|
@@ -8168,6 +8230,7 @@ function shimGetDisplayMedia(window, preferredMediaSource) {
|
|
8168
8230
|
* that can be found in the LICENSE file in the root of the source
|
8169
8231
|
* tree.
|
8170
8232
|
*/
|
8233
|
+
/* eslint-env node */
|
8171
8234
|
function shimOnTrack(window) {
|
8172
8235
|
if (typeof window === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) {
|
8173
8236
|
Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {
|
@@ -9533,6 +9596,7 @@ var sdp = /*#__PURE__*/_mergeNamespaces({
|
|
9533
9596
|
* that can be found in the LICENSE file in the root of the source
|
9534
9597
|
* tree.
|
9535
9598
|
*/
|
9599
|
+
/* eslint-env node */
|
9536
9600
|
function shimRTCIceCandidate(window) {
|
9537
9601
|
// foundation is arbitrarily chosen as an indicator for full support for
|
9538
9602
|
// https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
|
@@ -10086,6 +10150,8 @@ function adapterFactory() {
|
|
10086
10150
|
* that can be found in the LICENSE file in the root of the source
|
10087
10151
|
* tree.
|
10088
10152
|
*/
|
10153
|
+
/* eslint-env node */
|
10154
|
+
|
10089
10155
|
adapterFactory({
|
10090
10156
|
window: typeof window === 'undefined' ? undefined : window
|
10091
10157
|
});
|
@@ -10256,7 +10322,7 @@ const SignalRequest = {
|
|
10256
10322
|
const tag = reader.uint32();
|
10257
10323
|
switch (tag >>> 3) {
|
10258
10324
|
case 1:
|
10259
|
-
if (tag
|
10325
|
+
if (tag !== 10) {
|
10260
10326
|
break;
|
10261
10327
|
}
|
10262
10328
|
message.message = {
|
@@ -10265,7 +10331,7 @@ const SignalRequest = {
|
|
10265
10331
|
};
|
10266
10332
|
continue;
|
10267
10333
|
case 2:
|
10268
|
-
if (tag
|
10334
|
+
if (tag !== 18) {
|
10269
10335
|
break;
|
10270
10336
|
}
|
10271
10337
|
message.message = {
|
@@ -10274,7 +10340,7 @@ const SignalRequest = {
|
|
10274
10340
|
};
|
10275
10341
|
continue;
|
10276
10342
|
case 3:
|
10277
|
-
if (tag
|
10343
|
+
if (tag !== 26) {
|
10278
10344
|
break;
|
10279
10345
|
}
|
10280
10346
|
message.message = {
|
@@ -10283,7 +10349,7 @@ const SignalRequest = {
|
|
10283
10349
|
};
|
10284
10350
|
continue;
|
10285
10351
|
case 4:
|
10286
|
-
if (tag
|
10352
|
+
if (tag !== 34) {
|
10287
10353
|
break;
|
10288
10354
|
}
|
10289
10355
|
message.message = {
|
@@ -10292,7 +10358,7 @@ const SignalRequest = {
|
|
10292
10358
|
};
|
10293
10359
|
continue;
|
10294
10360
|
case 5:
|
10295
|
-
if (tag
|
10361
|
+
if (tag !== 42) {
|
10296
10362
|
break;
|
10297
10363
|
}
|
10298
10364
|
message.message = {
|
@@ -10301,7 +10367,7 @@ const SignalRequest = {
|
|
10301
10367
|
};
|
10302
10368
|
continue;
|
10303
10369
|
case 6:
|
10304
|
-
if (tag
|
10370
|
+
if (tag !== 50) {
|
10305
10371
|
break;
|
10306
10372
|
}
|
10307
10373
|
message.message = {
|
@@ -10310,7 +10376,7 @@ const SignalRequest = {
|
|
10310
10376
|
};
|
10311
10377
|
continue;
|
10312
10378
|
case 7:
|
10313
|
-
if (tag
|
10379
|
+
if (tag !== 58) {
|
10314
10380
|
break;
|
10315
10381
|
}
|
10316
10382
|
message.message = {
|
@@ -10319,7 +10385,7 @@ const SignalRequest = {
|
|
10319
10385
|
};
|
10320
10386
|
continue;
|
10321
10387
|
case 8:
|
10322
|
-
if (tag
|
10388
|
+
if (tag !== 66) {
|
10323
10389
|
break;
|
10324
10390
|
}
|
10325
10391
|
message.message = {
|
@@ -10328,7 +10394,7 @@ const SignalRequest = {
|
|
10328
10394
|
};
|
10329
10395
|
continue;
|
10330
10396
|
case 10:
|
10331
|
-
if (tag
|
10397
|
+
if (tag !== 82) {
|
10332
10398
|
break;
|
10333
10399
|
}
|
10334
10400
|
message.message = {
|
@@ -10337,7 +10403,7 @@ const SignalRequest = {
|
|
10337
10403
|
};
|
10338
10404
|
continue;
|
10339
10405
|
case 11:
|
10340
|
-
if (tag
|
10406
|
+
if (tag !== 90) {
|
10341
10407
|
break;
|
10342
10408
|
}
|
10343
10409
|
message.message = {
|
@@ -10346,7 +10412,7 @@ const SignalRequest = {
|
|
10346
10412
|
};
|
10347
10413
|
continue;
|
10348
10414
|
case 12:
|
10349
|
-
if (tag
|
10415
|
+
if (tag !== 98) {
|
10350
10416
|
break;
|
10351
10417
|
}
|
10352
10418
|
message.message = {
|
@@ -10355,7 +10421,7 @@ const SignalRequest = {
|
|
10355
10421
|
};
|
10356
10422
|
continue;
|
10357
10423
|
case 13:
|
10358
|
-
if (tag
|
10424
|
+
if (tag !== 106) {
|
10359
10425
|
break;
|
10360
10426
|
}
|
10361
10427
|
message.message = {
|
@@ -10364,7 +10430,7 @@ const SignalRequest = {
|
|
10364
10430
|
};
|
10365
10431
|
continue;
|
10366
10432
|
case 14:
|
10367
|
-
if (tag
|
10433
|
+
if (tag !== 112) {
|
10368
10434
|
break;
|
10369
10435
|
}
|
10370
10436
|
message.message = {
|
@@ -10373,7 +10439,7 @@ const SignalRequest = {
|
|
10373
10439
|
};
|
10374
10440
|
continue;
|
10375
10441
|
case 15:
|
10376
|
-
if (tag
|
10442
|
+
if (tag !== 122) {
|
10377
10443
|
break;
|
10378
10444
|
}
|
10379
10445
|
message.message = {
|
@@ -10382,7 +10448,7 @@ const SignalRequest = {
|
|
10382
10448
|
};
|
10383
10449
|
continue;
|
10384
10450
|
case 16:
|
10385
|
-
if (tag
|
10451
|
+
if (tag !== 130) {
|
10386
10452
|
break;
|
10387
10453
|
}
|
10388
10454
|
message.message = {
|
@@ -10391,7 +10457,7 @@ const SignalRequest = {
|
|
10391
10457
|
};
|
10392
10458
|
continue;
|
10393
10459
|
}
|
10394
|
-
if ((tag & 7)
|
10460
|
+
if ((tag & 7) === 4 || tag === 0) {
|
10395
10461
|
break;
|
10396
10462
|
}
|
10397
10463
|
reader.skipType(tag & 7);
|
@@ -10634,6 +10700,9 @@ const SignalResponse = {
|
|
10634
10700
|
case "pongResp":
|
10635
10701
|
Pong.encode(message.message.pongResp, writer.uint32(162).fork()).ldelim();
|
10636
10702
|
break;
|
10703
|
+
case "subscriptionResponse":
|
10704
|
+
SubscriptionResponse.encode(message.message.subscriptionResponse, writer.uint32(170).fork()).ldelim();
|
10705
|
+
break;
|
10637
10706
|
}
|
10638
10707
|
return writer;
|
10639
10708
|
},
|
@@ -10645,7 +10714,7 @@ const SignalResponse = {
|
|
10645
10714
|
const tag = reader.uint32();
|
10646
10715
|
switch (tag >>> 3) {
|
10647
10716
|
case 1:
|
10648
|
-
if (tag
|
10717
|
+
if (tag !== 10) {
|
10649
10718
|
break;
|
10650
10719
|
}
|
10651
10720
|
message.message = {
|
@@ -10654,7 +10723,7 @@ const SignalResponse = {
|
|
10654
10723
|
};
|
10655
10724
|
continue;
|
10656
10725
|
case 2:
|
10657
|
-
if (tag
|
10726
|
+
if (tag !== 18) {
|
10658
10727
|
break;
|
10659
10728
|
}
|
10660
10729
|
message.message = {
|
@@ -10663,7 +10732,7 @@ const SignalResponse = {
|
|
10663
10732
|
};
|
10664
10733
|
continue;
|
10665
10734
|
case 3:
|
10666
|
-
if (tag
|
10735
|
+
if (tag !== 26) {
|
10667
10736
|
break;
|
10668
10737
|
}
|
10669
10738
|
message.message = {
|
@@ -10672,7 +10741,7 @@ const SignalResponse = {
|
|
10672
10741
|
};
|
10673
10742
|
continue;
|
10674
10743
|
case 4:
|
10675
|
-
if (tag
|
10744
|
+
if (tag !== 34) {
|
10676
10745
|
break;
|
10677
10746
|
}
|
10678
10747
|
message.message = {
|
@@ -10681,7 +10750,7 @@ const SignalResponse = {
|
|
10681
10750
|
};
|
10682
10751
|
continue;
|
10683
10752
|
case 5:
|
10684
|
-
if (tag
|
10753
|
+
if (tag !== 42) {
|
10685
10754
|
break;
|
10686
10755
|
}
|
10687
10756
|
message.message = {
|
@@ -10690,7 +10759,7 @@ const SignalResponse = {
|
|
10690
10759
|
};
|
10691
10760
|
continue;
|
10692
10761
|
case 6:
|
10693
|
-
if (tag
|
10762
|
+
if (tag !== 50) {
|
10694
10763
|
break;
|
10695
10764
|
}
|
10696
10765
|
message.message = {
|
@@ -10699,7 +10768,7 @@ const SignalResponse = {
|
|
10699
10768
|
};
|
10700
10769
|
continue;
|
10701
10770
|
case 8:
|
10702
|
-
if (tag
|
10771
|
+
if (tag !== 66) {
|
10703
10772
|
break;
|
10704
10773
|
}
|
10705
10774
|
message.message = {
|
@@ -10708,7 +10777,7 @@ const SignalResponse = {
|
|
10708
10777
|
};
|
10709
10778
|
continue;
|
10710
10779
|
case 9:
|
10711
|
-
if (tag
|
10780
|
+
if (tag !== 74) {
|
10712
10781
|
break;
|
10713
10782
|
}
|
10714
10783
|
message.message = {
|
@@ -10717,7 +10786,7 @@ const SignalResponse = {
|
|
10717
10786
|
};
|
10718
10787
|
continue;
|
10719
10788
|
case 10:
|
10720
|
-
if (tag
|
10789
|
+
if (tag !== 82) {
|
10721
10790
|
break;
|
10722
10791
|
}
|
10723
10792
|
message.message = {
|
@@ -10726,7 +10795,7 @@ const SignalResponse = {
|
|
10726
10795
|
};
|
10727
10796
|
continue;
|
10728
10797
|
case 11:
|
10729
|
-
if (tag
|
10798
|
+
if (tag !== 90) {
|
10730
10799
|
break;
|
10731
10800
|
}
|
10732
10801
|
message.message = {
|
@@ -10735,7 +10804,7 @@ const SignalResponse = {
|
|
10735
10804
|
};
|
10736
10805
|
continue;
|
10737
10806
|
case 12:
|
10738
|
-
if (tag
|
10807
|
+
if (tag !== 98) {
|
10739
10808
|
break;
|
10740
10809
|
}
|
10741
10810
|
message.message = {
|
@@ -10744,7 +10813,7 @@ const SignalResponse = {
|
|
10744
10813
|
};
|
10745
10814
|
continue;
|
10746
10815
|
case 13:
|
10747
|
-
if (tag
|
10816
|
+
if (tag !== 106) {
|
10748
10817
|
break;
|
10749
10818
|
}
|
10750
10819
|
message.message = {
|
@@ -10753,7 +10822,7 @@ const SignalResponse = {
|
|
10753
10822
|
};
|
10754
10823
|
continue;
|
10755
10824
|
case 14:
|
10756
|
-
if (tag
|
10825
|
+
if (tag !== 114) {
|
10757
10826
|
break;
|
10758
10827
|
}
|
10759
10828
|
message.message = {
|
@@ -10762,7 +10831,7 @@ const SignalResponse = {
|
|
10762
10831
|
};
|
10763
10832
|
continue;
|
10764
10833
|
case 15:
|
10765
|
-
if (tag
|
10834
|
+
if (tag !== 122) {
|
10766
10835
|
break;
|
10767
10836
|
}
|
10768
10837
|
message.message = {
|
@@ -10771,7 +10840,7 @@ const SignalResponse = {
|
|
10771
10840
|
};
|
10772
10841
|
continue;
|
10773
10842
|
case 16:
|
10774
|
-
if (tag
|
10843
|
+
if (tag !== 130) {
|
10775
10844
|
break;
|
10776
10845
|
}
|
10777
10846
|
message.message = {
|
@@ -10780,7 +10849,7 @@ const SignalResponse = {
|
|
10780
10849
|
};
|
10781
10850
|
continue;
|
10782
10851
|
case 17:
|
10783
|
-
if (tag
|
10852
|
+
if (tag !== 138) {
|
10784
10853
|
break;
|
10785
10854
|
}
|
10786
10855
|
message.message = {
|
@@ -10789,7 +10858,7 @@ const SignalResponse = {
|
|
10789
10858
|
};
|
10790
10859
|
continue;
|
10791
10860
|
case 18:
|
10792
|
-
if (tag
|
10861
|
+
if (tag !== 144) {
|
10793
10862
|
break;
|
10794
10863
|
}
|
10795
10864
|
message.message = {
|
@@ -10798,7 +10867,7 @@ const SignalResponse = {
|
|
10798
10867
|
};
|
10799
10868
|
continue;
|
10800
10869
|
case 19:
|
10801
|
-
if (tag
|
10870
|
+
if (tag !== 154) {
|
10802
10871
|
break;
|
10803
10872
|
}
|
10804
10873
|
message.message = {
|
@@ -10807,7 +10876,7 @@ const SignalResponse = {
|
|
10807
10876
|
};
|
10808
10877
|
continue;
|
10809
10878
|
case 20:
|
10810
|
-
if (tag
|
10879
|
+
if (tag !== 162) {
|
10811
10880
|
break;
|
10812
10881
|
}
|
10813
10882
|
message.message = {
|
@@ -10815,8 +10884,17 @@ const SignalResponse = {
|
|
10815
10884
|
pongResp: Pong.decode(reader, reader.uint32())
|
10816
10885
|
};
|
10817
10886
|
continue;
|
10887
|
+
case 21:
|
10888
|
+
if (tag !== 170) {
|
10889
|
+
break;
|
10890
|
+
}
|
10891
|
+
message.message = {
|
10892
|
+
$case: "subscriptionResponse",
|
10893
|
+
subscriptionResponse: SubscriptionResponse.decode(reader, reader.uint32())
|
10894
|
+
};
|
10895
|
+
continue;
|
10818
10896
|
}
|
10819
|
-
if ((tag & 7)
|
10897
|
+
if ((tag & 7) === 4 || tag === 0) {
|
10820
10898
|
break;
|
10821
10899
|
}
|
10822
10900
|
reader.skipType(tag & 7);
|
@@ -10882,11 +10960,14 @@ const SignalResponse = {
|
|
10882
10960
|
} : isSet(object.pongResp) ? {
|
10883
10961
|
$case: "pongResp",
|
10884
10962
|
pongResp: Pong.fromJSON(object.pongResp)
|
10963
|
+
} : isSet(object.subscriptionResponse) ? {
|
10964
|
+
$case: "subscriptionResponse",
|
10965
|
+
subscriptionResponse: SubscriptionResponse.fromJSON(object.subscriptionResponse)
|
10885
10966
|
} : undefined
|
10886
10967
|
};
|
10887
10968
|
},
|
10888
10969
|
toJSON(message) {
|
10889
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30;
|
10970
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33;
|
10890
10971
|
const obj = {};
|
10891
10972
|
((_a = message.message) === null || _a === void 0 ? void 0 : _a.$case) === "join" && (obj.join = ((_b = message.message) === null || _b === void 0 ? void 0 : _b.join) ? JoinResponse.toJSON((_c = message.message) === null || _c === void 0 ? void 0 : _c.join) : undefined);
|
10892
10973
|
((_d = message.message) === null || _d === void 0 ? void 0 : _d.$case) === "answer" && (obj.answer = ((_e = message.message) === null || _e === void 0 ? void 0 : _e.answer) ? SessionDescription.toJSON((_f = message.message) === null || _f === void 0 ? void 0 : _f.answer) : undefined);
|
@@ -10907,13 +10988,14 @@ const SignalResponse = {
|
|
10907
10988
|
((_23 = message.message) === null || _23 === void 0 ? void 0 : _23.$case) === "pong" && (obj.pong = Math.round((_24 = message.message) === null || _24 === void 0 ? void 0 : _24.pong));
|
10908
10989
|
((_25 = message.message) === null || _25 === void 0 ? void 0 : _25.$case) === "reconnect" && (obj.reconnect = ((_26 = message.message) === null || _26 === void 0 ? void 0 : _26.reconnect) ? ReconnectResponse.toJSON((_27 = message.message) === null || _27 === void 0 ? void 0 : _27.reconnect) : undefined);
|
10909
10990
|
((_28 = message.message) === null || _28 === void 0 ? void 0 : _28.$case) === "pongResp" && (obj.pongResp = ((_29 = message.message) === null || _29 === void 0 ? void 0 : _29.pongResp) ? Pong.toJSON((_30 = message.message) === null || _30 === void 0 ? void 0 : _30.pongResp) : undefined);
|
10991
|
+
((_31 = message.message) === null || _31 === void 0 ? void 0 : _31.$case) === "subscriptionResponse" && (obj.subscriptionResponse = ((_32 = message.message) === null || _32 === void 0 ? void 0 : _32.subscriptionResponse) ? SubscriptionResponse.toJSON((_33 = message.message) === null || _33 === void 0 ? void 0 : _33.subscriptionResponse) : undefined);
|
10910
10992
|
return obj;
|
10911
10993
|
},
|
10912
10994
|
create(base) {
|
10913
10995
|
return SignalResponse.fromPartial(base !== null && base !== void 0 ? base : {});
|
10914
10996
|
},
|
10915
10997
|
fromPartial(object) {
|
10916
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
|
10998
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35;
|
10917
10999
|
const message = createBaseSignalResponse();
|
10918
11000
|
if (((_a = object.message) === null || _a === void 0 ? void 0 : _a.$case) === "join" && ((_b = object.message) === null || _b === void 0 ? void 0 : _b.join) !== undefined && ((_c = object.message) === null || _c === void 0 ? void 0 : _c.join) !== null) {
|
10919
11001
|
message.message = {
|
@@ -11029,6 +11111,12 @@ const SignalResponse = {
|
|
11029
11111
|
pongResp: Pong.fromPartial(object.message.pongResp)
|
11030
11112
|
};
|
11031
11113
|
}
|
11114
|
+
if (((_33 = object.message) === null || _33 === void 0 ? void 0 : _33.$case) === "subscriptionResponse" && ((_34 = object.message) === null || _34 === void 0 ? void 0 : _34.subscriptionResponse) !== undefined && ((_35 = object.message) === null || _35 === void 0 ? void 0 : _35.subscriptionResponse) !== null) {
|
11115
|
+
message.message = {
|
11116
|
+
$case: "subscriptionResponse",
|
11117
|
+
subscriptionResponse: SubscriptionResponse.fromPartial(object.message.subscriptionResponse)
|
11118
|
+
};
|
11119
|
+
}
|
11032
11120
|
return message;
|
11033
11121
|
}
|
11034
11122
|
};
|
@@ -11061,25 +11149,25 @@ const SimulcastCodec = {
|
|
11061
11149
|
const tag = reader.uint32();
|
11062
11150
|
switch (tag >>> 3) {
|
11063
11151
|
case 1:
|
11064
|
-
if (tag
|
11152
|
+
if (tag !== 10) {
|
11065
11153
|
break;
|
11066
11154
|
}
|
11067
11155
|
message.codec = reader.string();
|
11068
11156
|
continue;
|
11069
11157
|
case 2:
|
11070
|
-
if (tag
|
11158
|
+
if (tag !== 18) {
|
11071
11159
|
break;
|
11072
11160
|
}
|
11073
11161
|
message.cid = reader.string();
|
11074
11162
|
continue;
|
11075
11163
|
case 3:
|
11076
|
-
if (tag
|
11164
|
+
if (tag !== 24) {
|
11077
11165
|
break;
|
11078
11166
|
}
|
11079
11167
|
message.enableSimulcastLayers = reader.bool();
|
11080
11168
|
continue;
|
11081
11169
|
}
|
11082
|
-
if ((tag & 7)
|
11170
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11083
11171
|
break;
|
11084
11172
|
}
|
11085
11173
|
reader.skipType(tag & 7);
|
@@ -11185,91 +11273,91 @@ const AddTrackRequest = {
|
|
11185
11273
|
const tag = reader.uint32();
|
11186
11274
|
switch (tag >>> 3) {
|
11187
11275
|
case 1:
|
11188
|
-
if (tag
|
11276
|
+
if (tag !== 10) {
|
11189
11277
|
break;
|
11190
11278
|
}
|
11191
11279
|
message.cid = reader.string();
|
11192
11280
|
continue;
|
11193
11281
|
case 2:
|
11194
|
-
if (tag
|
11282
|
+
if (tag !== 18) {
|
11195
11283
|
break;
|
11196
11284
|
}
|
11197
11285
|
message.name = reader.string();
|
11198
11286
|
continue;
|
11199
11287
|
case 3:
|
11200
|
-
if (tag
|
11288
|
+
if (tag !== 24) {
|
11201
11289
|
break;
|
11202
11290
|
}
|
11203
11291
|
message.type = reader.int32();
|
11204
11292
|
continue;
|
11205
11293
|
case 4:
|
11206
|
-
if (tag
|
11294
|
+
if (tag !== 32) {
|
11207
11295
|
break;
|
11208
11296
|
}
|
11209
11297
|
message.width = reader.uint32();
|
11210
11298
|
continue;
|
11211
11299
|
case 5:
|
11212
|
-
if (tag
|
11300
|
+
if (tag !== 40) {
|
11213
11301
|
break;
|
11214
11302
|
}
|
11215
11303
|
message.height = reader.uint32();
|
11216
11304
|
continue;
|
11217
11305
|
case 6:
|
11218
|
-
if (tag
|
11306
|
+
if (tag !== 48) {
|
11219
11307
|
break;
|
11220
11308
|
}
|
11221
11309
|
message.muted = reader.bool();
|
11222
11310
|
continue;
|
11223
11311
|
case 7:
|
11224
|
-
if (tag
|
11312
|
+
if (tag !== 56) {
|
11225
11313
|
break;
|
11226
11314
|
}
|
11227
11315
|
message.disableDtx = reader.bool();
|
11228
11316
|
continue;
|
11229
11317
|
case 8:
|
11230
|
-
if (tag
|
11318
|
+
if (tag !== 64) {
|
11231
11319
|
break;
|
11232
11320
|
}
|
11233
11321
|
message.source = reader.int32();
|
11234
11322
|
continue;
|
11235
11323
|
case 9:
|
11236
|
-
if (tag
|
11324
|
+
if (tag !== 74) {
|
11237
11325
|
break;
|
11238
11326
|
}
|
11239
11327
|
message.layers.push(VideoLayer.decode(reader, reader.uint32()));
|
11240
11328
|
continue;
|
11241
11329
|
case 10:
|
11242
|
-
if (tag
|
11330
|
+
if (tag !== 82) {
|
11243
11331
|
break;
|
11244
11332
|
}
|
11245
11333
|
message.simulcastCodecs.push(SimulcastCodec.decode(reader, reader.uint32()));
|
11246
11334
|
continue;
|
11247
11335
|
case 11:
|
11248
|
-
if (tag
|
11336
|
+
if (tag !== 90) {
|
11249
11337
|
break;
|
11250
11338
|
}
|
11251
11339
|
message.sid = reader.string();
|
11252
11340
|
continue;
|
11253
11341
|
case 12:
|
11254
|
-
if (tag
|
11342
|
+
if (tag !== 96) {
|
11255
11343
|
break;
|
11256
11344
|
}
|
11257
11345
|
message.stereo = reader.bool();
|
11258
11346
|
continue;
|
11259
11347
|
case 13:
|
11260
|
-
if (tag
|
11348
|
+
if (tag !== 104) {
|
11261
11349
|
break;
|
11262
11350
|
}
|
11263
11351
|
message.disableRed = reader.bool();
|
11264
11352
|
continue;
|
11265
11353
|
case 14:
|
11266
|
-
if (tag
|
11354
|
+
if (tag !== 112) {
|
11267
11355
|
break;
|
11268
11356
|
}
|
11269
11357
|
message.encryption = reader.int32();
|
11270
11358
|
continue;
|
11271
11359
|
}
|
11272
|
-
if ((tag & 7)
|
11360
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11273
11361
|
break;
|
11274
11362
|
}
|
11275
11363
|
reader.skipType(tag & 7);
|
@@ -11368,19 +11456,19 @@ const TrickleRequest = {
|
|
11368
11456
|
const tag = reader.uint32();
|
11369
11457
|
switch (tag >>> 3) {
|
11370
11458
|
case 1:
|
11371
|
-
if (tag
|
11459
|
+
if (tag !== 10) {
|
11372
11460
|
break;
|
11373
11461
|
}
|
11374
11462
|
message.candidateInit = reader.string();
|
11375
11463
|
continue;
|
11376
11464
|
case 2:
|
11377
|
-
if (tag
|
11465
|
+
if (tag !== 16) {
|
11378
11466
|
break;
|
11379
11467
|
}
|
11380
11468
|
message.target = reader.int32();
|
11381
11469
|
continue;
|
11382
11470
|
}
|
11383
|
-
if ((tag & 7)
|
11471
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11384
11472
|
break;
|
11385
11473
|
}
|
11386
11474
|
reader.skipType(tag & 7);
|
@@ -11435,19 +11523,19 @@ const MuteTrackRequest = {
|
|
11435
11523
|
const tag = reader.uint32();
|
11436
11524
|
switch (tag >>> 3) {
|
11437
11525
|
case 1:
|
11438
|
-
if (tag
|
11526
|
+
if (tag !== 10) {
|
11439
11527
|
break;
|
11440
11528
|
}
|
11441
11529
|
message.sid = reader.string();
|
11442
11530
|
continue;
|
11443
11531
|
case 2:
|
11444
|
-
if (tag
|
11532
|
+
if (tag !== 16) {
|
11445
11533
|
break;
|
11446
11534
|
}
|
11447
11535
|
message.muted = reader.bool();
|
11448
11536
|
continue;
|
11449
11537
|
}
|
11450
|
-
if ((tag & 7)
|
11538
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11451
11539
|
break;
|
11452
11540
|
}
|
11453
11541
|
reader.skipType(tag & 7);
|
@@ -11490,7 +11578,8 @@ function createBaseJoinResponse() {
|
|
11490
11578
|
serverRegion: "",
|
11491
11579
|
pingTimeout: 0,
|
11492
11580
|
pingInterval: 0,
|
11493
|
-
serverInfo: undefined
|
11581
|
+
serverInfo: undefined,
|
11582
|
+
sifTrailer: new Uint8Array()
|
11494
11583
|
};
|
11495
11584
|
}
|
11496
11585
|
const JoinResponse = {
|
@@ -11532,6 +11621,9 @@ const JoinResponse = {
|
|
11532
11621
|
if (message.serverInfo !== undefined) {
|
11533
11622
|
ServerInfo.encode(message.serverInfo, writer.uint32(98).fork()).ldelim();
|
11534
11623
|
}
|
11624
|
+
if (message.sifTrailer.length !== 0) {
|
11625
|
+
writer.uint32(106).bytes(message.sifTrailer);
|
11626
|
+
}
|
11535
11627
|
return writer;
|
11536
11628
|
},
|
11537
11629
|
decode(input, length) {
|
@@ -11542,79 +11634,85 @@ const JoinResponse = {
|
|
11542
11634
|
const tag = reader.uint32();
|
11543
11635
|
switch (tag >>> 3) {
|
11544
11636
|
case 1:
|
11545
|
-
if (tag
|
11637
|
+
if (tag !== 10) {
|
11546
11638
|
break;
|
11547
11639
|
}
|
11548
11640
|
message.room = Room$1.decode(reader, reader.uint32());
|
11549
11641
|
continue;
|
11550
11642
|
case 2:
|
11551
|
-
if (tag
|
11643
|
+
if (tag !== 18) {
|
11552
11644
|
break;
|
11553
11645
|
}
|
11554
11646
|
message.participant = ParticipantInfo.decode(reader, reader.uint32());
|
11555
11647
|
continue;
|
11556
11648
|
case 3:
|
11557
|
-
if (tag
|
11649
|
+
if (tag !== 26) {
|
11558
11650
|
break;
|
11559
11651
|
}
|
11560
11652
|
message.otherParticipants.push(ParticipantInfo.decode(reader, reader.uint32()));
|
11561
11653
|
continue;
|
11562
11654
|
case 4:
|
11563
|
-
if (tag
|
11655
|
+
if (tag !== 34) {
|
11564
11656
|
break;
|
11565
11657
|
}
|
11566
11658
|
message.serverVersion = reader.string();
|
11567
11659
|
continue;
|
11568
11660
|
case 5:
|
11569
|
-
if (tag
|
11661
|
+
if (tag !== 42) {
|
11570
11662
|
break;
|
11571
11663
|
}
|
11572
11664
|
message.iceServers.push(ICEServer.decode(reader, reader.uint32()));
|
11573
11665
|
continue;
|
11574
11666
|
case 6:
|
11575
|
-
if (tag
|
11667
|
+
if (tag !== 48) {
|
11576
11668
|
break;
|
11577
11669
|
}
|
11578
11670
|
message.subscriberPrimary = reader.bool();
|
11579
11671
|
continue;
|
11580
11672
|
case 7:
|
11581
|
-
if (tag
|
11673
|
+
if (tag !== 58) {
|
11582
11674
|
break;
|
11583
11675
|
}
|
11584
11676
|
message.alternativeUrl = reader.string();
|
11585
11677
|
continue;
|
11586
11678
|
case 8:
|
11587
|
-
if (tag
|
11679
|
+
if (tag !== 66) {
|
11588
11680
|
break;
|
11589
11681
|
}
|
11590
11682
|
message.clientConfiguration = ClientConfiguration.decode(reader, reader.uint32());
|
11591
11683
|
continue;
|
11592
11684
|
case 9:
|
11593
|
-
if (tag
|
11685
|
+
if (tag !== 74) {
|
11594
11686
|
break;
|
11595
11687
|
}
|
11596
11688
|
message.serverRegion = reader.string();
|
11597
11689
|
continue;
|
11598
11690
|
case 10:
|
11599
|
-
if (tag
|
11691
|
+
if (tag !== 80) {
|
11600
11692
|
break;
|
11601
11693
|
}
|
11602
11694
|
message.pingTimeout = reader.int32();
|
11603
11695
|
continue;
|
11604
11696
|
case 11:
|
11605
|
-
if (tag
|
11697
|
+
if (tag !== 88) {
|
11606
11698
|
break;
|
11607
11699
|
}
|
11608
11700
|
message.pingInterval = reader.int32();
|
11609
11701
|
continue;
|
11610
11702
|
case 12:
|
11611
|
-
if (tag
|
11703
|
+
if (tag !== 98) {
|
11612
11704
|
break;
|
11613
11705
|
}
|
11614
11706
|
message.serverInfo = ServerInfo.decode(reader, reader.uint32());
|
11615
11707
|
continue;
|
11708
|
+
case 13:
|
11709
|
+
if (tag !== 106) {
|
11710
|
+
break;
|
11711
|
+
}
|
11712
|
+
message.sifTrailer = reader.bytes();
|
11713
|
+
continue;
|
11616
11714
|
}
|
11617
|
-
if ((tag & 7)
|
11715
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11618
11716
|
break;
|
11619
11717
|
}
|
11620
11718
|
reader.skipType(tag & 7);
|
@@ -11634,7 +11732,8 @@ const JoinResponse = {
|
|
11634
11732
|
serverRegion: isSet(object.serverRegion) ? String(object.serverRegion) : "",
|
11635
11733
|
pingTimeout: isSet(object.pingTimeout) ? Number(object.pingTimeout) : 0,
|
11636
11734
|
pingInterval: isSet(object.pingInterval) ? Number(object.pingInterval) : 0,
|
11637
|
-
serverInfo: isSet(object.serverInfo) ? ServerInfo.fromJSON(object.serverInfo) : undefined
|
11735
|
+
serverInfo: isSet(object.serverInfo) ? ServerInfo.fromJSON(object.serverInfo) : undefined,
|
11736
|
+
sifTrailer: isSet(object.sifTrailer) ? bytesFromBase64(object.sifTrailer) : new Uint8Array()
|
11638
11737
|
};
|
11639
11738
|
},
|
11640
11739
|
toJSON(message) {
|
@@ -11659,13 +11758,14 @@ const JoinResponse = {
|
|
11659
11758
|
message.pingTimeout !== undefined && (obj.pingTimeout = Math.round(message.pingTimeout));
|
11660
11759
|
message.pingInterval !== undefined && (obj.pingInterval = Math.round(message.pingInterval));
|
11661
11760
|
message.serverInfo !== undefined && (obj.serverInfo = message.serverInfo ? ServerInfo.toJSON(message.serverInfo) : undefined);
|
11761
|
+
message.sifTrailer !== undefined && (obj.sifTrailer = base64FromBytes(message.sifTrailer !== undefined ? message.sifTrailer : new Uint8Array()));
|
11662
11762
|
return obj;
|
11663
11763
|
},
|
11664
11764
|
create(base) {
|
11665
11765
|
return JoinResponse.fromPartial(base !== null && base !== void 0 ? base : {});
|
11666
11766
|
},
|
11667
11767
|
fromPartial(object) {
|
11668
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
11768
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
11669
11769
|
const message = createBaseJoinResponse();
|
11670
11770
|
message.room = object.room !== undefined && object.room !== null ? Room$1.fromPartial(object.room) : undefined;
|
11671
11771
|
message.participant = object.participant !== undefined && object.participant !== null ? ParticipantInfo.fromPartial(object.participant) : undefined;
|
@@ -11679,6 +11779,7 @@ const JoinResponse = {
|
|
11679
11779
|
message.pingTimeout = (_g = object.pingTimeout) !== null && _g !== void 0 ? _g : 0;
|
11680
11780
|
message.pingInterval = (_h = object.pingInterval) !== null && _h !== void 0 ? _h : 0;
|
11681
11781
|
message.serverInfo = object.serverInfo !== undefined && object.serverInfo !== null ? ServerInfo.fromPartial(object.serverInfo) : undefined;
|
11782
|
+
message.sifTrailer = (_j = object.sifTrailer) !== null && _j !== void 0 ? _j : new Uint8Array();
|
11682
11783
|
return message;
|
11683
11784
|
}
|
11684
11785
|
};
|
@@ -11707,19 +11808,19 @@ const ReconnectResponse = {
|
|
11707
11808
|
const tag = reader.uint32();
|
11708
11809
|
switch (tag >>> 3) {
|
11709
11810
|
case 1:
|
11710
|
-
if (tag
|
11811
|
+
if (tag !== 10) {
|
11711
11812
|
break;
|
11712
11813
|
}
|
11713
11814
|
message.iceServers.push(ICEServer.decode(reader, reader.uint32()));
|
11714
11815
|
continue;
|
11715
11816
|
case 2:
|
11716
|
-
if (tag
|
11817
|
+
if (tag !== 18) {
|
11717
11818
|
break;
|
11718
11819
|
}
|
11719
11820
|
message.clientConfiguration = ClientConfiguration.decode(reader, reader.uint32());
|
11720
11821
|
continue;
|
11721
11822
|
}
|
11722
|
-
if ((tag & 7)
|
11823
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11723
11824
|
break;
|
11724
11825
|
}
|
11725
11826
|
reader.skipType(tag & 7);
|
@@ -11778,19 +11879,19 @@ const TrackPublishedResponse = {
|
|
11778
11879
|
const tag = reader.uint32();
|
11779
11880
|
switch (tag >>> 3) {
|
11780
11881
|
case 1:
|
11781
|
-
if (tag
|
11882
|
+
if (tag !== 10) {
|
11782
11883
|
break;
|
11783
11884
|
}
|
11784
11885
|
message.cid = reader.string();
|
11785
11886
|
continue;
|
11786
11887
|
case 2:
|
11787
|
-
if (tag
|
11888
|
+
if (tag !== 18) {
|
11788
11889
|
break;
|
11789
11890
|
}
|
11790
11891
|
message.track = TrackInfo.decode(reader, reader.uint32());
|
11791
11892
|
continue;
|
11792
11893
|
}
|
11793
|
-
if ((tag & 7)
|
11894
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11794
11895
|
break;
|
11795
11896
|
}
|
11796
11897
|
reader.skipType(tag & 7);
|
@@ -11841,13 +11942,13 @@ const TrackUnpublishedResponse = {
|
|
11841
11942
|
const tag = reader.uint32();
|
11842
11943
|
switch (tag >>> 3) {
|
11843
11944
|
case 1:
|
11844
|
-
if (tag
|
11945
|
+
if (tag !== 10) {
|
11845
11946
|
break;
|
11846
11947
|
}
|
11847
11948
|
message.trackSid = reader.string();
|
11848
11949
|
continue;
|
11849
11950
|
}
|
11850
|
-
if ((tag & 7)
|
11951
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11851
11952
|
break;
|
11852
11953
|
}
|
11853
11954
|
reader.skipType(tag & 7);
|
@@ -11899,19 +12000,19 @@ const SessionDescription = {
|
|
11899
12000
|
const tag = reader.uint32();
|
11900
12001
|
switch (tag >>> 3) {
|
11901
12002
|
case 1:
|
11902
|
-
if (tag
|
12003
|
+
if (tag !== 10) {
|
11903
12004
|
break;
|
11904
12005
|
}
|
11905
12006
|
message.type = reader.string();
|
11906
12007
|
continue;
|
11907
12008
|
case 2:
|
11908
|
-
if (tag
|
12009
|
+
if (tag !== 18) {
|
11909
12010
|
break;
|
11910
12011
|
}
|
11911
12012
|
message.sdp = reader.string();
|
11912
12013
|
continue;
|
11913
12014
|
}
|
11914
|
-
if ((tag & 7)
|
12015
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11915
12016
|
break;
|
11916
12017
|
}
|
11917
12018
|
reader.skipType(tag & 7);
|
@@ -11962,13 +12063,13 @@ const ParticipantUpdate = {
|
|
11962
12063
|
const tag = reader.uint32();
|
11963
12064
|
switch (tag >>> 3) {
|
11964
12065
|
case 1:
|
11965
|
-
if (tag
|
12066
|
+
if (tag !== 10) {
|
11966
12067
|
break;
|
11967
12068
|
}
|
11968
12069
|
message.participants.push(ParticipantInfo.decode(reader, reader.uint32()));
|
11969
12070
|
continue;
|
11970
12071
|
}
|
11971
|
-
if ((tag & 7)
|
12072
|
+
if ((tag & 7) === 4 || tag === 0) {
|
11972
12073
|
break;
|
11973
12074
|
}
|
11974
12075
|
reader.skipType(tag & 7);
|
@@ -12028,25 +12129,25 @@ const UpdateSubscription = {
|
|
12028
12129
|
const tag = reader.uint32();
|
12029
12130
|
switch (tag >>> 3) {
|
12030
12131
|
case 1:
|
12031
|
-
if (tag
|
12132
|
+
if (tag !== 10) {
|
12032
12133
|
break;
|
12033
12134
|
}
|
12034
12135
|
message.trackSids.push(reader.string());
|
12035
12136
|
continue;
|
12036
12137
|
case 2:
|
12037
|
-
if (tag
|
12138
|
+
if (tag !== 16) {
|
12038
12139
|
break;
|
12039
12140
|
}
|
12040
12141
|
message.subscribe = reader.bool();
|
12041
12142
|
continue;
|
12042
12143
|
case 3:
|
12043
|
-
if (tag
|
12144
|
+
if (tag !== 26) {
|
12044
12145
|
break;
|
12045
12146
|
}
|
12046
12147
|
message.participantTracks.push(ParticipantTracks.decode(reader, reader.uint32()));
|
12047
12148
|
continue;
|
12048
12149
|
}
|
12049
|
-
if ((tag & 7)
|
12150
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12050
12151
|
break;
|
12051
12152
|
}
|
12052
12153
|
reader.skipType(tag & 7);
|
@@ -12132,49 +12233,49 @@ const UpdateTrackSettings = {
|
|
12132
12233
|
const tag = reader.uint32();
|
12133
12234
|
switch (tag >>> 3) {
|
12134
12235
|
case 1:
|
12135
|
-
if (tag
|
12236
|
+
if (tag !== 10) {
|
12136
12237
|
break;
|
12137
12238
|
}
|
12138
12239
|
message.trackSids.push(reader.string());
|
12139
12240
|
continue;
|
12140
12241
|
case 3:
|
12141
|
-
if (tag
|
12242
|
+
if (tag !== 24) {
|
12142
12243
|
break;
|
12143
12244
|
}
|
12144
12245
|
message.disabled = reader.bool();
|
12145
12246
|
continue;
|
12146
12247
|
case 4:
|
12147
|
-
if (tag
|
12248
|
+
if (tag !== 32) {
|
12148
12249
|
break;
|
12149
12250
|
}
|
12150
12251
|
message.quality = reader.int32();
|
12151
12252
|
continue;
|
12152
12253
|
case 5:
|
12153
|
-
if (tag
|
12254
|
+
if (tag !== 40) {
|
12154
12255
|
break;
|
12155
12256
|
}
|
12156
12257
|
message.width = reader.uint32();
|
12157
12258
|
continue;
|
12158
12259
|
case 6:
|
12159
|
-
if (tag
|
12260
|
+
if (tag !== 48) {
|
12160
12261
|
break;
|
12161
12262
|
}
|
12162
12263
|
message.height = reader.uint32();
|
12163
12264
|
continue;
|
12164
12265
|
case 7:
|
12165
|
-
if (tag
|
12266
|
+
if (tag !== 56) {
|
12166
12267
|
break;
|
12167
12268
|
}
|
12168
12269
|
message.fps = reader.uint32();
|
12169
12270
|
continue;
|
12170
12271
|
case 8:
|
12171
|
-
if (tag
|
12272
|
+
if (tag !== 64) {
|
12172
12273
|
break;
|
12173
12274
|
}
|
12174
12275
|
message.priority = reader.uint32();
|
12175
12276
|
continue;
|
12176
12277
|
}
|
12177
|
-
if ((tag & 7)
|
12278
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12178
12279
|
break;
|
12179
12280
|
}
|
12180
12281
|
reader.skipType(tag & 7);
|
@@ -12248,19 +12349,19 @@ const LeaveRequest = {
|
|
12248
12349
|
const tag = reader.uint32();
|
12249
12350
|
switch (tag >>> 3) {
|
12250
12351
|
case 1:
|
12251
|
-
if (tag
|
12352
|
+
if (tag !== 8) {
|
12252
12353
|
break;
|
12253
12354
|
}
|
12254
12355
|
message.canReconnect = reader.bool();
|
12255
12356
|
continue;
|
12256
12357
|
case 2:
|
12257
|
-
if (tag
|
12358
|
+
if (tag !== 16) {
|
12258
12359
|
break;
|
12259
12360
|
}
|
12260
12361
|
message.reason = reader.int32();
|
12261
12362
|
continue;
|
12262
12363
|
}
|
12263
|
-
if ((tag & 7)
|
12364
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12264
12365
|
break;
|
12265
12366
|
}
|
12266
12367
|
reader.skipType(tag & 7);
|
@@ -12315,19 +12416,19 @@ const UpdateVideoLayers = {
|
|
12315
12416
|
const tag = reader.uint32();
|
12316
12417
|
switch (tag >>> 3) {
|
12317
12418
|
case 1:
|
12318
|
-
if (tag
|
12419
|
+
if (tag !== 10) {
|
12319
12420
|
break;
|
12320
12421
|
}
|
12321
12422
|
message.trackSid = reader.string();
|
12322
12423
|
continue;
|
12323
12424
|
case 2:
|
12324
|
-
if (tag
|
12425
|
+
if (tag !== 18) {
|
12325
12426
|
break;
|
12326
12427
|
}
|
12327
12428
|
message.layers.push(VideoLayer.decode(reader, reader.uint32()));
|
12328
12429
|
continue;
|
12329
12430
|
}
|
12330
|
-
if ((tag & 7)
|
12431
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12331
12432
|
break;
|
12332
12433
|
}
|
12333
12434
|
reader.skipType(tag & 7);
|
@@ -12386,19 +12487,19 @@ const UpdateParticipantMetadata = {
|
|
12386
12487
|
const tag = reader.uint32();
|
12387
12488
|
switch (tag >>> 3) {
|
12388
12489
|
case 1:
|
12389
|
-
if (tag
|
12490
|
+
if (tag !== 10) {
|
12390
12491
|
break;
|
12391
12492
|
}
|
12392
12493
|
message.metadata = reader.string();
|
12393
12494
|
continue;
|
12394
12495
|
case 2:
|
12395
|
-
if (tag
|
12496
|
+
if (tag !== 18) {
|
12396
12497
|
break;
|
12397
12498
|
}
|
12398
12499
|
message.name = reader.string();
|
12399
12500
|
continue;
|
12400
12501
|
}
|
12401
|
-
if ((tag & 7)
|
12502
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12402
12503
|
break;
|
12403
12504
|
}
|
12404
12505
|
reader.skipType(tag & 7);
|
@@ -12457,25 +12558,25 @@ const ICEServer = {
|
|
12457
12558
|
const tag = reader.uint32();
|
12458
12559
|
switch (tag >>> 3) {
|
12459
12560
|
case 1:
|
12460
|
-
if (tag
|
12561
|
+
if (tag !== 10) {
|
12461
12562
|
break;
|
12462
12563
|
}
|
12463
12564
|
message.urls.push(reader.string());
|
12464
12565
|
continue;
|
12465
12566
|
case 2:
|
12466
|
-
if (tag
|
12567
|
+
if (tag !== 18) {
|
12467
12568
|
break;
|
12468
12569
|
}
|
12469
12570
|
message.username = reader.string();
|
12470
12571
|
continue;
|
12471
12572
|
case 3:
|
12472
|
-
if (tag
|
12573
|
+
if (tag !== 26) {
|
12473
12574
|
break;
|
12474
12575
|
}
|
12475
12576
|
message.credential = reader.string();
|
12476
12577
|
continue;
|
12477
12578
|
}
|
12478
|
-
if ((tag & 7)
|
12579
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12479
12580
|
break;
|
12480
12581
|
}
|
12481
12582
|
reader.skipType(tag & 7);
|
@@ -12533,13 +12634,13 @@ const SpeakersChanged = {
|
|
12533
12634
|
const tag = reader.uint32();
|
12534
12635
|
switch (tag >>> 3) {
|
12535
12636
|
case 1:
|
12536
|
-
if (tag
|
12637
|
+
if (tag !== 10) {
|
12537
12638
|
break;
|
12538
12639
|
}
|
12539
12640
|
message.speakers.push(SpeakerInfo.decode(reader, reader.uint32()));
|
12540
12641
|
continue;
|
12541
12642
|
}
|
12542
|
-
if ((tag & 7)
|
12643
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12543
12644
|
break;
|
12544
12645
|
}
|
12545
12646
|
reader.skipType(tag & 7);
|
@@ -12591,13 +12692,13 @@ const RoomUpdate = {
|
|
12591
12692
|
const tag = reader.uint32();
|
12592
12693
|
switch (tag >>> 3) {
|
12593
12694
|
case 1:
|
12594
|
-
if (tag
|
12695
|
+
if (tag !== 10) {
|
12595
12696
|
break;
|
12596
12697
|
}
|
12597
12698
|
message.room = Room$1.decode(reader, reader.uint32());
|
12598
12699
|
continue;
|
12599
12700
|
}
|
12600
|
-
if ((tag & 7)
|
12701
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12601
12702
|
break;
|
12602
12703
|
}
|
12603
12704
|
reader.skipType(tag & 7);
|
@@ -12652,25 +12753,25 @@ const ConnectionQualityInfo = {
|
|
12652
12753
|
const tag = reader.uint32();
|
12653
12754
|
switch (tag >>> 3) {
|
12654
12755
|
case 1:
|
12655
|
-
if (tag
|
12756
|
+
if (tag !== 10) {
|
12656
12757
|
break;
|
12657
12758
|
}
|
12658
12759
|
message.participantSid = reader.string();
|
12659
12760
|
continue;
|
12660
12761
|
case 2:
|
12661
|
-
if (tag
|
12762
|
+
if (tag !== 16) {
|
12662
12763
|
break;
|
12663
12764
|
}
|
12664
12765
|
message.quality = reader.int32();
|
12665
12766
|
continue;
|
12666
12767
|
case 3:
|
12667
|
-
if (tag
|
12768
|
+
if (tag !== 29) {
|
12668
12769
|
break;
|
12669
12770
|
}
|
12670
12771
|
message.score = reader.float();
|
12671
12772
|
continue;
|
12672
12773
|
}
|
12673
|
-
if ((tag & 7)
|
12774
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12674
12775
|
break;
|
12675
12776
|
}
|
12676
12777
|
reader.skipType(tag & 7);
|
@@ -12724,13 +12825,13 @@ const ConnectionQualityUpdate = {
|
|
12724
12825
|
const tag = reader.uint32();
|
12725
12826
|
switch (tag >>> 3) {
|
12726
12827
|
case 1:
|
12727
|
-
if (tag
|
12828
|
+
if (tag !== 10) {
|
12728
12829
|
break;
|
12729
12830
|
}
|
12730
12831
|
message.updates.push(ConnectionQualityInfo.decode(reader, reader.uint32()));
|
12731
12832
|
continue;
|
12732
12833
|
}
|
12733
|
-
if ((tag & 7)
|
12834
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12734
12835
|
break;
|
12735
12836
|
}
|
12736
12837
|
reader.skipType(tag & 7);
|
@@ -12790,25 +12891,25 @@ const StreamStateInfo = {
|
|
12790
12891
|
const tag = reader.uint32();
|
12791
12892
|
switch (tag >>> 3) {
|
12792
12893
|
case 1:
|
12793
|
-
if (tag
|
12894
|
+
if (tag !== 10) {
|
12794
12895
|
break;
|
12795
12896
|
}
|
12796
12897
|
message.participantSid = reader.string();
|
12797
12898
|
continue;
|
12798
12899
|
case 2:
|
12799
|
-
if (tag
|
12900
|
+
if (tag !== 18) {
|
12800
12901
|
break;
|
12801
12902
|
}
|
12802
12903
|
message.trackSid = reader.string();
|
12803
12904
|
continue;
|
12804
12905
|
case 3:
|
12805
|
-
if (tag
|
12906
|
+
if (tag !== 24) {
|
12806
12907
|
break;
|
12807
12908
|
}
|
12808
12909
|
message.state = reader.int32();
|
12809
12910
|
continue;
|
12810
12911
|
}
|
12811
|
-
if ((tag & 7)
|
12912
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12812
12913
|
break;
|
12813
12914
|
}
|
12814
12915
|
reader.skipType(tag & 7);
|
@@ -12862,13 +12963,13 @@ const StreamStateUpdate = {
|
|
12862
12963
|
const tag = reader.uint32();
|
12863
12964
|
switch (tag >>> 3) {
|
12864
12965
|
case 1:
|
12865
|
-
if (tag
|
12966
|
+
if (tag !== 10) {
|
12866
12967
|
break;
|
12867
12968
|
}
|
12868
12969
|
message.streamStates.push(StreamStateInfo.decode(reader, reader.uint32()));
|
12869
12970
|
continue;
|
12870
12971
|
}
|
12871
|
-
if ((tag & 7)
|
12972
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12872
12973
|
break;
|
12873
12974
|
}
|
12874
12975
|
reader.skipType(tag & 7);
|
@@ -12924,19 +13025,19 @@ const SubscribedQuality = {
|
|
12924
13025
|
const tag = reader.uint32();
|
12925
13026
|
switch (tag >>> 3) {
|
12926
13027
|
case 1:
|
12927
|
-
if (tag
|
13028
|
+
if (tag !== 8) {
|
12928
13029
|
break;
|
12929
13030
|
}
|
12930
13031
|
message.quality = reader.int32();
|
12931
13032
|
continue;
|
12932
13033
|
case 2:
|
12933
|
-
if (tag
|
13034
|
+
if (tag !== 16) {
|
12934
13035
|
break;
|
12935
13036
|
}
|
12936
13037
|
message.enabled = reader.bool();
|
12937
13038
|
continue;
|
12938
13039
|
}
|
12939
|
-
if ((tag & 7)
|
13040
|
+
if ((tag & 7) === 4 || tag === 0) {
|
12940
13041
|
break;
|
12941
13042
|
}
|
12942
13043
|
reader.skipType(tag & 7);
|
@@ -12991,19 +13092,19 @@ const SubscribedCodec = {
|
|
12991
13092
|
const tag = reader.uint32();
|
12992
13093
|
switch (tag >>> 3) {
|
12993
13094
|
case 1:
|
12994
|
-
if (tag
|
13095
|
+
if (tag !== 10) {
|
12995
13096
|
break;
|
12996
13097
|
}
|
12997
13098
|
message.codec = reader.string();
|
12998
13099
|
continue;
|
12999
13100
|
case 2:
|
13000
|
-
if (tag
|
13101
|
+
if (tag !== 18) {
|
13001
13102
|
break;
|
13002
13103
|
}
|
13003
13104
|
message.qualities.push(SubscribedQuality.decode(reader, reader.uint32()));
|
13004
13105
|
continue;
|
13005
13106
|
}
|
13006
|
-
if ((tag & 7)
|
13107
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13007
13108
|
break;
|
13008
13109
|
}
|
13009
13110
|
reader.skipType(tag & 7);
|
@@ -13066,25 +13167,25 @@ const SubscribedQualityUpdate = {
|
|
13066
13167
|
const tag = reader.uint32();
|
13067
13168
|
switch (tag >>> 3) {
|
13068
13169
|
case 1:
|
13069
|
-
if (tag
|
13170
|
+
if (tag !== 10) {
|
13070
13171
|
break;
|
13071
13172
|
}
|
13072
13173
|
message.trackSid = reader.string();
|
13073
13174
|
continue;
|
13074
13175
|
case 2:
|
13075
|
-
if (tag
|
13176
|
+
if (tag !== 18) {
|
13076
13177
|
break;
|
13077
13178
|
}
|
13078
13179
|
message.subscribedQualities.push(SubscribedQuality.decode(reader, reader.uint32()));
|
13079
13180
|
continue;
|
13080
13181
|
case 3:
|
13081
|
-
if (tag
|
13182
|
+
if (tag !== 26) {
|
13082
13183
|
break;
|
13083
13184
|
}
|
13084
13185
|
message.subscribedCodecs.push(SubscribedCodec.decode(reader, reader.uint32()));
|
13085
13186
|
continue;
|
13086
13187
|
}
|
13087
|
-
if ((tag & 7)
|
13188
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13088
13189
|
break;
|
13089
13190
|
}
|
13090
13191
|
reader.skipType(tag & 7);
|
@@ -13158,31 +13259,31 @@ const TrackPermission = {
|
|
13158
13259
|
const tag = reader.uint32();
|
13159
13260
|
switch (tag >>> 3) {
|
13160
13261
|
case 1:
|
13161
|
-
if (tag
|
13262
|
+
if (tag !== 10) {
|
13162
13263
|
break;
|
13163
13264
|
}
|
13164
13265
|
message.participantSid = reader.string();
|
13165
13266
|
continue;
|
13166
13267
|
case 2:
|
13167
|
-
if (tag
|
13268
|
+
if (tag !== 16) {
|
13168
13269
|
break;
|
13169
13270
|
}
|
13170
13271
|
message.allTracks = reader.bool();
|
13171
13272
|
continue;
|
13172
13273
|
case 3:
|
13173
|
-
if (tag
|
13274
|
+
if (tag !== 26) {
|
13174
13275
|
break;
|
13175
13276
|
}
|
13176
13277
|
message.trackSids.push(reader.string());
|
13177
13278
|
continue;
|
13178
13279
|
case 4:
|
13179
|
-
if (tag
|
13280
|
+
if (tag !== 34) {
|
13180
13281
|
break;
|
13181
13282
|
}
|
13182
13283
|
message.participantIdentity = reader.string();
|
13183
13284
|
continue;
|
13184
13285
|
}
|
13185
|
-
if ((tag & 7)
|
13286
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13186
13287
|
break;
|
13187
13288
|
}
|
13188
13289
|
reader.skipType(tag & 7);
|
@@ -13247,19 +13348,19 @@ const SubscriptionPermission = {
|
|
13247
13348
|
const tag = reader.uint32();
|
13248
13349
|
switch (tag >>> 3) {
|
13249
13350
|
case 1:
|
13250
|
-
if (tag
|
13351
|
+
if (tag !== 8) {
|
13251
13352
|
break;
|
13252
13353
|
}
|
13253
13354
|
message.allParticipants = reader.bool();
|
13254
13355
|
continue;
|
13255
13356
|
case 2:
|
13256
|
-
if (tag
|
13357
|
+
if (tag !== 18) {
|
13257
13358
|
break;
|
13258
13359
|
}
|
13259
13360
|
message.trackPermissions.push(TrackPermission.decode(reader, reader.uint32()));
|
13260
13361
|
continue;
|
13261
13362
|
}
|
13262
|
-
if ((tag & 7)
|
13363
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13263
13364
|
break;
|
13264
13365
|
}
|
13265
13366
|
reader.skipType(tag & 7);
|
@@ -13322,25 +13423,25 @@ const SubscriptionPermissionUpdate = {
|
|
13322
13423
|
const tag = reader.uint32();
|
13323
13424
|
switch (tag >>> 3) {
|
13324
13425
|
case 1:
|
13325
|
-
if (tag
|
13426
|
+
if (tag !== 10) {
|
13326
13427
|
break;
|
13327
13428
|
}
|
13328
13429
|
message.participantSid = reader.string();
|
13329
13430
|
continue;
|
13330
13431
|
case 2:
|
13331
|
-
if (tag
|
13432
|
+
if (tag !== 18) {
|
13332
13433
|
break;
|
13333
13434
|
}
|
13334
13435
|
message.trackSid = reader.string();
|
13335
13436
|
continue;
|
13336
13437
|
case 3:
|
13337
|
-
if (tag
|
13438
|
+
if (tag !== 24) {
|
13338
13439
|
break;
|
13339
13440
|
}
|
13340
13441
|
message.allowed = reader.bool();
|
13341
13442
|
continue;
|
13342
13443
|
}
|
13343
|
-
if ((tag & 7)
|
13444
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13344
13445
|
break;
|
13345
13446
|
}
|
13346
13447
|
reader.skipType(tag & 7);
|
@@ -13410,37 +13511,37 @@ const SyncState = {
|
|
13410
13511
|
const tag = reader.uint32();
|
13411
13512
|
switch (tag >>> 3) {
|
13412
13513
|
case 1:
|
13413
|
-
if (tag
|
13514
|
+
if (tag !== 10) {
|
13414
13515
|
break;
|
13415
13516
|
}
|
13416
13517
|
message.answer = SessionDescription.decode(reader, reader.uint32());
|
13417
13518
|
continue;
|
13418
13519
|
case 2:
|
13419
|
-
if (tag
|
13520
|
+
if (tag !== 18) {
|
13420
13521
|
break;
|
13421
13522
|
}
|
13422
13523
|
message.subscription = UpdateSubscription.decode(reader, reader.uint32());
|
13423
13524
|
continue;
|
13424
13525
|
case 3:
|
13425
|
-
if (tag
|
13526
|
+
if (tag !== 26) {
|
13426
13527
|
break;
|
13427
13528
|
}
|
13428
13529
|
message.publishTracks.push(TrackPublishedResponse.decode(reader, reader.uint32()));
|
13429
13530
|
continue;
|
13430
13531
|
case 4:
|
13431
|
-
if (tag
|
13532
|
+
if (tag !== 34) {
|
13432
13533
|
break;
|
13433
13534
|
}
|
13434
13535
|
message.dataChannels.push(DataChannelInfo.decode(reader, reader.uint32()));
|
13435
13536
|
continue;
|
13436
13537
|
case 5:
|
13437
|
-
if (tag
|
13538
|
+
if (tag !== 42) {
|
13438
13539
|
break;
|
13439
13540
|
}
|
13440
13541
|
message.offer = SessionDescription.decode(reader, reader.uint32());
|
13441
13542
|
continue;
|
13442
13543
|
}
|
13443
|
-
if ((tag & 7)
|
13544
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13444
13545
|
break;
|
13445
13546
|
}
|
13446
13547
|
reader.skipType(tag & 7);
|
@@ -13516,25 +13617,25 @@ const DataChannelInfo = {
|
|
13516
13617
|
const tag = reader.uint32();
|
13517
13618
|
switch (tag >>> 3) {
|
13518
13619
|
case 1:
|
13519
|
-
if (tag
|
13620
|
+
if (tag !== 10) {
|
13520
13621
|
break;
|
13521
13622
|
}
|
13522
13623
|
message.label = reader.string();
|
13523
13624
|
continue;
|
13524
13625
|
case 2:
|
13525
|
-
if (tag
|
13626
|
+
if (tag !== 16) {
|
13526
13627
|
break;
|
13527
13628
|
}
|
13528
13629
|
message.id = reader.uint32();
|
13529
13630
|
continue;
|
13530
13631
|
case 3:
|
13531
|
-
if (tag
|
13632
|
+
if (tag !== 24) {
|
13532
13633
|
break;
|
13533
13634
|
}
|
13534
13635
|
message.target = reader.int32();
|
13535
13636
|
continue;
|
13536
13637
|
}
|
13537
|
-
if ((tag & 7)
|
13638
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13538
13639
|
break;
|
13539
13640
|
}
|
13540
13641
|
reader.skipType(tag & 7);
|
@@ -13606,7 +13707,7 @@ const SimulateScenario = {
|
|
13606
13707
|
const tag = reader.uint32();
|
13607
13708
|
switch (tag >>> 3) {
|
13608
13709
|
case 1:
|
13609
|
-
if (tag
|
13710
|
+
if (tag !== 8) {
|
13610
13711
|
break;
|
13611
13712
|
}
|
13612
13713
|
message.scenario = {
|
@@ -13615,7 +13716,7 @@ const SimulateScenario = {
|
|
13615
13716
|
};
|
13616
13717
|
continue;
|
13617
13718
|
case 2:
|
13618
|
-
if (tag
|
13719
|
+
if (tag !== 16) {
|
13619
13720
|
break;
|
13620
13721
|
}
|
13621
13722
|
message.scenario = {
|
@@ -13624,7 +13725,7 @@ const SimulateScenario = {
|
|
13624
13725
|
};
|
13625
13726
|
continue;
|
13626
13727
|
case 3:
|
13627
|
-
if (tag
|
13728
|
+
if (tag !== 24) {
|
13628
13729
|
break;
|
13629
13730
|
}
|
13630
13731
|
message.scenario = {
|
@@ -13633,7 +13734,7 @@ const SimulateScenario = {
|
|
13633
13734
|
};
|
13634
13735
|
continue;
|
13635
13736
|
case 4:
|
13636
|
-
if (tag
|
13737
|
+
if (tag !== 32) {
|
13637
13738
|
break;
|
13638
13739
|
}
|
13639
13740
|
message.scenario = {
|
@@ -13642,7 +13743,7 @@ const SimulateScenario = {
|
|
13642
13743
|
};
|
13643
13744
|
continue;
|
13644
13745
|
case 5:
|
13645
|
-
if (tag
|
13746
|
+
if (tag !== 40) {
|
13646
13747
|
break;
|
13647
13748
|
}
|
13648
13749
|
message.scenario = {
|
@@ -13651,7 +13752,7 @@ const SimulateScenario = {
|
|
13651
13752
|
};
|
13652
13753
|
continue;
|
13653
13754
|
case 6:
|
13654
|
-
if (tag
|
13755
|
+
if (tag !== 48) {
|
13655
13756
|
break;
|
13656
13757
|
}
|
13657
13758
|
message.scenario = {
|
@@ -13660,7 +13761,7 @@ const SimulateScenario = {
|
|
13660
13761
|
};
|
13661
13762
|
continue;
|
13662
13763
|
}
|
13663
|
-
if ((tag & 7)
|
13764
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13664
13765
|
break;
|
13665
13766
|
}
|
13666
13767
|
reader.skipType(tag & 7);
|
@@ -13771,19 +13872,19 @@ const Ping = {
|
|
13771
13872
|
const tag = reader.uint32();
|
13772
13873
|
switch (tag >>> 3) {
|
13773
13874
|
case 1:
|
13774
|
-
if (tag
|
13875
|
+
if (tag !== 8) {
|
13775
13876
|
break;
|
13776
13877
|
}
|
13777
13878
|
message.timestamp = longToNumber(reader.int64());
|
13778
13879
|
continue;
|
13779
13880
|
case 2:
|
13780
|
-
if (tag
|
13881
|
+
if (tag !== 16) {
|
13781
13882
|
break;
|
13782
13883
|
}
|
13783
13884
|
message.rtt = longToNumber(reader.int64());
|
13784
13885
|
continue;
|
13785
13886
|
}
|
13786
|
-
if ((tag & 7)
|
13887
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13787
13888
|
break;
|
13788
13889
|
}
|
13789
13890
|
reader.skipType(tag & 7);
|
@@ -13838,19 +13939,19 @@ const Pong = {
|
|
13838
13939
|
const tag = reader.uint32();
|
13839
13940
|
switch (tag >>> 3) {
|
13840
13941
|
case 1:
|
13841
|
-
if (tag
|
13942
|
+
if (tag !== 8) {
|
13842
13943
|
break;
|
13843
13944
|
}
|
13844
13945
|
message.lastPingTimestamp = longToNumber(reader.int64());
|
13845
13946
|
continue;
|
13846
13947
|
case 2:
|
13847
|
-
if (tag
|
13948
|
+
if (tag !== 16) {
|
13848
13949
|
break;
|
13849
13950
|
}
|
13850
13951
|
message.timestamp = longToNumber(reader.int64());
|
13851
13952
|
continue;
|
13852
13953
|
}
|
13853
|
-
if ((tag & 7)
|
13954
|
+
if ((tag & 7) === 4 || tag === 0) {
|
13854
13955
|
break;
|
13855
13956
|
}
|
13856
13957
|
reader.skipType(tag & 7);
|
@@ -13880,6 +13981,73 @@ const Pong = {
|
|
13880
13981
|
return message;
|
13881
13982
|
}
|
13882
13983
|
};
|
13984
|
+
function createBaseSubscriptionResponse() {
|
13985
|
+
return {
|
13986
|
+
trackSid: "",
|
13987
|
+
err: 0
|
13988
|
+
};
|
13989
|
+
}
|
13990
|
+
const SubscriptionResponse = {
|
13991
|
+
encode(message) {
|
13992
|
+
let writer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _m0.Writer.create();
|
13993
|
+
if (message.trackSid !== "") {
|
13994
|
+
writer.uint32(10).string(message.trackSid);
|
13995
|
+
}
|
13996
|
+
if (message.err !== 0) {
|
13997
|
+
writer.uint32(16).int32(message.err);
|
13998
|
+
}
|
13999
|
+
return writer;
|
14000
|
+
},
|
14001
|
+
decode(input, length) {
|
14002
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
14003
|
+
let end = length === undefined ? reader.len : reader.pos + length;
|
14004
|
+
const message = createBaseSubscriptionResponse();
|
14005
|
+
while (reader.pos < end) {
|
14006
|
+
const tag = reader.uint32();
|
14007
|
+
switch (tag >>> 3) {
|
14008
|
+
case 1:
|
14009
|
+
if (tag !== 10) {
|
14010
|
+
break;
|
14011
|
+
}
|
14012
|
+
message.trackSid = reader.string();
|
14013
|
+
continue;
|
14014
|
+
case 2:
|
14015
|
+
if (tag !== 16) {
|
14016
|
+
break;
|
14017
|
+
}
|
14018
|
+
message.err = reader.int32();
|
14019
|
+
continue;
|
14020
|
+
}
|
14021
|
+
if ((tag & 7) === 4 || tag === 0) {
|
14022
|
+
break;
|
14023
|
+
}
|
14024
|
+
reader.skipType(tag & 7);
|
14025
|
+
}
|
14026
|
+
return message;
|
14027
|
+
},
|
14028
|
+
fromJSON(object) {
|
14029
|
+
return {
|
14030
|
+
trackSid: isSet(object.trackSid) ? String(object.trackSid) : "",
|
14031
|
+
err: isSet(object.err) ? subscriptionErrorFromJSON(object.err) : 0
|
14032
|
+
};
|
14033
|
+
},
|
14034
|
+
toJSON(message) {
|
14035
|
+
const obj = {};
|
14036
|
+
message.trackSid !== undefined && (obj.trackSid = message.trackSid);
|
14037
|
+
message.err !== undefined && (obj.err = subscriptionErrorToJSON(message.err));
|
14038
|
+
return obj;
|
14039
|
+
},
|
14040
|
+
create(base) {
|
14041
|
+
return SubscriptionResponse.fromPartial(base !== null && base !== void 0 ? base : {});
|
14042
|
+
},
|
14043
|
+
fromPartial(object) {
|
14044
|
+
var _a, _b;
|
14045
|
+
const message = createBaseSubscriptionResponse();
|
14046
|
+
message.trackSid = (_a = object.trackSid) !== null && _a !== void 0 ? _a : "";
|
14047
|
+
message.err = (_b = object.err) !== null && _b !== void 0 ? _b : 0;
|
14048
|
+
return message;
|
14049
|
+
}
|
14050
|
+
};
|
13883
14051
|
var tsProtoGlobalThis = (() => {
|
13884
14052
|
if (typeof globalThis !== "undefined") {
|
13885
14053
|
return globalThis;
|
@@ -13895,6 +14063,29 @@ var tsProtoGlobalThis = (() => {
|
|
13895
14063
|
}
|
13896
14064
|
throw "Unable to locate global object";
|
13897
14065
|
})();
|
14066
|
+
function bytesFromBase64(b64) {
|
14067
|
+
if (tsProtoGlobalThis.Buffer) {
|
14068
|
+
return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
|
14069
|
+
} else {
|
14070
|
+
const bin = tsProtoGlobalThis.atob(b64);
|
14071
|
+
const arr = new Uint8Array(bin.length);
|
14072
|
+
for (let i = 0; i < bin.length; ++i) {
|
14073
|
+
arr[i] = bin.charCodeAt(i);
|
14074
|
+
}
|
14075
|
+
return arr;
|
14076
|
+
}
|
14077
|
+
}
|
14078
|
+
function base64FromBytes(arr) {
|
14079
|
+
if (tsProtoGlobalThis.Buffer) {
|
14080
|
+
return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
|
14081
|
+
} else {
|
14082
|
+
const bin = [];
|
14083
|
+
arr.forEach(byte => {
|
14084
|
+
bin.push(String.fromCharCode(byte));
|
14085
|
+
});
|
14086
|
+
return tsProtoGlobalThis.btoa(bin.join(""));
|
14087
|
+
}
|
14088
|
+
}
|
13898
14089
|
function longToNumber(long) {
|
13899
14090
|
if (long.gt(Number.MAX_SAFE_INTEGER)) {
|
13900
14091
|
throw new tsProtoGlobalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
|
@@ -14010,7 +14201,7 @@ let browserDetails;
|
|
14010
14201
|
*/
|
14011
14202
|
function getBrowser(userAgent) {
|
14012
14203
|
let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
14013
|
-
if (userAgent ===
|
14204
|
+
if (typeof userAgent === 'undefined' && typeof navigator === 'undefined') {
|
14014
14205
|
return;
|
14015
14206
|
}
|
14016
14207
|
const ua = (userAgent !== null && userAgent !== void 0 ? userAgent : navigator.userAgent).toLowerCase();
|
@@ -14060,7 +14251,7 @@ function getMatch(exp, ua) {
|
|
14060
14251
|
return match && match.length >= id && match[id] || '';
|
14061
14252
|
}
|
14062
14253
|
|
14063
|
-
var version$1 = "1.
|
14254
|
+
var version$1 = "1.10.0";
|
14064
14255
|
|
14065
14256
|
const version = version$1;
|
14066
14257
|
const protocolVersion = 9;
|
@@ -14610,7 +14801,7 @@ class SignalClient {
|
|
14610
14801
|
const params = createConnectionParams(token, clientInfo, opts);
|
14611
14802
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
14612
14803
|
const abortHandler = () => __awaiter(this, void 0, void 0, function* () {
|
14613
|
-
|
14804
|
+
this.close();
|
14614
14805
|
reject(new ConnectionError('room connection has been cancelled (signal)'));
|
14615
14806
|
});
|
14616
14807
|
if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {
|
@@ -14956,6 +15147,10 @@ class SignalClient {
|
|
14956
15147
|
if (this.onLocalTrackUnpublished) {
|
14957
15148
|
this.onLocalTrackUnpublished(msg.trackUnpublished);
|
14958
15149
|
}
|
15150
|
+
} else if (msg.$case === 'subscriptionResponse') {
|
15151
|
+
if (this.onSubscriptionError) {
|
15152
|
+
this.onSubscriptionError(msg.subscriptionResponse);
|
15153
|
+
}
|
14959
15154
|
} else if (msg.$case === 'pong') {
|
14960
15155
|
this.resetPingTimeout();
|
14961
15156
|
} else if (msg.$case === 'pongResp') {
|
@@ -16812,6 +17007,10 @@ var TrackEvent;
|
|
16812
17007
|
* Fires on RemoteTrackPublication
|
16813
17008
|
*/
|
16814
17009
|
TrackEvent["SubscriptionStatusChanged"] = "subscriptionStatusChanged";
|
17010
|
+
/**
|
17011
|
+
* Fires on RemoteTrackPublication
|
17012
|
+
*/
|
17013
|
+
TrackEvent["SubscriptionFailed"] = "subscriptionFailed";
|
16815
17014
|
})(TrackEvent || (TrackEvent = {}));
|
16816
17015
|
|
16817
17016
|
const BACKGROUND_REACTION_DELAY = 5000;
|
@@ -16893,7 +17092,7 @@ class Track extends eventsExports.EventEmitter {
|
|
16893
17092
|
// even if we believe it's already attached to the element, it's possible
|
16894
17093
|
// the element's srcObject was set to something else out of band.
|
16895
17094
|
// we'll want to re-attach it in that case
|
16896
|
-
attachToElement(this.
|
17095
|
+
attachToElement(this.mediaStreamTrack, element);
|
16897
17096
|
// handle auto playback failures
|
16898
17097
|
const allMediaStreamTracks = element.srcObject.getTracks();
|
16899
17098
|
if (allMediaStreamTracks.some(tr => tr.kind === 'audio')) {
|
@@ -16922,7 +17121,7 @@ class Track extends eventsExports.EventEmitter {
|
|
16922
17121
|
try {
|
16923
17122
|
// detach from a single element
|
16924
17123
|
if (element) {
|
16925
|
-
detachTrack(this.
|
17124
|
+
detachTrack(this.mediaStreamTrack, element);
|
16926
17125
|
const idx = this.attachedElements.indexOf(element);
|
16927
17126
|
if (idx >= 0) {
|
16928
17127
|
this.attachedElements.splice(idx, 1);
|
@@ -16933,7 +17132,7 @@ class Track extends eventsExports.EventEmitter {
|
|
16933
17132
|
}
|
16934
17133
|
const detached = [];
|
16935
17134
|
this.attachedElements.forEach(elm => {
|
16936
|
-
detachTrack(this.
|
17135
|
+
detachTrack(this.mediaStreamTrack, elm);
|
16937
17136
|
detached.push(elm);
|
16938
17137
|
this.recycleElement(elm);
|
16939
17138
|
this.emit(TrackEvent.ElementDetached, elm);
|
@@ -18233,6 +18432,7 @@ class LocalTrack extends Track {
|
|
18233
18432
|
constructor(mediaTrack, kind, constraints) {
|
18234
18433
|
let userProvidedTrack = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
18235
18434
|
super(mediaTrack, kind);
|
18435
|
+
this.isSettingUpProcessor = false;
|
18236
18436
|
this._isUpstreamPaused = false;
|
18237
18437
|
this.handleEnded = () => {
|
18238
18438
|
if (this.isInBackground) {
|
@@ -18272,6 +18472,10 @@ class LocalTrack extends Track {
|
|
18272
18472
|
get isUserProvided() {
|
18273
18473
|
return this.providedByUser;
|
18274
18474
|
}
|
18475
|
+
get mediaStreamTrack() {
|
18476
|
+
var _a, _b;
|
18477
|
+
return (_b = (_a = this.processor) === null || _a === void 0 ? void 0 : _a.processedTrack) !== null && _b !== void 0 ? _b : this._mediaStreamTrack;
|
18478
|
+
}
|
18275
18479
|
waitForDimensions() {
|
18276
18480
|
let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDimensionsTimeout;
|
18277
18481
|
return __awaiter(this, void 0, void 0, function* () {
|
@@ -18349,6 +18553,9 @@ class LocalTrack extends Track {
|
|
18349
18553
|
});
|
18350
18554
|
this.mediaStream = new MediaStream([track]);
|
18351
18555
|
this.providedByUser = userProvidedTrack;
|
18556
|
+
if (this.processor) {
|
18557
|
+
yield this.stopProcessor();
|
18558
|
+
}
|
18352
18559
|
return this;
|
18353
18560
|
});
|
18354
18561
|
}
|
@@ -18369,7 +18576,7 @@ class LocalTrack extends Track {
|
|
18369
18576
|
}
|
18370
18577
|
// detach
|
18371
18578
|
this.attachedElements.forEach(el => {
|
18372
|
-
detachTrack(this.
|
18579
|
+
detachTrack(this.mediaStreamTrack, el);
|
18373
18580
|
});
|
18374
18581
|
this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);
|
18375
18582
|
// on Safari, the old audio track must be stopped before attempting to acquire
|
@@ -18387,11 +18594,16 @@ class LocalTrack extends Track {
|
|
18387
18594
|
}
|
18388
18595
|
this._mediaStreamTrack = newTrack;
|
18389
18596
|
yield this.resumeUpstream();
|
18390
|
-
this.attachedElements.forEach(el => {
|
18391
|
-
attachToElement(newTrack, el);
|
18392
|
-
});
|
18393
18597
|
this.mediaStream = mediaStream;
|
18394
18598
|
this.constraints = constraints;
|
18599
|
+
if (this.processor) {
|
18600
|
+
const processor = this.processor;
|
18601
|
+
yield this.setProcessor(processor);
|
18602
|
+
} else {
|
18603
|
+
this.attachedElements.forEach(el => {
|
18604
|
+
attachToElement(this._mediaStreamTrack, el);
|
18605
|
+
});
|
18606
|
+
}
|
18395
18607
|
this.emit(TrackEvent.Restarted, this);
|
18396
18608
|
return this;
|
18397
18609
|
});
|
@@ -18425,6 +18637,18 @@ class LocalTrack extends Track {
|
|
18425
18637
|
}
|
18426
18638
|
});
|
18427
18639
|
}
|
18640
|
+
stop() {
|
18641
|
+
var _a;
|
18642
|
+
super.stop();
|
18643
|
+
(_a = this.processor) === null || _a === void 0 ? void 0 : _a.destroy();
|
18644
|
+
this.processor = undefined;
|
18645
|
+
}
|
18646
|
+
/**
|
18647
|
+
* pauses publishing to the server without disabling the local MediaStreamTrack
|
18648
|
+
* this is used to display a user's own video locally while pausing publishing to
|
18649
|
+
* the server.
|
18650
|
+
* this API is unsupported on Safari < 12 due to a bug
|
18651
|
+
**/
|
18428
18652
|
pauseUpstream() {
|
18429
18653
|
return __awaiter(this, void 0, void 0, function* () {
|
18430
18654
|
const unlock = yield this.pauseUpstreamLock.lock();
|
@@ -18438,8 +18662,12 @@ class LocalTrack extends Track {
|
|
18438
18662
|
}
|
18439
18663
|
this._isUpstreamPaused = true;
|
18440
18664
|
this.emit(TrackEvent.UpstreamPaused, this);
|
18441
|
-
const
|
18442
|
-
|
18665
|
+
const browser = getBrowser();
|
18666
|
+
if ((browser === null || browser === void 0 ? void 0 : browser.name) === 'Safari' && compareVersions(browser.version, '12.0') < 0) {
|
18667
|
+
// https://bugs.webkit.org/show_bug.cgi?id=184911
|
18668
|
+
throw new DeviceUnsupportedError('pauseUpstream is not supported on Safari < 12.');
|
18669
|
+
}
|
18670
|
+
yield this.sender.replaceTrack(null);
|
18443
18671
|
} finally {
|
18444
18672
|
unlock();
|
18445
18673
|
}
|
@@ -18464,6 +18692,78 @@ class LocalTrack extends Track {
|
|
18464
18692
|
}
|
18465
18693
|
});
|
18466
18694
|
}
|
18695
|
+
/**
|
18696
|
+
* Sets a processor on this track.
|
18697
|
+
* See https://github.com/livekit/track-processors-js for example usage
|
18698
|
+
*
|
18699
|
+
* @experimental
|
18700
|
+
*
|
18701
|
+
* @param processor
|
18702
|
+
* @param showProcessedStreamLocally
|
18703
|
+
* @returns
|
18704
|
+
*/
|
18705
|
+
setProcessor(processor) {
|
18706
|
+
let showProcessedStreamLocally = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
18707
|
+
var _a, _b;
|
18708
|
+
return __awaiter(this, void 0, void 0, function* () {
|
18709
|
+
if (this.isSettingUpProcessor) {
|
18710
|
+
livekitLogger.warn('already trying to set up a processor');
|
18711
|
+
return;
|
18712
|
+
}
|
18713
|
+
livekitLogger.debug('setting up processor');
|
18714
|
+
this.isSettingUpProcessor = true;
|
18715
|
+
if (this.processor) {
|
18716
|
+
yield this.stopProcessor();
|
18717
|
+
}
|
18718
|
+
if (this.kind === 'unknown') {
|
18719
|
+
throw TypeError('cannot set processor on track of unknown kind');
|
18720
|
+
}
|
18721
|
+
this.processorElement = (_a = this.processorElement) !== null && _a !== void 0 ? _a : document.createElement(this.kind);
|
18722
|
+
this.processorElement.muted = true;
|
18723
|
+
attachToElement(this._mediaStreamTrack, this.processorElement);
|
18724
|
+
this.processorElement.play().catch(e => livekitLogger.error(e));
|
18725
|
+
const processorOptions = {
|
18726
|
+
kind: this.kind,
|
18727
|
+
track: this._mediaStreamTrack,
|
18728
|
+
element: this.processorElement
|
18729
|
+
};
|
18730
|
+
yield processor.init(processorOptions);
|
18731
|
+
this.processor = processor;
|
18732
|
+
if (this.processor.processedTrack) {
|
18733
|
+
for (const el of this.attachedElements) {
|
18734
|
+
if (el !== this.processorElement && showProcessedStreamLocally) {
|
18735
|
+
detachTrack(this._mediaStreamTrack, el);
|
18736
|
+
attachToElement(this.processor.processedTrack, el);
|
18737
|
+
}
|
18738
|
+
}
|
18739
|
+
yield (_b = this.sender) === null || _b === void 0 ? void 0 : _b.replaceTrack(this.processor.processedTrack);
|
18740
|
+
}
|
18741
|
+
this.isSettingUpProcessor = false;
|
18742
|
+
});
|
18743
|
+
}
|
18744
|
+
getProcessor() {
|
18745
|
+
return this.processor;
|
18746
|
+
}
|
18747
|
+
/**
|
18748
|
+
* Stops the track processor
|
18749
|
+
* See https://github.com/livekit/track-processors-js for example usage
|
18750
|
+
*
|
18751
|
+
* @experimental
|
18752
|
+
* @returns
|
18753
|
+
*/
|
18754
|
+
stopProcessor() {
|
18755
|
+
var _a, _b;
|
18756
|
+
return __awaiter(this, void 0, void 0, function* () {
|
18757
|
+
if (!this.processor) return;
|
18758
|
+
livekitLogger.debug('stopping processor');
|
18759
|
+
(_a = this.processor.processedTrack) === null || _a === void 0 ? void 0 : _a.stop();
|
18760
|
+
yield this.processor.destroy();
|
18761
|
+
this.processor = undefined;
|
18762
|
+
(_b = this.processorElement) === null || _b === void 0 ? void 0 : _b.remove();
|
18763
|
+
this.processorElement = undefined;
|
18764
|
+
yield this.restart();
|
18765
|
+
});
|
18766
|
+
}
|
18467
18767
|
}
|
18468
18768
|
|
18469
18769
|
class LocalAudioTrack extends LocalTrack {
|
@@ -18629,67 +18929,366 @@ class LocalAudioTrack extends LocalTrack {
|
|
18629
18929
|
}
|
18630
18930
|
}
|
18631
18931
|
|
18632
|
-
|
18633
|
-
|
18634
|
-
|
18635
|
-
|
18636
|
-
|
18637
|
-
|
18638
|
-
|
18639
|
-
|
18640
|
-
|
18641
|
-
let userProvidedTrack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
18642
|
-
super(mediaTrack, Track.Kind.Video, constraints, userProvidedTrack);
|
18643
|
-
/* @internal */
|
18644
|
-
this.simulcastCodecs = new Map();
|
18645
|
-
this.monitorSender = () => __awaiter(this, void 0, void 0, function* () {
|
18646
|
-
if (!this.sender) {
|
18647
|
-
this._currentBitrate = 0;
|
18648
|
-
return;
|
18649
|
-
}
|
18650
|
-
let stats;
|
18651
|
-
try {
|
18652
|
-
stats = yield this.getSenderStats();
|
18653
|
-
} catch (e) {
|
18654
|
-
livekitLogger.error('could not get audio sender stats', {
|
18655
|
-
error: e
|
18656
|
-
});
|
18657
|
-
return;
|
18658
|
-
}
|
18659
|
-
const statsMap = new Map(stats.map(s => [s.rid, s]));
|
18660
|
-
if (this.prevStats) {
|
18661
|
-
let totalBitrate = 0;
|
18662
|
-
statsMap.forEach((s, key) => {
|
18663
|
-
var _a;
|
18664
|
-
const prev = (_a = this.prevStats) === null || _a === void 0 ? void 0 : _a.get(key);
|
18665
|
-
totalBitrate += computeBitrate(s, prev);
|
18666
|
-
});
|
18667
|
-
this._currentBitrate = totalBitrate;
|
18668
|
-
}
|
18669
|
-
this.prevStats = statsMap;
|
18670
|
-
});
|
18671
|
-
this.senderLock = new Mutex();
|
18672
|
-
}
|
18673
|
-
get isSimulcast() {
|
18674
|
-
if (this.sender && this.sender.getParameters().encodings.length > 1) {
|
18675
|
-
return true;
|
18676
|
-
}
|
18677
|
-
return false;
|
18932
|
+
/** @internal */
|
18933
|
+
function mediaTrackToLocalTrack(mediaStreamTrack, constraints) {
|
18934
|
+
switch (mediaStreamTrack.kind) {
|
18935
|
+
case 'audio':
|
18936
|
+
return new LocalAudioTrack(mediaStreamTrack, constraints, false);
|
18937
|
+
case 'video':
|
18938
|
+
return new LocalVideoTrack(mediaStreamTrack, constraints, false);
|
18939
|
+
default:
|
18940
|
+
throw new TrackInvalidError("unsupported track type: ".concat(mediaStreamTrack.kind));
|
18678
18941
|
}
|
18679
|
-
|
18680
|
-
|
18942
|
+
}
|
18943
|
+
/* @internal */
|
18944
|
+
const presets169 = Object.values(VideoPresets);
|
18945
|
+
/* @internal */
|
18946
|
+
const presets43 = Object.values(VideoPresets43);
|
18947
|
+
/* @internal */
|
18948
|
+
const presetsScreenShare = Object.values(ScreenSharePresets);
|
18949
|
+
/* @internal */
|
18950
|
+
const defaultSimulcastPresets169 = [VideoPresets.h180, VideoPresets.h360];
|
18951
|
+
/* @internal */
|
18952
|
+
const defaultSimulcastPresets43 = [VideoPresets43.h180, VideoPresets43.h360];
|
18953
|
+
/* @internal */
|
18954
|
+
const computeDefaultScreenShareSimulcastPresets = fromPreset => {
|
18955
|
+
const layers = [{
|
18956
|
+
scaleResolutionDownBy: 2,
|
18957
|
+
fps: 3
|
18958
|
+
}];
|
18959
|
+
return layers.map(t => {
|
18681
18960
|
var _a;
|
18682
|
-
|
18683
|
-
|
18684
|
-
|
18685
|
-
|
18686
|
-
|
18687
|
-
|
18688
|
-
|
18689
|
-
|
18690
|
-
|
18691
|
-
|
18692
|
-
|
18961
|
+
return new VideoPreset(Math.floor(fromPreset.width / t.scaleResolutionDownBy), Math.floor(fromPreset.height / t.scaleResolutionDownBy), Math.max(150000, Math.floor(fromPreset.encoding.maxBitrate / (Math.pow(t.scaleResolutionDownBy, 2) * (((_a = fromPreset.encoding.maxFramerate) !== null && _a !== void 0 ? _a : 30) / t.fps)))), t.fps, fromPreset.encoding.priority);
|
18962
|
+
});
|
18963
|
+
};
|
18964
|
+
// /**
|
18965
|
+
// *
|
18966
|
+
// * @internal
|
18967
|
+
// * @experimental
|
18968
|
+
// */
|
18969
|
+
// const computeDefaultMultiCodecSimulcastEncodings = (width: number, height: number) => {
|
18970
|
+
// // use vp8 as a default
|
18971
|
+
// const vp8 = determineAppropriateEncoding(false, width, height);
|
18972
|
+
// const vp9 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.9 };
|
18973
|
+
// const h264 = { ...vp8, maxBitrate: vp8.maxBitrate * 1.1 };
|
18974
|
+
// const av1 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.7 };
|
18975
|
+
// return {
|
18976
|
+
// vp8,
|
18977
|
+
// vp9,
|
18978
|
+
// h264,
|
18979
|
+
// av1,
|
18980
|
+
// };
|
18981
|
+
// };
|
18982
|
+
const videoRids = ['q', 'h', 'f'];
|
18983
|
+
/* @internal */
|
18984
|
+
function computeVideoEncodings(isScreenShare, width, height, options) {
|
18985
|
+
var _a, _b;
|
18986
|
+
let videoEncoding = options === null || options === void 0 ? void 0 : options.videoEncoding;
|
18987
|
+
if (isScreenShare) {
|
18988
|
+
videoEncoding = options === null || options === void 0 ? void 0 : options.screenShareEncoding;
|
18989
|
+
}
|
18990
|
+
const useSimulcast = options === null || options === void 0 ? void 0 : options.simulcast;
|
18991
|
+
const scalabilityMode = options === null || options === void 0 ? void 0 : options.scalabilityMode;
|
18992
|
+
const videoCodec = options === null || options === void 0 ? void 0 : options.videoCodec;
|
18993
|
+
if (!videoEncoding && !useSimulcast && !scalabilityMode || !width || !height) {
|
18994
|
+
// when we aren't simulcasting or svc, will need to return a single encoding without
|
18995
|
+
// capping bandwidth. we always require a encoding for dynacast
|
18996
|
+
return [{}];
|
18997
|
+
}
|
18998
|
+
if (!videoEncoding) {
|
18999
|
+
// find the right encoding based on width/height
|
19000
|
+
videoEncoding = determineAppropriateEncoding(isScreenShare, width, height, videoCodec);
|
19001
|
+
livekitLogger.debug('using video encoding', videoEncoding);
|
19002
|
+
}
|
19003
|
+
const original = new VideoPreset(width, height, videoEncoding.maxBitrate, videoEncoding.maxFramerate);
|
19004
|
+
if (scalabilityMode && isSVCCodec(videoCodec)) {
|
19005
|
+
livekitLogger.debug("using svc with scalabilityMode ".concat(scalabilityMode));
|
19006
|
+
const encodings = [];
|
19007
|
+
// svc use first encoding as the original, so we sort encoding from high to low
|
19008
|
+
switch (scalabilityMode) {
|
19009
|
+
case 'L3T3':
|
19010
|
+
case 'L3T3_KEY':
|
19011
|
+
encodings.push({
|
19012
|
+
rid: videoRids[2],
|
19013
|
+
maxBitrate: videoEncoding.maxBitrate,
|
19014
|
+
/* @ts-ignore */
|
19015
|
+
maxFramerate: original.encoding.maxFramerate,
|
19016
|
+
/* @ts-ignore */
|
19017
|
+
scalabilityMode: scalabilityMode
|
19018
|
+
});
|
19019
|
+
livekitLogger.debug('encodings', encodings);
|
19020
|
+
return encodings;
|
19021
|
+
default:
|
19022
|
+
// TODO : support other scalability modes
|
19023
|
+
throw new Error("unsupported scalabilityMode: ".concat(scalabilityMode));
|
19024
|
+
}
|
19025
|
+
}
|
19026
|
+
if (!useSimulcast) {
|
19027
|
+
return [videoEncoding];
|
19028
|
+
}
|
19029
|
+
let presets = [];
|
19030
|
+
if (isScreenShare) {
|
19031
|
+
presets = (_a = sortPresets(options === null || options === void 0 ? void 0 : options.screenShareSimulcastLayers)) !== null && _a !== void 0 ? _a : defaultSimulcastLayers(isScreenShare, original);
|
19032
|
+
} else {
|
19033
|
+
presets = (_b = sortPresets(options === null || options === void 0 ? void 0 : options.videoSimulcastLayers)) !== null && _b !== void 0 ? _b : defaultSimulcastLayers(isScreenShare, original);
|
19034
|
+
}
|
19035
|
+
let midPreset;
|
19036
|
+
if (presets.length > 0) {
|
19037
|
+
const lowPreset = presets[0];
|
19038
|
+
if (presets.length > 1) {
|
19039
|
+
[, midPreset] = presets;
|
19040
|
+
}
|
19041
|
+
// NOTE:
|
19042
|
+
// 1. Ordering of these encodings is important. Chrome seems
|
19043
|
+
// to use the index into encodings to decide which layer
|
19044
|
+
// to disable when CPU constrained.
|
19045
|
+
// So encodings should be ordered in increasing spatial
|
19046
|
+
// resolution order.
|
19047
|
+
// 2. ion-sfu translates rids into layers. So, all encodings
|
19048
|
+
// should have the base layer `q` and then more added
|
19049
|
+
// based on other conditions.
|
19050
|
+
const size = Math.max(width, height);
|
19051
|
+
if (size >= 960 && midPreset) {
|
19052
|
+
return encodingsFromPresets(width, height, [lowPreset, midPreset, original]);
|
19053
|
+
}
|
19054
|
+
if (size >= 480) {
|
19055
|
+
return encodingsFromPresets(width, height, [lowPreset, original]);
|
19056
|
+
}
|
19057
|
+
}
|
19058
|
+
return encodingsFromPresets(width, height, [original]);
|
19059
|
+
}
|
19060
|
+
function computeTrackBackupEncodings(track, videoCodec, opts) {
|
19061
|
+
var _a, _b, _c, _d;
|
19062
|
+
if (!opts.backupCodec || opts.backupCodec.codec === opts.videoCodec) {
|
19063
|
+
// backup codec publishing is disabled
|
19064
|
+
return;
|
19065
|
+
}
|
19066
|
+
if (videoCodec !== opts.backupCodec.codec) {
|
19067
|
+
livekitLogger.warn('requested a different codec than specified as backup', {
|
19068
|
+
serverRequested: videoCodec,
|
19069
|
+
backup: opts.backupCodec.codec
|
19070
|
+
});
|
19071
|
+
}
|
19072
|
+
opts.videoCodec = videoCodec;
|
19073
|
+
// use backup encoding setting as videoEncoding for backup codec publishing
|
19074
|
+
opts.videoEncoding = opts.backupCodec.encoding;
|
19075
|
+
const settings = track.mediaStreamTrack.getSettings();
|
19076
|
+
const width = (_a = settings.width) !== null && _a !== void 0 ? _a : (_b = track.dimensions) === null || _b === void 0 ? void 0 : _b.width;
|
19077
|
+
const height = (_c = settings.height) !== null && _c !== void 0 ? _c : (_d = track.dimensions) === null || _d === void 0 ? void 0 : _d.height;
|
19078
|
+
const encodings = computeVideoEncodings(track.source === Track.Source.ScreenShare, width, height, opts);
|
19079
|
+
return encodings;
|
19080
|
+
}
|
19081
|
+
/* @internal */
|
19082
|
+
function determineAppropriateEncoding(isScreenShare, width, height, codec) {
|
19083
|
+
const presets = presetsForResolution(isScreenShare, width, height);
|
19084
|
+
let {
|
19085
|
+
encoding
|
19086
|
+
} = presets[0];
|
19087
|
+
// handle portrait by swapping dimensions
|
19088
|
+
const size = Math.max(width, height);
|
19089
|
+
for (let i = 0; i < presets.length; i += 1) {
|
19090
|
+
const preset = presets[i];
|
19091
|
+
encoding = preset.encoding;
|
19092
|
+
if (preset.width >= size) {
|
19093
|
+
break;
|
19094
|
+
}
|
19095
|
+
}
|
19096
|
+
// presets are based on the assumption of vp8 as a codec
|
19097
|
+
// for other codecs we adjust the maxBitrate if no specific videoEncoding has been provided
|
19098
|
+
// TODO make the bitrate multipliers configurable per codec
|
19099
|
+
if (codec) {
|
19100
|
+
switch (codec) {
|
19101
|
+
case 'av1':
|
19102
|
+
encoding = Object.assign({}, encoding);
|
19103
|
+
encoding.maxBitrate = encoding.maxBitrate * 0.7;
|
19104
|
+
break;
|
19105
|
+
case 'vp9':
|
19106
|
+
encoding = Object.assign({}, encoding);
|
19107
|
+
encoding.maxBitrate = encoding.maxBitrate * 0.85;
|
19108
|
+
break;
|
19109
|
+
}
|
19110
|
+
}
|
19111
|
+
return encoding;
|
19112
|
+
}
|
19113
|
+
/* @internal */
|
19114
|
+
function presetsForResolution(isScreenShare, width, height) {
|
19115
|
+
if (isScreenShare) {
|
19116
|
+
return presetsScreenShare;
|
19117
|
+
}
|
19118
|
+
const aspect = width > height ? width / height : height / width;
|
19119
|
+
if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
|
19120
|
+
return presets169;
|
19121
|
+
}
|
19122
|
+
return presets43;
|
19123
|
+
}
|
19124
|
+
/* @internal */
|
19125
|
+
function defaultSimulcastLayers(isScreenShare, original) {
|
19126
|
+
if (isScreenShare) {
|
19127
|
+
return computeDefaultScreenShareSimulcastPresets(original);
|
19128
|
+
}
|
19129
|
+
const {
|
19130
|
+
width,
|
19131
|
+
height
|
19132
|
+
} = original;
|
19133
|
+
const aspect = width > height ? width / height : height / width;
|
19134
|
+
if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
|
19135
|
+
return defaultSimulcastPresets169;
|
19136
|
+
}
|
19137
|
+
return defaultSimulcastPresets43;
|
19138
|
+
}
|
19139
|
+
// presets should be ordered by low, medium, high
|
19140
|
+
function encodingsFromPresets(width, height, presets) {
|
19141
|
+
const encodings = [];
|
19142
|
+
presets.forEach((preset, idx) => {
|
19143
|
+
if (idx >= videoRids.length) {
|
19144
|
+
return;
|
19145
|
+
}
|
19146
|
+
const size = Math.min(width, height);
|
19147
|
+
const rid = videoRids[idx];
|
19148
|
+
const encoding = {
|
19149
|
+
rid,
|
19150
|
+
scaleResolutionDownBy: Math.max(1, size / Math.min(preset.width, preset.height)),
|
19151
|
+
maxBitrate: preset.encoding.maxBitrate
|
19152
|
+
};
|
19153
|
+
if (preset.encoding.maxFramerate) {
|
19154
|
+
encoding.maxFramerate = preset.encoding.maxFramerate;
|
19155
|
+
}
|
19156
|
+
if (preset.encoding.priority) {
|
19157
|
+
encoding.priority = preset.encoding.priority;
|
19158
|
+
encoding.networkPriority = preset.encoding.priority;
|
19159
|
+
}
|
19160
|
+
encodings.push(encoding);
|
19161
|
+
});
|
19162
|
+
// RN ios simulcast requires all same framerates.
|
19163
|
+
if (isReactNative() && getReactNativeOs() === 'ios') {
|
19164
|
+
let topFramerate = undefined;
|
19165
|
+
encodings.forEach(encoding => {
|
19166
|
+
if (!topFramerate) {
|
19167
|
+
topFramerate = encoding.maxFramerate;
|
19168
|
+
} else if (encoding.maxFramerate && encoding.maxFramerate > topFramerate) {
|
19169
|
+
topFramerate = encoding.maxFramerate;
|
19170
|
+
}
|
19171
|
+
});
|
19172
|
+
let notifyOnce = true;
|
19173
|
+
encodings.forEach(encoding => {
|
19174
|
+
var _a;
|
19175
|
+
if (encoding.maxFramerate != topFramerate) {
|
19176
|
+
if (notifyOnce) {
|
19177
|
+
notifyOnce = false;
|
19178
|
+
livekitLogger.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.");
|
19179
|
+
}
|
19180
|
+
livekitLogger.info("Setting framerate of encoding \"".concat((_a = encoding.rid) !== null && _a !== void 0 ? _a : '', "\" to ").concat(topFramerate));
|
19181
|
+
encoding.maxFramerate = topFramerate;
|
19182
|
+
}
|
19183
|
+
});
|
19184
|
+
}
|
19185
|
+
return encodings;
|
19186
|
+
}
|
19187
|
+
/** @internal */
|
19188
|
+
function sortPresets(presets) {
|
19189
|
+
if (!presets) return;
|
19190
|
+
return presets.sort((a, b) => {
|
19191
|
+
const {
|
19192
|
+
encoding: aEnc
|
19193
|
+
} = a;
|
19194
|
+
const {
|
19195
|
+
encoding: bEnc
|
19196
|
+
} = b;
|
19197
|
+
if (aEnc.maxBitrate > bEnc.maxBitrate) {
|
19198
|
+
return 1;
|
19199
|
+
}
|
19200
|
+
if (aEnc.maxBitrate < bEnc.maxBitrate) return -1;
|
19201
|
+
if (aEnc.maxBitrate === bEnc.maxBitrate && aEnc.maxFramerate && bEnc.maxFramerate) {
|
19202
|
+
return aEnc.maxFramerate > bEnc.maxFramerate ? 1 : -1;
|
19203
|
+
}
|
19204
|
+
return 0;
|
19205
|
+
});
|
19206
|
+
}
|
19207
|
+
/** @internal */
|
19208
|
+
class ScalabilityMode {
|
19209
|
+
constructor(scalabilityMode) {
|
19210
|
+
const results = scalabilityMode.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);
|
19211
|
+
if (!results) {
|
19212
|
+
throw new Error('invalid scalability mode');
|
19213
|
+
}
|
19214
|
+
this.spatial = parseInt(results[1]);
|
19215
|
+
this.temporal = parseInt(results[2]);
|
19216
|
+
if (results.length > 3) {
|
19217
|
+
switch (results[3]) {
|
19218
|
+
case 'h':
|
19219
|
+
case '_KEY':
|
19220
|
+
case '_KEY_SHIFT':
|
19221
|
+
this.suffix = results[3];
|
19222
|
+
}
|
19223
|
+
}
|
19224
|
+
}
|
19225
|
+
toString() {
|
19226
|
+
var _a;
|
19227
|
+
return "L".concat(this.spatial, "T").concat(this.temporal).concat((_a = this.suffix) !== null && _a !== void 0 ? _a : '');
|
19228
|
+
}
|
19229
|
+
}
|
19230
|
+
|
19231
|
+
const refreshSubscribedCodecAfterNewCodec = 5000;
|
19232
|
+
class LocalVideoTrack extends LocalTrack {
|
19233
|
+
/**
|
19234
|
+
*
|
19235
|
+
* @param mediaTrack
|
19236
|
+
* @param constraints MediaTrackConstraints that are being used when restarting or reacquiring tracks
|
19237
|
+
* @param userProvidedTrack Signals to the SDK whether or not the mediaTrack should be managed (i.e. released and reacquired) internally by the SDK
|
19238
|
+
*/
|
19239
|
+
constructor(mediaTrack, constraints) {
|
19240
|
+
let userProvidedTrack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
19241
|
+
super(mediaTrack, Track.Kind.Video, constraints, userProvidedTrack);
|
19242
|
+
/* @internal */
|
19243
|
+
this.simulcastCodecs = new Map();
|
19244
|
+
this.monitorSender = () => __awaiter(this, void 0, void 0, function* () {
|
19245
|
+
if (!this.sender) {
|
19246
|
+
this._currentBitrate = 0;
|
19247
|
+
return;
|
19248
|
+
}
|
19249
|
+
let stats;
|
19250
|
+
try {
|
19251
|
+
stats = yield this.getSenderStats();
|
19252
|
+
} catch (e) {
|
19253
|
+
livekitLogger.error('could not get audio sender stats', {
|
19254
|
+
error: e
|
19255
|
+
});
|
19256
|
+
return;
|
19257
|
+
}
|
19258
|
+
const statsMap = new Map(stats.map(s => [s.rid, s]));
|
19259
|
+
if (this.prevStats) {
|
19260
|
+
let totalBitrate = 0;
|
19261
|
+
statsMap.forEach((s, key) => {
|
19262
|
+
var _a;
|
19263
|
+
const prev = (_a = this.prevStats) === null || _a === void 0 ? void 0 : _a.get(key);
|
19264
|
+
totalBitrate += computeBitrate(s, prev);
|
19265
|
+
});
|
19266
|
+
this._currentBitrate = totalBitrate;
|
19267
|
+
}
|
19268
|
+
this.prevStats = statsMap;
|
19269
|
+
});
|
19270
|
+
this.senderLock = new Mutex();
|
19271
|
+
}
|
19272
|
+
get isSimulcast() {
|
19273
|
+
if (this.sender && this.sender.getParameters().encodings.length > 1) {
|
19274
|
+
return true;
|
19275
|
+
}
|
19276
|
+
return false;
|
19277
|
+
}
|
19278
|
+
/* @internal */
|
19279
|
+
startMonitor(signalClient) {
|
19280
|
+
var _a;
|
19281
|
+
this.signalClient = signalClient;
|
19282
|
+
if (!isWeb()) {
|
19283
|
+
return;
|
19284
|
+
}
|
19285
|
+
// save original encodings
|
19286
|
+
// TODO : merge simulcast tracks stats
|
19287
|
+
const params = (_a = this.sender) === null || _a === void 0 ? void 0 : _a.getParameters();
|
19288
|
+
if (params) {
|
19289
|
+
this.encodings = params.encodings;
|
19290
|
+
}
|
19291
|
+
if (this.monitorInterval) {
|
18693
19292
|
return;
|
18694
19293
|
}
|
18695
19294
|
this.monitorInterval = setInterval(() => {
|
@@ -18870,30 +19469,26 @@ class LocalVideoTrack extends LocalTrack {
|
|
18870
19469
|
this.subscribedCodecs = codecs;
|
18871
19470
|
const newCodecs = [];
|
18872
19471
|
try {
|
18873
|
-
for (_a = true, codecs_1 = __asyncValues(codecs); codecs_1_1 = yield codecs_1.next(), _b = codecs_1_1.done, !_b;) {
|
19472
|
+
for (_a = true, codecs_1 = __asyncValues(codecs); codecs_1_1 = yield codecs_1.next(), _b = codecs_1_1.done, !_b; _a = true) {
|
18874
19473
|
_d = codecs_1_1.value;
|
18875
19474
|
_a = false;
|
18876
|
-
|
18877
|
-
|
18878
|
-
|
18879
|
-
|
18880
|
-
|
18881
|
-
|
18882
|
-
|
18883
|
-
|
18884
|
-
|
18885
|
-
|
18886
|
-
|
18887
|
-
break;
|
18888
|
-
}
|
19475
|
+
const codec = _d;
|
19476
|
+
if (!this.codec || this.codec === codec.codec) {
|
19477
|
+
yield this.setPublishingLayers(codec.qualities);
|
19478
|
+
} else {
|
19479
|
+
const simulcastCodecInfo = this.simulcastCodecs.get(codec.codec);
|
19480
|
+
livekitLogger.debug("try setPublishingCodec for ".concat(codec.codec), simulcastCodecInfo);
|
19481
|
+
if (!simulcastCodecInfo || !simulcastCodecInfo.sender) {
|
19482
|
+
for (const q of codec.qualities) {
|
19483
|
+
if (q.enabled) {
|
19484
|
+
newCodecs.push(codec.codec);
|
19485
|
+
break;
|
18889
19486
|
}
|
18890
|
-
} else if (simulcastCodecInfo.encodings) {
|
18891
|
-
livekitLogger.debug("try setPublishingLayersForSender ".concat(codec.codec));
|
18892
|
-
yield setPublishingLayersForSender(simulcastCodecInfo.sender, simulcastCodecInfo.encodings, codec.qualities, this.senderLock);
|
18893
19487
|
}
|
19488
|
+
} else if (simulcastCodecInfo.encodings) {
|
19489
|
+
livekitLogger.debug("try setPublishingLayersForSender ".concat(codec.codec));
|
19490
|
+
yield setPublishingLayersForSender(simulcastCodecInfo.sender, simulcastCodecInfo.encodings, codec.qualities, this.senderLock);
|
18894
19491
|
}
|
18895
|
-
} finally {
|
18896
|
-
_a = true;
|
18897
19492
|
}
|
18898
19493
|
}
|
18899
19494
|
} catch (e_1_1) {
|
@@ -18959,40 +19554,81 @@ function setPublishingLayersForSender(sender, senderEncodings, qualities, sender
|
|
18959
19554
|
return;
|
18960
19555
|
}
|
18961
19556
|
let hasChanged = false;
|
18962
|
-
|
18963
|
-
|
18964
|
-
|
18965
|
-
|
18966
|
-
|
18967
|
-
|
18968
|
-
|
18969
|
-
|
18970
|
-
|
18971
|
-
|
18972
|
-
|
18973
|
-
|
19557
|
+
/* @ts-ignore */
|
19558
|
+
if (encodings.length === 1 && encodings[0].scalabilityMode) {
|
19559
|
+
// svc dynacast encodings
|
19560
|
+
const encoding = encodings[0];
|
19561
|
+
/* @ts-ignore */
|
19562
|
+
// const mode = new ScalabilityMode(encoding.scalabilityMode);
|
19563
|
+
let maxQuality = VideoQuality.OFF;
|
19564
|
+
qualities.forEach(q => {
|
19565
|
+
if (q.enabled && (maxQuality === VideoQuality.OFF || q.quality > maxQuality)) {
|
19566
|
+
maxQuality = q.quality;
|
19567
|
+
}
|
19568
|
+
});
|
19569
|
+
if (maxQuality === VideoQuality.OFF) {
|
19570
|
+
if (encoding.active) {
|
19571
|
+
encoding.active = false;
|
19572
|
+
hasChanged = true;
|
19573
|
+
}
|
19574
|
+
} else if (!encoding.active /* || mode.spatial !== maxQuality + 1*/) {
|
18974
19575
|
hasChanged = true;
|
18975
|
-
encoding.active =
|
18976
|
-
|
18977
|
-
|
18978
|
-
|
18979
|
-
|
18980
|
-
|
18981
|
-
|
18982
|
-
|
18983
|
-
|
18984
|
-
|
18985
|
-
|
18986
|
-
|
18987
|
-
|
18988
|
-
|
18989
|
-
|
19576
|
+
encoding.active = true;
|
19577
|
+
/* disable closable spatial layer as it has video blur/frozen issue with current server/client
|
19578
|
+
1. chrome 113: when switching to up layer with scalability Mode change, it will generate a
|
19579
|
+
low resolution frame and recover very quickly, but noticable
|
19580
|
+
2. livekit sfu: additional pli request cause video frozen for a few frames, also noticable
|
19581
|
+
@ts-ignore
|
19582
|
+
const originalMode = new ScalabilityMode(senderEncodings[0].scalabilityMode)
|
19583
|
+
mode.spatial = maxQuality + 1;
|
19584
|
+
mode.suffix = originalMode.suffix;
|
19585
|
+
if (mode.spatial === 1) {
|
19586
|
+
// no suffix for L1Tx
|
19587
|
+
mode.suffix = undefined;
|
19588
|
+
}
|
19589
|
+
@ts-ignore
|
19590
|
+
encoding.scalabilityMode = mode.toString();
|
19591
|
+
encoding.scaleResolutionDownBy = 2 ** (2 - maxQuality);
|
19592
|
+
*/
|
19593
|
+
}
|
19594
|
+
} else {
|
19595
|
+
// simulcast dynacast encodings
|
19596
|
+
encodings.forEach((encoding, idx) => {
|
19597
|
+
var _a;
|
19598
|
+
let rid = (_a = encoding.rid) !== null && _a !== void 0 ? _a : '';
|
19599
|
+
if (rid === '') {
|
19600
|
+
rid = 'q';
|
19601
|
+
}
|
19602
|
+
const quality = videoQualityForRid(rid);
|
19603
|
+
const subscribedQuality = qualities.find(q => q.quality === quality);
|
19604
|
+
if (!subscribedQuality) {
|
19605
|
+
return;
|
19606
|
+
}
|
19607
|
+
if (encoding.active !== subscribedQuality.enabled) {
|
19608
|
+
hasChanged = true;
|
19609
|
+
encoding.active = subscribedQuality.enabled;
|
19610
|
+
livekitLogger.debug("setting layer ".concat(subscribedQuality.quality, " to ").concat(encoding.active ? 'enabled' : 'disabled'));
|
19611
|
+
// FireFox does not support setting encoding.active to false, so we
|
19612
|
+
// have a workaround of lowering its bitrate and resolution to the min.
|
19613
|
+
if (isFireFox()) {
|
19614
|
+
if (subscribedQuality.enabled) {
|
19615
|
+
encoding.scaleResolutionDownBy = senderEncodings[idx].scaleResolutionDownBy;
|
19616
|
+
encoding.maxBitrate = senderEncodings[idx].maxBitrate;
|
19617
|
+
/* @ts-ignore */
|
19618
|
+
encoding.maxFrameRate = senderEncodings[idx].maxFrameRate;
|
19619
|
+
} else {
|
19620
|
+
encoding.scaleResolutionDownBy = 4;
|
19621
|
+
encoding.maxBitrate = 10;
|
19622
|
+
/* @ts-ignore */
|
19623
|
+
encoding.maxFrameRate = 2;
|
19624
|
+
}
|
18990
19625
|
}
|
18991
19626
|
}
|
18992
|
-
}
|
18993
|
-
}
|
19627
|
+
});
|
19628
|
+
}
|
18994
19629
|
if (hasChanged) {
|
18995
19630
|
params.encodings = encodings;
|
19631
|
+
livekitLogger.debug("setting encodings", params.encodings);
|
18996
19632
|
yield sender.setParameters(params);
|
18997
19633
|
}
|
18998
19634
|
} finally {
|
@@ -19023,6 +19659,23 @@ function videoLayersFromEncodings(width, height, encodings) {
|
|
19023
19659
|
ssrc: 0
|
19024
19660
|
}];
|
19025
19661
|
}
|
19662
|
+
/* @ts-ignore */
|
19663
|
+
if (encodings.length === 1 && encodings[0].scalabilityMode) {
|
19664
|
+
// svc layers
|
19665
|
+
/* @ts-ignore */
|
19666
|
+
const sm = new ScalabilityMode(encodings[0].scalabilityMode);
|
19667
|
+
const layers = [];
|
19668
|
+
for (let i = 0; i < sm.spatial; i += 1) {
|
19669
|
+
layers.push({
|
19670
|
+
quality: VideoQuality.HIGH - i,
|
19671
|
+
width: width / Math.pow(2, i),
|
19672
|
+
height: height / Math.pow(2, i),
|
19673
|
+
bitrate: encodings[0].maxBitrate ? encodings[0].maxBitrate / Math.pow(3, i) : 0,
|
19674
|
+
ssrc: 0
|
19675
|
+
});
|
19676
|
+
}
|
19677
|
+
return layers;
|
19678
|
+
}
|
19026
19679
|
return encodings.map(encoding => {
|
19027
19680
|
var _a, _b, _c;
|
19028
19681
|
const scale = (_a = encoding.scaleResolutionDownBy) !== null && _a !== void 0 ? _a : 1;
|
@@ -20111,6 +20764,10 @@ class RemoteTrackPublication extends TrackPublication {
|
|
20111
20764
|
this.emitSubscriptionUpdateIfChanged(prevStatus);
|
20112
20765
|
}
|
20113
20766
|
/** @internal */
|
20767
|
+
setSubscriptionError(error) {
|
20768
|
+
this.emit(TrackEvent.SubscriptionFailed, error);
|
20769
|
+
}
|
20770
|
+
/** @internal */
|
20114
20771
|
updateInfo(info) {
|
20115
20772
|
super.updateInfo(info);
|
20116
20773
|
const prevMetadataMuted = this.metadataMuted;
|
@@ -20201,491 +20858,239 @@ class RemoteParticipant extends Participant {
|
|
20201
20858
|
publication.on(TrackEvent.SubscriptionPermissionChanged, status => {
|
20202
20859
|
this.emit(ParticipantEvent.TrackSubscriptionPermissionChanged, publication, status);
|
20203
20860
|
});
|
20204
|
-
publication.on(TrackEvent.SubscriptionStatusChanged, status => {
|
20205
|
-
this.emit(ParticipantEvent.TrackSubscriptionStatusChanged, publication, status);
|
20206
|
-
});
|
20207
|
-
publication.on(TrackEvent.Subscribed, track => {
|
20208
|
-
this.emit(ParticipantEvent.TrackSubscribed, track, publication);
|
20209
|
-
});
|
20210
|
-
publication.on(TrackEvent.Unsubscribed, previousTrack => {
|
20211
|
-
this.emit(ParticipantEvent.TrackUnsubscribed, previousTrack, publication);
|
20212
|
-
});
|
20213
|
-
}
|
20214
|
-
getTrack(source) {
|
20215
|
-
const track = super.getTrack(source);
|
20216
|
-
if (track) {
|
20217
|
-
return track;
|
20218
|
-
}
|
20219
|
-
}
|
20220
|
-
getTrackByName(name) {
|
20221
|
-
const track = super.getTrackByName(name);
|
20222
|
-
if (track) {
|
20223
|
-
return track;
|
20224
|
-
}
|
20225
|
-
}
|
20226
|
-
/**
|
20227
|
-
* sets the volume on the participant's microphone track
|
20228
|
-
* if no track exists the volume will be applied when the microphone track is added
|
20229
|
-
*/
|
20230
|
-
setVolume(volume) {
|
20231
|
-
this.volume = volume;
|
20232
|
-
const audioPublication = this.getTrack(Track.Source.Microphone);
|
20233
|
-
if (audioPublication && audioPublication.track) {
|
20234
|
-
audioPublication.track.setVolume(volume);
|
20235
|
-
}
|
20236
|
-
}
|
20237
|
-
/**
|
20238
|
-
* gets the volume on the participant's microphone track
|
20239
|
-
*/
|
20240
|
-
getVolume() {
|
20241
|
-
const audioPublication = this.getTrack(Track.Source.Microphone);
|
20242
|
-
if (audioPublication && audioPublication.track) {
|
20243
|
-
return audioPublication.track.getVolume();
|
20244
|
-
}
|
20245
|
-
return this.volume;
|
20246
|
-
}
|
20247
|
-
/** @internal */
|
20248
|
-
addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft) {
|
20249
|
-
// find the track publication
|
20250
|
-
// it's possible for the media track to arrive before participant info
|
20251
|
-
let publication = this.getTrackPublication(sid);
|
20252
|
-
// it's also possible that the browser didn't honor our original track id
|
20253
|
-
// FireFox would use its own local uuid instead of server track id
|
20254
|
-
if (!publication) {
|
20255
|
-
if (!sid.startsWith('TR')) {
|
20256
|
-
// find the first track that matches type
|
20257
|
-
this.tracks.forEach(p => {
|
20258
|
-
if (!publication && mediaTrack.kind === p.kind.toString()) {
|
20259
|
-
publication = p;
|
20260
|
-
}
|
20261
|
-
});
|
20262
|
-
}
|
20263
|
-
}
|
20264
|
-
// when we couldn't locate the track, it's possible that the metadata hasn't
|
20265
|
-
// yet arrived. Wait a bit longer for it to arrive, or fire an error
|
20266
|
-
if (!publication) {
|
20267
|
-
if (triesLeft === 0) {
|
20268
|
-
livekitLogger.error('could not find published track', {
|
20269
|
-
participant: this.sid,
|
20270
|
-
trackSid: sid
|
20271
|
-
});
|
20272
|
-
this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);
|
20273
|
-
return;
|
20274
|
-
}
|
20275
|
-
if (triesLeft === undefined) triesLeft = 20;
|
20276
|
-
setTimeout(() => {
|
20277
|
-
this.addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft - 1);
|
20278
|
-
}, 150);
|
20279
|
-
return;
|
20280
|
-
}
|
20281
|
-
if (mediaTrack.readyState === 'ended') {
|
20282
|
-
livekitLogger.error('unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()', {
|
20283
|
-
participant: this.sid,
|
20284
|
-
trackSid: sid
|
20285
|
-
});
|
20286
|
-
this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);
|
20287
|
-
return;
|
20288
|
-
}
|
20289
|
-
const isVideo = mediaTrack.kind === 'video';
|
20290
|
-
let track;
|
20291
|
-
if (isVideo) {
|
20292
|
-
track = new RemoteVideoTrack(mediaTrack, sid, receiver, adaptiveStreamSettings);
|
20293
|
-
} else {
|
20294
|
-
track = new RemoteAudioTrack(mediaTrack, sid, receiver, this.audioContext, this.audioOutput);
|
20295
|
-
}
|
20296
|
-
// set track info
|
20297
|
-
track.source = publication.source;
|
20298
|
-
// keep publication's muted status
|
20299
|
-
track.isMuted = publication.isMuted;
|
20300
|
-
track.setMediaStream(mediaStream);
|
20301
|
-
track.start();
|
20302
|
-
publication.setTrack(track);
|
20303
|
-
// set participant volume on new microphone tracks
|
20304
|
-
if (this.volume !== undefined && track instanceof RemoteAudioTrack && track.source === Track.Source.Microphone) {
|
20305
|
-
track.setVolume(this.volume);
|
20306
|
-
}
|
20307
|
-
return publication;
|
20308
|
-
}
|
20309
|
-
/** @internal */
|
20310
|
-
get hasMetadata() {
|
20311
|
-
return !!this.participantInfo;
|
20312
|
-
}
|
20313
|
-
getTrackPublication(sid) {
|
20314
|
-
return this.tracks.get(sid);
|
20315
|
-
}
|
20316
|
-
/** @internal */
|
20317
|
-
updateInfo(info) {
|
20318
|
-
if (!super.updateInfo(info)) {
|
20319
|
-
return false;
|
20320
|
-
}
|
20321
|
-
// we are getting a list of all available tracks, reconcile in here
|
20322
|
-
// and send out events for changes
|
20323
|
-
// reconcile track publications, publish events only if metadata is already there
|
20324
|
-
// i.e. changes since the local participant has joined
|
20325
|
-
const validTracks = new Map();
|
20326
|
-
const newTracks = new Map();
|
20327
|
-
info.tracks.forEach(ti => {
|
20328
|
-
var _a;
|
20329
|
-
let publication = this.getTrackPublication(ti.sid);
|
20330
|
-
if (!publication) {
|
20331
|
-
// new publication
|
20332
|
-
const kind = Track.kindFromProto(ti.type);
|
20333
|
-
if (!kind) {
|
20334
|
-
return;
|
20335
|
-
}
|
20336
|
-
publication = new RemoteTrackPublication(kind, ti, (_a = this.signalClient.connectOptions) === null || _a === void 0 ? void 0 : _a.autoSubscribe);
|
20337
|
-
publication.updateInfo(ti);
|
20338
|
-
newTracks.set(ti.sid, publication);
|
20339
|
-
const existingTrackOfSource = Array.from(this.tracks.values()).find(publishedTrack => publishedTrack.source === (publication === null || publication === void 0 ? void 0 : publication.source));
|
20340
|
-
if (existingTrackOfSource && publication.source !== Track.Source.Unknown) {
|
20341
|
-
livekitLogger.debug("received a second track publication for ".concat(this.identity, " with the same source: ").concat(publication.source), {
|
20342
|
-
oldTrack: existingTrackOfSource,
|
20343
|
-
newTrack: publication,
|
20344
|
-
participant: this,
|
20345
|
-
participantInfo: info
|
20346
|
-
});
|
20347
|
-
}
|
20348
|
-
this.addTrackPublication(publication);
|
20349
|
-
} else {
|
20350
|
-
publication.updateInfo(ti);
|
20351
|
-
}
|
20352
|
-
validTracks.set(ti.sid, publication);
|
20353
|
-
});
|
20354
|
-
// detect removed tracks
|
20355
|
-
this.tracks.forEach(publication => {
|
20356
|
-
if (!validTracks.has(publication.trackSid)) {
|
20357
|
-
livekitLogger.trace('detected removed track on remote participant, unpublishing', {
|
20358
|
-
publication,
|
20359
|
-
participantSid: this.sid
|
20360
|
-
});
|
20361
|
-
this.unpublishTrack(publication.trackSid, true);
|
20362
|
-
}
|
20861
|
+
publication.on(TrackEvent.SubscriptionStatusChanged, status => {
|
20862
|
+
this.emit(ParticipantEvent.TrackSubscriptionStatusChanged, publication, status);
|
20363
20863
|
});
|
20364
|
-
|
20365
|
-
|
20366
|
-
|
20864
|
+
publication.on(TrackEvent.Subscribed, track => {
|
20865
|
+
this.emit(ParticipantEvent.TrackSubscribed, track, publication);
|
20866
|
+
});
|
20867
|
+
publication.on(TrackEvent.Unsubscribed, previousTrack => {
|
20868
|
+
this.emit(ParticipantEvent.TrackUnsubscribed, previousTrack, publication);
|
20869
|
+
});
|
20870
|
+
publication.on(TrackEvent.SubscriptionFailed, error => {
|
20871
|
+
this.emit(ParticipantEvent.TrackSubscriptionFailed, publication.trackSid, error);
|
20367
20872
|
});
|
20368
|
-
return true;
|
20369
20873
|
}
|
20370
|
-
|
20371
|
-
|
20372
|
-
const publication = this.tracks.get(sid);
|
20373
|
-
if (!publication) {
|
20374
|
-
return;
|
20375
|
-
}
|
20376
|
-
// also send unsubscribe, if track is actively subscribed
|
20377
|
-
const {
|
20378
|
-
track
|
20379
|
-
} = publication;
|
20874
|
+
getTrack(source) {
|
20875
|
+
const track = super.getTrack(source);
|
20380
20876
|
if (track) {
|
20381
|
-
track
|
20382
|
-
publication.setTrack(undefined);
|
20383
|
-
}
|
20384
|
-
// remove track from maps only after unsubscribed has been fired
|
20385
|
-
this.tracks.delete(sid);
|
20386
|
-
// remove from the right type map
|
20387
|
-
switch (publication.kind) {
|
20388
|
-
case Track.Kind.Audio:
|
20389
|
-
this.audioTracks.delete(sid);
|
20390
|
-
break;
|
20391
|
-
case Track.Kind.Video:
|
20392
|
-
this.videoTracks.delete(sid);
|
20393
|
-
break;
|
20877
|
+
return track;
|
20394
20878
|
}
|
20395
|
-
|
20396
|
-
|
20879
|
+
}
|
20880
|
+
getTrackByName(name) {
|
20881
|
+
const track = super.getTrackByName(name);
|
20882
|
+
if (track) {
|
20883
|
+
return track;
|
20397
20884
|
}
|
20398
20885
|
}
|
20399
20886
|
/**
|
20400
|
-
*
|
20887
|
+
* sets the volume on the participant's microphone track
|
20888
|
+
* if no track exists the volume will be applied when the microphone track is added
|
20401
20889
|
*/
|
20402
|
-
|
20403
|
-
this.
|
20404
|
-
this.
|
20890
|
+
setVolume(volume) {
|
20891
|
+
this.volume = volume;
|
20892
|
+
const audioPublication = this.getTrack(Track.Source.Microphone);
|
20893
|
+
if (audioPublication && audioPublication.track) {
|
20894
|
+
audioPublication.track.setVolume(volume);
|
20895
|
+
}
|
20405
20896
|
}
|
20406
20897
|
/**
|
20407
|
-
*
|
20898
|
+
* gets the volume on the participant's microphone track
|
20408
20899
|
*/
|
20409
|
-
|
20410
|
-
|
20411
|
-
|
20412
|
-
|
20413
|
-
|
20414
|
-
|
20415
|
-
if (pub.track instanceof RemoteAudioTrack) {
|
20416
|
-
promises.push(pub.track.setSinkId((_a = output.deviceId) !== null && _a !== void 0 ? _a : 'default'));
|
20417
|
-
}
|
20418
|
-
});
|
20419
|
-
yield Promise.all(promises);
|
20420
|
-
});
|
20900
|
+
getVolume() {
|
20901
|
+
const audioPublication = this.getTrack(Track.Source.Microphone);
|
20902
|
+
if (audioPublication && audioPublication.track) {
|
20903
|
+
return audioPublication.track.getVolume();
|
20904
|
+
}
|
20905
|
+
return this.volume;
|
20421
20906
|
}
|
20422
20907
|
/** @internal */
|
20423
|
-
|
20424
|
-
|
20425
|
-
|
20908
|
+
addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft) {
|
20909
|
+
// find the track publication
|
20910
|
+
// it's possible for the media track to arrive before participant info
|
20911
|
+
let publication = this.getTrackPublication(sid);
|
20912
|
+
// it's also possible that the browser didn't honor our original track id
|
20913
|
+
// FireFox would use its own local uuid instead of server track id
|
20914
|
+
if (!publication) {
|
20915
|
+
if (!sid.startsWith('TR')) {
|
20916
|
+
// find the first track that matches type
|
20917
|
+
this.tracks.forEach(p => {
|
20918
|
+
if (!publication && mediaTrack.kind === p.kind.toString()) {
|
20919
|
+
publication = p;
|
20920
|
+
}
|
20921
|
+
});
|
20922
|
+
}
|
20426
20923
|
}
|
20427
|
-
|
20428
|
-
|
20429
|
-
|
20430
|
-
|
20431
|
-
|
20432
|
-
|
20433
|
-
|
20434
|
-
}
|
20435
|
-
|
20436
|
-
|
20437
|
-
|
20438
|
-
|
20439
|
-
|
20440
|
-
|
20441
|
-
|
20442
|
-
return
|
20443
|
-
default:
|
20444
|
-
throw new TrackInvalidError("unsupported track type: ".concat(mediaStreamTrack.kind));
|
20445
|
-
}
|
20446
|
-
}
|
20447
|
-
/* @internal */
|
20448
|
-
const presets169 = Object.values(VideoPresets);
|
20449
|
-
/* @internal */
|
20450
|
-
const presets43 = Object.values(VideoPresets43);
|
20451
|
-
/* @internal */
|
20452
|
-
const presetsScreenShare = Object.values(ScreenSharePresets);
|
20453
|
-
/* @internal */
|
20454
|
-
const defaultSimulcastPresets169 = [VideoPresets.h180, VideoPresets.h360];
|
20455
|
-
/* @internal */
|
20456
|
-
const defaultSimulcastPresets43 = [VideoPresets43.h180, VideoPresets43.h360];
|
20457
|
-
/* @internal */
|
20458
|
-
const computeDefaultScreenShareSimulcastPresets = fromPreset => {
|
20459
|
-
const layers = [{
|
20460
|
-
scaleResolutionDownBy: 2,
|
20461
|
-
fps: 3
|
20462
|
-
}];
|
20463
|
-
return layers.map(t => {
|
20464
|
-
var _a;
|
20465
|
-
return new VideoPreset(Math.floor(fromPreset.width / t.scaleResolutionDownBy), Math.floor(fromPreset.height / t.scaleResolutionDownBy), Math.max(150000, Math.floor(fromPreset.encoding.maxBitrate / (Math.pow(t.scaleResolutionDownBy, 2) * (((_a = fromPreset.encoding.maxFramerate) !== null && _a !== void 0 ? _a : 30) / t.fps)))), t.fps, fromPreset.encoding.priority);
|
20466
|
-
});
|
20467
|
-
};
|
20468
|
-
// /**
|
20469
|
-
// *
|
20470
|
-
// * @internal
|
20471
|
-
// * @experimental
|
20472
|
-
// */
|
20473
|
-
// const computeDefaultMultiCodecSimulcastEncodings = (width: number, height: number) => {
|
20474
|
-
// // use vp8 as a default
|
20475
|
-
// const vp8 = determineAppropriateEncoding(false, width, height);
|
20476
|
-
// const vp9 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.9 };
|
20477
|
-
// const h264 = { ...vp8, maxBitrate: vp8.maxBitrate * 1.1 };
|
20478
|
-
// const av1 = { ...vp8, maxBitrate: vp8.maxBitrate * 0.7 };
|
20479
|
-
// return {
|
20480
|
-
// vp8,
|
20481
|
-
// vp9,
|
20482
|
-
// h264,
|
20483
|
-
// av1,
|
20484
|
-
// };
|
20485
|
-
// };
|
20486
|
-
const videoRids = ['q', 'h', 'f'];
|
20487
|
-
/* @internal */
|
20488
|
-
function computeVideoEncodings(isScreenShare, width, height, options) {
|
20489
|
-
var _a, _b;
|
20490
|
-
let videoEncoding = options === null || options === void 0 ? void 0 : options.videoEncoding;
|
20491
|
-
if (isScreenShare) {
|
20492
|
-
videoEncoding = options === null || options === void 0 ? void 0 : options.screenShareEncoding;
|
20493
|
-
}
|
20494
|
-
const useSimulcast = options === null || options === void 0 ? void 0 : options.simulcast;
|
20495
|
-
const scalabilityMode = options === null || options === void 0 ? void 0 : options.scalabilityMode;
|
20496
|
-
const videoCodec = options === null || options === void 0 ? void 0 : options.videoCodec;
|
20497
|
-
if (!videoEncoding && !useSimulcast && !scalabilityMode || !width || !height) {
|
20498
|
-
// when we aren't simulcasting or svc, will need to return a single encoding without
|
20499
|
-
// capping bandwidth. we always require a encoding for dynacast
|
20500
|
-
return [{}];
|
20501
|
-
}
|
20502
|
-
if (!videoEncoding) {
|
20503
|
-
// find the right encoding based on width/height
|
20504
|
-
videoEncoding = determineAppropriateEncoding(isScreenShare, width, height, videoCodec);
|
20505
|
-
livekitLogger.debug('using video encoding', videoEncoding);
|
20506
|
-
}
|
20507
|
-
const original = new VideoPreset(width, height, videoEncoding.maxBitrate, videoEncoding.maxFramerate);
|
20508
|
-
if (scalabilityMode && isSVCCodec(videoCodec)) {
|
20509
|
-
livekitLogger.debug("using svc with scalabilityMode ".concat(scalabilityMode));
|
20510
|
-
const encodings = [];
|
20511
|
-
// svc use first encoding as the original, so we sort encoding from high to low
|
20512
|
-
switch (scalabilityMode) {
|
20513
|
-
case 'L3T3':
|
20514
|
-
for (let i = 0; i < 3; i += 1) {
|
20515
|
-
encodings.push({
|
20516
|
-
rid: videoRids[2 - i],
|
20517
|
-
scaleResolutionDownBy: Math.pow(2, i),
|
20518
|
-
maxBitrate: videoEncoding.maxBitrate / Math.pow(3, i),
|
20519
|
-
/* @ts-ignore */
|
20520
|
-
maxFramerate: original.encoding.maxFramerate,
|
20521
|
-
/* @ts-ignore */
|
20522
|
-
scalabilityMode: 'L3T3'
|
20523
|
-
});
|
20524
|
-
}
|
20525
|
-
livekitLogger.debug('encodings', encodings);
|
20526
|
-
return encodings;
|
20527
|
-
default:
|
20528
|
-
// TODO : support other scalability modes
|
20529
|
-
throw new Error("unsupported scalabilityMode: ".concat(scalabilityMode));
|
20924
|
+
// when we couldn't locate the track, it's possible that the metadata hasn't
|
20925
|
+
// yet arrived. Wait a bit longer for it to arrive, or fire an error
|
20926
|
+
if (!publication) {
|
20927
|
+
if (triesLeft === 0) {
|
20928
|
+
livekitLogger.error('could not find published track', {
|
20929
|
+
participant: this.sid,
|
20930
|
+
trackSid: sid
|
20931
|
+
});
|
20932
|
+
this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);
|
20933
|
+
return;
|
20934
|
+
}
|
20935
|
+
if (triesLeft === undefined) triesLeft = 20;
|
20936
|
+
setTimeout(() => {
|
20937
|
+
this.addSubscribedMediaTrack(mediaTrack, sid, mediaStream, receiver, adaptiveStreamSettings, triesLeft - 1);
|
20938
|
+
}, 150);
|
20939
|
+
return;
|
20530
20940
|
}
|
20531
|
-
|
20532
|
-
|
20533
|
-
|
20534
|
-
|
20535
|
-
|
20536
|
-
|
20537
|
-
|
20538
|
-
} else {
|
20539
|
-
presets = (_b = sortPresets(options === null || options === void 0 ? void 0 : options.videoSimulcastLayers)) !== null && _b !== void 0 ? _b : defaultSimulcastLayers(isScreenShare, original);
|
20540
|
-
}
|
20541
|
-
let midPreset;
|
20542
|
-
if (presets.length > 0) {
|
20543
|
-
const lowPreset = presets[0];
|
20544
|
-
if (presets.length > 1) {
|
20545
|
-
[, midPreset] = presets;
|
20941
|
+
if (mediaTrack.readyState === 'ended') {
|
20942
|
+
livekitLogger.error('unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()', {
|
20943
|
+
participant: this.sid,
|
20944
|
+
trackSid: sid
|
20945
|
+
});
|
20946
|
+
this.emit(ParticipantEvent.TrackSubscriptionFailed, sid);
|
20947
|
+
return;
|
20546
20948
|
}
|
20547
|
-
|
20548
|
-
|
20549
|
-
|
20550
|
-
|
20551
|
-
|
20552
|
-
|
20553
|
-
// 2. ion-sfu translates rids into layers. So, all encodings
|
20554
|
-
// should have the base layer `q` and then more added
|
20555
|
-
// based on other conditions.
|
20556
|
-
const size = Math.max(width, height);
|
20557
|
-
if (size >= 960 && midPreset) {
|
20558
|
-
return encodingsFromPresets(width, height, [lowPreset, midPreset, original]);
|
20949
|
+
const isVideo = mediaTrack.kind === 'video';
|
20950
|
+
let track;
|
20951
|
+
if (isVideo) {
|
20952
|
+
track = new RemoteVideoTrack(mediaTrack, sid, receiver, adaptiveStreamSettings);
|
20953
|
+
} else {
|
20954
|
+
track = new RemoteAudioTrack(mediaTrack, sid, receiver, this.audioContext, this.audioOutput);
|
20559
20955
|
}
|
20560
|
-
|
20561
|
-
|
20956
|
+
// set track info
|
20957
|
+
track.source = publication.source;
|
20958
|
+
// keep publication's muted status
|
20959
|
+
track.isMuted = publication.isMuted;
|
20960
|
+
track.setMediaStream(mediaStream);
|
20961
|
+
track.start();
|
20962
|
+
publication.setTrack(track);
|
20963
|
+
// set participant volume on new microphone tracks
|
20964
|
+
if (this.volume !== undefined && track instanceof RemoteAudioTrack && track.source === Track.Source.Microphone) {
|
20965
|
+
track.setVolume(this.volume);
|
20562
20966
|
}
|
20967
|
+
return publication;
|
20563
20968
|
}
|
20564
|
-
|
20565
|
-
|
20566
|
-
|
20567
|
-
var _a, _b, _c, _d;
|
20568
|
-
if (!opts.backupCodec || opts.backupCodec.codec === opts.videoCodec) {
|
20569
|
-
// backup codec publishing is disabled
|
20570
|
-
return;
|
20969
|
+
/** @internal */
|
20970
|
+
get hasMetadata() {
|
20971
|
+
return !!this.participantInfo;
|
20571
20972
|
}
|
20572
|
-
|
20573
|
-
|
20574
|
-
serverRequested: videoCodec,
|
20575
|
-
backup: opts.backupCodec.codec
|
20576
|
-
});
|
20973
|
+
getTrackPublication(sid) {
|
20974
|
+
return this.tracks.get(sid);
|
20577
20975
|
}
|
20578
|
-
|
20579
|
-
|
20580
|
-
|
20581
|
-
|
20582
|
-
const width = (_a = settings.width) !== null && _a !== void 0 ? _a : (_b = track.dimensions) === null || _b === void 0 ? void 0 : _b.width;
|
20583
|
-
const height = (_c = settings.height) !== null && _c !== void 0 ? _c : (_d = track.dimensions) === null || _d === void 0 ? void 0 : _d.height;
|
20584
|
-
const encodings = computeVideoEncodings(track.source === Track.Source.ScreenShare, width, height, opts);
|
20585
|
-
return encodings;
|
20586
|
-
}
|
20587
|
-
/* @internal */
|
20588
|
-
function determineAppropriateEncoding(isScreenShare, width, height, codec) {
|
20589
|
-
const presets = presetsForResolution(isScreenShare, width, height);
|
20590
|
-
let {
|
20591
|
-
encoding
|
20592
|
-
} = presets[0];
|
20593
|
-
// handle portrait by swapping dimensions
|
20594
|
-
const size = Math.max(width, height);
|
20595
|
-
for (let i = 0; i < presets.length; i += 1) {
|
20596
|
-
const preset = presets[i];
|
20597
|
-
encoding = preset.encoding;
|
20598
|
-
if (preset.width >= size) {
|
20599
|
-
break;
|
20976
|
+
/** @internal */
|
20977
|
+
updateInfo(info) {
|
20978
|
+
if (!super.updateInfo(info)) {
|
20979
|
+
return false;
|
20600
20980
|
}
|
20981
|
+
// we are getting a list of all available tracks, reconcile in here
|
20982
|
+
// and send out events for changes
|
20983
|
+
// reconcile track publications, publish events only if metadata is already there
|
20984
|
+
// i.e. changes since the local participant has joined
|
20985
|
+
const validTracks = new Map();
|
20986
|
+
const newTracks = new Map();
|
20987
|
+
info.tracks.forEach(ti => {
|
20988
|
+
var _a;
|
20989
|
+
let publication = this.getTrackPublication(ti.sid);
|
20990
|
+
if (!publication) {
|
20991
|
+
// new publication
|
20992
|
+
const kind = Track.kindFromProto(ti.type);
|
20993
|
+
if (!kind) {
|
20994
|
+
return;
|
20995
|
+
}
|
20996
|
+
publication = new RemoteTrackPublication(kind, ti, (_a = this.signalClient.connectOptions) === null || _a === void 0 ? void 0 : _a.autoSubscribe);
|
20997
|
+
publication.updateInfo(ti);
|
20998
|
+
newTracks.set(ti.sid, publication);
|
20999
|
+
const existingTrackOfSource = Array.from(this.tracks.values()).find(publishedTrack => publishedTrack.source === (publication === null || publication === void 0 ? void 0 : publication.source));
|
21000
|
+
if (existingTrackOfSource && publication.source !== Track.Source.Unknown) {
|
21001
|
+
livekitLogger.debug("received a second track publication for ".concat(this.identity, " with the same source: ").concat(publication.source), {
|
21002
|
+
oldTrack: existingTrackOfSource,
|
21003
|
+
newTrack: publication,
|
21004
|
+
participant: this,
|
21005
|
+
participantInfo: info
|
21006
|
+
});
|
21007
|
+
}
|
21008
|
+
this.addTrackPublication(publication);
|
21009
|
+
} else {
|
21010
|
+
publication.updateInfo(ti);
|
21011
|
+
}
|
21012
|
+
validTracks.set(ti.sid, publication);
|
21013
|
+
});
|
21014
|
+
// detect removed tracks
|
21015
|
+
this.tracks.forEach(publication => {
|
21016
|
+
if (!validTracks.has(publication.trackSid)) {
|
21017
|
+
livekitLogger.trace('detected removed track on remote participant, unpublishing', {
|
21018
|
+
publication,
|
21019
|
+
participantSid: this.sid
|
21020
|
+
});
|
21021
|
+
this.unpublishTrack(publication.trackSid, true);
|
21022
|
+
}
|
21023
|
+
});
|
21024
|
+
// always emit events for new publications, Room will not forward them unless it's ready
|
21025
|
+
newTracks.forEach(publication => {
|
21026
|
+
this.emit(ParticipantEvent.TrackPublished, publication);
|
21027
|
+
});
|
21028
|
+
return true;
|
20601
21029
|
}
|
20602
|
-
|
20603
|
-
|
20604
|
-
|
20605
|
-
|
20606
|
-
|
20607
|
-
|
20608
|
-
|
20609
|
-
|
21030
|
+
/** @internal */
|
21031
|
+
unpublishTrack(sid, sendUnpublish) {
|
21032
|
+
const publication = this.tracks.get(sid);
|
21033
|
+
if (!publication) {
|
21034
|
+
return;
|
21035
|
+
}
|
21036
|
+
// also send unsubscribe, if track is actively subscribed
|
21037
|
+
const {
|
21038
|
+
track
|
21039
|
+
} = publication;
|
21040
|
+
if (track) {
|
21041
|
+
track.stop();
|
21042
|
+
publication.setTrack(undefined);
|
21043
|
+
}
|
21044
|
+
// remove track from maps only after unsubscribed has been fired
|
21045
|
+
this.tracks.delete(sid);
|
21046
|
+
// remove from the right type map
|
21047
|
+
switch (publication.kind) {
|
21048
|
+
case Track.Kind.Audio:
|
21049
|
+
this.audioTracks.delete(sid);
|
20610
21050
|
break;
|
20611
|
-
case
|
20612
|
-
|
20613
|
-
encoding.maxBitrate = encoding.maxBitrate * 0.85;
|
21051
|
+
case Track.Kind.Video:
|
21052
|
+
this.videoTracks.delete(sid);
|
20614
21053
|
break;
|
20615
21054
|
}
|
21055
|
+
if (sendUnpublish) {
|
21056
|
+
this.emit(ParticipantEvent.TrackUnpublished, publication);
|
21057
|
+
}
|
20616
21058
|
}
|
20617
|
-
|
20618
|
-
|
20619
|
-
|
20620
|
-
|
20621
|
-
|
20622
|
-
|
20623
|
-
}
|
20624
|
-
const aspect = width > height ? width / height : height / width;
|
20625
|
-
if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
|
20626
|
-
return presets169;
|
20627
|
-
}
|
20628
|
-
return presets43;
|
20629
|
-
}
|
20630
|
-
/* @internal */
|
20631
|
-
function defaultSimulcastLayers(isScreenShare, original) {
|
20632
|
-
if (isScreenShare) {
|
20633
|
-
return computeDefaultScreenShareSimulcastPresets(original);
|
21059
|
+
/**
|
21060
|
+
* @internal
|
21061
|
+
*/
|
21062
|
+
setAudioContext(ctx) {
|
21063
|
+
this.audioContext = ctx;
|
21064
|
+
this.audioTracks.forEach(track => track.track instanceof RemoteAudioTrack && track.track.setAudioContext(ctx));
|
20634
21065
|
}
|
20635
|
-
|
20636
|
-
|
20637
|
-
|
20638
|
-
|
20639
|
-
|
20640
|
-
|
20641
|
-
|
21066
|
+
/**
|
21067
|
+
* @internal
|
21068
|
+
*/
|
21069
|
+
setAudioOutput(output) {
|
21070
|
+
return __awaiter(this, void 0, void 0, function* () {
|
21071
|
+
this.audioOutput = output;
|
21072
|
+
const promises = [];
|
21073
|
+
this.audioTracks.forEach(pub => {
|
21074
|
+
var _a;
|
21075
|
+
if (pub.track instanceof RemoteAudioTrack) {
|
21076
|
+
promises.push(pub.track.setSinkId((_a = output.deviceId) !== null && _a !== void 0 ? _a : 'default'));
|
21077
|
+
}
|
21078
|
+
});
|
21079
|
+
yield Promise.all(promises);
|
21080
|
+
});
|
20642
21081
|
}
|
20643
|
-
|
20644
|
-
|
20645
|
-
|
20646
|
-
|
20647
|
-
const encodings = [];
|
20648
|
-
presets.forEach((preset, idx) => {
|
20649
|
-
if (idx >= videoRids.length) {
|
20650
|
-
return;
|
20651
|
-
}
|
20652
|
-
const size = Math.min(width, height);
|
20653
|
-
const rid = videoRids[idx];
|
20654
|
-
const encoding = {
|
20655
|
-
rid,
|
20656
|
-
scaleResolutionDownBy: Math.max(1, size / Math.min(preset.width, preset.height)),
|
20657
|
-
maxBitrate: preset.encoding.maxBitrate
|
20658
|
-
};
|
20659
|
-
if (preset.encoding.maxFramerate) {
|
20660
|
-
encoding.maxFramerate = preset.encoding.maxFramerate;
|
20661
|
-
}
|
20662
|
-
if (preset.encoding.priority) {
|
20663
|
-
encoding.priority = preset.encoding.priority;
|
20664
|
-
encoding.networkPriority = preset.encoding.priority;
|
20665
|
-
}
|
20666
|
-
encodings.push(encoding);
|
20667
|
-
});
|
20668
|
-
return encodings;
|
20669
|
-
}
|
20670
|
-
/** @internal */
|
20671
|
-
function sortPresets(presets) {
|
20672
|
-
if (!presets) return;
|
20673
|
-
return presets.sort((a, b) => {
|
20674
|
-
const {
|
20675
|
-
encoding: aEnc
|
20676
|
-
} = a;
|
20677
|
-
const {
|
20678
|
-
encoding: bEnc
|
20679
|
-
} = b;
|
20680
|
-
if (aEnc.maxBitrate > bEnc.maxBitrate) {
|
20681
|
-
return 1;
|
20682
|
-
}
|
20683
|
-
if (aEnc.maxBitrate < bEnc.maxBitrate) return -1;
|
20684
|
-
if (aEnc.maxBitrate === bEnc.maxBitrate && aEnc.maxFramerate && bEnc.maxFramerate) {
|
20685
|
-
return aEnc.maxFramerate > bEnc.maxFramerate ? 1 : -1;
|
21082
|
+
/** @internal */
|
21083
|
+
emit(event) {
|
21084
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
21085
|
+
args[_key - 1] = arguments[_key];
|
20686
21086
|
}
|
20687
|
-
|
20688
|
-
|
21087
|
+
livekitLogger.trace('participant event', {
|
21088
|
+
participant: this.sid,
|
21089
|
+
event,
|
21090
|
+
args
|
21091
|
+
});
|
21092
|
+
return super.emit(event, ...args);
|
21093
|
+
}
|
20689
21094
|
}
|
20690
21095
|
|
20691
21096
|
class LocalParticipant extends Participant {
|
@@ -20763,17 +21168,13 @@ class LocalParticipant extends Participant {
|
|
20763
21168
|
}
|
20764
21169
|
const newCodecs = yield pub.videoTrack.setPublishingCodecs(update.subscribedCodecs);
|
20765
21170
|
try {
|
20766
|
-
for (var _f = true, newCodecs_1 = __asyncValues(newCodecs), newCodecs_1_1; newCodecs_1_1 = yield newCodecs_1.next(), _a = newCodecs_1_1.done, !_a;) {
|
21171
|
+
for (var _f = true, newCodecs_1 = __asyncValues(newCodecs), newCodecs_1_1; newCodecs_1_1 = yield newCodecs_1.next(), _a = newCodecs_1_1.done, !_a; _f = true) {
|
20767
21172
|
_c = newCodecs_1_1.value;
|
20768
21173
|
_f = false;
|
20769
|
-
|
20770
|
-
|
20771
|
-
|
20772
|
-
|
20773
|
-
yield this.publishAdditionalCodecForTrack(pub.videoTrack, codec, pub.options);
|
20774
|
-
}
|
20775
|
-
} finally {
|
20776
|
-
_f = true;
|
21174
|
+
const codec = _c;
|
21175
|
+
if (isBackupCodec(codec)) {
|
21176
|
+
livekitLogger.debug("publish ".concat(codec, " for ").concat(pub.videoTrack.sid));
|
21177
|
+
yield this.publishAdditionalCodecForTrack(pub.videoTrack, codec, pub.options);
|
20777
21178
|
}
|
20778
21179
|
}
|
20779
21180
|
} catch (e_1_1) {
|
@@ -21221,7 +21622,7 @@ class LocalParticipant extends Participant {
|
|
21221
21622
|
});
|
21222
21623
|
}
|
21223
21624
|
publish(track, opts, options, isStereo) {
|
21224
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
21625
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
21225
21626
|
return __awaiter(this, void 0, void 0, function* () {
|
21226
21627
|
const existingTrackOfSource = Array.from(this.tracks.values()).find(publishedTrack => track instanceof LocalTrack && publishedTrack.source === track.source);
|
21227
21628
|
if (existingTrackOfSource && track.source !== Track.Source.Unknown) {
|
@@ -21298,8 +21699,8 @@ class LocalParticipant extends Participant {
|
|
21298
21699
|
// for svc codecs, disable simulcast and use vp8 for backup codec
|
21299
21700
|
if (track instanceof LocalVideoTrack) {
|
21300
21701
|
if (isSVCCodec(opts.videoCodec)) {
|
21301
|
-
// set scalabilityMode to '
|
21302
|
-
opts.scalabilityMode = (_e = opts.scalabilityMode) !== null && _e !== void 0 ? _e : '
|
21702
|
+
// set scalabilityMode to 'L3T3_KEY' by default
|
21703
|
+
opts.scalabilityMode = (_e = opts.scalabilityMode) !== null && _e !== void 0 ? _e : 'L3T3_KEY';
|
21303
21704
|
}
|
21304
21705
|
// set up backup
|
21305
21706
|
if (opts.videoCodec && opts.backupCodec && opts.videoCodec !== opts.backupCodec.codec) {
|
@@ -21315,15 +21716,23 @@ class LocalParticipant extends Participant {
|
|
21315
21716
|
cid: '',
|
21316
21717
|
enableSimulcastLayers: true
|
21317
21718
|
}];
|
21719
|
+
} else if (opts.videoCodec) {
|
21720
|
+
// pass codec info to sfu so it can prefer codec for the client which don't support
|
21721
|
+
// setCodecPreferences
|
21722
|
+
req.simulcastCodecs = [{
|
21723
|
+
codec: opts.videoCodec,
|
21724
|
+
cid: track.mediaStreamTrack.id,
|
21725
|
+
enableSimulcastLayers: (_f = opts.simulcast) !== null && _f !== void 0 ? _f : false
|
21726
|
+
}];
|
21318
21727
|
}
|
21319
21728
|
}
|
21320
21729
|
encodings = computeVideoEncodings(track.source === Track.Source.ScreenShare, dims.width, dims.height, opts);
|
21321
|
-
req.layers = videoLayersFromEncodings(req.width, req.height,
|
21730
|
+
req.layers = videoLayersFromEncodings(req.width, req.height, encodings);
|
21322
21731
|
} else if (track.kind === Track.Kind.Audio) {
|
21323
21732
|
encodings = [{
|
21324
|
-
maxBitrate: (
|
21325
|
-
priority: (
|
21326
|
-
networkPriority: (
|
21733
|
+
maxBitrate: (_h = (_g = opts.audioPreset) === null || _g === void 0 ? void 0 : _g.maxBitrate) !== null && _h !== void 0 ? _h : opts.audioBitrate,
|
21734
|
+
priority: (_k = (_j = opts.audioPreset) === null || _j === void 0 ? void 0 : _j.priority) !== null && _k !== void 0 ? _k : 'high',
|
21735
|
+
networkPriority: (_m = (_l = opts.audioPreset) === null || _l === void 0 ? void 0 : _l.priority) !== null && _m !== void 0 ? _m : 'high'
|
21327
21736
|
}];
|
21328
21737
|
}
|
21329
21738
|
if (!this.engine || this.engine.isClosed) {
|
@@ -21365,7 +21774,7 @@ class LocalParticipant extends Participant {
|
|
21365
21774
|
});
|
21366
21775
|
// store RTPSender
|
21367
21776
|
track.sender = yield this.engine.createSender(track, opts, encodings);
|
21368
|
-
if (track.codec && isSVCCodec(track.codec) && encodings && ((
|
21777
|
+
if (track.codec && isSVCCodec(track.codec) && encodings && ((_o = encodings[0]) === null || _o === void 0 ? void 0 : _o.maxBitrate)) {
|
21369
21778
|
this.engine.publisher.setTrackCodecBitrate(req.cid, track.codec, encodings[0].maxBitrate / 1000);
|
21370
21779
|
}
|
21371
21780
|
this.engine.negotiate();
|
@@ -21470,6 +21879,16 @@ class LocalParticipant extends Participant {
|
|
21470
21879
|
track.sender = undefined;
|
21471
21880
|
if (this.engine.publisher && this.engine.publisher.pc.connectionState !== 'closed' && trackSender) {
|
21472
21881
|
try {
|
21882
|
+
for (const transceiver of this.engine.publisher.pc.getTransceivers()) {
|
21883
|
+
// if sender is not currently sending (after replaceTrack(null))
|
21884
|
+
// removeTrack would have no effect.
|
21885
|
+
// to ensure we end up successfully removing the track, manually set
|
21886
|
+
// the transceiver to inactive
|
21887
|
+
if (transceiver.sender === trackSender) {
|
21888
|
+
transceiver.direction = 'inactive';
|
21889
|
+
negotiationNeeded = true;
|
21890
|
+
}
|
21891
|
+
}
|
21473
21892
|
if (this.engine.removeTrack(trackSender)) {
|
21474
21893
|
negotiationNeeded = true;
|
21475
21894
|
}
|
@@ -22079,6 +22498,17 @@ class Room extends eventsExports.EventEmitter {
|
|
22079
22498
|
}
|
22080
22499
|
pub.setAllowed(update.allowed);
|
22081
22500
|
};
|
22501
|
+
this.handleSubscriptionError = update => {
|
22502
|
+
const participant = Array.from(this.participants.values()).find(p => p.tracks.has(update.trackSid));
|
22503
|
+
if (!participant) {
|
22504
|
+
return;
|
22505
|
+
}
|
22506
|
+
const pub = participant.getTrackPublication(update.trackSid);
|
22507
|
+
if (!pub) {
|
22508
|
+
return;
|
22509
|
+
}
|
22510
|
+
pub.setSubscriptionError(update.err);
|
22511
|
+
};
|
22082
22512
|
this.handleDataPacket = (userPacket, kind) => {
|
22083
22513
|
// find the participant
|
22084
22514
|
const participant = this.participants.get(userPacket.participantSid);
|
@@ -22212,6 +22642,7 @@ class Room extends eventsExports.EventEmitter {
|
|
22212
22642
|
this.engine.client.onStreamStateUpdate = this.handleStreamStateUpdate;
|
22213
22643
|
this.engine.client.onSubscriptionPermissionUpdate = this.handleSubscriptionPermissionUpdate;
|
22214
22644
|
this.engine.client.onConnectionQuality = this.handleConnectionQualityUpdate;
|
22645
|
+
this.engine.client.onSubscriptionError = this.handleSubscriptionError;
|
22215
22646
|
this.engine.on(EngineEvent.MediaTrackAdded, (mediaTrack, stream, receiver) => {
|
22216
22647
|
this.onTrackAdded(mediaTrack, stream, receiver);
|
22217
22648
|
}).on(EngineEvent.Disconnected, reason => {
|
@@ -22676,6 +23107,8 @@ class Room extends eventsExports.EventEmitter {
|
|
22676
23107
|
this.emitWhenConnected(RoomEvent.ParticipantPermissionsChanged, prevPermissions, participant);
|
22677
23108
|
}).on(ParticipantEvent.TrackSubscriptionStatusChanged, (pub, status) => {
|
22678
23109
|
this.emitWhenConnected(RoomEvent.TrackSubscriptionStatusChanged, pub, status, participant);
|
23110
|
+
}).on(ParticipantEvent.TrackSubscriptionFailed, (trackSid, error) => {
|
23111
|
+
this.emit(RoomEvent.TrackSubscriptionFailed, trackSid, participant, error);
|
22679
23112
|
}).on(ParticipantEvent.TrackSubscriptionPermissionChanged, (pub, status) => {
|
22680
23113
|
this.emitWhenConnected(RoomEvent.TrackSubscriptionPermissionChanged, pub, status, participant);
|
22681
23114
|
});
|