livekit-client 2.22.2 → 2.22.4
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/README.md +35 -0
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +488 -438
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +954 -301
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.fm.worker.js +1 -1
- package/dist/livekit-client.fm.worker.js.map +1 -1
- package/dist/livekit-client.fm.worker.mjs +10 -2
- package/dist/livekit-client.fm.worker.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 +4 -2
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/api/WebSocketStream.d.ts.map +1 -1
- package/dist/src/api/utils.d.ts +1 -0
- package/dist/src/api/utils.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts +26 -0
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +15 -1
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/ErrorRateLimiter.d.ts +21 -0
- package/dist/src/e2ee/worker/ErrorRateLimiter.d.ts.map +1 -0
- package/dist/src/e2ee/worker/FrameCryptor.d.ts +1 -18
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/logger.d.ts +4 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/options.d.ts +14 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +78 -7
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +9 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +1 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/defaults.d.ts.map +1 -1
- package/dist/src/room/errors.d.ts +18 -0
- package/dist/src/room/errors.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +3 -2
- 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/publishUtils.d.ts +16 -0
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +9 -0
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +1 -1
- package/dist/src/room/track/utils.d.ts +13 -0
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +66 -0
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/src/test/compressionStreamStubs.d.ts +12 -0
- package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
- package/dist/ts4.2/api/SignalClient.d.ts +187 -185
- package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
- package/dist/ts4.2/api/WebSocketStream.d.ts +33 -33
- package/dist/ts4.2/api/utils.d.ts +9 -8
- package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
- package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
- package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
- package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
- package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
- package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
- package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -85
- package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
- package/dist/ts4.2/e2ee/constants.d.ts +21 -21
- package/dist/ts4.2/e2ee/errors.d.ts +12 -12
- package/dist/ts4.2/e2ee/events.d.ts +39 -39
- package/dist/ts4.2/e2ee/index.d.ts +6 -6
- package/dist/ts4.2/e2ee/types.d.ts +231 -217
- package/dist/ts4.2/e2ee/utils.d.ts +32 -32
- package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
- package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -0
- package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -226
- package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
- package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
- package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +28 -28
- package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
- package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
- package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
- package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
- package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
- package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
- package/dist/ts4.2/index.d.ts +76 -76
- package/dist/ts4.2/logger.d.ts +66 -62
- package/dist/ts4.2/options.d.ts +163 -149
- package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
- package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
- package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
- package/dist/ts4.2/room/PCTransport.d.ts +246 -175
- package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
- package/dist/ts4.2/room/RTCEngine.d.ts +269 -261
- package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
- package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
- package/dist/ts4.2/room/Room.d.ts +354 -365
- package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
- package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +62 -62
- package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +94 -95
- package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
- package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
- package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
- package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
- package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
- package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
- package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
- package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
- package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
- package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
- package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
- package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
- package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
- package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
- package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
- package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
- package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
- package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
- package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
- package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
- package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
- package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
- package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
- package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
- package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
- package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
- package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
- package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
- package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
- package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
- package/dist/ts4.2/room/data-track/types.d.ts +22 -22
- package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
- package/dist/ts4.2/room/debounce.d.ts +11 -11
- package/dist/ts4.2/room/defaults.d.ts +9 -9
- package/dist/ts4.2/room/errors.d.ts +180 -162
- package/dist/ts4.2/room/events.d.ts +638 -637
- package/dist/ts4.2/room/participant/LocalParticipant.d.ts +287 -287
- package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
- package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
- package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
- package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -37
- package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
- package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/index.d.ts +7 -7
- package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
- package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
- package/dist/ts4.2/room/stats.d.ts +71 -71
- package/dist/ts4.2/room/statsSummary.d.ts +13 -13
- package/dist/ts4.2/room/timers.d.ts +12 -12
- package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
- package/dist/ts4.2/room/token-source/types.d.ts +70 -70
- package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
- package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
- package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +39 -42
- package/dist/ts4.2/room/track/LocalTrack.d.ts +125 -125
- package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
- package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +102 -93
- package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +55 -55
- package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
- package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
- package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
- package/dist/ts4.2/room/track/Track.d.ts +156 -166
- package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
- package/dist/ts4.2/room/track/create.d.ts +25 -25
- package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
- package/dist/ts4.2/room/track/options.d.ts +403 -403
- package/dist/ts4.2/room/track/processor/types.d.ts +31 -31
- package/dist/ts4.2/room/track/record.d.ts +13 -13
- package/dist/ts4.2/room/track/types.d.ts +28 -28
- package/dist/ts4.2/room/track/utils.d.ts +60 -47
- package/dist/ts4.2/room/types.d.ts +127 -127
- package/dist/ts4.2/room/utils.d.ts +246 -180
- package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
- package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
- package/dist/ts4.2/test/mocks.d.ts +12 -12
- package/dist/ts4.2/test/promiseState.d.ts +12 -12
- package/dist/ts4.2/test/signalToken.d.ts +26 -26
- package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
- package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
- package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
- package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
- package/dist/ts4.2/utils/browserParser.d.ts +13 -13
- package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
- package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
- package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
- package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
- package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
- package/dist/ts4.2/utils/serializer.d.ts +48 -48
- package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
- package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
- package/dist/ts4.2/version.d.ts +15 -15
- package/package.json +5 -4
- package/src/api/SignalClient.e2e.test.ts +1 -3
- package/src/api/SignalClient.test.ts +160 -10
- package/src/api/SignalClient.ts +75 -54
- package/src/api/WebSocketStream.ts +3 -8
- package/src/api/utils.ts +10 -0
- package/src/e2ee/E2eeManager.test.ts +196 -0
- package/src/e2ee/E2eeManager.ts +114 -19
- package/src/e2ee/types.ts +19 -1
- package/src/e2ee/worker/DataCryptor.ts +2 -1
- package/src/e2ee/worker/ErrorRateLimiter.test.ts +53 -0
- package/src/e2ee/worker/ErrorRateLimiter.ts +52 -0
- package/src/e2ee/worker/FrameCryptor.ts +20 -70
- package/src/e2ee/worker/e2ee.worker.ts +34 -11
- package/src/logger.ts +22 -0
- package/src/options.ts +16 -0
- package/src/room/PCTransport.test.ts +183 -7
- package/src/room/PCTransport.ts +197 -36
- package/src/room/PCTransportManager.ts +3 -1
- package/src/room/RTCEngine.test.ts +84 -0
- package/src/room/RTCEngine.ts +52 -12
- package/src/room/Room.test.ts +32 -6
- package/src/room/Room.ts +27 -7
- package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +16 -20
- package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +5 -5
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
- package/src/room/defaults.ts +1 -0
- package/src/room/errors.test.ts +36 -0
- package/src/room/errors.ts +27 -0
- package/src/room/events.ts +2 -1
- package/src/room/participant/LocalParticipant.ts +30 -14
- package/src/room/participant/publishUtils.test.ts +133 -0
- package/src/room/participant/publishUtils.ts +54 -38
- package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
- package/src/room/rpc/client/RpcClientManager.ts +32 -15
- package/src/room/track/LocalTrack.ts +18 -7
- package/src/room/track/LocalVideoTrack.ts +25 -8
- package/src/room/track/RemoteAudioTrack.ts +3 -3
- package/src/room/track/RemoteVideoTrack.test.ts +210 -0
- package/src/room/track/RemoteVideoTrack.ts +29 -3
- package/src/room/track/options.ts +1 -1
- package/src/room/track/utils.test.ts +201 -2
- package/src/room/track/utils.ts +88 -0
- package/src/room/utils.test.ts +211 -0
- package/src/room/utils.ts +129 -0
- package/src/test/compressionStreamStubs.ts +53 -0
|
@@ -1,175 +1,246 @@
|
|
|
1
|
-
import type { MediaAttributes, MediaDescription, SessionDescription } from 'sdp-transform';
|
|
2
|
-
import type TypedEmitter from 'typed-emitter';
|
|
3
|
-
import type { LoggerOptions } from './types';
|
|
4
|
-
/** @internal */
|
|
5
|
-
interface TrackBitrateInfo {
|
|
6
|
-
cid?: string;
|
|
7
|
-
transceiver?: RTCRtpTransceiver;
|
|
8
|
-
codec: string;
|
|
9
|
-
maxbr: number;
|
|
10
|
-
isScreenShare?: boolean;
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
1
|
+
import type { MediaAttributes, MediaDescription, SessionDescription } from 'sdp-transform';
|
|
2
|
+
import type TypedEmitter from 'typed-emitter';
|
|
3
|
+
import type { LoggerOptions } from './types';
|
|
4
|
+
/** @internal */
|
|
5
|
+
interface TrackBitrateInfo {
|
|
6
|
+
cid?: string;
|
|
7
|
+
transceiver?: RTCRtpTransceiver;
|
|
8
|
+
codec: string;
|
|
9
|
+
maxbr: number;
|
|
10
|
+
isScreenShare?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Codec payload for `codec` in this media section, when the section carries `cid`.
|
|
14
|
+
*
|
|
15
|
+
* Returns `undefined` when the section does not belong to the track, `0` when it does but
|
|
16
|
+
* does not offer the requested codec, and the codec payload otherwise.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare function findTrackCodecPayload(media: MediaDescription, cid: string, codec: string): number | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Start bitrate hinted for a single track, or `undefined` when its target is too low to
|
|
23
|
+
* be worth seeding.
|
|
24
|
+
*
|
|
25
|
+
* 90% of the target leaves ~10% headroom for the estimator to settle. The same multiplier
|
|
26
|
+
* is used for every codec because the target already reflects the codec's efficiency.
|
|
27
|
+
* Camera is capped at 1 Mbps so the estimator does not open too aggressively on a
|
|
28
|
+
* high-bitrate track; screen share is exempt, because its content needs the bitrate
|
|
29
|
+
* immediately to stay legible.
|
|
30
|
+
*
|
|
31
|
+
* TODO: adjust dynamically from network conditions (e.g. a previous BWE estimate) rather
|
|
32
|
+
* than a fixed cap.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function computeTrackStartBitrate(trackbr: TrackBitrateInfo): number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* The single start bitrate for this peer connection: the largest hint among the video
|
|
39
|
+
* m-sections of `media` that map to a published track.
|
|
40
|
+
*
|
|
41
|
+
* libwebrtc reads `x-google-start-bitrate` per m-section but applies it to the shared
|
|
42
|
+
* `Call` (`WebRtcVideoSendChannel::ApplyChangedParams` -> `SetSdpBitrateParameters`), where
|
|
43
|
+
* `RtpBitrateConfigurator` holds one config for the whole connection. Differing per-section
|
|
44
|
+
* values are therefore last-writer-wins, decided by m-section order, so every video section
|
|
45
|
+
* gets the same number instead.
|
|
46
|
+
*
|
|
47
|
+
* Only sections that can send local media are considered. `trackBitrates` is append-only and an
|
|
48
|
+
* unpublished section keeps its `a=msid`, so matching on msid alone would still pair a stale
|
|
49
|
+
* entry with its old section — letting an uncapped screen-share target seed a connection that
|
|
50
|
+
* now carries only a camera, or consuming the one-shot hint on a section that sends nothing.
|
|
51
|
+
*
|
|
52
|
+
* The direction is the discriminator, as an exclusion rather than a match: `recvonly` and
|
|
53
|
+
* `inactive` are the only directions that cannot carry local media, and they are exactly the
|
|
54
|
+
* two a dead section lands on — unpublish sets `inactive` (explicitly in
|
|
55
|
+
* `LocalParticipant.unpublishTrack`, and via `removeTrack`'s sendonly -> inactive transition for
|
|
56
|
+
* the simulcast senders), `removeTrack` on a `sendrecv` transceiver leaves `recvonly`, and the
|
|
57
|
+
* pre-populated placeholders are `recvonly`. Everything else sends: `sendonly` from the
|
|
58
|
+
* `addTransceiver` path, `sendrecv` from the legacy `addTrack` fallback (which reuses a
|
|
59
|
+
* transceiver rather than creating a sendonly one), and a section with no direction attribute,
|
|
60
|
+
* which SDP defaults to `sendrecv`.
|
|
61
|
+
*
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export declare function computeConnectionStartBitrate(media: MediaDescription[], trackBitrates: TrackBitrateInfo[]): number | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Declares `x-google-start-bitrate` on `codecPayload`'s fmtp. This SDP munging is used for
|
|
67
|
+
* a bitrate setting that cannot be applied through `RTCRtpEncodingParameters`.
|
|
68
|
+
*
|
|
69
|
+
* Returns whether the section now carries the hint.
|
|
70
|
+
*
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
export declare function applyVideoStartBitrate(media: MediaDescription, codecPayload: number, startBitrate: number): boolean;
|
|
74
|
+
export declare const PCEvents: {
|
|
75
|
+
readonly NegotiationStarted: "negotiationStarted";
|
|
76
|
+
readonly NegotiationComplete: "negotiationComplete";
|
|
77
|
+
readonly OfferAnswered: "offerAnswered";
|
|
78
|
+
readonly RTPVideoPayloadTypes: "rtpVideoPayloadTypes";
|
|
79
|
+
};
|
|
80
|
+
declare const PCTransport_base: new () => TypedEmitter<PCTransportEventCallbacks>;
|
|
81
|
+
/** @internal */
|
|
82
|
+
export default class PCTransport extends PCTransport_base {
|
|
83
|
+
private _pc;
|
|
84
|
+
private get pc();
|
|
85
|
+
private config?;
|
|
86
|
+
private log;
|
|
87
|
+
private iceLog;
|
|
88
|
+
private loggerOptions;
|
|
89
|
+
private ddExtID;
|
|
90
|
+
latestOfferId: number;
|
|
91
|
+
private answeredOfferId;
|
|
92
|
+
/** offerId (0 if unnumbered) of the answer being applied right now */
|
|
93
|
+
private answerInFlight;
|
|
94
|
+
latestAcknowledgedOfferId: number;
|
|
95
|
+
private offerLock;
|
|
96
|
+
private pendingInitialOffer?;
|
|
97
|
+
pendingCandidates: RTCIceCandidateInit[];
|
|
98
|
+
restartingIce: boolean;
|
|
99
|
+
renegotiate: boolean;
|
|
100
|
+
trackBitrates: TrackBitrateInfo[];
|
|
101
|
+
/**
|
|
102
|
+
* Whether an offer carrying the connection-level `x-google-start-bitrate` has been
|
|
103
|
+
* accepted locally. The hint is written once per peer connection: libwebrtc retains
|
|
104
|
+
* `start_bitrate_bps` in `RtpBitrateConfigurator` and re-applies it on network route
|
|
105
|
+
* changes, so a later rewrite is at best a no-op and at worst restarts a converged
|
|
106
|
+
* bandwidth estimator. A new peer connection (full reconnect) seeds a new estimator.
|
|
107
|
+
*/
|
|
108
|
+
private hasAppliedVideoStartBitrate;
|
|
109
|
+
remoteStereoMids: string[];
|
|
110
|
+
remoteNackMids: string[];
|
|
111
|
+
onOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
|
112
|
+
onIceCandidate?: (candidate: RTCIceCandidate) => void;
|
|
113
|
+
onIceCandidateError?: (ev: Event) => void;
|
|
114
|
+
onConnectionStateChange?: (state: RTCPeerConnectionState) => void;
|
|
115
|
+
onIceConnectionStateChange?: (state: RTCIceConnectionState) => void;
|
|
116
|
+
onSignalingStatechange?: (state: RTCSignalingState) => void;
|
|
117
|
+
onDataChannel?: (ev: RTCDataChannelEvent) => void;
|
|
118
|
+
onTrack?: (ev: RTCTrackEvent) => void;
|
|
119
|
+
constructor(config?: RTCConfiguration, loggerOptions?: LoggerOptions);
|
|
120
|
+
private createPC;
|
|
121
|
+
private get logContext();
|
|
122
|
+
get isICEConnected(): boolean;
|
|
123
|
+
addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>;
|
|
124
|
+
setRemoteDescription(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
|
125
|
+
private applyRemoteDescription;
|
|
126
|
+
negotiate: import("./debounce").DebouncedFunction<any[], (onError?: (e: Error) => void) => Promise<void>>;
|
|
127
|
+
createInitialOffer(): Promise<{
|
|
128
|
+
offer: RTCSessionDescriptionInit;
|
|
129
|
+
offerId: number;
|
|
130
|
+
} | undefined>;
|
|
131
|
+
createAndSendOffer(options?: RTCOfferOptions): Promise<void>;
|
|
132
|
+
createAndSetAnswer(): Promise<RTCSessionDescriptionInit>;
|
|
133
|
+
/**
|
|
134
|
+
* Returns the mids of transceivers that carry no outgoing track on this
|
|
135
|
+
* (publisher) connection: the pre-populated placeholders added by
|
|
136
|
+
* `RTCEngine.applyInitialPublisherLayout`, plus any transceiver that was used
|
|
137
|
+
* for a track and reverted on unpublish. Their codec fmtp is conformed to the
|
|
138
|
+
* published tracks so a shared payload type stays consistent across the bundle.
|
|
139
|
+
*/
|
|
140
|
+
private getPlaceholderMids;
|
|
141
|
+
createDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel;
|
|
142
|
+
addTransceiver(mediaStreamTrack: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
143
|
+
addTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
144
|
+
addTrack(track: MediaStreamTrack): RTCRtpSender;
|
|
145
|
+
setTrackCodecBitrate(info: TrackBitrateInfo): void;
|
|
146
|
+
setConfiguration(rtcConfig: RTCConfiguration): void;
|
|
147
|
+
canRemoveTrack(): boolean;
|
|
148
|
+
removeTrack(sender: RTCRtpSender): void | undefined;
|
|
149
|
+
getConnectionState(): RTCPeerConnectionState;
|
|
150
|
+
getICEConnectionState(): RTCIceConnectionState;
|
|
151
|
+
getSignallingState(): RTCSignalingState;
|
|
152
|
+
getTransceivers(): RTCRtpTransceiver[];
|
|
153
|
+
getSenders(): RTCRtpSender[];
|
|
154
|
+
getLocalDescription(): RTCSessionDescription | null | undefined;
|
|
155
|
+
getRemoteDescription(): RTCSessionDescription | null;
|
|
156
|
+
/** stats of the underlying connection, `undefined` when there is none */
|
|
157
|
+
getStats(): Promise<RTCStatsReport> | undefined;
|
|
158
|
+
getMaxMessageSize(): number | undefined;
|
|
159
|
+
getConnectedAddress(): Promise<string | undefined>;
|
|
160
|
+
close: () => void;
|
|
161
|
+
private setMungedSDP;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Adds the AV1 dependency descriptor extension to `media` unless it is already there, and
|
|
165
|
+
* returns the id it is mapped to so callers can pass it back in as `ddExtID` (0 when no id has
|
|
166
|
+
* been chosen yet).
|
|
167
|
+
*
|
|
168
|
+
* A bundle has to map one URI to one id, so an id already in use for the extension anywhere in
|
|
169
|
+
* `sdp` wins over both the cached one and a fresh one: Chrome advertises the extension itself on
|
|
170
|
+
* sections it can send on, and an earlier offer may have munged it into others.
|
|
171
|
+
* @internal
|
|
172
|
+
*/
|
|
173
|
+
export declare function ensureVideoDDExtension(media: {
|
|
174
|
+
type: string;
|
|
175
|
+
port: number;
|
|
176
|
+
protocol: string;
|
|
177
|
+
payloads?: string | undefined;
|
|
178
|
+
} & MediaDescription, sdp: SessionDescription, ddExtID: number): number;
|
|
179
|
+
/**
|
|
180
|
+
* Checks whether an fmtp config declares `param` as an exact, `;`-delimited
|
|
181
|
+
* token. A plain substring check conflates distinct opus parameters — e.g.
|
|
182
|
+
* `stereo=1` is a substring of `sprop-stereo=1` — so `param` must match a whole
|
|
183
|
+
* parameter, not appear anywhere within the config string.
|
|
184
|
+
* @internal
|
|
185
|
+
*/
|
|
186
|
+
export declare function fmtpConfigHasParam(config: string, param: string): boolean;
|
|
187
|
+
/** @internal */
|
|
188
|
+
export declare function ensureAudioNackAndStereo(media: {
|
|
189
|
+
type: string;
|
|
190
|
+
port: number;
|
|
191
|
+
protocol: string;
|
|
192
|
+
payloads?: string | undefined;
|
|
193
|
+
} & MediaDescription, stereoMids: string[], nackMids: string[]): void;
|
|
194
|
+
/**
|
|
195
|
+
* Returns the mids of transceivers that carry no outgoing track: the
|
|
196
|
+
* pre-populated placeholders added by `RTCEngine.applyInitialPublisherLayout`,
|
|
197
|
+
* plus any transceiver that was used for a track and reverted on unpublish. The
|
|
198
|
+
* `sender.track` check is the reliable signal — an unpublished section keeps its
|
|
199
|
+
* `a=msid` (and its stale send-derived fmtp), so it can't be told apart from a
|
|
200
|
+
* real send by SDP alone. Transceiver mids are stable across renegotiations, so
|
|
201
|
+
* this works for every offer/answer after the first.
|
|
202
|
+
* @internal
|
|
203
|
+
*/
|
|
204
|
+
export declare function placeholderMidsFromTransceivers(transceivers: readonly RTCRtpTransceiver[]): Set<string>;
|
|
205
|
+
/**
|
|
206
|
+
* Within a BUNDLE group a payload type must map to identical codec parameters
|
|
207
|
+
* across every m-line. When the same payload type carries different fmtp between
|
|
208
|
+
* sections — e.g. opus `usedtx=1` on the published microphone but not on the
|
|
209
|
+
* pre-populated recvonly placeholders, or H.265 with different `level-id` between
|
|
210
|
+
* a published video track and a placeholder — libwebrtc flags a "bundled payload
|
|
211
|
+
* type collision".
|
|
212
|
+
*
|
|
213
|
+
* Rewrite the placeholder sections so every shared payload type carries the
|
|
214
|
+
* same fmtp. Real (non-placeholder) sections always win the canonical value, so
|
|
215
|
+
* a published track's encoder parameters are never altered. When no real
|
|
216
|
+
* section declares a payload type — e.g. a placeholder that was reused for a
|
|
217
|
+
* track and then reverted to recvonly keeps its send-derived `level-id` while
|
|
218
|
+
* fresh placeholders use the default — the placeholders still converge on the
|
|
219
|
+
* first value seen, so two placeholders can't disagree either. Only placeholder
|
|
220
|
+
* sections are ever rewritten, and it is codec-agnostic (opus, H.265, ...).
|
|
221
|
+
* `isPlaceholder` identifies the sections to conform.
|
|
222
|
+
* @internal
|
|
223
|
+
*/
|
|
224
|
+
export declare function conformBundledCodecFmtp(media: MediaDescription[], isPlaceholder: (media: MediaDescription) => boolean): void;
|
|
225
|
+
/** @internal */
|
|
226
|
+
/**
|
|
227
|
+
* Whether an incoming answer repeats one already applied or being applied.
|
|
228
|
+
* Any answer for the offer whose answer is in flight is a duplicate, numbered
|
|
229
|
+
* or not. With an offerId (current servers) an answer is also a duplicate if
|
|
230
|
+
* that offer's answer was already applied. Without one, fall back to the
|
|
231
|
+
* signaling state: in `stable` no local offer is pending, unless the initial
|
|
232
|
+
* offer is still deferred (it is set locally only once its answer arrives).
|
|
233
|
+
*/
|
|
234
|
+
export declare function isDuplicateAnswer(offerId: number, answerInFlight: number | undefined, answeredOfferId: number, signalingState: RTCSignalingState | undefined, hasPendingInitialOffer: boolean): boolean;
|
|
235
|
+
export declare function extractStereoAndNackAudioFromOffer(offer: RTCSessionDescriptionInit): {
|
|
236
|
+
stereoMids: string[];
|
|
237
|
+
nackMids: string[];
|
|
238
|
+
};
|
|
239
|
+
type PCTransportEventCallbacks = {
|
|
240
|
+
negotiationStarted: () => void;
|
|
241
|
+
negotiationComplete: () => void;
|
|
242
|
+
offerAnswered: (offerId: number) => void;
|
|
243
|
+
rtpVideoPayloadTypes: (attributes: MediaAttributes['rtp']) => void;
|
|
244
|
+
};
|
|
245
|
+
export {};
|
|
246
|
+
//# sourceMappingURL=PCTransport.d.ts.map
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { SignalTarget } from '@livekit/protocol';
|
|
2
|
-
import type { Throws } from '@livekit/throws-transformer/throws';
|
|
3
|
-
import PCTransport from './PCTransport';
|
|
4
|
-
import { NegotiationError } from './errors';
|
|
5
|
-
import type { LoggerOptions } from './types';
|
|
6
|
-
export declare enum PCTransportState {
|
|
7
|
-
NEW = 0,
|
|
8
|
-
CONNECTING = 1,
|
|
9
|
-
CONNECTED = 2,
|
|
10
|
-
FAILED = 3,
|
|
11
|
-
CLOSING = 4,
|
|
12
|
-
CLOSED = 5
|
|
13
|
-
}
|
|
14
|
-
type PCMode = 'subscriber-primary' | 'publisher-primary' | 'publisher-only';
|
|
15
|
-
export declare class PCTransportManager {
|
|
16
|
-
publisher: PCTransport;
|
|
17
|
-
subscriber?: PCTransport;
|
|
18
|
-
peerConnectionTimeout: number;
|
|
19
|
-
get needsPublisher(): boolean;
|
|
20
|
-
get needsSubscriber(): boolean;
|
|
21
|
-
get currentState(): PCTransportState;
|
|
22
|
-
onStateChange?: (state: PCTransportState, pubState: RTCPeerConnectionState, subState?: RTCPeerConnectionState) => void;
|
|
23
|
-
onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void;
|
|
24
|
-
onDataChannel?: (ev: RTCDataChannelEvent) => void;
|
|
25
|
-
onTrack?: (ev: RTCTrackEvent) => void;
|
|
26
|
-
onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
|
27
|
-
private isPublisherConnectionRequired;
|
|
28
|
-
private isSubscriberConnectionRequired;
|
|
29
|
-
private state;
|
|
30
|
-
private connectionLock;
|
|
31
|
-
private remoteOfferLock;
|
|
32
|
-
private log;
|
|
33
|
-
private iceLog;
|
|
34
|
-
private loggerOptions;
|
|
35
|
-
private _mode;
|
|
36
|
-
get mode(): PCMode;
|
|
37
|
-
constructor(mode: PCMode, loggerOptions: LoggerOptions, rtcConfig?: RTCConfiguration);
|
|
38
|
-
private get logContext();
|
|
39
|
-
requirePublisher(require?: boolean): void;
|
|
40
|
-
createAndSendPublisherOffer(options?: RTCOfferOptions): Promise<void>;
|
|
41
|
-
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
|
42
|
-
removeTrack(sender: RTCRtpSender): void | undefined;
|
|
43
|
-
close(): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Restarts ICE on the transports that need it. Only the publisher: the server restarts the
|
|
46
|
-
* subscriber's ICE itself and follows with a fresh offer.
|
|
47
|
-
*
|
|
48
|
-
* The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
|
|
49
|
-
* candidates would guard against candidates for a new generation arriving before the offer
|
|
50
|
-
* that introduces it, but the server does not send them in that order -- on a same-node
|
|
51
|
-
* resume it buffers them until the offer has gone out, and on a reconnect that lands on
|
|
52
|
-
* another node it withholds subscriber candidates until immediately before creating the
|
|
53
|
-
* offer. Setting the flag only risks withholding candidates during the window that decides
|
|
54
|
-
* whether the reconnect succeeded.
|
|
55
|
-
*/
|
|
56
|
-
triggerIceRestart(): Promise<void>;
|
|
57
|
-
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
|
58
|
-
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
|
59
|
-
updateConfiguration(config: RTCConfiguration, iceRestart?: boolean): void;
|
|
60
|
-
ensurePCTransportConnection(abortController?: AbortController, timeout?: number): Promise<void>;
|
|
61
|
-
negotiate(abortController: AbortController): Promise<Throws<void, NegotiationError | Error>>;
|
|
62
|
-
addPublisherTransceiver(track: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
63
|
-
addPublisherTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
64
|
-
getMidForReceiver(receiver: RTCRtpReceiver): string | null | undefined;
|
|
65
|
-
getMaxPublisherMessageSize(): number | undefined;
|
|
66
|
-
addPublisherTrack(track: MediaStreamTrack): RTCRtpSender;
|
|
67
|
-
createPublisherDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel;
|
|
68
|
-
/**
|
|
69
|
-
* Returns the first required transport's address if no explicit target is specified
|
|
70
|
-
*/
|
|
71
|
-
getConnectedAddress(target?: SignalTarget): Promise<string | undefined>;
|
|
72
|
-
private get requiredTransports();
|
|
73
|
-
private updateState;
|
|
74
|
-
private ensureTransportConnected;
|
|
75
|
-
}
|
|
76
|
-
export {};
|
|
77
|
-
//# sourceMappingURL=PCTransportManager.d.ts.map
|
|
1
|
+
import { SignalTarget } from '@livekit/protocol';
|
|
2
|
+
import type { Throws } from '@livekit/throws-transformer/throws';
|
|
3
|
+
import PCTransport from './PCTransport';
|
|
4
|
+
import { NegotiationError } from './errors';
|
|
5
|
+
import type { LoggerOptions } from './types';
|
|
6
|
+
export declare enum PCTransportState {
|
|
7
|
+
NEW = 0,
|
|
8
|
+
CONNECTING = 1,
|
|
9
|
+
CONNECTED = 2,
|
|
10
|
+
FAILED = 3,
|
|
11
|
+
CLOSING = 4,
|
|
12
|
+
CLOSED = 5
|
|
13
|
+
}
|
|
14
|
+
type PCMode = 'subscriber-primary' | 'publisher-primary' | 'publisher-only';
|
|
15
|
+
export declare class PCTransportManager {
|
|
16
|
+
publisher: PCTransport;
|
|
17
|
+
subscriber?: PCTransport;
|
|
18
|
+
peerConnectionTimeout: number;
|
|
19
|
+
get needsPublisher(): boolean;
|
|
20
|
+
get needsSubscriber(): boolean;
|
|
21
|
+
get currentState(): PCTransportState;
|
|
22
|
+
onStateChange?: (state: PCTransportState, pubState: RTCPeerConnectionState, subState?: RTCPeerConnectionState) => void;
|
|
23
|
+
onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void;
|
|
24
|
+
onDataChannel?: (ev: RTCDataChannelEvent) => void;
|
|
25
|
+
onTrack?: (ev: RTCTrackEvent) => void;
|
|
26
|
+
onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
|
27
|
+
private isPublisherConnectionRequired;
|
|
28
|
+
private isSubscriberConnectionRequired;
|
|
29
|
+
private state;
|
|
30
|
+
private connectionLock;
|
|
31
|
+
private remoteOfferLock;
|
|
32
|
+
private log;
|
|
33
|
+
private iceLog;
|
|
34
|
+
private loggerOptions;
|
|
35
|
+
private _mode;
|
|
36
|
+
get mode(): PCMode;
|
|
37
|
+
constructor(mode: PCMode, loggerOptions: LoggerOptions, rtcConfig?: RTCConfiguration);
|
|
38
|
+
private get logContext();
|
|
39
|
+
requirePublisher(require?: boolean): void;
|
|
40
|
+
createAndSendPublisherOffer(options?: RTCOfferOptions): Promise<void>;
|
|
41
|
+
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
|
42
|
+
removeTrack(sender: RTCRtpSender): void | undefined;
|
|
43
|
+
close(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Restarts ICE on the transports that need it. Only the publisher: the server restarts the
|
|
46
|
+
* subscriber's ICE itself and follows with a fresh offer.
|
|
47
|
+
*
|
|
48
|
+
* The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
|
|
49
|
+
* candidates would guard against candidates for a new generation arriving before the offer
|
|
50
|
+
* that introduces it, but the server does not send them in that order -- on a same-node
|
|
51
|
+
* resume it buffers them until the offer has gone out, and on a reconnect that lands on
|
|
52
|
+
* another node it withholds subscriber candidates until immediately before creating the
|
|
53
|
+
* offer. Setting the flag only risks withholding candidates during the window that decides
|
|
54
|
+
* whether the reconnect succeeded.
|
|
55
|
+
*/
|
|
56
|
+
triggerIceRestart(): Promise<void>;
|
|
57
|
+
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
|
58
|
+
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
|
59
|
+
updateConfiguration(config: RTCConfiguration, iceRestart?: boolean): void;
|
|
60
|
+
ensurePCTransportConnection(abortController?: AbortController, timeout?: number): Promise<void>;
|
|
61
|
+
negotiate(abortController: AbortController): Promise<Throws<void, NegotiationError | Error>>;
|
|
62
|
+
addPublisherTransceiver(track: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
63
|
+
addPublisherTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
64
|
+
getMidForReceiver(receiver: RTCRtpReceiver): string | null | undefined;
|
|
65
|
+
getMaxPublisherMessageSize(): number | undefined;
|
|
66
|
+
addPublisherTrack(track: MediaStreamTrack): RTCRtpSender;
|
|
67
|
+
createPublisherDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the first required transport's address if no explicit target is specified
|
|
70
|
+
*/
|
|
71
|
+
getConnectedAddress(target?: SignalTarget): Promise<string | undefined>;
|
|
72
|
+
private get requiredTransports();
|
|
73
|
+
private updateState;
|
|
74
|
+
private ensureTransportConnected;
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=PCTransportManager.d.ts.map
|