livekit-client 2.6.3 → 2.7.1
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 +869 -890
- 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/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/track/create.d.ts +0 -7
- package/dist/src/room/track/create.d.ts.map +1 -1
- package/dist/src/room/track/utils.d.ts +10 -0
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/ts4.2/src/index.d.ts +2 -1
- package/dist/ts4.2/src/room/track/create.d.ts +0 -7
- package/dist/ts4.2/src/room/track/utils.d.ts +10 -0
- package/package.json +2 -2
- package/src/index.ts +3 -0
- package/src/room/participant/LocalParticipant.ts +16 -8
- package/src/room/track/RemoteVideoTrack.ts +27 -12
- package/src/room/track/create.ts +1 -20
- package/src/room/track/utils.ts +36 -8
- package/src/type-polyfills/document-pip.d.ts +12 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Mutex } from '@livekit/mutex';
|
|
|
2
2
|
import { DataPacket_Kind, DisconnectReason, SubscriptionError } from '@livekit/protocol';
|
|
3
3
|
import { LogLevel, LoggerNames, getLogger, setLogExtension, setLogLevel } from './logger';
|
|
4
4
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
|
5
|
+
import type { ReconnectContext, ReconnectPolicy } from './room/ReconnectPolicy';
|
|
5
6
|
import Room, { ConnectionState } from './room/Room';
|
|
6
7
|
import LocalParticipant from './room/participant/LocalParticipant';
|
|
7
8
|
import Participant, { ConnectionQuality, ParticipantKind } from './room/participant/Participant';
|
|
@@ -39,5 +40,5 @@ export * from './room/track/types';
|
|
|
39
40
|
export type { DataPublishOptions, SimulationScenario, TranscriptionSegment, ChatMessage, } from './room/types';
|
|
40
41
|
export * from './version';
|
|
41
42
|
export { ConnectionQuality, ConnectionState, CriticalTimers, DataPacket_Kind, DefaultReconnectPolicy, DisconnectReason, LocalAudioTrack, LocalParticipant, LocalTrack, LocalTrackPublication, LocalVideoTrack, LogLevel, LoggerNames, Participant, RemoteAudioTrack, RemoteParticipant, ParticipantKind, RemoteTrack, RemoteTrackPublication, RemoteVideoTrack, Room, SubscriptionError, TrackPublication, compareVersions, createAudioAnalyser, getBrowser, getEmptyAudioStreamTrack, getEmptyVideoStreamTrack, getLogger, isBrowserSupported, setLogExtension, setLogLevel, supportsAV1, supportsAdaptiveStream, supportsDynacast, supportsVP9, Mutex, };
|
|
42
|
-
export type { AudioAnalyserOptions, ElementInfo, LiveKitReactNativeInfo, ParticipantTrackPermission, AudioReceiverStats, AudioSenderStats, VideoReceiverStats, VideoSenderStats, };
|
|
43
|
+
export type { AudioAnalyserOptions, ElementInfo, LiveKitReactNativeInfo, ParticipantTrackPermission, AudioReceiverStats, AudioSenderStats, VideoReceiverStats, VideoSenderStats, ReconnectContext, ReconnectPolicy, };
|
|
43
44
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAIL,eAAe,EACf,qBAAqB,EAatB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAU1C,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EAEvB,MAAM,QAAQ,CAAC;AAEhB,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,qBAAqB,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import LocalAudioTrack from './LocalAudioTrack';
|
|
2
2
|
import type LocalTrack from './LocalTrack';
|
|
3
3
|
import LocalVideoTrack from './LocalVideoTrack';
|
|
4
|
-
import { Track } from './Track';
|
|
5
4
|
import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
|
|
6
|
-
import type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from './processor/types';
|
|
7
|
-
/** @internal */
|
|
8
|
-
export declare function extractProcessorsFromOptions(options: CreateLocalTracksOptions): {
|
|
9
|
-
audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
10
|
-
videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
11
|
-
};
|
|
12
5
|
/**
|
|
13
6
|
* Creates a local video and audio track at the same time. When acquiring both
|
|
14
7
|
* audio and video tracks together, it'll display a single permission prompt to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/room/track/create.ts"],"names":[],"mappings":"AAKA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,eAAe,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/room/track/create.ts"],"names":[],"mappings":"AAKA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,WAAW,CAAC;AASnB;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CA6D5B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,wBAAsB,qBAAqB,CACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CA4B5B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrackPublishedResponse } from '@livekit/protocol';
|
|
2
|
+
import type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from '../..';
|
|
2
3
|
import { Track } from './Track';
|
|
3
4
|
import type { TrackPublication } from './TrackPublication';
|
|
4
5
|
import { type AudioCaptureOptions, type CreateLocalTracksOptions, type ScreenShareCaptureOptions, type VideoCaptureOptions, type VideoCodec } from './options';
|
|
@@ -31,4 +32,13 @@ export declare function getTrackPublicationInfo<T extends TrackPublication>(trac
|
|
|
31
32
|
export declare function getLogContextFromTrack(track: Track | TrackPublication): Record<string, unknown>;
|
|
32
33
|
export declare function supportsSynchronizationSources(): boolean;
|
|
33
34
|
export declare function diffAttributes(oldValues: Record<string, string> | undefined, newValues: Record<string, string> | undefined): Record<string, string>;
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare function extractProcessorsFromOptions(options: CreateLocalTracksOptions): {
|
|
37
|
+
audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
38
|
+
videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
39
|
+
optionsWithoutProcessor: {
|
|
40
|
+
audio?: boolean | AudioCaptureOptions;
|
|
41
|
+
video?: boolean | VideoCaptureOptions;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
34
44
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/room/track/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/room/track/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,wBAAwB,EAClC,aAAa,CAAC,EAAE,mBAAmB,EACnC,aAAa,CAAC,EAAE,mBAAmB,GAClC,wBAAwB,CA4B1B;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,sBAAsB,CAqC/F;AACD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,SAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,wEAQjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,eAAe,GAAG,SAAS,CAQ9E;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,yBAAyB,GACjC,yBAAyB,CAgC3B;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GACV,UAAU,CAC1D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,EAChE,MAAM,EAAE,CAAC,EAAE,GACV,sBAAsB,EAAE,CAa1B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0B/F;AAED,wBAAgB,8BAA8B,IAAI,OAAO,CAExD;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,0BAkB9C;AAED,gBAAgB;AAChB,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,wBAAwB;;;;;;;EAe7E"}
|
|
@@ -2,6 +2,7 @@ import { Mutex } from '@livekit/mutex';
|
|
|
2
2
|
import { DataPacket_Kind, DisconnectReason, SubscriptionError } from '@livekit/protocol';
|
|
3
3
|
import { LogLevel, LoggerNames, getLogger, setLogExtension, setLogLevel } from './logger';
|
|
4
4
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
|
5
|
+
import type { ReconnectContext, ReconnectPolicy } from './room/ReconnectPolicy';
|
|
5
6
|
import Room, { ConnectionState } from './room/Room';
|
|
6
7
|
import LocalParticipant from './room/participant/LocalParticipant';
|
|
7
8
|
import Participant, { ConnectionQuality, ParticipantKind } from './room/participant/Participant';
|
|
@@ -40,5 +41,5 @@ export * from './room/track/types';
|
|
|
40
41
|
export type { DataPublishOptions, SimulationScenario, TranscriptionSegment, ChatMessage, } from './room/types';
|
|
41
42
|
export * from './version';
|
|
42
43
|
export { ConnectionQuality, ConnectionState, CriticalTimers, DataPacket_Kind, DefaultReconnectPolicy, DisconnectReason, LocalAudioTrack, LocalParticipant, LocalTrack, LocalTrackPublication, LocalVideoTrack, LogLevel, LoggerNames, Participant, RemoteAudioTrack, RemoteParticipant, ParticipantKind, RemoteTrack, RemoteTrackPublication, RemoteVideoTrack, Room, SubscriptionError, TrackPublication, compareVersions, createAudioAnalyser, getBrowser, getEmptyAudioStreamTrack, getEmptyVideoStreamTrack, getLogger, isBrowserSupported, setLogExtension, setLogLevel, supportsAV1, supportsAdaptiveStream, supportsDynacast, supportsVP9, Mutex, };
|
|
43
|
-
export type { AudioAnalyserOptions, ElementInfo, LiveKitReactNativeInfo, ParticipantTrackPermission, AudioReceiverStats, AudioSenderStats, VideoReceiverStats, VideoSenderStats, };
|
|
44
|
+
export type { AudioAnalyserOptions, ElementInfo, LiveKitReactNativeInfo, ParticipantTrackPermission, AudioReceiverStats, AudioSenderStats, VideoReceiverStats, VideoSenderStats, ReconnectContext, ReconnectPolicy, };
|
|
44
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import LocalAudioTrack from './LocalAudioTrack';
|
|
2
2
|
import type LocalTrack from './LocalTrack';
|
|
3
3
|
import LocalVideoTrack from './LocalVideoTrack';
|
|
4
|
-
import { Track } from './Track';
|
|
5
4
|
import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions } from './options';
|
|
6
|
-
import type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from './processor/types';
|
|
7
|
-
/** @internal */
|
|
8
|
-
export declare function extractProcessorsFromOptions(options: CreateLocalTracksOptions): {
|
|
9
|
-
audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
10
|
-
videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
11
|
-
};
|
|
12
5
|
/**
|
|
13
6
|
* Creates a local video and audio track at the same time. When acquiring both
|
|
14
7
|
* audio and video tracks together, it'll display a single permission prompt to
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrackPublishedResponse } from '@livekit/protocol';
|
|
2
|
+
import type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from '../..';
|
|
2
3
|
import { Track } from './Track';
|
|
3
4
|
import type { TrackPublication } from './TrackPublication';
|
|
4
5
|
import type { AudioCaptureOptions, CreateLocalTracksOptions, ScreenShareCaptureOptions, VideoCaptureOptions, VideoCodec } from './options';
|
|
@@ -31,4 +32,13 @@ export declare function getTrackPublicationInfo<T extends TrackPublication>(trac
|
|
|
31
32
|
export declare function getLogContextFromTrack(track: Track | TrackPublication): Record<string, unknown>;
|
|
32
33
|
export declare function supportsSynchronizationSources(): boolean;
|
|
33
34
|
export declare function diffAttributes(oldValues: Record<string, string> | undefined, newValues: Record<string, string> | undefined): Record<string, string>;
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare function extractProcessorsFromOptions(options: CreateLocalTracksOptions): {
|
|
37
|
+
audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
38
|
+
videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
39
|
+
optionsWithoutProcessor: {
|
|
40
|
+
audio?: boolean | AudioCaptureOptions;
|
|
41
|
+
video?: boolean | VideoCaptureOptions;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
34
44
|
//# sourceMappingURL=utils.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livekit-client",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.1",
|
|
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",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"license": "Apache-2.0",
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@livekit/mutex": "1.0.0",
|
|
40
|
-
"@livekit/protocol": "1.
|
|
40
|
+
"@livekit/protocol": "1.29.3",
|
|
41
41
|
"events": "^3.3.0",
|
|
42
42
|
"loglevel": "^1.8.0",
|
|
43
43
|
"sdp-transform": "^2.14.1",
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Mutex } from '@livekit/mutex';
|
|
|
2
2
|
import { DataPacket_Kind, DisconnectReason, SubscriptionError } from '@livekit/protocol';
|
|
3
3
|
import { LogLevel, LoggerNames, getLogger, setLogExtension, setLogLevel } from './logger';
|
|
4
4
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
|
5
|
+
import type { ReconnectContext, ReconnectPolicy } from './room/ReconnectPolicy';
|
|
5
6
|
import Room, { ConnectionState } from './room/Room';
|
|
6
7
|
import LocalParticipant from './room/participant/LocalParticipant';
|
|
7
8
|
import Participant, { ConnectionQuality, ParticipantKind } from './room/participant/Participant';
|
|
@@ -108,4 +109,6 @@ export type {
|
|
|
108
109
|
AudioSenderStats,
|
|
109
110
|
VideoReceiverStats,
|
|
110
111
|
VideoSenderStats,
|
|
112
|
+
ReconnectContext,
|
|
113
|
+
ReconnectPolicy,
|
|
111
114
|
};
|
|
@@ -44,7 +44,6 @@ import LocalTrack from '../track/LocalTrack';
|
|
|
44
44
|
import LocalTrackPublication from '../track/LocalTrackPublication';
|
|
45
45
|
import LocalVideoTrack, { videoLayersFromEncodings } from '../track/LocalVideoTrack';
|
|
46
46
|
import { Track } from '../track/Track';
|
|
47
|
-
import { extractProcessorsFromOptions } from '../track/create';
|
|
48
47
|
import type {
|
|
49
48
|
AudioCaptureOptions,
|
|
50
49
|
BackupVideoCodec,
|
|
@@ -56,6 +55,7 @@ import type {
|
|
|
56
55
|
import { ScreenSharePresets, VideoPresets, isBackupCodec } from '../track/options';
|
|
57
56
|
import {
|
|
58
57
|
constraintsForOptions,
|
|
58
|
+
extractProcessorsFromOptions,
|
|
59
59
|
getLogContextFromTrack,
|
|
60
60
|
mergeDefaultOptions,
|
|
61
61
|
mimeTypeToVideoCodecString,
|
|
@@ -563,10 +563,11 @@ export default class LocalParticipant extends Participant {
|
|
|
563
563
|
*/
|
|
564
564
|
async createTracks(options?: CreateLocalTracksOptions): Promise<LocalTrack[]> {
|
|
565
565
|
options ??= {};
|
|
566
|
-
const { audioProcessor, videoProcessor } =
|
|
566
|
+
const { audioProcessor, videoProcessor, optionsWithoutProcessor } =
|
|
567
|
+
extractProcessorsFromOptions(options);
|
|
567
568
|
|
|
568
569
|
const mergedOptions = mergeDefaultOptions(
|
|
569
|
-
|
|
570
|
+
optionsWithoutProcessor,
|
|
570
571
|
this.roomOptions?.audioCaptureDefaults,
|
|
571
572
|
this.roomOptions?.videoCaptureDefaults,
|
|
572
573
|
);
|
|
@@ -2016,11 +2017,18 @@ export default class LocalParticipant extends Participant {
|
|
|
2016
2017
|
}
|
|
2017
2018
|
|
|
2018
2019
|
private async waitForPendingPublicationOfSource(source: Track.Source) {
|
|
2019
|
-
const
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2020
|
+
const waitForPendingTimeout = 10_000;
|
|
2021
|
+
const startTime = Date.now();
|
|
2022
|
+
|
|
2023
|
+
while (Date.now() < startTime + waitForPendingTimeout) {
|
|
2024
|
+
const publishPromiseEntry = Array.from(this.pendingPublishPromises.entries()).find(
|
|
2025
|
+
([pendingTrack]) => pendingTrack.source === source,
|
|
2026
|
+
);
|
|
2027
|
+
if (publishPromiseEntry) {
|
|
2028
|
+
return publishPromiseEntry[1];
|
|
2029
|
+
}
|
|
2030
|
+
sleep(20);
|
|
2024
2031
|
}
|
|
2032
|
+
throw new Error('waiting for pending publication promise timed out');
|
|
2025
2033
|
}
|
|
2026
2034
|
}
|
|
@@ -331,7 +331,7 @@ class HTMLElementInfo implements ElementInfo {
|
|
|
331
331
|
constructor(element: HTMLMediaElement, visible?: boolean) {
|
|
332
332
|
this.element = element;
|
|
333
333
|
this.isIntersecting = visible ?? isElementInViewport(element);
|
|
334
|
-
this.isPiP = isWeb() &&
|
|
334
|
+
this.isPiP = isWeb() && isElementInPiP(element);
|
|
335
335
|
this.visibilityChangedAt = 0;
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -346,7 +346,7 @@ class HTMLElementInfo implements ElementInfo {
|
|
|
346
346
|
observe() {
|
|
347
347
|
// make sure we update the current visible state once we start to observe
|
|
348
348
|
this.isIntersecting = isElementInViewport(this.element);
|
|
349
|
-
this.isPiP =
|
|
349
|
+
this.isPiP = isElementInPiP(this.element);
|
|
350
350
|
|
|
351
351
|
(this.element as ObservableMediaElement).handleResize = () => {
|
|
352
352
|
this.handleResize?.();
|
|
@@ -357,24 +357,28 @@ class HTMLElementInfo implements ElementInfo {
|
|
|
357
357
|
getResizeObserver().observe(this.element);
|
|
358
358
|
(this.element as HTMLVideoElement).addEventListener('enterpictureinpicture', this.onEnterPiP);
|
|
359
359
|
(this.element as HTMLVideoElement).addEventListener('leavepictureinpicture', this.onLeavePiP);
|
|
360
|
+
window.documentPictureInPicture?.addEventListener('enter', this.onEnterPiP);
|
|
361
|
+
window.documentPictureInPicture?.window?.addEventListener('pagehide', this.onLeavePiP);
|
|
360
362
|
}
|
|
361
363
|
|
|
362
364
|
private onVisibilityChanged = (entry: IntersectionObserverEntry) => {
|
|
363
365
|
const { target, isIntersecting } = entry;
|
|
364
366
|
if (target === this.element) {
|
|
365
367
|
this.isIntersecting = isIntersecting;
|
|
368
|
+
this.isPiP = isElementInPiP(this.element);
|
|
366
369
|
this.visibilityChangedAt = Date.now();
|
|
367
370
|
this.handleVisibilityChanged?.();
|
|
368
371
|
}
|
|
369
372
|
};
|
|
370
373
|
|
|
371
374
|
private onEnterPiP = () => {
|
|
372
|
-
this.
|
|
375
|
+
window.documentPictureInPicture?.window?.addEventListener('pagehide', this.onLeavePiP);
|
|
376
|
+
this.isPiP = isElementInPiP(this.element);
|
|
373
377
|
this.handleVisibilityChanged?.();
|
|
374
378
|
};
|
|
375
379
|
|
|
376
380
|
private onLeavePiP = () => {
|
|
377
|
-
this.isPiP =
|
|
381
|
+
this.isPiP = isElementInPiP(this.element);
|
|
378
382
|
this.handleVisibilityChanged?.();
|
|
379
383
|
};
|
|
380
384
|
|
|
@@ -389,17 +393,29 @@ class HTMLElementInfo implements ElementInfo {
|
|
|
389
393
|
'leavepictureinpicture',
|
|
390
394
|
this.onLeavePiP,
|
|
391
395
|
);
|
|
396
|
+
window.documentPictureInPicture?.removeEventListener('enter', this.onEnterPiP);
|
|
397
|
+
window.documentPictureInPicture?.window?.removeEventListener('pagehide', this.onLeavePiP);
|
|
392
398
|
}
|
|
393
399
|
}
|
|
394
400
|
|
|
395
|
-
|
|
396
|
-
|
|
401
|
+
function isElementInPiP(el: HTMLElement) {
|
|
402
|
+
// Simple video PiP
|
|
403
|
+
if (document.pictureInPictureElement === el) return true;
|
|
404
|
+
// Document PiP
|
|
405
|
+
if (window.documentPictureInPicture?.window)
|
|
406
|
+
return isElementInViewport(el, window.documentPictureInPicture?.window);
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// does not account for occlusion by other elements or opacity property
|
|
411
|
+
function isElementInViewport(el: HTMLElement, win?: Window) {
|
|
412
|
+
const viewportWindow = win || window;
|
|
397
413
|
let top = el.offsetTop;
|
|
398
414
|
let left = el.offsetLeft;
|
|
399
415
|
const width = el.offsetWidth;
|
|
400
416
|
const height = el.offsetHeight;
|
|
401
417
|
const { hidden } = el;
|
|
402
|
-
const {
|
|
418
|
+
const { display } = getComputedStyle(el);
|
|
403
419
|
|
|
404
420
|
while (el.offsetParent) {
|
|
405
421
|
el = el.offsetParent as HTMLElement;
|
|
@@ -408,12 +424,11 @@ function isElementInViewport(el: HTMLElement) {
|
|
|
408
424
|
}
|
|
409
425
|
|
|
410
426
|
return (
|
|
411
|
-
top <
|
|
412
|
-
left <
|
|
413
|
-
top + height >
|
|
414
|
-
left + width >
|
|
427
|
+
top < viewportWindow.pageYOffset + viewportWindow.innerHeight &&
|
|
428
|
+
left < viewportWindow.pageXOffset + viewportWindow.innerWidth &&
|
|
429
|
+
top + height > viewportWindow.pageYOffset &&
|
|
430
|
+
left + width > viewportWindow.pageXOffset &&
|
|
415
431
|
!hidden &&
|
|
416
|
-
(opacity !== '' ? parseFloat(opacity) > 0 : true) &&
|
|
417
432
|
display !== 'none'
|
|
418
433
|
);
|
|
419
434
|
}
|
package/src/room/track/create.ts
CHANGED
|
@@ -14,32 +14,13 @@ import type {
|
|
|
14
14
|
VideoCaptureOptions,
|
|
15
15
|
} from './options';
|
|
16
16
|
import { ScreenSharePresets } from './options';
|
|
17
|
-
import type {
|
|
18
|
-
AudioProcessorOptions,
|
|
19
|
-
TrackProcessor,
|
|
20
|
-
VideoProcessorOptions,
|
|
21
|
-
} from './processor/types';
|
|
22
17
|
import {
|
|
23
18
|
constraintsForOptions,
|
|
19
|
+
extractProcessorsFromOptions,
|
|
24
20
|
mergeDefaultOptions,
|
|
25
21
|
screenCaptureToDisplayMediaStreamOptions,
|
|
26
22
|
} from './utils';
|
|
27
23
|
|
|
28
|
-
/** @internal */
|
|
29
|
-
export function extractProcessorsFromOptions(options: CreateLocalTracksOptions) {
|
|
30
|
-
let audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
31
|
-
let videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
32
|
-
|
|
33
|
-
if (typeof options.audio === 'object' && options.audio.processor) {
|
|
34
|
-
audioProcessor = options.audio.processor;
|
|
35
|
-
}
|
|
36
|
-
if (typeof options.video === 'object' && options.video.processor) {
|
|
37
|
-
videoProcessor = options.video.processor;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return { audioProcessor, videoProcessor };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
24
|
/**
|
|
44
25
|
* Creates a local video and audio track at the same time. When acquiring both
|
|
45
26
|
* audio and video tracks together, it'll display a single permission prompt to
|
package/src/room/track/utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrackPublishedResponse } from '@livekit/protocol';
|
|
2
|
+
import type { AudioProcessorOptions, TrackProcessor, VideoProcessorOptions } from '../..';
|
|
2
3
|
import { cloneDeep } from '../../utils/cloneDeep';
|
|
3
4
|
import { isSafari, sleep } from '../utils';
|
|
4
5
|
import { Track } from './Track';
|
|
@@ -17,24 +18,33 @@ export function mergeDefaultOptions(
|
|
|
17
18
|
audioDefaults?: AudioCaptureOptions,
|
|
18
19
|
videoDefaults?: VideoCaptureOptions,
|
|
19
20
|
): CreateLocalTracksOptions {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const { optionsWithoutProcessor, audioProcessor, videoProcessor } = extractProcessorsFromOptions(
|
|
22
|
+
options ?? {},
|
|
23
|
+
);
|
|
24
|
+
const clonedOptions: CreateLocalTracksOptions = cloneDeep(optionsWithoutProcessor) ?? {};
|
|
25
|
+
if (clonedOptions.audio === true) clonedOptions.audio = {};
|
|
26
|
+
if (clonedOptions.video === true) clonedOptions.video = {};
|
|
23
27
|
|
|
24
28
|
// use defaults
|
|
25
|
-
if (
|
|
29
|
+
if (clonedOptions.audio) {
|
|
26
30
|
mergeObjectWithoutOverwriting(
|
|
27
|
-
|
|
31
|
+
clonedOptions.audio as Record<string, unknown>,
|
|
28
32
|
audioDefaults as Record<string, unknown>,
|
|
29
33
|
);
|
|
34
|
+
if (audioProcessor) {
|
|
35
|
+
clonedOptions.audio.processor = audioProcessor;
|
|
36
|
+
}
|
|
30
37
|
}
|
|
31
|
-
if (
|
|
38
|
+
if (clonedOptions.video) {
|
|
32
39
|
mergeObjectWithoutOverwriting(
|
|
33
|
-
|
|
40
|
+
clonedOptions.video as Record<string, unknown>,
|
|
34
41
|
videoDefaults as Record<string, unknown>,
|
|
35
42
|
);
|
|
43
|
+
if (videoProcessor) {
|
|
44
|
+
clonedOptions.video.processor = videoProcessor;
|
|
45
|
+
}
|
|
36
46
|
}
|
|
37
|
-
return
|
|
47
|
+
return clonedOptions;
|
|
38
48
|
}
|
|
39
49
|
|
|
40
50
|
function mergeObjectWithoutOverwriting(
|
|
@@ -260,3 +270,21 @@ export function diffAttributes(
|
|
|
260
270
|
|
|
261
271
|
return diff;
|
|
262
272
|
}
|
|
273
|
+
|
|
274
|
+
/** @internal */
|
|
275
|
+
export function extractProcessorsFromOptions(options: CreateLocalTracksOptions) {
|
|
276
|
+
const newOptions = { ...options };
|
|
277
|
+
let audioProcessor: TrackProcessor<Track.Kind.Audio, AudioProcessorOptions> | undefined;
|
|
278
|
+
let videoProcessor: TrackProcessor<Track.Kind.Video, VideoProcessorOptions> | undefined;
|
|
279
|
+
|
|
280
|
+
if (typeof newOptions.audio === 'object' && newOptions.audio.processor) {
|
|
281
|
+
audioProcessor = newOptions.audio.processor;
|
|
282
|
+
newOptions.audio.processor = undefined;
|
|
283
|
+
}
|
|
284
|
+
if (typeof newOptions.video === 'object' && newOptions.video.processor) {
|
|
285
|
+
videoProcessor = newOptions.video.processor;
|
|
286
|
+
newOptions.video.processor = undefined;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return { audioProcessor, videoProcessor, optionsWithoutProcessor: newOptions };
|
|
290
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface Window {
|
|
2
|
+
/**
|
|
3
|
+
* Currently only available in Chromium based browsers:
|
|
4
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/DocumentPictureInPicture
|
|
5
|
+
*/
|
|
6
|
+
documentPictureInPicture?: DocumentPictureInPicture;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface DocumentPictureInPicture extends EventTarget {
|
|
10
|
+
window?: Window;
|
|
11
|
+
requestWindow(options?: { width: number; height: number }): Promise<Window>;
|
|
12
|
+
}
|