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.
Files changed (185) hide show
  1. package/dist/livekit-client.e2ee.worker.js +1 -1
  2. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  3. package/dist/livekit-client.e2ee.worker.mjs +31 -27
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +334 -126
  6. package/dist/livekit-client.esm.mjs.map +1 -1
  7. package/dist/livekit-client.fm.worker.js +2 -0
  8. package/dist/{livekit-client.pt.worker.js.map → livekit-client.fm.worker.js.map} +1 -1
  9. package/dist/{livekit-client.pt.worker.mjs → livekit-client.fm.worker.mjs} +12 -4
  10. package/dist/livekit-client.fm.worker.mjs.map +1 -0
  11. package/dist/livekit-client.umd.js +1 -1
  12. package/dist/livekit-client.umd.js.map +1 -1
  13. package/dist/src/api/SignalClient.d.ts.map +1 -1
  14. package/dist/src/e2ee/E2eeManager.d.ts +2 -1
  15. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  16. package/dist/src/e2ee/types.d.ts +6 -5
  17. package/dist/src/e2ee/types.d.ts.map +1 -1
  18. package/dist/src/e2ee/utils.d.ts +1 -0
  19. package/dist/src/e2ee/utils.d.ts.map +1 -1
  20. package/dist/src/e2ee/worker/DataCryptor.d.ts +1 -0
  21. package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -1
  22. package/dist/src/e2ee/worker/FrameCryptor.d.ts +9 -8
  23. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  24. package/dist/src/e2ee/worker/naluUtils.d.ts +1 -0
  25. package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -1
  26. package/dist/src/e2ee/worker/sifPayload.d.ts +1 -0
  27. package/dist/src/e2ee/worker/sifPayload.d.ts.map +1 -1
  28. package/dist/src/{packetTrailer/PacketTrailerManager.d.ts → frameMetadata/FrameMetadataManager.d.ts} +8 -4
  29. package/dist/src/{packetTrailer/PacketTrailerManager.d.ts.map → frameMetadata/FrameMetadataManager.d.ts.map} +1 -1
  30. package/dist/src/{packetTrailer/packetTrailer.d.ts → frameMetadata/frameMetadata.d.ts} +8 -7
  31. package/dist/src/frameMetadata/frameMetadata.d.ts.map +1 -0
  32. package/dist/src/{packetTrailer → frameMetadata}/types.d.ts +11 -6
  33. package/dist/src/frameMetadata/types.d.ts.map +1 -0
  34. package/dist/src/frameMetadata/utils.d.ts +9 -0
  35. package/dist/src/{packetTrailer → frameMetadata}/utils.d.ts.map +1 -1
  36. package/dist/src/frameMetadata/worker/frameMetadata.worker.d.ts +2 -0
  37. package/dist/src/frameMetadata/worker/frameMetadata.worker.d.ts.map +1 -0
  38. package/dist/src/index.d.ts +10 -2
  39. package/dist/src/index.d.ts.map +1 -1
  40. package/dist/src/options.d.ts +8 -4
  41. package/dist/src/options.d.ts.map +1 -1
  42. package/dist/src/room/PCTransport.d.ts +41 -1
  43. package/dist/src/room/PCTransport.d.ts.map +1 -1
  44. package/dist/src/room/PCTransportManager.d.ts +1 -0
  45. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  46. package/dist/src/room/RTCEngine.d.ts +4 -1
  47. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  48. package/dist/src/room/Room.d.ts +3 -2
  49. package/dist/src/room/Room.d.ts.map +1 -1
  50. package/dist/src/room/data-track/depacketizer.d.ts.map +1 -1
  51. package/dist/src/room/data-track/frame.d.ts +1 -0
  52. package/dist/src/room/data-track/frame.d.ts.map +1 -1
  53. package/dist/src/room/data-track/outgoing/types.d.ts +1 -0
  54. package/dist/src/room/data-track/outgoing/types.d.ts.map +1 -1
  55. package/dist/src/room/data-track/packet/extensions.d.ts +1 -0
  56. package/dist/src/room/data-track/packet/extensions.d.ts.map +1 -1
  57. package/dist/src/room/data-track/packet/index.d.ts +1 -0
  58. package/dist/src/room/data-track/packet/index.d.ts.map +1 -1
  59. package/dist/src/room/data-track/packet/serializable.d.ts +1 -0
  60. package/dist/src/room/data-track/packet/serializable.d.ts.map +1 -1
  61. package/dist/src/room/participant/LocalParticipant.d.ts +3 -2
  62. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  63. package/dist/src/room/participant/Participant.d.ts +1 -0
  64. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  65. package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
  66. package/dist/src/room/token-source/TokenSource.d.ts.map +1 -1
  67. package/dist/src/room/token-source/types.d.ts +1 -0
  68. package/dist/src/room/token-source/types.d.ts.map +1 -1
  69. package/dist/src/room/token-source/utils.d.ts.map +1 -1
  70. package/dist/src/room/track/FrameMetadataExtractor.d.ts +19 -0
  71. package/dist/src/room/track/FrameMetadataExtractor.d.ts.map +1 -0
  72. package/dist/src/room/track/RemoteVideoTrack.d.ts +7 -7
  73. package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -1
  74. package/dist/src/room/track/Track.d.ts +1 -0
  75. package/dist/src/room/track/Track.d.ts.map +1 -1
  76. package/dist/src/room/track/options.d.ts +17 -5
  77. package/dist/src/room/track/options.d.ts.map +1 -1
  78. package/dist/src/room/track/record.d.ts.map +1 -1
  79. package/dist/src/room/utils.d.ts +1 -0
  80. package/dist/src/room/utils.d.ts.map +1 -1
  81. package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
  82. package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts.map +1 -0
  83. package/dist/src/utils/dataPacketBuffer.d.ts +1 -0
  84. package/dist/src/utils/dataPacketBuffer.d.ts.map +1 -1
  85. package/dist/ts4.2/e2ee/E2eeManager.d.ts +2 -1
  86. package/dist/ts4.2/e2ee/types.d.ts +6 -5
  87. package/dist/ts4.2/e2ee/utils.d.ts +1 -0
  88. package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +1 -0
  89. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +9 -8
  90. package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +1 -0
  91. package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +1 -0
  92. package/dist/ts4.2/{packetTrailer/PacketTrailerManager.d.ts → frameMetadata/FrameMetadataManager.d.ts} +8 -4
  93. package/dist/ts4.2/{packetTrailer/packetTrailer.d.ts → frameMetadata/frameMetadata.d.ts} +8 -7
  94. package/dist/ts4.2/{packetTrailer → frameMetadata}/types.d.ts +11 -6
  95. package/dist/ts4.2/frameMetadata/utils.d.ts +9 -0
  96. package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -0
  97. package/dist/ts4.2/index.d.ts +9 -3
  98. package/dist/ts4.2/options.d.ts +8 -4
  99. package/dist/ts4.2/room/PCTransport.d.ts +41 -1
  100. package/dist/ts4.2/room/PCTransportManager.d.ts +1 -0
  101. package/dist/ts4.2/room/RTCEngine.d.ts +4 -1
  102. package/dist/ts4.2/room/Room.d.ts +3 -2
  103. package/dist/ts4.2/room/data-track/frame.d.ts +1 -0
  104. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +1 -0
  105. package/dist/ts4.2/room/data-track/packet/extensions.d.ts +1 -0
  106. package/dist/ts4.2/room/data-track/packet/index.d.ts +1 -0
  107. package/dist/ts4.2/room/data-track/packet/serializable.d.ts +1 -0
  108. package/dist/ts4.2/room/participant/LocalParticipant.d.ts +3 -2
  109. package/dist/ts4.2/room/participant/Participant.d.ts +1 -0
  110. package/dist/ts4.2/room/token-source/types.d.ts +1 -0
  111. package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -0
  112. package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +7 -7
  113. package/dist/ts4.2/room/track/Track.d.ts +1 -0
  114. package/dist/ts4.2/room/track/options.d.ts +17 -5
  115. package/dist/ts4.2/room/utils.d.ts +1 -0
  116. package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
  117. package/dist/ts4.2/utils/dataPacketBuffer.d.ts +1 -0
  118. package/package.json +24 -19
  119. package/src/api/SignalClient.test.ts +4 -4
  120. package/src/api/SignalClient.ts +8 -3
  121. package/src/api/WebSocketStream.test.ts +7 -7
  122. package/src/e2ee/E2eeManager.ts +16 -12
  123. package/src/e2ee/types.ts +6 -5
  124. package/src/e2ee/utils.ts +1 -0
  125. package/src/e2ee/worker/DataCryptor.ts +1 -0
  126. package/src/e2ee/worker/FrameCryptor.test.ts +6 -5
  127. package/src/e2ee/worker/FrameCryptor.ts +28 -23
  128. package/src/e2ee/worker/ParticipantKeyHandler.test.ts +1 -0
  129. package/src/e2ee/worker/e2ee.worker.ts +6 -5
  130. package/src/e2ee/worker/naluUtils.ts +1 -0
  131. package/src/e2ee/worker/sifPayload.ts +1 -0
  132. package/src/e2ee/worker/tsconfig.json +4 -1
  133. package/src/{packetTrailer/PacketTrailerManager.test.ts → frameMetadata/FrameMetadataManager.test.ts} +10 -8
  134. package/src/{packetTrailer/PacketTrailerManager.ts → frameMetadata/FrameMetadataManager.ts} +21 -15
  135. package/src/{packetTrailer/packetTrailer.test.ts → frameMetadata/frameMetadata.test.ts} +84 -1
  136. package/src/{packetTrailer/packetTrailer.ts → frameMetadata/frameMetadata.ts} +17 -9
  137. package/src/{packetTrailer → frameMetadata}/types.ts +13 -6
  138. package/src/{packetTrailer → frameMetadata}/utils.test.ts +19 -19
  139. package/src/{packetTrailer → frameMetadata}/utils.ts +11 -11
  140. package/src/{packetTrailer/worker/packetTrailer.worker.ts → frameMetadata/worker/frameMetadata.worker.ts} +5 -5
  141. package/src/{packetTrailer → frameMetadata}/worker/tsconfig.json +4 -1
  142. package/src/index.ts +13 -2
  143. package/src/options.ts +9 -4
  144. package/src/room/PCTransport.test.ts +150 -0
  145. package/src/room/PCTransport.ts +117 -0
  146. package/src/room/PCTransportManager.ts +4 -0
  147. package/src/room/RTCEngine.test.ts +143 -9
  148. package/src/room/RTCEngine.ts +112 -31
  149. package/src/room/Room.ts +11 -10
  150. package/src/room/data-track/depacketizer.ts +1 -0
  151. package/src/room/data-track/frame.ts +1 -0
  152. package/src/room/data-track/outgoing/types.ts +1 -0
  153. package/src/room/data-track/packet/extensions.ts +1 -0
  154. package/src/room/data-track/packet/index.ts +1 -0
  155. package/src/room/data-track/packet/serializable.ts +1 -0
  156. package/src/room/participant/LocalParticipant.test.ts +19 -19
  157. package/src/room/participant/LocalParticipant.ts +22 -16
  158. package/src/room/participant/Participant.ts +1 -0
  159. package/src/room/participant/publishUtils.test.ts +6 -0
  160. package/src/room/participant/publishUtils.ts +4 -1
  161. package/src/room/rpc/client/RpcClientManager.ts +1 -1
  162. package/src/room/rpc/server/RpcServerManager.ts +1 -1
  163. package/src/room/token-source/TokenSource.ts +9 -23
  164. package/src/room/token-source/types.ts +1 -0
  165. package/src/room/token-source/utils.ts +1 -0
  166. package/src/room/track/{PacketTrailerExtractor.ts → FrameMetadataExtractor.ts} +8 -8
  167. package/src/room/track/RemoteVideoTrack.ts +7 -11
  168. package/src/room/track/Track.ts +1 -0
  169. package/src/room/track/options.ts +19 -5
  170. package/src/room/track/record.ts +1 -0
  171. package/src/room/utils.ts +1 -0
  172. package/src/type-polyfills/{non-shared-typed-arrays.d.ts → non-shared-typed-arrays.ts} +6 -1
  173. package/src/utils/dataPacketBuffer.ts +2 -0
  174. package/dist/livekit-client.pt.worker.js +0 -2
  175. package/dist/livekit-client.pt.worker.mjs.map +0 -1
  176. package/dist/src/packetTrailer/packetTrailer.d.ts.map +0 -1
  177. package/dist/src/packetTrailer/types.d.ts.map +0 -1
  178. package/dist/src/packetTrailer/utils.d.ts +0 -9
  179. package/dist/src/packetTrailer/worker/packetTrailer.worker.d.ts +0 -2
  180. package/dist/src/packetTrailer/worker/packetTrailer.worker.d.ts.map +0 -1
  181. package/dist/src/room/track/PacketTrailerExtractor.d.ts +0 -19
  182. package/dist/src/room/track/PacketTrailerExtractor.d.ts.map +0 -1
  183. package/dist/ts4.2/packetTrailer/utils.d.ts +0 -9
  184. package/dist/ts4.2/packetTrailer/worker/packetTrailer.worker.d.ts +0 -2
  185. package/dist/ts4.2/room/track/PacketTrailerExtractor.d.ts +0 -19
