livekit-client 2.19.2 → 2.20.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.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +31 -27
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +334 -126
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.fm.worker.js +2 -0
- package/dist/{livekit-client.pt.worker.js.map → livekit-client.fm.worker.js.map} +1 -1
- package/dist/{livekit-client.pt.worker.mjs → livekit-client.fm.worker.mjs} +12 -4
- package/dist/livekit-client.fm.worker.mjs.map +1 -0
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts +2 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +6 -5
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/utils.d.ts +1 -0
- package/dist/src/e2ee/utils.d.ts.map +1 -1
- package/dist/src/e2ee/worker/DataCryptor.d.ts +1 -0
- package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts +9 -8
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/naluUtils.d.ts +1 -0
- package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -1
- package/dist/src/e2ee/worker/sifPayload.d.ts +1 -0
- package/dist/src/e2ee/worker/sifPayload.d.ts.map +1 -1
- package/dist/src/{packetTrailer/PacketTrailerManager.d.ts → frameMetadata/FrameMetadataManager.d.ts} +8 -4
- package/dist/src/{packetTrailer/PacketTrailerManager.d.ts.map → frameMetadata/FrameMetadataManager.d.ts.map} +1 -1
- package/dist/src/{packetTrailer/packetTrailer.d.ts → frameMetadata/frameMetadata.d.ts} +8 -7
- package/dist/src/frameMetadata/frameMetadata.d.ts.map +1 -0
- package/dist/src/{packetTrailer → frameMetadata}/types.d.ts +11 -6
- package/dist/src/frameMetadata/types.d.ts.map +1 -0
- package/dist/src/frameMetadata/utils.d.ts +9 -0
- package/dist/src/{packetTrailer → frameMetadata}/utils.d.ts.map +1 -1
- package/dist/src/frameMetadata/worker/frameMetadata.worker.d.ts +2 -0
- package/dist/src/frameMetadata/worker/frameMetadata.worker.d.ts.map +1 -0
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/options.d.ts +8 -4
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +41 -1
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts +1 -0
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +4 -1
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +3 -2
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/data-track/depacketizer.d.ts.map +1 -1
- package/dist/src/room/data-track/frame.d.ts +1 -0
- package/dist/src/room/data-track/frame.d.ts.map +1 -1
- package/dist/src/room/data-track/outgoing/types.d.ts +1 -0
- package/dist/src/room/data-track/outgoing/types.d.ts.map +1 -1
- package/dist/src/room/data-track/packet/extensions.d.ts +1 -0
- package/dist/src/room/data-track/packet/extensions.d.ts.map +1 -1
- package/dist/src/room/data-track/packet/index.d.ts +1 -0
- package/dist/src/room/data-track/packet/index.d.ts.map +1 -1
- package/dist/src/room/data-track/packet/serializable.d.ts +1 -0
- package/dist/src/room/data-track/packet/serializable.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts +3 -2
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +1 -0
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/token-source/TokenSource.d.ts.map +1 -1
- package/dist/src/room/token-source/types.d.ts +1 -0
- package/dist/src/room/token-source/types.d.ts.map +1 -1
- package/dist/src/room/token-source/utils.d.ts.map +1 -1
- package/dist/src/room/track/FrameMetadataExtractor.d.ts +19 -0
- package/dist/src/room/track/FrameMetadataExtractor.d.ts.map +1 -0
- package/dist/src/room/track/RemoteVideoTrack.d.ts +7 -7
- package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/Track.d.ts +1 -0
- package/dist/src/room/track/Track.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +17 -5
- package/dist/src/room/track/options.d.ts.map +1 -1
- package/dist/src/room/track/record.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +1 -0
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
- package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts.map +1 -0
- package/dist/src/utils/dataPacketBuffer.d.ts +1 -0
- package/dist/src/utils/dataPacketBuffer.d.ts.map +1 -1
- package/dist/ts4.2/e2ee/E2eeManager.d.ts +2 -1
- package/dist/ts4.2/e2ee/types.d.ts +6 -5
- package/dist/ts4.2/e2ee/utils.d.ts +1 -0
- package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +1 -0
- package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +9 -8
- package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +1 -0
- package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +1 -0
- package/dist/ts4.2/{packetTrailer/PacketTrailerManager.d.ts → frameMetadata/FrameMetadataManager.d.ts} +8 -4
- package/dist/ts4.2/{packetTrailer/packetTrailer.d.ts → frameMetadata/frameMetadata.d.ts} +8 -7
- package/dist/ts4.2/{packetTrailer → frameMetadata}/types.d.ts +11 -6
- package/dist/ts4.2/frameMetadata/utils.d.ts +9 -0
- package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -0
- package/dist/ts4.2/index.d.ts +9 -3
- package/dist/ts4.2/options.d.ts +8 -4
- package/dist/ts4.2/room/PCTransport.d.ts +41 -1
- package/dist/ts4.2/room/PCTransportManager.d.ts +1 -0
- package/dist/ts4.2/room/RTCEngine.d.ts +4 -1
- package/dist/ts4.2/room/Room.d.ts +3 -2
- package/dist/ts4.2/room/data-track/frame.d.ts +1 -0
- package/dist/ts4.2/room/data-track/outgoing/types.d.ts +1 -0
- package/dist/ts4.2/room/data-track/packet/extensions.d.ts +1 -0
- package/dist/ts4.2/room/data-track/packet/index.d.ts +1 -0
- package/dist/ts4.2/room/data-track/packet/serializable.d.ts +1 -0
- package/dist/ts4.2/room/participant/LocalParticipant.d.ts +3 -2
- package/dist/ts4.2/room/participant/Participant.d.ts +1 -0
- package/dist/ts4.2/room/token-source/types.d.ts +1 -0
- package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -0
- package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +7 -7
- package/dist/ts4.2/room/track/Track.d.ts +1 -0
- package/dist/ts4.2/room/track/options.d.ts +17 -5
- package/dist/ts4.2/room/utils.d.ts +1 -0
- package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
- package/dist/ts4.2/utils/dataPacketBuffer.d.ts +1 -0
- package/package.json +24 -19
- package/src/api/SignalClient.test.ts +4 -4
- package/src/api/SignalClient.ts +8 -3
- package/src/api/WebSocketStream.test.ts +7 -7
- package/src/e2ee/E2eeManager.ts +16 -12
- package/src/e2ee/types.ts +6 -5
- package/src/e2ee/utils.ts +1 -0
- package/src/e2ee/worker/DataCryptor.ts +1 -0
- package/src/e2ee/worker/FrameCryptor.test.ts +6 -5
- package/src/e2ee/worker/FrameCryptor.ts +28 -23
- package/src/e2ee/worker/ParticipantKeyHandler.test.ts +1 -0
- package/src/e2ee/worker/e2ee.worker.ts +6 -5
- package/src/e2ee/worker/naluUtils.ts +1 -0
- package/src/e2ee/worker/sifPayload.ts +1 -0
- package/src/e2ee/worker/tsconfig.json +4 -1
- package/src/{packetTrailer/PacketTrailerManager.test.ts → frameMetadata/FrameMetadataManager.test.ts} +10 -8
- package/src/{packetTrailer/PacketTrailerManager.ts → frameMetadata/FrameMetadataManager.ts} +21 -15
- package/src/{packetTrailer/packetTrailer.test.ts → frameMetadata/frameMetadata.test.ts} +84 -1
- package/src/{packetTrailer/packetTrailer.ts → frameMetadata/frameMetadata.ts} +17 -9
- package/src/{packetTrailer → frameMetadata}/types.ts +13 -6
- package/src/{packetTrailer → frameMetadata}/utils.test.ts +19 -19
- package/src/{packetTrailer → frameMetadata}/utils.ts +11 -11
- package/src/{packetTrailer/worker/packetTrailer.worker.ts → frameMetadata/worker/frameMetadata.worker.ts} +5 -5
- package/src/{packetTrailer → frameMetadata}/worker/tsconfig.json +4 -1
- package/src/index.ts +13 -2
- package/src/options.ts +9 -4
- package/src/room/PCTransport.test.ts +150 -0
- package/src/room/PCTransport.ts +117 -0
- package/src/room/PCTransportManager.ts +4 -0
- package/src/room/RTCEngine.test.ts +143 -9
- package/src/room/RTCEngine.ts +112 -31
- package/src/room/Room.ts +11 -10
- package/src/room/data-track/depacketizer.ts +1 -0
- package/src/room/data-track/frame.ts +1 -0
- package/src/room/data-track/outgoing/types.ts +1 -0
- package/src/room/data-track/packet/extensions.ts +1 -0
- package/src/room/data-track/packet/index.ts +1 -0
- package/src/room/data-track/packet/serializable.ts +1 -0
- package/src/room/participant/LocalParticipant.test.ts +19 -19
- package/src/room/participant/LocalParticipant.ts +22 -16
- package/src/room/participant/Participant.ts +1 -0
- package/src/room/participant/publishUtils.test.ts +6 -0
- package/src/room/participant/publishUtils.ts +4 -1
- package/src/room/rpc/client/RpcClientManager.ts +1 -1
- package/src/room/rpc/server/RpcServerManager.ts +1 -1
- package/src/room/token-source/TokenSource.ts +9 -23
- package/src/room/token-source/types.ts +1 -0
- package/src/room/token-source/utils.ts +1 -0
- package/src/room/track/{PacketTrailerExtractor.ts → FrameMetadataExtractor.ts} +8 -8
- package/src/room/track/RemoteVideoTrack.ts +7 -11
- package/src/room/track/Track.ts +1 -0
- package/src/room/track/options.ts +19 -5
- package/src/room/track/record.ts +1 -0
- package/src/room/utils.ts +1 -0
- package/src/type-polyfills/{non-shared-typed-arrays.d.ts → non-shared-typed-arrays.ts} +6 -1
- package/src/utils/dataPacketBuffer.ts +2 -0
- package/dist/livekit-client.pt.worker.js +0 -2
- package/dist/livekit-client.pt.worker.mjs.map +0 -1
- package/dist/src/packetTrailer/packetTrailer.d.ts.map +0 -1
- package/dist/src/packetTrailer/types.d.ts.map +0 -1
- package/dist/src/packetTrailer/utils.d.ts +0 -9
- package/dist/src/packetTrailer/worker/packetTrailer.worker.d.ts +0 -2
- package/dist/src/packetTrailer/worker/packetTrailer.worker.d.ts.map +0 -1
- package/dist/src/room/track/PacketTrailerExtractor.d.ts +0 -19
- package/dist/src/room/track/PacketTrailerExtractor.d.ts.map +0 -1
- package/dist/ts4.2/packetTrailer/utils.d.ts +0 -9
- package/dist/ts4.2/packetTrailer/worker/packetTrailer.worker.d.ts +0 -2
- package/dist/ts4.2/room/track/PacketTrailerExtractor.d.ts +0 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-shared-typed-arrays.d.ts","sourceRoot":"","sources":["../../../src/type-polyfills/non-shared-typed-arrays.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataPacketBuffer.d.ts","sourceRoot":"","sources":["../../../src/utils/dataPacketBuffer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,UAAU,CAAK;IAEvB,IAAI,CAAC,IAAI,EAAE,cAAc;IAKzB,GAAG,IAAI,cAAc,GAAG,SAAS;IAQjC,MAAM,IAAI,cAAc,EAAE;IAI1B,aAAa,CAAC,QAAQ,EAAE,MAAM;IAW9B,mBAAmB,CAAC,cAAc,EAAE,MAAM;IAU1C,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|
|
1
|
+
{"version":3,"file":"dataPacketBuffer.d.ts","sourceRoot":"","sources":["../../../src/utils/dataPacketBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAErF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,UAAU,CAAK;IAEvB,IAAI,CAAC,IAAI,EAAE,cAAc;IAKzB,GAAG,IAAI,cAAc,GAAG,SAAS;IAQjC,MAAM,IAAI,cAAc,EAAE;IAI1B,aAAa,CAAC,QAAQ,EAAE,MAAM;IAW9B,mBAAmB,CAAC,cAAc,EAAE,MAAM;IAU1C,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type TypedEventEmitter from 'typed-emitter';
|
|
2
2
|
import type RTCEngine from '../room/RTCEngine';
|
|
3
3
|
import type Room from '../room/Room';
|
|
4
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
4
5
|
import type { E2EEManagerCallbacks } from './events';
|
|
5
6
|
import type { DecryptDataResponseMessage, E2EEManagerOptions, EncryptDataResponseMessage } from './types';
|
|
6
7
|
export interface BaseE2EEManager {
|
|
@@ -43,7 +44,7 @@ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEMan
|
|
|
43
44
|
setSifTrailer(trailer: NonSharedUint8Array): void;
|
|
44
45
|
private onWorkerMessage;
|
|
45
46
|
private onWorkerError;
|
|
46
|
-
private
|
|
47
|
+
private handleFrameMetadata;
|
|
47
48
|
setupEngine(engine: RTCEngine): void;
|
|
48
49
|
private setupEventListeners;
|
|
49
50
|
encryptData(data: NonSharedUint8Array): Promise<EncryptDataResponseMessage['data']>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { FrameMetadataPayload } from '../frameMetadata/frameMetadata';
|
|
2
|
+
import type { FrameMetadataPublishOptions } from '../frameMetadata/types';
|
|
1
3
|
import type { LogLevel } from '../logger';
|
|
2
|
-
import type { PacketTrailerFramePayload } from '../packetTrailer/packetTrailer';
|
|
3
|
-
import type { PacketTrailerPublishOptions } from '../packetTrailer/types';
|
|
4
4
|
import type { VideoCodec } from '../room/track/options';
|
|
5
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
5
6
|
import type { BaseE2EEManager } from './E2eeManager';
|
|
6
7
|
import type { BaseKeyProvider } from './KeyProvider';
|
|
7
8
|
export interface BaseMessage {
|
|
@@ -56,7 +57,7 @@ export interface EncodeMessage extends BaseMessage {
|
|
|
56
57
|
/**
|
|
57
58
|
* Packet trailer metadata to append on published video frames.
|
|
58
59
|
*/
|
|
59
|
-
packetTrailer?:
|
|
60
|
+
packetTrailer?: FrameMetadataPublishOptions;
|
|
60
61
|
};
|
|
61
62
|
}
|
|
62
63
|
export interface RemoveTransformMessage extends BaseMessage {
|
|
@@ -147,7 +148,7 @@ export interface EncryptDataResponseMessage extends BaseMessage {
|
|
|
147
148
|
}
|
|
148
149
|
export interface PTMetadataFromE2EEMessage extends BaseMessage {
|
|
149
150
|
kind: 'packetTrailerMetadata';
|
|
150
|
-
data:
|
|
151
|
+
data: FrameMetadataPayload;
|
|
151
152
|
}
|
|
152
153
|
export type E2EEWorkerMessage = InitMessage | SetKeyMessage | EncodeMessage | ErrorMessage | EnableMessage | RemoveTransformMessage | RTPVideoMapMessage | UpdateCodecMessage | RatchetRequestMessage | RatchetMessage | SifTrailerMessage | InitAck | DecryptDataRequestMessage | DecryptDataResponseMessage | EncryptDataRequestMessage | EncryptDataResponseMessage | PTMetadataFromE2EEMessage;
|
|
153
154
|
export type KeySet = {
|
|
@@ -204,6 +205,6 @@ export type ScriptTransformOptions = {
|
|
|
204
205
|
/**
|
|
205
206
|
* Packet trailer metadata to append on published video frames.
|
|
206
207
|
*/
|
|
207
|
-
packetTrailer?:
|
|
208
|
+
packetTrailer?: FrameMetadataPublishOptions;
|
|
208
209
|
};
|
|
209
210
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DataPacket } from '@livekit/protocol';
|
|
2
2
|
import { EncryptedPacketPayload } from '@livekit/protocol';
|
|
3
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
3
4
|
import type { KeyProviderOptions } from './types';
|
|
4
5
|
export declare function isE2EESupported(): boolean;
|
|
5
6
|
export declare function isScriptTransformSupported(): boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type TypedEventEmitter from 'typed-emitter';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FrameMetadataPublishOptions } from '../../frameMetadata/types';
|
|
3
3
|
import type { VideoCodec } from '../../room/track/options';
|
|
4
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
4
5
|
import type { CryptorCallbacks } from '../events';
|
|
5
6
|
import type { KeyProviderOptions } from '../types';
|
|
6
7
|
import type { ParticipantKeyHandler } from './ParticipantKeyHandler';
|
|
@@ -43,9 +44,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
43
44
|
* When false, we skip the per-frame trailer extraction path entirely
|
|
44
45
|
* on decode to avoid unnecessary work on tracks that don't use it.
|
|
45
46
|
*/
|
|
46
|
-
private
|
|
47
|
-
private
|
|
48
|
-
private
|
|
47
|
+
private hasFrameMetadata;
|
|
48
|
+
private frameMetadataOpts?;
|
|
49
|
+
private frameMetadataFrameId;
|
|
49
50
|
/**
|
|
50
51
|
* Throttling mechanism for decryption errors to prevent memory leaks
|
|
51
52
|
*/
|
|
@@ -92,9 +93,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
92
93
|
* trailer data. When false, {@link decodeFunction} skips the per-frame
|
|
93
94
|
* trailer extraction branch entirely.
|
|
94
95
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec,
|
|
96
|
+
setHasFrameMetadata(hasFrameMetadata: boolean): void;
|
|
97
|
+
setFrameMetadataOpts(frameMetadata?: FrameMetadataPublishOptions): void;
|
|
98
|
+
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): void;
|
|
98
99
|
setSifTrailer(trailer: NonSharedUint8Array): void;
|
|
99
100
|
/**
|
|
100
101
|
* Checks if we should emit an error based on throttling rules to prevent memory leaks
|
|
@@ -130,7 +131,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
130
131
|
* 9) Enqueue the encrypted frame for sending.
|
|
131
132
|
*/
|
|
132
133
|
protected encodeFunction(encodedFrame: RTCEncodedVideoFrame | RTCEncodedAudioFrame, controller: TransformStreamDefaultController): Promise<void>;
|
|
133
|
-
private
|
|
134
|
+
private appendFrameMetadata;
|
|
134
135
|
/**
|
|
135
136
|
* Function that will be injected in a stream and will decrypt the given encoded frames.
|
|
136
137
|
*
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* NALU (Network Abstraction Layer Unit) utilities for H.264 and H.265 video processing
|
|
3
3
|
* Contains functions for parsing and working with NALUs in video frames
|
|
4
4
|
*/
|
|
5
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
5
6
|
/**
|
|
6
7
|
* Detected codec type from NALU analysis
|
|
7
8
|
*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { VideoCodec } from '../..';
|
|
2
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
2
3
|
export declare const VP8KeyFrame8x8: NonSharedUint8Array;
|
|
3
4
|
export declare const H264KeyFrame2x2SPS: NonSharedUint8Array;
|
|
4
5
|
export declare const H264KeyFrame2x2PPS: NonSharedUint8Array;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type Room from '../room/Room';
|
|
2
|
-
export interface
|
|
2
|
+
export interface FrameMetadataOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Dedicated worker for extracting packet trailers off the main thread.
|
|
5
5
|
*
|
|
@@ -24,7 +24,7 @@ export interface PacketTrailerOptions {
|
|
|
24
24
|
*
|
|
25
25
|
* @experimental
|
|
26
26
|
*/
|
|
27
|
-
export declare class
|
|
27
|
+
export declare class FrameMetadataManager {
|
|
28
28
|
private worker?;
|
|
29
29
|
private room?;
|
|
30
30
|
private extractors;
|
|
@@ -35,7 +35,7 @@ export declare class PacketTrailerManager {
|
|
|
35
35
|
* re-transferring already-consumed streams.
|
|
36
36
|
*/
|
|
37
37
|
private workerPipelines;
|
|
38
|
-
constructor(options?:
|
|
38
|
+
constructor(options?: FrameMetadataOptions);
|
|
39
39
|
/** @internal */
|
|
40
40
|
setup(room: Room): void;
|
|
41
41
|
private setupReceiver;
|
|
@@ -46,4 +46,8 @@ export declare class PacketTrailerManager {
|
|
|
46
46
|
private onWorkerMessage;
|
|
47
47
|
private onWorkerError;
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
/** @deprecated Use {@link FrameMetadataManager} instead. */
|
|
50
|
+
export declare const PacketTrailerManager: typeof FrameMetadataManager;
|
|
51
|
+
/** @deprecated Use {@link FrameMetadataOptions} instead. */
|
|
52
|
+
export type PacketTrailerOptions = FrameMetadataOptions;
|
|
53
|
+
//# sourceMappingURL=FrameMetadataManager.d.ts.map
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FrameMetadata, FrameMetadataPublishOptions } from './types';
|
|
2
2
|
export declare const PACKET_TRAILER_MAGIC: Uint8Array<ArrayBuffer>;
|
|
3
3
|
export declare const PACKET_TRAILER_TIMESTAMP_TAG = 1;
|
|
4
4
|
export declare const PACKET_TRAILER_FRAME_ID_TAG = 2;
|
|
5
|
+
export declare const PACKET_TRAILER_USER_DATA_TAG = 3;
|
|
5
6
|
export declare const PACKET_TRAILER_ENVELOPE_SIZE = 5;
|
|
6
7
|
export interface ExtractPacketTrailerResult {
|
|
7
8
|
data: Uint8Array;
|
|
8
|
-
metadata?:
|
|
9
|
+
metadata?: FrameMetadata;
|
|
9
10
|
}
|
|
10
11
|
export declare function appendPacketTrailer(data: Uint8Array, userTimestamp: bigint, frameId: number): Uint8Array;
|
|
11
|
-
export declare function appendPacketTrailerToEncodedFrame(frame: RTCEncodedVideoFrame, options:
|
|
12
|
+
export declare function appendPacketTrailerToEncodedFrame(frame: RTCEncodedVideoFrame, options: FrameMetadataPublishOptions | undefined, frameId: number): boolean;
|
|
12
13
|
export declare function extractPacketTrailer(data: ArrayBuffer | Uint8Array): ExtractPacketTrailerResult;
|
|
13
14
|
export declare function getFrameRtpTimestamp(frame: RTCEncodedVideoFrame | RTCEncodedAudioFrame): number | undefined;
|
|
14
15
|
export declare function getFrameSsrc(frame: RTCEncodedVideoFrame | RTCEncodedAudioFrame): number;
|
|
15
|
-
export interface
|
|
16
|
+
export interface FrameMetadataPayload {
|
|
16
17
|
trackId: string;
|
|
17
18
|
rtpTimestamp: number;
|
|
18
19
|
ssrc: number;
|
|
19
|
-
metadata:
|
|
20
|
+
metadata: FrameMetadata;
|
|
20
21
|
}
|
|
21
22
|
export interface ProcessPacketTrailerResult {
|
|
22
23
|
data?: ArrayBuffer;
|
|
23
|
-
payload?:
|
|
24
|
+
payload?: FrameMetadataPayload;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Extracts a packet trailer from an encoded frame and returns the stripped
|
|
@@ -29,4 +30,4 @@ export interface ProcessPacketTrailerResult {
|
|
|
29
30
|
* a trackId isn't available.
|
|
30
31
|
*/
|
|
31
32
|
export declare function processPacketTrailer(frame: RTCEncodedVideoFrame | RTCEncodedAudioFrame, trackId: string | undefined): ProcessPacketTrailerResult;
|
|
32
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=frameMetadata.d.ts.map
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface
|
|
1
|
+
import type { FrameMetadataPayload } from './frameMetadata';
|
|
2
|
+
export interface FrameMetadata {
|
|
3
3
|
userTimestamp: bigint;
|
|
4
4
|
frameId: number;
|
|
5
|
+
userData?: Uint8Array;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
+
/** @deprecated Use {@link FrameMetadata} instead. */
|
|
8
|
+
export type PacketTrailerMetadata = FrameMetadata;
|
|
9
|
+
export interface FrameMetadataPublishOptions {
|
|
7
10
|
timestamp?: boolean;
|
|
8
11
|
frameId?: boolean;
|
|
9
12
|
}
|
|
13
|
+
/** @deprecated Use {@link FrameMetadataPublishOptions} instead. */
|
|
14
|
+
export type PacketTrailerPublishOptions = FrameMetadataPublishOptions;
|
|
10
15
|
export interface PTBaseMessage {
|
|
11
16
|
kind: string;
|
|
12
17
|
data?: unknown;
|
|
@@ -31,7 +36,7 @@ export interface PTEncodeMessage extends PTBaseMessage {
|
|
|
31
36
|
data: {
|
|
32
37
|
readableStream: ReadableStream;
|
|
33
38
|
writableStream: WritableStream;
|
|
34
|
-
packetTrailer?:
|
|
39
|
+
packetTrailer?: FrameMetadataPublishOptions;
|
|
35
40
|
};
|
|
36
41
|
}
|
|
37
42
|
export type PTScriptTransformOptions = {
|
|
@@ -39,11 +44,11 @@ export type PTScriptTransformOptions = {
|
|
|
39
44
|
trackId: string;
|
|
40
45
|
} | {
|
|
41
46
|
kind: 'encode';
|
|
42
|
-
packetTrailer?:
|
|
47
|
+
packetTrailer?: FrameMetadataPublishOptions;
|
|
43
48
|
};
|
|
44
49
|
export interface PTMetadataMessage extends PTBaseMessage {
|
|
45
50
|
kind: 'metadata';
|
|
46
|
-
data:
|
|
51
|
+
data: FrameMetadataPayload;
|
|
47
52
|
}
|
|
48
53
|
export interface PTUpdateTrackIdMessage extends PTBaseMessage {
|
|
49
54
|
kind: 'updateTrackId';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PacketTrailerFeature } from '@livekit/protocol';
|
|
2
|
+
import type { FrameMetadataOptions } from './FrameMetadataManager';
|
|
3
|
+
import type { FrameMetadataPublishOptions } from './types';
|
|
4
|
+
export declare function shouldUseFrameMetadataScriptTransform(): boolean;
|
|
5
|
+
export declare function isFrameMetadataSupported(options?: FrameMetadataOptions): boolean;
|
|
6
|
+
export declare function hasFrameMetadataPublishOptions(options?: FrameMetadataPublishOptions): boolean;
|
|
7
|
+
export declare function getFrameMetadataFeatures(options?: FrameMetadataPublishOptions): PacketTrailerFeature[];
|
|
8
|
+
export declare function getFrameMetadataPublishOptions(features?: PacketTrailerFeature[]): FrameMetadataPublishOptions | undefined;
|
|
9
|
+
//# sourceMappingURL=utils.d.ts.map
|
package/dist/ts4.2/index.d.ts
CHANGED
|
@@ -33,9 +33,15 @@ import { compareVersions, createAudioAnalyser, getEmptyAudioStreamTrack, getEmpt
|
|
|
33
33
|
import { getBrowser } from './utils/browserParser';
|
|
34
34
|
export type { RpcInvocationData, PerformRpcParams } from './room/rpc';
|
|
35
35
|
export { RpcError } from './room/rpc';
|
|
36
|
-
export type {
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
export type { FrameMetadata, FrameMetadataPublishOptions,
|
|
37
|
+
/** @deprecated Use {@link FrameMetadata} instead. */
|
|
38
|
+
PacketTrailerMetadata,
|
|
39
|
+
/** @deprecated Use {@link FrameMetadataPublishOptions} instead. */
|
|
40
|
+
PacketTrailerPublishOptions, } from './frameMetadata/types';
|
|
41
|
+
export type { FrameMetadataOptions, PacketTrailerOptions } from './frameMetadata/FrameMetadataManager';
|
|
42
|
+
export { FrameMetadataManager,
|
|
43
|
+
/** @deprecated Use {@link FrameMetadataManager} instead. */
|
|
44
|
+
PacketTrailerManager } from './frameMetadata/FrameMetadataManager';
|
|
39
45
|
export * from './connectionHelper/ConnectionCheck';
|
|
40
46
|
export * from './connectionHelper/checks/Checker';
|
|
41
47
|
export * from './e2ee';
|
package/dist/ts4.2/options.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { E2EEOptions } from './e2ee/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { FrameMetadataOptions } from './frameMetadata/FrameMetadataManager';
|
|
3
3
|
import type { ReconnectPolicy } from './room/ReconnectPolicy';
|
|
4
4
|
import type { AudioCaptureOptions, AudioOutputOptions, TrackPublishDefaults, VideoCaptureOptions } from './room/track/options';
|
|
5
5
|
import type { AdaptiveStreamSettings } from './room/track/types';
|
|
@@ -81,10 +81,14 @@ export interface InternalRoomOptions {
|
|
|
81
81
|
loggerName?: string;
|
|
82
82
|
/**
|
|
83
83
|
* @experimental
|
|
84
|
-
* Options for enabling
|
|
85
|
-
*
|
|
84
|
+
* Options for enabling frame metadata on video tracks.
|
|
85
|
+
* Frame metadata carries frame-level information such as user timestamps and frame IDs.
|
|
86
86
|
*/
|
|
87
|
-
|
|
87
|
+
frameMetadata?: FrameMetadataOptions;
|
|
88
|
+
/**
|
|
89
|
+
* @deprecated Use {@link InternalRoomOptions.frameMetadata} instead.
|
|
90
|
+
*/
|
|
91
|
+
packetTrailer?: FrameMetadataOptions;
|
|
88
92
|
/**
|
|
89
93
|
* will attempt to connect via single peer connection mode.
|
|
90
94
|
* falls back to dual peer connection mode if not available.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MediaAttributes } from 'sdp-transform';
|
|
1
|
+
import type { MediaAttributes, MediaDescription } from 'sdp-transform';
|
|
2
2
|
import type TypedEmitter from 'typed-emitter';
|
|
3
3
|
import type { LoggerOptions } from './types';
|
|
4
4
|
/** @internal */
|
|
@@ -54,6 +54,14 @@ export default class PCTransport extends PCTransport_base {
|
|
|
54
54
|
} | undefined>;
|
|
55
55
|
createAndSendOffer(options?: RTCOfferOptions): Promise<void>;
|
|
56
56
|
createAndSetAnswer(): Promise<RTCSessionDescriptionInit>;
|
|
57
|
+
/**
|
|
58
|
+
* Returns the mids of transceivers that carry no outgoing track on this
|
|
59
|
+
* (publisher) connection: the pre-populated placeholders added by
|
|
60
|
+
* `RTCEngine.applyInitialPublisherLayout`, plus any transceiver that was used
|
|
61
|
+
* for a track and reverted on unpublish. Their codec fmtp is conformed to the
|
|
62
|
+
* published tracks so a shared payload type stays consistent across the bundle.
|
|
63
|
+
*/
|
|
64
|
+
private getPlaceholderMids;
|
|
57
65
|
createDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel;
|
|
58
66
|
addTransceiver(mediaStreamTrack: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
59
67
|
addTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
@@ -70,11 +78,43 @@ export default class PCTransport extends PCTransport_base {
|
|
|
70
78
|
getLocalDescription(): RTCSessionDescription | null | undefined;
|
|
71
79
|
getRemoteDescription(): RTCSessionDescription | null;
|
|
72
80
|
getStats(): Promise<RTCStatsReport>;
|
|
81
|
+
getMaxMessageSize(): number | undefined;
|
|
73
82
|
getConnectedAddress(): Promise<string | undefined>;
|
|
74
83
|
close: () => void;
|
|
75
84
|
private setMungedSDP;
|
|
76
85
|
private ensureVideoDDExtensionForSVC;
|
|
77
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Returns the mids of transceivers that carry no outgoing track: the
|
|
89
|
+
* pre-populated placeholders added by `RTCEngine.applyInitialPublisherLayout`,
|
|
90
|
+
* plus any transceiver that was used for a track and reverted on unpublish. The
|
|
91
|
+
* `sender.track` check is the reliable signal — an unpublished section keeps its
|
|
92
|
+
* `a=msid` (and its stale send-derived fmtp), so it can't be told apart from a
|
|
93
|
+
* real send by SDP alone. Transceiver mids are stable across renegotiations, so
|
|
94
|
+
* this works for every offer/answer after the first.
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export declare function placeholderMidsFromTransceivers(transceivers: readonly RTCRtpTransceiver[]): Set<string>;
|
|
98
|
+
/**
|
|
99
|
+
* Within a BUNDLE group a payload type must map to identical codec parameters
|
|
100
|
+
* across every m-line. When the same payload type carries different fmtp between
|
|
101
|
+
* sections — e.g. opus `usedtx=1` on the published microphone but not on the
|
|
102
|
+
* pre-populated recvonly placeholders, or H.265 with different `level-id` between
|
|
103
|
+
* a published video track and a placeholder — libwebrtc flags a "bundled payload
|
|
104
|
+
* type collision".
|
|
105
|
+
*
|
|
106
|
+
* Rewrite the placeholder sections so every shared payload type carries the
|
|
107
|
+
* same fmtp. Real (non-placeholder) sections always win the canonical value, so
|
|
108
|
+
* a published track's encoder parameters are never altered. When no real
|
|
109
|
+
* section declares a payload type — e.g. a placeholder that was reused for a
|
|
110
|
+
* track and then reverted to recvonly keeps its send-derived `level-id` while
|
|
111
|
+
* fresh placeholders use the default — the placeholders still converge on the
|
|
112
|
+
* first value seen, so two placeholders can't disagree either. Only placeholder
|
|
113
|
+
* sections are ever rewritten, and it is codec-agnostic (opus, H.265, ...).
|
|
114
|
+
* `isPlaceholder` identifies the sections to conform.
|
|
115
|
+
* @internal
|
|
116
|
+
*/
|
|
117
|
+
export declare function conformBundledCodecFmtp(media: MediaDescription[], isPlaceholder: (media: MediaDescription) => boolean): void;
|
|
78
118
|
type PCTransportEventCallbacks = {
|
|
79
119
|
negotiationStarted: () => void;
|
|
80
120
|
negotiationComplete: () => void;
|
|
@@ -49,6 +49,7 @@ export declare class PCTransportManager {
|
|
|
49
49
|
addPublisherTransceiver(track: MediaStreamTrack, transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
50
50
|
addPublisherTransceiverOfKind(kind: 'audio' | 'video', transceiverInit: RTCRtpTransceiverInit): RTCRtpTransceiver;
|
|
51
51
|
getMidForReceiver(receiver: RTCRtpReceiver): string | null | undefined;
|
|
52
|
+
getMaxPublisherMessageSize(): number | undefined;
|
|
52
53
|
addPublisherTrack(track: MediaStreamTrack): RTCRtpSender;
|
|
53
54
|
createPublisherDataChannel(label: string, dataChannelDict: RTCDataChannelInit): RTCDataChannel;
|
|
54
55
|
/**
|
|
@@ -5,6 +5,7 @@ import type { SignalOptions } from '../api/SignalClient';
|
|
|
5
5
|
import { SignalClient } from '../api/SignalClient';
|
|
6
6
|
import type { BaseE2EEManager } from '../e2ee/E2eeManager';
|
|
7
7
|
import type { InternalRoomOptions } from '../options';
|
|
8
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
8
9
|
import PCTransport from './PCTransport';
|
|
9
10
|
import { PCTransportManager } from './PCTransportManager';
|
|
10
11
|
import { DataTrackInfo } from './data-track/types';
|
|
@@ -133,10 +134,12 @@ export default class RTCEngine extends RTCEngine_base {
|
|
|
133
134
|
private handleDataMessage;
|
|
134
135
|
private handleDataTrackMessage;
|
|
135
136
|
private handleDataError;
|
|
137
|
+
private handleDataChannelClose;
|
|
136
138
|
private handleBufferedAmountLow;
|
|
137
139
|
createSender(track: LocalTrack, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender>;
|
|
138
140
|
createSimulcastSender(track: LocalVideoTrack, simulcastTrack: SimulcastTrackInfo, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender | undefined>;
|
|
139
|
-
private
|
|
141
|
+
private get frameMetadataWorker();
|
|
142
|
+
private setupFrameMetadataSender;
|
|
140
143
|
private createTransceiverRTCRtpSender;
|
|
141
144
|
private createSimulcastTransceiverSender;
|
|
142
145
|
private createRTCRtpSender;
|
|
@@ -2,6 +2,7 @@ import { DataPacket_Kind, DisconnectReason, Encryption_Type, MetricsBatch, Parti
|
|
|
2
2
|
import 'webrtc-adapter';
|
|
3
3
|
import type TypedEmitter from 'typed-emitter';
|
|
4
4
|
import type { InternalRoomOptions, RoomConnectOptions, RoomOptions } from '../options';
|
|
5
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
5
6
|
import TypedPromise from '../utils/TypedPromise';
|
|
6
7
|
import RTCEngine, { DataChannelKind } from './RTCEngine';
|
|
7
8
|
import type { ByteStreamHandler, TextStreamHandler } from './data-stream/incoming/StreamReader';
|
|
@@ -68,7 +69,7 @@ declare class Room extends Room_base {
|
|
|
68
69
|
private connectFuture?;
|
|
69
70
|
private disconnectLock;
|
|
70
71
|
private e2eeManager;
|
|
71
|
-
private
|
|
72
|
+
private frameMetadataManager;
|
|
72
73
|
private e2eeStateMutex;
|
|
73
74
|
private connectionReconcileInterval?;
|
|
74
75
|
private regionUrlProvider?;
|
|
@@ -135,7 +136,7 @@ declare class Room extends Room_base {
|
|
|
135
136
|
*/
|
|
136
137
|
setE2EEEnabled(enabled: boolean): Promise<void>;
|
|
137
138
|
private setupE2EE;
|
|
138
|
-
private
|
|
139
|
+
private setupFrameMetadata;
|
|
139
140
|
private get logContext();
|
|
140
141
|
/**
|
|
141
142
|
* if the current room has a participant with `recorder: true` in its JWT grant
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
1
2
|
import { DataTrackExtensions } from './packet/extensions';
|
|
2
3
|
/** A pair of payload bytes and packet extensions which can be fed into a {@link DataTrackPacketizer}. */
|
|
3
4
|
export type DataTrackFrame = {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Throws } from '@livekit/throws-transformer/throws';
|
|
2
|
+
import type { NonSharedUint8Array } from '../../../type-polyfills/non-shared-typed-arrays';
|
|
2
3
|
import { DataTrackDeserializeError, DataTrackDeserializeErrorReason } from './errors';
|
|
3
4
|
import Serializable from './serializable';
|
|
4
5
|
export declare enum DataTrackExtensionTag {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Throws } from '@livekit/throws-transformer/throws';
|
|
2
|
+
import type { NonSharedUint8Array } from '../../../type-polyfills/non-shared-typed-arrays';
|
|
2
3
|
import { DataTrackHandle } from '../handle';
|
|
3
4
|
import { DataTrackTimestamp, U16_MAX_SIZE, WrapAroundUnsignedInt } from '../utils';
|
|
4
5
|
import { DataTrackDeserializeError, DataTrackSerializeError, DataTrackSerializeErrorReason } from './errors';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Throws } from '@livekit/throws-transformer/throws';
|
|
2
|
+
import type { NonSharedUint8Array } from '../../../type-polyfills/non-shared-typed-arrays';
|
|
2
3
|
import { DataTrackSerializeError } from './errors';
|
|
3
4
|
/** An abstract class implementing common behavior related to data track binary serialization. */
|
|
4
5
|
export default abstract class Serializable {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Codec, ParticipantInfo } from '@livekit/protocol';
|
|
2
2
|
import type { InternalRoomOptions } from '../../options';
|
|
3
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
3
4
|
import TypedPromise from '../../utils/TypedPromise';
|
|
4
5
|
import type RTCEngine from '../RTCEngine';
|
|
5
6
|
import type OutgoingDataStreamManager from '../data-stream/outgoing/OutgoingDataStreamManager';
|
|
@@ -146,8 +147,8 @@ export default class LocalParticipant extends Participant {
|
|
|
146
147
|
private waitUntilEngineConnected;
|
|
147
148
|
private hasPermissionsToPublish;
|
|
148
149
|
private publish;
|
|
149
|
-
private
|
|
150
|
-
private
|
|
150
|
+
private canPublishFrameMetadata;
|
|
151
|
+
private normalizeRequestedFrameMetadataOptions;
|
|
151
152
|
get isLocal(): boolean;
|
|
152
153
|
/** @internal
|
|
153
154
|
* publish additional codec to existing track
|
|
@@ -2,6 +2,7 @@ import type { SipDTMF } from '@livekit/protocol';
|
|
|
2
2
|
import { DataPacket_Kind, Encryption_Type, ParticipantInfo, ParticipantInfo_Kind as ParticipantKind, ParticipantPermission, ConnectionQuality as ProtoQuality, SubscriptionError } from '@livekit/protocol';
|
|
3
3
|
import type TypedEmitter from 'typed-emitter';
|
|
4
4
|
import type { StructuredLogger } from '../../logger';
|
|
5
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
5
6
|
import type LocalTrackPublication from '../track/LocalTrackPublication';
|
|
6
7
|
import type LocalVideoTrack from '../track/LocalVideoTrack';
|
|
7
8
|
import type RemoteTrack from '../track/RemoteTrack';
|
|
@@ -48,6 +48,7 @@ export type TokenSourceFetchOptions = {
|
|
|
48
48
|
};
|
|
49
49
|
agentName?: string;
|
|
50
50
|
agentMetadata?: string;
|
|
51
|
+
deployment?: string;
|
|
51
52
|
};
|
|
52
53
|
/** A Configurable TokenSource is a token source that takes a
|
|
53
54
|
* {@link TokenSourceFetchOptions} object as input and returns a deterministic
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FrameMetadata } from '../../frameMetadata/types';
|
|
2
|
+
/**
|
|
3
|
+
* Caches frame metadata extracted from received video frames,
|
|
4
|
+
* keyed by RTP timestamp so it can be looked up when the frame is displayed.
|
|
5
|
+
*
|
|
6
|
+
* Metadata is populated either by the frame metadata worker managed by
|
|
7
|
+
* `FrameMetadataManager` (non-E2EE) or by the E2EE FrameCryptor worker
|
|
8
|
+
* after decryption (E2EE).
|
|
9
|
+
*
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
12
|
+
export declare class FrameMetadataExtractor {
|
|
13
|
+
private metadataMap;
|
|
14
|
+
private activeSsrc;
|
|
15
|
+
storeMetadata(rtpTimestamp: number, ssrc: number, metadata: FrameMetadata): void;
|
|
16
|
+
lookupMetadata(rtpTimestamp: number): FrameMetadata | undefined;
|
|
17
|
+
dispose(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FrameMetadataExtractor.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FrameMetadata } from '../../frameMetadata/types';
|
|
2
2
|
import type { VideoReceiverStats } from '../stats';
|
|
3
3
|
import type { LoggerOptions } from '../types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { FrameMetadataExtractor } from './FrameMetadataExtractor';
|
|
5
5
|
import RemoteTrack from './RemoteTrack';
|
|
6
6
|
import { Track } from './Track';
|
|
7
7
|
import type { AdaptiveStreamSettings } from './types';
|
|
@@ -12,7 +12,7 @@ export default class RemoteVideoTrack extends RemoteTrack<Track.Kind.Video> {
|
|
|
12
12
|
private lastVisible?;
|
|
13
13
|
private lastDimensions?;
|
|
14
14
|
/** @internal */
|
|
15
|
-
|
|
15
|
+
frameMetadataExtractor?: FrameMetadataExtractor;
|
|
16
16
|
constructor(mediaTrack: MediaStreamTrack, sid: string, receiver: RTCRtpReceiver, adaptiveStreamSettings?: AdaptiveStreamSettings, loggerOptions?: LoggerOptions);
|
|
17
17
|
get isAdaptiveStream(): boolean;
|
|
18
18
|
/**
|
|
@@ -20,13 +20,13 @@ export default class RemoteVideoTrack extends RemoteTrack<Track.Kind.Video> {
|
|
|
20
20
|
* Use with the `TrackEvent.TimeSyncUpdate` event to correlate displayed frames
|
|
21
21
|
* with their capture-time metadata.
|
|
22
22
|
*
|
|
23
|
-
* Requires the room to be configured with the `
|
|
24
|
-
* and the publishing track to have
|
|
23
|
+
* Requires the room to be configured with the `frameMetadata` worker option
|
|
24
|
+
* and the publishing track to have frame metadata features enabled.
|
|
25
25
|
*
|
|
26
26
|
*/
|
|
27
|
-
lookupFrameMetadata({ rtpTimestamp
|
|
27
|
+
lookupFrameMetadata({ rtpTimestamp }: {
|
|
28
28
|
rtpTimestamp: number;
|
|
29
|
-
}):
|
|
29
|
+
}): FrameMetadata | undefined;
|
|
30
30
|
setStreamState(value: Track.StreamState): void;
|
|
31
31
|
/**
|
|
32
32
|
* Note: When using adaptiveStream, you need to use remoteVideoTrack.attach() to add the track to a HTMLVideoElement, otherwise your video tracks might never start
|
|
@@ -2,6 +2,7 @@ import { AudioTrackFeature, StreamState as ProtoStreamState, TrackSource, TrackT
|
|
|
2
2
|
import type TypedEventEmitter from 'typed-emitter';
|
|
3
3
|
import type { SignalClient } from '../../api/SignalClient';
|
|
4
4
|
import type { StructuredLogger } from '../../logger';
|
|
5
|
+
import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
|
|
5
6
|
import type { LoggerOptions } from '../types';
|
|
6
7
|
import type { TrackProcessor } from './processor/types';
|
|
7
8
|
export declare enum VideoQuality {
|