livekit-client 2.0.5 → 2.0.7
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/livekit-client.esm.mjs +10343 -9885
- 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 +1 -2
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts +1 -1
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +1 -2
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/RegionUrlProvider.d.ts +1 -1
- package/dist/src/room/RegionUrlProvider.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/participant/LocalParticipant.d.ts +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +1 -1
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/ParticipantTrackPermission.d.ts +1 -1
- package/dist/src/room/participant/ParticipantTrackPermission.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrackPublication.d.ts +1 -1
- package/dist/src/room/track/LocalTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +1 -2
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/Track.d.ts +1 -2
- package/dist/src/room/track/Track.d.ts.map +1 -1
- package/dist/src/room/track/TrackPublication.d.ts +2 -3
- package/dist/src/room/track/TrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +6 -0
- package/dist/src/room/track/options.d.ts.map +1 -1
- package/dist/src/room/track/utils.d.ts +1 -1
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +1 -1
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/ts4.2/src/api/SignalClient.d.ts +1 -2
- package/dist/ts4.2/src/index.d.ts +1 -1
- package/dist/ts4.2/src/room/PCTransportManager.d.ts +1 -1
- package/dist/ts4.2/src/room/RTCEngine.d.ts +2 -3
- package/dist/ts4.2/src/room/RegionUrlProvider.d.ts +1 -1
- package/dist/ts4.2/src/room/Room.d.ts +1 -1
- package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +1 -1
- package/dist/ts4.2/src/room/participant/Participant.d.ts +1 -1
- package/dist/ts4.2/src/room/participant/ParticipantTrackPermission.d.ts +1 -1
- package/dist/ts4.2/src/room/participant/RemoteParticipant.d.ts +1 -1
- package/dist/ts4.2/src/room/track/LocalTrackPublication.d.ts +1 -1
- package/dist/ts4.2/src/room/track/LocalVideoTrack.d.ts +1 -2
- package/dist/ts4.2/src/room/track/RemoteTrackPublication.d.ts +1 -1
- package/dist/ts4.2/src/room/track/Track.d.ts +1 -2
- package/dist/ts4.2/src/room/track/TrackPublication.d.ts +2 -3
- package/dist/ts4.2/src/room/track/options.d.ts +6 -0
- package/dist/ts4.2/src/room/track/utils.d.ts +1 -1
- package/dist/ts4.2/src/room/utils.d.ts +1 -1
- package/package.json +2 -2
- package/src/api/SignalClient.ts +10 -12
- package/src/connectionHelper/checks/websocket.ts +1 -1
- package/src/e2ee/E2eeManager.ts +1 -1
- package/src/index.ts +1 -1
- package/src/room/PCTransportManager.ts +1 -1
- package/src/room/RTCEngine.ts +21 -23
- package/src/room/RegionUrlProvider.ts +1 -1
- package/src/room/Room.ts +22 -23
- package/src/room/participant/LocalParticipant.ts +18 -7
- package/src/room/participant/Participant.ts +4 -4
- package/src/room/participant/ParticipantTrackPermission.ts +1 -1
- package/src/room/participant/RemoteParticipant.ts +6 -2
- package/src/room/track/LocalAudioTrack.ts +5 -2
- package/src/room/track/LocalTrackPublication.ts +1 -1
- package/src/room/track/LocalVideoTrack.ts +6 -2
- package/src/room/track/RemoteAudioTrack.ts +1 -1
- package/src/room/track/RemoteTrackPublication.ts +7 -2
- package/src/room/track/Track.ts +6 -6
- package/src/room/track/TrackPublication.ts +7 -3
- package/src/room/track/facingMode.ts +2 -2
- package/src/room/track/options.ts +7 -0
- package/src/room/track/utils.ts +2 -1
- package/src/room/utils.ts +1 -1
- package/dist/src/proto/livekit_models_pb.d.ts +0 -1405
- package/dist/src/proto/livekit_models_pb.d.ts.map +0 -1
- package/dist/src/proto/livekit_rtc_pb.d.ts +0 -1423
- package/dist/src/proto/livekit_rtc_pb.d.ts.map +0 -1
- package/dist/ts4.2/src/proto/livekit_models_pb.d.ts +0 -1405
- package/dist/ts4.2/src/proto/livekit_rtc_pb.d.ts +0 -1423
- package/src/proto/livekit_models_pb.ts +0 -2327
- package/src/proto/livekit_rtc_pb.ts +0 -2411
@@ -1,5 +1,5 @@
|
|
1
|
+
import type { ParticipantInfo } from '@livekit/protocol';
|
1
2
|
import type { SignalClient } from '../../api/SignalClient';
|
2
|
-
import type { ParticipantInfo } from '../../proto/livekit_models_pb';
|
3
3
|
import RemoteTrackPublication from '../track/RemoteTrackPublication';
|
4
4
|
import { Track } from '../track/Track';
|
5
5
|
import type { AudioOutputOptions } from '../track/options';
|
@@ -1,6 +1,5 @@
|
|
1
|
+
import { SubscribedCodec, SubscribedQuality, VideoLayer } from '@livekit/protocol';
|
1
2
|
import type { SignalClient } from '../../api/SignalClient';
|
2
|
-
import { VideoLayer } from '../../proto/livekit_models_pb';
|
3
|
-
import { SubscribedCodec, SubscribedQuality } from '../../proto/livekit_rtc_pb';
|
4
3
|
import type { VideoSenderStats } from '../stats';
|
5
4
|
import type { LoggerOptions } from '../types';
|
6
5
|
import LocalTrack from './LocalTrack';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { SubscriptionError, TrackInfo } from '
|
1
|
+
import { SubscriptionError, TrackInfo } from '@livekit/protocol';
|
2
2
|
import type { LoggerOptions } from '../types';
|
3
3
|
import type RemoteTrack from './RemoteTrack';
|
4
4
|
import { Track, VideoQuality } from './Track';
|
@@ -1,8 +1,7 @@
|
|
1
|
+
import { StreamState as ProtoStreamState, TrackSource, TrackType } from '@livekit/protocol';
|
1
2
|
import type TypedEventEmitter from 'typed-emitter';
|
2
3
|
import type { SignalClient } from '../../api/SignalClient';
|
3
4
|
import { StructuredLogger } from '../../logger';
|
4
|
-
import { TrackSource, TrackType } from '../../proto/livekit_models_pb';
|
5
|
-
import { StreamState as ProtoStreamState } from '../../proto/livekit_rtc_pb';
|
6
5
|
import type { LoggerOptions } from '../types';
|
7
6
|
import type { TrackProcessor } from './processor/types';
|
8
7
|
export declare enum VideoQuality {
|
@@ -1,7 +1,6 @@
|
|
1
|
+
import { Encryption_Type } from '@livekit/protocol';
|
2
|
+
import type { SubscriptionError, TrackInfo, UpdateSubscription, UpdateTrackSettings } from '@livekit/protocol';
|
1
3
|
import type TypedEventEmitter from 'typed-emitter';
|
2
|
-
import { Encryption_Type } from '../../proto/livekit_models_pb';
|
3
|
-
import type { SubscriptionError, TrackInfo } from '../../proto/livekit_models_pb';
|
4
|
-
import type { UpdateSubscription, UpdateTrackSettings } from '../../proto/livekit_rtc_pb';
|
5
4
|
import type { LoggerOptions } from '../types';
|
6
5
|
import LocalAudioTrack from './LocalAudioTrack';
|
7
6
|
import LocalVideoTrack from './LocalVideoTrack';
|
@@ -165,6 +165,12 @@ export interface ScreenShareCaptureOptions {
|
|
165
165
|
* local speakers when the tab is captured.
|
166
166
|
*/
|
167
167
|
suppressLocalAudioPlayback?: boolean;
|
168
|
+
/**
|
169
|
+
* Experimental option to instruct the browser to offer the current tab as the most prominent capture source
|
170
|
+
* @experimental
|
171
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab
|
172
|
+
*/
|
173
|
+
preferCurrentTab?: boolean;
|
168
174
|
}
|
169
175
|
export interface AudioCaptureOptions {
|
170
176
|
/**
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { TrackPublishedResponse } from '
|
1
|
+
import { TrackPublishedResponse } from '@livekit/protocol';
|
2
2
|
import { Track } from './Track';
|
3
3
|
import type { TrackPublication } from './TrackPublication';
|
4
4
|
import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { ClientInfo } from '
|
1
|
+
import { ClientInfo } from '@livekit/protocol';
|
2
2
|
import type LocalAudioTrack from './track/LocalAudioTrack';
|
3
3
|
import type RemoteAudioTrack from './track/RemoteAudioTrack';
|
4
4
|
import { VideoCodec } from './track/options';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.7",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "./dist/livekit-client.umd.js",
|
6
6
|
"unpkg": "./dist/livekit-client.umd.js",
|
@@ -36,7 +36,7 @@
|
|
36
36
|
"author": "David Zhao <david@davidzhao.com>",
|
37
37
|
"license": "Apache-2.0",
|
38
38
|
"dependencies": {
|
39
|
-
"@
|
39
|
+
"@livekit/protocol": "1.10.4",
|
40
40
|
"events": "^3.3.0",
|
41
41
|
"loglevel": "^1.8.0",
|
42
42
|
"sdp-transform": "^2.14.1",
|
package/src/api/SignalClient.ts
CHANGED
@@ -1,27 +1,22 @@
|
|
1
|
-
import { protoInt64 } from '@bufbuild/protobuf';
|
2
|
-
import log, { LoggerNames, getLogger } from '../logger';
|
3
|
-
import {
|
4
|
-
ClientInfo,
|
5
|
-
DisconnectReason,
|
6
|
-
ParticipantInfo,
|
7
|
-
ReconnectReason,
|
8
|
-
Room,
|
9
|
-
SpeakerInfo,
|
10
|
-
VideoLayer,
|
11
|
-
} from '../proto/livekit_models_pb';
|
12
1
|
import {
|
13
2
|
AddTrackRequest,
|
3
|
+
ClientInfo,
|
14
4
|
ConnectionQualityUpdate,
|
5
|
+
DisconnectReason,
|
15
6
|
JoinResponse,
|
16
7
|
LeaveRequest,
|
17
8
|
MuteTrackRequest,
|
9
|
+
ParticipantInfo,
|
18
10
|
Ping,
|
11
|
+
ReconnectReason,
|
19
12
|
ReconnectResponse,
|
13
|
+
Room,
|
20
14
|
SessionDescription,
|
21
15
|
SignalRequest,
|
22
16
|
SignalResponse,
|
23
17
|
SignalTarget,
|
24
18
|
SimulateScenario,
|
19
|
+
SpeakerInfo,
|
25
20
|
StreamStateUpdate,
|
26
21
|
SubscribedQualityUpdate,
|
27
22
|
SubscriptionPermission,
|
@@ -36,7 +31,10 @@ import {
|
|
36
31
|
UpdateSubscription,
|
37
32
|
UpdateTrackSettings,
|
38
33
|
UpdateVideoLayers,
|
39
|
-
|
34
|
+
VideoLayer,
|
35
|
+
protoInt64,
|
36
|
+
} from '@livekit/protocol';
|
37
|
+
import log, { LoggerNames, getLogger } from '../logger';
|
40
38
|
import { ConnectionError, ConnectionErrorReason } from '../room/errors';
|
41
39
|
import CriticalTimers from '../room/timers';
|
42
40
|
import type { LoggerOptions } from '../room/types';
|
@@ -1,5 +1,5 @@
|
|
1
|
+
import { ServerInfo_Edition } from '@livekit/protocol';
|
1
2
|
import { SignalClient } from '../../api/SignalClient';
|
2
|
-
import { ServerInfo_Edition } from '../../proto/livekit_models_pb';
|
3
3
|
import { Checker } from './Checker';
|
4
4
|
|
5
5
|
export class WebSocketCheck extends Checker {
|
package/src/e2ee/E2eeManager.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
+
import { Encryption_Type, TrackInfo } from '@livekit/protocol';
|
1
2
|
import { EventEmitter } from 'events';
|
2
3
|
import type TypedEventEmitter from 'typed-emitter';
|
3
4
|
import log, { LogLevel, workerLogger } from '../logger';
|
4
|
-
import { Encryption_Type, TrackInfo } from '../proto/livekit_models_pb';
|
5
5
|
import type RTCEngine from '../room/RTCEngine';
|
6
6
|
import type Room from '../room/Room';
|
7
7
|
import { ConnectionState } from '../room/Room';
|
package/src/index.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
+
import { DataPacket_Kind, DisconnectReason } from '@livekit/protocol';
|
1
2
|
import { LogLevel, LoggerNames, getLogger, setLogExtension, setLogLevel } from './logger';
|
2
|
-
import { DataPacket_Kind, DisconnectReason } from './proto/livekit_models_pb';
|
3
3
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
4
4
|
import Room, { ConnectionState } from './room/Room';
|
5
5
|
import LocalParticipant from './room/participant/LocalParticipant';
|
@@ -1,5 +1,5 @@
|
|
1
|
+
import { SignalTarget } from '@livekit/protocol';
|
1
2
|
import log, { LoggerNames, getLogger } from '../logger';
|
2
|
-
import { SignalTarget } from '../proto/livekit_rtc_pb';
|
3
3
|
import PCTransport, { PCEvents } from './PCTransport';
|
4
4
|
import { roomConnectOptionDefaults } from './defaults';
|
5
5
|
import { ConnectionError, ConnectionErrorReason } from './errors';
|
package/src/room/RTCEngine.ts
CHANGED
@@ -1,44 +1,42 @@
|
|
1
|
-
import { EventEmitter } from 'events';
|
2
|
-
import type { MediaAttributes } from 'sdp-transform';
|
3
|
-
import type TypedEventEmitter from 'typed-emitter';
|
4
|
-
import type { SignalOptions } from '../api/SignalClient';
|
5
|
-
import {
|
6
|
-
SignalClient,
|
7
|
-
SignalConnectionState,
|
8
|
-
toProtoSessionDescription,
|
9
|
-
} from '../api/SignalClient';
|
10
|
-
import log, { LoggerNames, getLogger } from '../logger';
|
11
|
-
import type { InternalRoomOptions } from '../options';
|
12
1
|
import {
|
2
|
+
type AddTrackRequest,
|
13
3
|
ClientConfigSetting,
|
14
4
|
ClientConfiguration,
|
5
|
+
type ConnectionQualityUpdate,
|
6
|
+
DataChannelInfo,
|
15
7
|
DataPacket,
|
16
8
|
DataPacket_Kind,
|
17
9
|
DisconnectReason,
|
18
|
-
ParticipantInfo,
|
19
|
-
ReconnectReason,
|
20
|
-
Room as RoomModel,
|
21
|
-
SpeakerInfo,
|
22
|
-
TrackInfo,
|
23
|
-
UserPacket,
|
24
|
-
} from '../proto/livekit_models_pb';
|
25
|
-
import {
|
26
|
-
type AddTrackRequest,
|
27
|
-
type ConnectionQualityUpdate,
|
28
|
-
DataChannelInfo,
|
29
10
|
type JoinResponse,
|
30
11
|
type LeaveRequest,
|
12
|
+
ParticipantInfo,
|
13
|
+
ReconnectReason,
|
31
14
|
type ReconnectResponse,
|
15
|
+
Room as RoomModel,
|
32
16
|
SignalTarget,
|
17
|
+
SpeakerInfo,
|
33
18
|
type StreamStateUpdate,
|
34
19
|
SubscribedQualityUpdate,
|
35
20
|
type SubscriptionPermissionUpdate,
|
36
21
|
type SubscriptionResponse,
|
37
22
|
SyncState,
|
23
|
+
TrackInfo,
|
38
24
|
type TrackPublishedResponse,
|
39
25
|
TrackUnpublishedResponse,
|
40
26
|
UpdateSubscription,
|
41
|
-
|
27
|
+
UserPacket,
|
28
|
+
} from '@livekit/protocol';
|
29
|
+
import { EventEmitter } from 'events';
|
30
|
+
import type { MediaAttributes } from 'sdp-transform';
|
31
|
+
import type TypedEventEmitter from 'typed-emitter';
|
32
|
+
import type { SignalOptions } from '../api/SignalClient';
|
33
|
+
import {
|
34
|
+
SignalClient,
|
35
|
+
SignalConnectionState,
|
36
|
+
toProtoSessionDescription,
|
37
|
+
} from '../api/SignalClient';
|
38
|
+
import log, { LoggerNames, getLogger } from '../logger';
|
39
|
+
import type { InternalRoomOptions } from '../options';
|
42
40
|
import PCTransport, { PCEvents } from './PCTransport';
|
43
41
|
import { PCTransportManager, PCTransportState } from './PCTransportManager';
|
44
42
|
import type { ReconnectContext, ReconnectPolicy } from './ReconnectPolicy';
|
@@ -1,5 +1,5 @@
|
|
1
|
+
import type { RegionInfo, RegionSettings } from '@livekit/protocol';
|
1
2
|
import log from '../logger';
|
2
|
-
import type { RegionInfo, RegionSettings } from '../proto/livekit_rtc_pb';
|
3
3
|
import { ConnectionError, ConnectionErrorReason } from './errors';
|
4
4
|
import { isCloud } from './utils';
|
5
5
|
|
package/src/room/Room.ts
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
import { protoInt64 } from '@bufbuild/protobuf';
|
2
|
-
import { EventEmitter } from 'events';
|
3
|
-
import type TypedEmitter from 'typed-emitter';
|
4
|
-
import 'webrtc-adapter';
|
5
|
-
import { EncryptionEvent } from '../e2ee';
|
6
|
-
import { E2EEManager } from '../e2ee/E2eeManager';
|
7
|
-
import log, { LoggerNames, getLogger } from '../logger';
|
8
|
-
import type {
|
9
|
-
InternalRoomConnectOptions,
|
10
|
-
InternalRoomOptions,
|
11
|
-
RoomConnectOptions,
|
12
|
-
RoomOptions,
|
13
|
-
} from '../options';
|
14
1
|
import {
|
2
|
+
ConnectionQualityUpdate,
|
15
3
|
DataPacket_Kind,
|
16
4
|
DisconnectReason,
|
5
|
+
JoinResponse,
|
6
|
+
LeaveRequest,
|
17
7
|
ParticipantInfo,
|
18
8
|
ParticipantInfo_State,
|
19
9
|
ParticipantPermission,
|
20
10
|
Room as RoomModel,
|
21
11
|
ServerInfo,
|
12
|
+
SimulateScenario,
|
22
13
|
SpeakerInfo,
|
14
|
+
StreamStateUpdate,
|
23
15
|
SubscriptionError,
|
16
|
+
SubscriptionPermissionUpdate,
|
17
|
+
SubscriptionResponse,
|
24
18
|
TrackInfo,
|
25
19
|
TrackSource,
|
26
20
|
TrackType,
|
27
21
|
UserPacket,
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
22
|
+
protoInt64,
|
23
|
+
} from '@livekit/protocol';
|
24
|
+
import { EventEmitter } from 'events';
|
25
|
+
import type TypedEmitter from 'typed-emitter';
|
26
|
+
import 'webrtc-adapter';
|
27
|
+
import { EncryptionEvent } from '../e2ee';
|
28
|
+
import { E2EEManager } from '../e2ee/E2eeManager';
|
29
|
+
import log, { LoggerNames, getLogger } from '../logger';
|
30
|
+
import type {
|
31
|
+
InternalRoomConnectOptions,
|
32
|
+
InternalRoomOptions,
|
33
|
+
RoomConnectOptions,
|
34
|
+
RoomOptions,
|
35
|
+
} from '../options';
|
38
36
|
import { getBrowser } from '../utils/browserParser';
|
39
37
|
import DeviceManager from './DeviceManager';
|
40
38
|
import RTCEngine from './RTCEngine';
|
@@ -509,6 +507,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
509
507
|
`Initial connection failed with ConnectionError: ${e.message}. Retrying with another region: ${nextUrl}`,
|
510
508
|
this.logContext,
|
511
509
|
);
|
510
|
+
this.recreateEngine();
|
512
511
|
await connectFn(resolve, reject, nextUrl);
|
513
512
|
} else {
|
514
513
|
this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);
|
@@ -1,18 +1,16 @@
|
|
1
|
-
import type { InternalRoomOptions } from '../../options';
|
2
1
|
import {
|
2
|
+
AddTrackRequest,
|
3
3
|
DataPacket,
|
4
4
|
DataPacket_Kind,
|
5
5
|
Encryption_Type,
|
6
6
|
ParticipantInfo,
|
7
7
|
ParticipantPermission,
|
8
|
-
UserPacket,
|
9
|
-
} from '../../proto/livekit_models_pb';
|
10
|
-
import {
|
11
|
-
AddTrackRequest,
|
12
8
|
SimulcastCodec,
|
13
9
|
SubscribedQualityUpdate,
|
14
10
|
TrackUnpublishedResponse,
|
15
|
-
|
11
|
+
UserPacket,
|
12
|
+
} from '@livekit/protocol';
|
13
|
+
import type { InternalRoomOptions } from '../../options';
|
16
14
|
import { PCTransportState } from '../PCTransportManager';
|
17
15
|
import type RTCEngine from '../RTCEngine';
|
18
16
|
import { defaultVideoCodec } from '../defaults';
|
@@ -736,7 +734,20 @@ export default class LocalParticipant extends Participant {
|
|
736
734
|
if (isSVCCodec(videoCodec)) {
|
737
735
|
// vp9 svc with screenshare has problem to encode, always use L1T3 here
|
738
736
|
if (track.source === Track.Source.ScreenShare && videoCodec === 'vp9') {
|
739
|
-
|
737
|
+
// Chrome does not allow more than 5 fps with L1T3, and it has encoding bugs with L3T3
|
738
|
+
// It has a different path for screenshare handling and it seems to be untested/buggy
|
739
|
+
// As a workaround, we are setting contentHint to force it to go through the same
|
740
|
+
// path as regular camera video. While this is not optimal, it delivers the performance
|
741
|
+
// that we need
|
742
|
+
if ('contentHint' in track.mediaStreamTrack) {
|
743
|
+
track.mediaStreamTrack.contentHint = 'motion';
|
744
|
+
this.log.info('forcing contentHint to motion for screenshare with VP9', {
|
745
|
+
...this.logContext,
|
746
|
+
...getLogContextFromTrack(track),
|
747
|
+
});
|
748
|
+
} else {
|
749
|
+
opts.scalabilityMode = 'L1T3';
|
750
|
+
}
|
740
751
|
}
|
741
752
|
// set scalabilityMode to 'L3T3_KEY' by default
|
742
753
|
opts.scalabilityMode = opts.scalabilityMode ?? 'L3T3_KEY';
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import { EventEmitter } from 'events';
|
2
|
-
import type TypedEmitter from 'typed-emitter';
|
3
|
-
import log, { LoggerNames, StructuredLogger, getLogger } from '../../logger';
|
4
1
|
import {
|
5
2
|
DataPacket_Kind,
|
6
3
|
ParticipantInfo,
|
7
4
|
ParticipantPermission,
|
8
5
|
ConnectionQuality as ProtoQuality,
|
9
6
|
SubscriptionError,
|
10
|
-
} from '
|
7
|
+
} from '@livekit/protocol';
|
8
|
+
import { EventEmitter } from 'events';
|
9
|
+
import type TypedEmitter from 'typed-emitter';
|
10
|
+
import log, { LoggerNames, StructuredLogger, getLogger } from '../../logger';
|
11
11
|
import { ParticipantEvent, TrackEvent } from '../events';
|
12
12
|
import LocalAudioTrack from '../track/LocalAudioTrack';
|
13
13
|
import type LocalTrackPublication from '../track/LocalTrackPublication';
|
@@ -1,6 +1,10 @@
|
|
1
|
+
import type {
|
2
|
+
ParticipantInfo,
|
3
|
+
SubscriptionError,
|
4
|
+
UpdateSubscription,
|
5
|
+
UpdateTrackSettings,
|
6
|
+
} from '@livekit/protocol';
|
1
7
|
import type { SignalClient } from '../../api/SignalClient';
|
2
|
-
import type { ParticipantInfo, SubscriptionError } from '../../proto/livekit_models_pb';
|
3
|
-
import type { UpdateSubscription, UpdateTrackSettings } from '../../proto/livekit_rtc_pb';
|
4
8
|
import { ParticipantEvent, TrackEvent } from '../events';
|
5
9
|
import RemoteAudioTrack from '../track/RemoteAudioTrack';
|
6
10
|
import type RemoteTrack from '../track/RemoteTrack';
|
@@ -36,7 +36,10 @@ export default class LocalAudioTrack extends LocalTrack<Track.Kind.Audio> {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
async setDeviceId(deviceId: ConstrainDOMString): Promise<boolean> {
|
39
|
-
if (
|
39
|
+
if (
|
40
|
+
this._constraints.deviceId === deviceId &&
|
41
|
+
this._mediaStreamTrack.getSettings().deviceId === unwrapConstraint(deviceId)
|
42
|
+
) {
|
40
43
|
return true;
|
41
44
|
}
|
42
45
|
this._constraints.deviceId = deviceId;
|
@@ -44,7 +47,7 @@ export default class LocalAudioTrack extends LocalTrack<Track.Kind.Audio> {
|
|
44
47
|
await this.restartTrack();
|
45
48
|
}
|
46
49
|
return (
|
47
|
-
this.isMuted || unwrapConstraint(deviceId) === this.
|
50
|
+
this.isMuted || unwrapConstraint(deviceId) === this._mediaStreamTrack.getSettings().deviceId
|
48
51
|
);
|
49
52
|
}
|
50
53
|
|
@@ -1,7 +1,11 @@
|
|
1
|
+
import {
|
2
|
+
VideoQuality as ProtoVideoQuality,
|
3
|
+
SubscribedCodec,
|
4
|
+
SubscribedQuality,
|
5
|
+
VideoLayer,
|
6
|
+
} from '@livekit/protocol';
|
1
7
|
import type { SignalClient } from '../../api/SignalClient';
|
2
8
|
import type { StructuredLogger } from '../../logger';
|
3
|
-
import { VideoQuality as ProtoVideoQuality, VideoLayer } from '../../proto/livekit_models_pb';
|
4
|
-
import { SubscribedCodec, SubscribedQuality } from '../../proto/livekit_rtc_pb';
|
5
9
|
import { ScalabilityMode } from '../participant/publishUtils';
|
6
10
|
import type { VideoSenderStats } from '../stats';
|
7
11
|
import { computeBitrate, monitorFrequency } from '../stats';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { TrackEvent } from '../events';
|
2
|
-
import { computeBitrate } from '../stats';
|
3
2
|
import type { AudioReceiverStats } from '../stats';
|
3
|
+
import { computeBitrate } from '../stats';
|
4
4
|
import type { LoggerOptions } from '../types';
|
5
5
|
import { isReactNative, supportsSetSinkId } from '../utils';
|
6
6
|
import RemoteTrack from './RemoteTrack';
|
@@ -1,5 +1,10 @@
|
|
1
|
-
import {
|
2
|
-
|
1
|
+
import {
|
2
|
+
ParticipantTracks,
|
3
|
+
SubscriptionError,
|
4
|
+
TrackInfo,
|
5
|
+
UpdateSubscription,
|
6
|
+
UpdateTrackSettings,
|
7
|
+
} from '@livekit/protocol';
|
3
8
|
import { TrackEvent } from '../events';
|
4
9
|
import type { LoggerOptions } from '../types';
|
5
10
|
import type RemoteTrack from './RemoteTrack';
|
package/src/room/track/Track.ts
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
import { EventEmitter } from 'events';
|
2
|
-
import type TypedEventEmitter from 'typed-emitter';
|
3
|
-
import type { SignalClient } from '../../api/SignalClient';
|
4
|
-
import log, { LoggerNames, StructuredLogger, getLogger } from '../../logger';
|
5
1
|
import {
|
6
2
|
VideoQuality as ProtoQuality,
|
3
|
+
StreamState as ProtoStreamState,
|
7
4
|
TrackSource,
|
8
5
|
TrackType,
|
9
|
-
} from '
|
10
|
-
import {
|
6
|
+
} from '@livekit/protocol';
|
7
|
+
import { EventEmitter } from 'events';
|
8
|
+
import type TypedEventEmitter from 'typed-emitter';
|
9
|
+
import type { SignalClient } from '../../api/SignalClient';
|
10
|
+
import log, { LoggerNames, StructuredLogger, getLogger } from '../../logger';
|
11
11
|
import { TrackEvent } from '../events';
|
12
12
|
import type { LoggerOptions } from '../types';
|
13
13
|
import { isFireFox, isSafari, isWeb } from '../utils';
|
@@ -1,9 +1,13 @@
|
|
1
|
+
import { Encryption_Type } from '@livekit/protocol';
|
2
|
+
import type {
|
3
|
+
SubscriptionError,
|
4
|
+
TrackInfo,
|
5
|
+
UpdateSubscription,
|
6
|
+
UpdateTrackSettings,
|
7
|
+
} from '@livekit/protocol';
|
1
8
|
import { EventEmitter } from 'events';
|
2
9
|
import type TypedEventEmitter from 'typed-emitter';
|
3
10
|
import log, { LoggerNames, getLogger } from '../../logger';
|
4
|
-
import { Encryption_Type } from '../../proto/livekit_models_pb';
|
5
|
-
import type { SubscriptionError, TrackInfo } from '../../proto/livekit_models_pb';
|
6
|
-
import type { UpdateSubscription, UpdateTrackSettings } from '../../proto/livekit_rtc_pb';
|
7
11
|
import { TrackEvent } from '../events';
|
8
12
|
import type { LoggerOptions } from '../types';
|
9
13
|
import LocalAudioTrack from './LocalAudioTrack';
|
@@ -47,7 +47,7 @@ export function facingModeFromLocalTrack(
|
|
47
47
|
// 1. Try to get facingMode from track settings.
|
48
48
|
if ('facingMode' in trackSettings) {
|
49
49
|
const rawFacingMode = trackSettings.facingMode;
|
50
|
-
log.
|
50
|
+
log.trace('rawFacingMode', { rawFacingMode });
|
51
51
|
if (rawFacingMode && typeof rawFacingMode === 'string' && isFacingModeValue(rawFacingMode)) {
|
52
52
|
result = { facingMode: rawFacingMode, confidence: 'high' };
|
53
53
|
}
|
@@ -55,7 +55,7 @@ export function facingModeFromLocalTrack(
|
|
55
55
|
|
56
56
|
// 2. If we don't have a high confidence we try to get the facing mode from the device label.
|
57
57
|
if (['low', 'medium'].includes(result.confidence)) {
|
58
|
-
log.
|
58
|
+
log.trace(`Try to get facing mode from device label: (${track.label})`);
|
59
59
|
const labelAnalysisResult = facingModeFromDeviceLabel(track.label);
|
60
60
|
if (labelAnalysisResult !== undefined) {
|
61
61
|
result = labelAnalysisResult;
|
@@ -190,6 +190,13 @@ export interface ScreenShareCaptureOptions {
|
|
190
190
|
* local speakers when the tab is captured.
|
191
191
|
*/
|
192
192
|
suppressLocalAudioPlayback?: boolean;
|
193
|
+
|
194
|
+
/**
|
195
|
+
* Experimental option to instruct the browser to offer the current tab as the most prominent capture source
|
196
|
+
* @experimental
|
197
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab
|
198
|
+
*/
|
199
|
+
preferCurrentTab?: boolean;
|
193
200
|
}
|
194
201
|
|
195
202
|
export interface AudioCaptureOptions {
|
package/src/room/track/utils.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { TrackPublishedResponse } from '
|
1
|
+
import { TrackPublishedResponse } from '@livekit/protocol';
|
2
2
|
import { cloneDeep } from '../../utils/cloneDeep';
|
3
3
|
import { isSafari, sleep } from '../utils';
|
4
4
|
import { Track } from './Track';
|
@@ -183,6 +183,7 @@ export function screenCaptureToDisplayMediaStreamOptions(
|
|
183
183
|
selfBrowserSurface: options.selfBrowserSurface,
|
184
184
|
surfaceSwitching: options.surfaceSwitching,
|
185
185
|
systemAudio: options.systemAudio,
|
186
|
+
preferCurrentTab: options.preferCurrentTab,
|
186
187
|
};
|
187
188
|
}
|
188
189
|
|
package/src/room/utils.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { ClientInfo, ClientInfo_SDK } from '
|
1
|
+
import { ClientInfo, ClientInfo_SDK } from '@livekit/protocol';
|
2
2
|
import type { DetectableBrowser } from '../utils/browserParser';
|
3
3
|
import { getBrowser } from '../utils/browserParser';
|
4
4
|
import { protocolVersion, version } from '../version';
|