@@ -0,0 +1,2 @@
1
+ export type NonSharedUint8Array = ReturnType<typeof Uint8Array.from>;
2
+ //# sourceMappingURL=non-shared-typed-arrays.d.ts.map
@@ -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,3 +1,4 @@
1
+ import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
1
2
  export interface DataPacketItem {
2
3
  data: NonSharedUint8Array;
3
4
  sequence: number;
@@ -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 handlePacketTrailerMetadata;
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?: PacketTrailerPublishOptions;
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: PacketTrailerFramePayload;
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?: PacketTrailerPublishOptions;
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,3 +1,4 @@
1
+ import type { NonSharedUint8Array } from '../../type-polyfills/non-shared-typed-arrays';
1
2
  import type { DecodeRatchetOptions, KeySet } from '../types';
2
3
  import type { ParticipantKeyHandler } from './ParticipantKeyHandler';
3
4
  export declare class DataCryptor {
@@ -1,6 +1,7 @@
1
1
  import type TypedEventEmitter from 'typed-emitter';
2
- import type { PacketTrailerPublishOptions } from '../../packetTrailer/types';
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 hasPacketTrailer;
47
- private packetTrailer?;
48
- private packetTrailerFrameId;
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
- setHasPacketTrailer(hasPacketTrailer: boolean): void;
96
- setPacketTrailer(packetTrailer?: PacketTrailerPublishOptions): void;
97
- setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec, packetTrailer?: PacketTrailerPublishOptions): void;
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 appendPacketTrailer;
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 PacketTrailerOptions {
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 PacketTrailerManager {
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?: PacketTrailerOptions);
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
- //# sourceMappingURL=PacketTrailerManager.d.ts.map
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 { PacketTrailerMetadata, PacketTrailerPublishOptions } from './types';
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?: PacketTrailerMetadata;
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: PacketTrailerPublishOptions | undefined, frameId: number): boolean;
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 PacketTrailerFramePayload {
16
+ export interface FrameMetadataPayload {
16
17
  trackId: string;
17
18
  rtpTimestamp: number;
18
19
  ssrc: number;
19
- metadata: PacketTrailerMetadata;
20
+ metadata: FrameMetadata;
20
21
  }
21
22
  export interface ProcessPacketTrailerResult {
22
23
  data?: ArrayBuffer;
23
- payload?: PacketTrailerFramePayload;
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=packetTrailer.d.ts.map
33
+ //# sourceMappingURL=frameMetadata.d.ts.map
@@ -1,12 +1,17 @@
1
- import type { PacketTrailerFramePayload } from './packetTrailer';
2
- export interface PacketTrailerMetadata {
1
+ import type { FrameMetadataPayload } from './frameMetadata';
2
+ export interface FrameMetadata {
3
3
  userTimestamp: bigint;
4
4
  frameId: number;
5
+ userData?: Uint8Array;
5
6
  }
6
- export interface PacketTrailerPublishOptions {
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?: PacketTrailerPublishOptions;
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?: PacketTrailerPublishOptions;
47
+ packetTrailer?: FrameMetadataPublishOptions;
43
48
  };
44
49
  export interface PTMetadataMessage extends PTBaseMessage {
45
50
  kind: 'metadata';
46
- data: PacketTrailerFramePayload;
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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=frameMetadata.worker.d.ts.map
@@ -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 { PacketTrailerMetadata, PacketTrailerPublishOptions } from './packetTrailer/types';
37
- export type { PacketTrailerOptions } from './packetTrailer/PacketTrailerManager';
38
- export { PacketTrailerManager } from './packetTrailer/PacketTrailerManager';
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';
@@ -1,5 +1,5 @@
1
1
  import type { E2EEOptions } from './e2ee/types';
2
- import type { PacketTrailerOptions } from './packetTrailer/PacketTrailerManager';
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 packet trailers on video tracks.
85
- * Packet trailers carry frame-level metadata such as user timestamps and frame IDs.
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
- packetTrailer?: PacketTrailerOptions;
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 setupPacketTrailerSender;
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 packetTrailerManager;
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 setupPacketTrailer;
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,3 +1,4 @@
1
+ import type { NonSharedUint8Array } from '../../../type-polyfills/non-shared-typed-arrays';
1
2
  import type LocalDataTrack from '../LocalDataTrack';
2
3
  import type { DataTrackHandle } from '../handle';
3
4
  import type { DataTrackInfo, DataTrackSid } from '../types';
@@ -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 canPublishPacketTrailer;
150
- private normalizeRequestedPacketTrailerOptions;
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 { PacketTrailerMetadata } from '../../packetTrailer/types';
1
+ import type { FrameMetadata } from '../../frameMetadata/types';
2
2
  import type { VideoReceiverStats } from '../stats';
3
3
  import type { LoggerOptions } from '../types';
4
- import type { PacketTrailerExtractor } from './PacketTrailerExtractor';
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
- packetTrailerExtractor?: PacketTrailerExtractor;
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 `packetTrailer` worker option
24
- * and the publishing track to have packet trailer features enabled.
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
- }): PacketTrailerMetadata | undefined;
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 {