@livekit/rtc-node 0.8.0 → 0.9.0

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 (57) hide show
  1. package/dist/audio_source.d.ts +16 -1
  2. package/dist/audio_source.d.ts.map +1 -1
  3. package/dist/audio_source.js +49 -3
  4. package/dist/audio_source.js.map +1 -1
  5. package/dist/audio_stream.d.ts +10 -13
  6. package/dist/audio_stream.d.ts.map +1 -1
  7. package/dist/audio_stream.js +34 -8
  8. package/dist/audio_stream.js.map +1 -1
  9. package/dist/ffi_client.d.ts +1 -1
  10. package/dist/ffi_client.d.ts.map +1 -1
  11. package/dist/ffi_client.js.map +1 -1
  12. package/dist/index.d.ts +3 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +3 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/napi/native.d.ts +5 -8
  17. package/dist/participant.d.ts +2 -1
  18. package/dist/participant.d.ts.map +1 -1
  19. package/dist/participant.js +3 -0
  20. package/dist/participant.js.map +1 -1
  21. package/dist/proto/audio_frame_pb.d.ts +32 -2
  22. package/dist/proto/audio_frame_pb.d.ts.map +1 -1
  23. package/dist/proto/audio_frame_pb.js +59 -1
  24. package/dist/proto/audio_frame_pb.js.map +1 -1
  25. package/dist/proto/ffi_pb.d.ts +21 -9
  26. package/dist/proto/ffi_pb.d.ts.map +1 -1
  27. package/dist/proto/ffi_pb.js +11 -9
  28. package/dist/proto/ffi_pb.js.map +1 -1
  29. package/dist/room.d.ts +1 -1
  30. package/dist/room.d.ts.map +1 -1
  31. package/dist/room.js +1 -3
  32. package/dist/room.js.map +1 -1
  33. package/dist/track_publication.d.ts +5 -0
  34. package/dist/track_publication.d.ts.map +1 -1
  35. package/dist/track_publication.js +14 -0
  36. package/dist/track_publication.js.map +1 -1
  37. package/dist/utils.d.ts +7 -0
  38. package/dist/utils.d.ts.map +1 -0
  39. package/dist/utils.js +41 -0
  40. package/dist/utils.js.map +1 -0
  41. package/dist/video_stream.d.ts +10 -10
  42. package/dist/video_stream.d.ts.map +1 -1
  43. package/dist/video_stream.js +35 -11
  44. package/dist/video_stream.js.map +1 -1
  45. package/package.json +7 -7
  46. package/src/audio_source.ts +69 -2
  47. package/src/audio_stream.ts +36 -17
  48. package/src/ffi_client.ts +1 -1
  49. package/src/index.ts +3 -2
  50. package/src/napi/native.d.ts +5 -8
  51. package/src/participant.ts +5 -1
  52. package/src/proto/audio_frame_pb.ts +71 -3
  53. package/src/proto/ffi_pb.ts +31 -17
  54. package/src/room.ts +2 -1
  55. package/src/track_publication.ts +18 -0
  56. package/src/utils.ts +36 -0
  57. package/src/video_stream.ts +37 -13
package/dist/room.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,12 @@ export declare abstract class TrackPublication {
21
21
  get encryptionType(): EncryptionType;
22
22
  }
23
23
  export declare class LocalTrackPublication extends TrackPublication {
24
+ private firstSubscription;
25
+ private firstSubscriptionResolver;
24
26
  constructor(ownedInfo: OwnedTrackPublication);
27
+ waitForSubscription(): Promise<void>;
28
+ /** @internal */
29
+ resolveFirstSubscription(): void;
25
30
  }
26
31
  export declare class RemoteTrackPublication extends TrackPublication {
27
32
  subscribed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"track_publication.d.ts","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,8BAAsB,gBAAgB;IACpC,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,gBAAgB;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEF,SAAS,EAAE,qBAAqB;IAK5C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;CACF;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;gBAC7C,SAAS,EAAE,qBAAqB;CAG7C;AAED,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,UAAU,EAAE,OAAO,CAAS;gBAEhB,SAAS,EAAE,qBAAqB;IAI5C,aAAa,CAAC,UAAU,EAAE,OAAO;CAUlC"}
1
+ {"version":3,"file":"track_publication.d.ts","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,8BAAsB,gBAAgB;IACpC,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,gBAAgB;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;gBAEF,SAAS,EAAE,qBAAqB;IAK5C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;CACF;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,yBAAyB,CAA6B;gBAElD,SAAS,EAAE,qBAAqB;IAOtC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,gBAAgB;IAChB,wBAAwB,IAAI,IAAI;CAMjC;AAED,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,UAAU,EAAE,OAAO,CAAS;gBAEhB,SAAS,EAAE,qBAAqB;IAI5C,aAAa,CAAC,UAAU,EAAE,OAAO;CAUlC"}
@@ -43,6 +43,20 @@ export class TrackPublication {
43
43
  export class LocalTrackPublication extends TrackPublication {
44
44
  constructor(ownedInfo) {
45
45
  super(ownedInfo);
46
+ this.firstSubscriptionResolver = null;
47
+ this.firstSubscription = new Promise((resolve) => {
48
+ this.firstSubscriptionResolver = resolve;
49
+ });
50
+ }
51
+ async waitForSubscription() {
52
+ await this.firstSubscription;
53
+ }
54
+ /** @internal */
55
+ resolveFirstSubscription() {
56
+ if (this.firstSubscriptionResolver) {
57
+ this.firstSubscriptionResolver();
58
+ this.firstSubscriptionResolver = null;
59
+ }
46
60
  }
47
61
  }
48
62
  export class RemoteTrackPublication extends TrackPublication {
@@ -1 +1 @@
1
- {"version":3,"file":"track_publication.js","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS1D,MAAM,OAAgB,gBAAgB;IAQpC,YAAY,SAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IACzD,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAG1D,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;QAHnB,eAAU,GAAY,KAAK,CAAC;IAI5B,CAAC;IAED,aAAa,CAAC,UAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC;YACnC,SAAS,EAAE,UAAU;YACrB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SACzC,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAwB;YAChD,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"track_publication.js","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS1D,MAAM,OAAgB,gBAAgB;IAQpC,YAAY,SAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IAIzD,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;QAHX,8BAAyB,GAAwB,IAAI,CAAC;QAI5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,wBAAwB;QACtB,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAG1D,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;QAHnB,eAAU,GAAY,KAAK,CAAC;IAI5B,CAAC;IAED,aAAa,CAAC,UAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC;YACnC,SAAS,EAAE,UAAU;YACrB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SACzC,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAwB;YAChD,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export declare class Mutex {
2
+ #private;
3
+ constructor(limit?: number);
4
+ isLocked(): boolean;
5
+ lock(): Promise<() => void>;
6
+ }
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,qBAAa,KAAK;;gBAKJ,KAAK,SAAI;IAMrB,QAAQ,IAAI,OAAO;IAIb,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;CAiBlC"}
package/dist/utils.js ADDED
@@ -0,0 +1,41 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Mutex_locking, _Mutex_locks, _Mutex_limit;
13
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
14
+ //
15
+ // SPDX-License-Identifier: Apache-2.0
16
+ export class Mutex {
17
+ constructor(limit = 1) {
18
+ _Mutex_locking.set(this, void 0);
19
+ _Mutex_locks.set(this, void 0);
20
+ _Mutex_limit.set(this, void 0);
21
+ __classPrivateFieldSet(this, _Mutex_locking, Promise.resolve(), "f");
22
+ __classPrivateFieldSet(this, _Mutex_locks, 0, "f");
23
+ __classPrivateFieldSet(this, _Mutex_limit, limit, "f");
24
+ }
25
+ isLocked() {
26
+ return __classPrivateFieldGet(this, _Mutex_locks, "f") >= __classPrivateFieldGet(this, _Mutex_limit, "f");
27
+ }
28
+ async lock() {
29
+ __classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") + 1, "f");
30
+ let unlockNext;
31
+ const willLock = new Promise((resolve) => (unlockNext = () => {
32
+ __classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") - 1, "f");
33
+ resolve();
34
+ }));
35
+ const willUnlock = __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => unlockNext);
36
+ __classPrivateFieldSet(this, _Mutex_locking, __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => willLock), "f");
37
+ return willUnlock;
38
+ }
39
+ }
40
+ _Mutex_locking = new WeakMap(), _Mutex_locks = new WeakMap(), _Mutex_limit = new WeakMap();
41
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,MAAM,OAAO,KAAK;IAKhB,YAAY,KAAK,GAAG,CAAC;QAJrB,iCAAwB;QACxB,+BAAe;QACf,+BAAe;QAGb,uBAAA,IAAI,kBAAY,OAAO,CAAC,OAAO,EAAE,MAAA,CAAC;QAClC,uBAAA,IAAI,gBAAU,CAAC,MAAA,CAAC;QAChB,uBAAA,IAAI,gBAAU,KAAK,MAAA,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,uBAAA,IAAI,oBAAO,IAAI,uBAAA,IAAI,oBAAO,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,6FAAe,CAAC,MAAA,CAAC;QAEjB,IAAI,UAAsB,CAAC;QAE3B,MAAM,QAAQ,GAAG,IAAI,OAAO,CAC1B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,UAAU,GAAG,GAAG,EAAE;YACjB,6FAAe,CAAC,MAAA,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,UAAU,GAAG,uBAAA,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QACxD,uBAAA,IAAI,kBAAY,uBAAA,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAA,CAAC;QACnD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -1,29 +1,29 @@
1
- import type TypedEmitter from 'typed-emitter';
2
1
  import { FfiHandle } from './ffi_client.js';
3
2
  import type { VideoRotation, VideoStreamInfo } from './proto/video_frame_pb.js';
4
3
  import type { Track } from './track.js';
4
+ import { Mutex } from './utils.js';
5
5
  import { VideoFrame } from './video_frame.js';
6
6
  export type VideoFrameEvent = {
7
7
  frame: VideoFrame;
8
8
  timestampUs: bigint;
9
9
  rotation: VideoRotation;
10
10
  };
11
- export type VideoStreamCallbacks = {
12
- frameReceived: (evt: VideoFrameEvent) => void;
13
- };
14
- export declare enum VideoStreamEvent {
15
- FrameReceived = "frameReceived"
16
- }
17
- declare const VideoStream_base: new () => TypedEmitter<VideoStreamCallbacks>;
18
- export declare class VideoStream extends VideoStream_base {
11
+ export declare class VideoStream implements AsyncIterableIterator<VideoFrameEvent> {
19
12
  /** @internal */
20
13
  info: VideoStreamInfo;
21
14
  /** @internal */
22
15
  ffiHandle: FfiHandle;
16
+ /** @internal */
17
+ eventQueue: (VideoFrameEvent | null)[];
18
+ /** @internal */
19
+ queueResolve: ((value: IteratorResult<VideoFrameEvent>) => void) | null;
20
+ /** @internal */
21
+ mutex: Mutex;
23
22
  track: Track;
24
23
  constructor(track: Track);
25
24
  private onEvent;
25
+ next(): Promise<IteratorResult<VideoFrameEvent>>;
26
26
  close(): void;
27
+ [Symbol.asyncIterator](): VideoStream;
27
28
  }
28
- export {};
29
29
  //# sourceMappingURL=video_stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"video_stream.d.ts","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,aAAa,kBAAkB;CAChC;0CAE2D,YAAY,CAAC,oBAAoB,CAAC;AAA9F,qBAAa,WAAY,SAAQ,gBAA8D;IAC7F,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,KAAK,EAAE,KAAK,CAAC;gBAED,KAAK,EAAE,KAAK;IAsBxB,OAAO,CAAC,OAAO,CAoBb;IAEF,KAAK;CAGN"}
1
+ {"version":3,"file":"video_stream.d.ts","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,qBAAa,WAAY,YAAW,qBAAqB,CAAC,eAAe,CAAC;IACxE,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB;IAChB,UAAU,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAM;IAC5C,gBAAgB;IAChB,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC/E,gBAAgB;IAChB,KAAK,QAAe;IAEpB,KAAK,EAAE,KAAK,CAAC;gBAED,KAAK,EAAE,KAAK;IAqBxB,OAAO,CAAC,OAAO,CAyBb;IAEI,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAkBtD,KAAK;IAKL,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW;CAGtC"}
@@ -1,17 +1,15 @@
1
- // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
- //
3
- // SPDX-License-Identifier: Apache-2.0
4
- import EventEmitter from 'events';
5
1
  import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
6
2
  import { NewVideoStreamRequest, VideoStreamType } from './proto/video_frame_pb.js';
3
+ import { Mutex } from './utils.js';
7
4
  import { VideoFrame } from './video_frame.js';
8
- export var VideoStreamEvent;
9
- (function (VideoStreamEvent) {
10
- VideoStreamEvent["FrameReceived"] = "frameReceived";
11
- })(VideoStreamEvent || (VideoStreamEvent = {}));
12
- export class VideoStream extends EventEmitter {
5
+ export class VideoStream {
13
6
  constructor(track) {
14
- super();
7
+ /** @internal */
8
+ this.eventQueue = [];
9
+ /** @internal */
10
+ this.queueResolve = null;
11
+ /** @internal */
12
+ this.mutex = new Mutex();
15
13
  this.onEvent = (ev) => {
16
14
  if (ev.message.case != 'videoStreamEvent' ||
17
15
  ev.message.value.streamHandle != this.ffiHandle.handle) {
@@ -23,7 +21,13 @@ export class VideoStream extends EventEmitter {
23
21
  const rotation = streamEvent.value.rotation;
24
22
  const timestampUs = streamEvent.value.timestampUs;
25
23
  const frame = VideoFrame.fromOwnedInfo(streamEvent.value.buffer);
26
- this.emit(VideoStreamEvent.FrameReceived, { frame, timestampUs, rotation });
24
+ const value = { rotation, timestampUs, frame };
25
+ if (this.queueResolve) {
26
+ this.queueResolve({ done: false, value });
27
+ }
28
+ else {
29
+ this.eventQueue.push(value);
30
+ }
27
31
  break;
28
32
  case 'eos':
29
33
  FfiClient.instance.off(FfiClientEvent.FfiEvent, this.onEvent);
@@ -45,8 +49,28 @@ export class VideoStream extends EventEmitter {
45
49
  this.ffiHandle = new FfiHandle(res.stream.handle.id);
46
50
  FfiClient.instance.on(FfiClientEvent.FfiEvent, this.onEvent);
47
51
  }
52
+ async next() {
53
+ const unlock = await this.mutex.lock();
54
+ if (this.eventQueue.length > 0) {
55
+ unlock();
56
+ const value = this.eventQueue.shift();
57
+ if (value) {
58
+ return { done: false, value };
59
+ }
60
+ else {
61
+ return { done: true, value: undefined };
62
+ }
63
+ }
64
+ const promise = new Promise((resolve) => (this.queueResolve = resolve));
65
+ unlock();
66
+ return promise;
67
+ }
48
68
  close() {
69
+ this.eventQueue.push(null);
49
70
  this.ffiHandle.dispose();
50
71
  }
72
+ [Symbol.asyncIterator]() {
73
+ return this;
74
+ }
51
75
  }
52
76
  //# sourceMappingURL=video_stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video_stream.js","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mDAA+B,CAAA;AACjC,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,OAAO,WAAY,SAAS,YAA6D;IAQ7F,YAAY,KAAY;QACtB,KAAK,EAAE,CAAC;QAqBF,YAAO,GAAG,CAAC,EAAY,EAAE,EAAE;YACjC,IACE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB;gBACrC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EACtD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7C,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,eAAe;oBAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;oBAClD,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5E,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9D,MAAM;YACV,CAAC;QACH,CAAC,CAAC;QAxCA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC;YACpC,IAAI,EAAE,eAAe,CAAC,mBAAmB;YACzC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;SACrC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAyB;YAC7D,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,GAAG;aACX;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAErD,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAwBD,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"video_stream.js","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "LiveKit RTC Node",
4
4
  "license": "Apache-2.0",
5
5
  "author": "LiveKit",
6
- "version": "0.8.0",
6
+ "version": "0.9.0",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
9
9
  "type": "module",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@bufbuild/protobuf": "^1.4.2",
37
- "typed-emitter": "^2.1.0"
37
+ "@livekit/typed-emitter": "^3.0.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@napi-rs/cli": "^2.18.0",
@@ -43,11 +43,11 @@
43
43
  "prettier": "^3.0.3"
44
44
  },
45
45
  "optionalDependencies": {
46
- "@livekit/rtc-node-darwin-arm64": "0.8.0",
47
- "@livekit/rtc-node-darwin-x64": "0.8.0",
48
- "@livekit/rtc-node-linux-arm64-gnu": "0.8.0",
49
- "@livekit/rtc-node-linux-x64-gnu": "0.8.0",
50
- "@livekit/rtc-node-win32-x64-msvc": "0.8.0"
46
+ "@livekit/rtc-node-darwin-arm64": "0.9.0",
47
+ "@livekit/rtc-node-darwin-x64": "0.9.0",
48
+ "@livekit/rtc-node-linux-arm64-gnu": "0.9.0",
49
+ "@livekit/rtc-node-linux-x64-gnu": "0.9.0",
50
+ "@livekit/rtc-node-win32-x64-msvc": "0.9.0"
51
51
  },
52
52
  "engines": {
53
53
  "node": ">= 18"
@@ -8,11 +8,13 @@ import type {
8
8
  AudioSourceInfo,
9
9
  CaptureAudioFrameCallback,
10
10
  CaptureAudioFrameResponse,
11
+ ClearAudioBufferResponse,
11
12
  NewAudioSourceResponse,
12
13
  } from './proto/audio_frame_pb.js';
13
14
  import {
14
15
  AudioSourceType,
15
16
  CaptureAudioFrameRequest,
17
+ ClearAudioBufferRequest,
16
18
  NewAudioSourceRequest,
17
19
  } from './proto/audio_frame_pb.js';
18
20
 
@@ -21,19 +23,33 @@ export class AudioSource {
21
23
  info: AudioSourceInfo;
22
24
  /** @internal */
23
25
  ffiHandle: FfiHandle;
26
+ /** @internal */
27
+ lastCapture: number;
28
+ /** @internal */
29
+ currentQueueSize: number;
30
+ /** @internal */
31
+ release = () => {};
32
+ promise = this.newPromise();
33
+ /** @internal */
34
+ timeout?: ReturnType<typeof setTimeout> = undefined;
24
35
 
25
36
  sampleRate: number;
26
37
  numChannels: number;
38
+ queueSize: number;
27
39
 
28
- constructor(sampleRate: number, numChannels: number, enableQueue?: boolean) {
40
+ constructor(sampleRate: number, numChannels: number, queueSize = 1000) {
29
41
  this.sampleRate = sampleRate;
30
42
  this.numChannels = numChannels;
43
+ this.queueSize = queueSize;
44
+
45
+ this.lastCapture = 0;
46
+ this.currentQueueSize = 0;
31
47
 
32
48
  const req = new NewAudioSourceRequest({
33
49
  type: AudioSourceType.AUDIO_SOURCE_NATIVE,
34
50
  sampleRate: sampleRate,
35
51
  numChannels: numChannels,
36
- enableQueue: enableQueue,
52
+ queueSizeMs: queueSize,
37
53
  });
38
54
 
39
55
  const res = FfiClient.instance.request<NewAudioSourceResponse>({
@@ -47,7 +63,58 @@ export class AudioSource {
47
63
  this.ffiHandle = new FfiHandle(res.source.handle.id);
48
64
  }
49
65
 
66
+ get queuedDuration(): number {
67
+ return Math.max(
68
+ this.currentQueueSize - Number(process.hrtime.bigint() / 1000000n) + this.lastCapture,
69
+ 0,
70
+ );
71
+ }
72
+
73
+ clearQueue() {
74
+ const req = new ClearAudioBufferRequest({
75
+ sourceHandle: this.ffiHandle.handle,
76
+ });
77
+
78
+ FfiClient.instance.request<ClearAudioBufferResponse>({
79
+ message: {
80
+ case: 'clearAudioBuffer',
81
+ value: req,
82
+ },
83
+ });
84
+
85
+ this.release();
86
+ }
87
+
88
+ /** @internal */
89
+ async newPromise() {
90
+ return new Promise<void>((resolve) => {
91
+ this.release = resolve;
92
+ });
93
+ }
94
+
95
+ async waitForPlayout() {
96
+ return this.promise.then(() => {
97
+ this.lastCapture = 0;
98
+ this.currentQueueSize = 0;
99
+ this.promise = this.newPromise();
100
+ });
101
+ }
102
+
50
103
  async captureFrame(frame: AudioFrame) {
104
+ const now = Number(process.hrtime.bigint() / 1000000n);
105
+ const elapsed = this.lastCapture === 0 ? 0 : now - this.lastCapture;
106
+ this.currentQueueSize += (frame.samplesPerChannel / frame.sampleRate - elapsed) * 1000;
107
+
108
+ this.lastCapture = now;
109
+
110
+ if (this.timeout) {
111
+ clearTimeout(this.timeout);
112
+ }
113
+
114
+ // remove 50ms to account for processing time
115
+ // (e.g. using wait_for_playout for very small chunks)
116
+ this.timeout = setTimeout(this.release, this.currentQueueSize - 50);
117
+
51
118
  const req = new CaptureAudioFrameRequest({
52
119
  sourceHandle: this.ffiHandle.handle,
53
120
  buffer: frame.protoInfo(),
@@ -1,39 +1,31 @@
1
1
  // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
- import EventEmitter from 'events';
5
- import type TypedEmitter from 'typed-emitter';
6
4
  import { AudioFrame } from './audio_frame.js';
7
5
  import type { FfiEvent } from './ffi_client.js';
8
6
  import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
9
7
  import type { AudioStreamInfo, NewAudioStreamResponse } from './proto/audio_frame_pb.js';
10
8
  import { AudioStreamType, NewAudioStreamRequest } from './proto/audio_frame_pb.js';
11
9
  import type { Track } from './track.js';
10
+ import { Mutex } from './utils.js';
12
11
 
13
- export type AudioFrameEvent = {
14
- frame: AudioFrame;
15
- };
16
-
17
- export type AudioStreamCallbacks = {
18
- frameReceived: (frame: AudioFrameEvent) => void;
19
- };
20
-
21
- export enum AudioStreamEvent {
22
- FrameReceived = 'frameReceived',
23
- }
24
-
25
- export class AudioStream extends (EventEmitter as new () => TypedEmitter<AudioStreamCallbacks>) {
12
+ export class AudioStream implements AsyncIterableIterator<AudioFrame> {
26
13
  /** @internal */
27
14
  info: AudioStreamInfo;
28
15
  /** @internal */
29
16
  ffiHandle: FfiHandle;
17
+ /** @internal */
18
+ eventQueue: (AudioFrame | null)[] = [];
19
+ /** @internal */
20
+ queueResolve: ((value: IteratorResult<AudioFrame>) => void) | null = null;
21
+ /** @internal */
22
+ mutex = new Mutex();
30
23
 
31
24
  track: Track;
32
25
  sampleRate: number;
33
26
  numChannels: number;
34
27
 
35
28
  constructor(track: Track, sampleRate: number = 48000, numChannels: number = 1) {
36
- super();
37
29
  this.track = track;
38
30
  this.sampleRate = sampleRate;
39
31
  this.numChannels = numChannels;
@@ -70,7 +62,11 @@ export class AudioStream extends (EventEmitter as new () => TypedEmitter<AudioSt
70
62
  switch (streamEvent.case) {
71
63
  case 'frameReceived':
72
64
  const frame = AudioFrame.fromOwnedInfo(streamEvent.value.frame);
73
- this.emit(AudioStreamEvent.FrameReceived, { frame });
65
+ if (this.queueResolve) {
66
+ this.queueResolve({ done: false, value: frame });
67
+ } else {
68
+ this.eventQueue.push(frame);
69
+ }
74
70
  break;
75
71
  case 'eos':
76
72
  FfiClient.instance.off(FfiClientEvent.FfiEvent, this.onEvent);
@@ -78,7 +74,30 @@ export class AudioStream extends (EventEmitter as new () => TypedEmitter<AudioSt
78
74
  }
79
75
  };
80
76
 
77
+ async next(): Promise<IteratorResult<AudioFrame>> {
78
+ const unlock = await this.mutex.lock();
79
+ if (this.eventQueue.length > 0) {
80
+ unlock();
81
+ const value = this.eventQueue.shift();
82
+ if (value) {
83
+ return { done: false, value };
84
+ } else {
85
+ return { done: true, value: undefined };
86
+ }
87
+ }
88
+ const promise = new Promise<IteratorResult<AudioFrame>>(
89
+ (resolve) => (this.queueResolve = resolve),
90
+ );
91
+ unlock();
92
+ return promise;
93
+ }
94
+
81
95
  close() {
96
+ this.eventQueue.push(null);
82
97
  this.ffiHandle.dispose();
83
98
  }
99
+
100
+ [Symbol.asyncIterator](): AudioStream {
101
+ return this;
102
+ }
84
103
  }
package/src/ffi_client.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import type { PartialMessage } from '@bufbuild/protobuf';
5
+ import type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';
5
6
  import EventEmitter from 'events';
6
- import type TypedEmitter from 'typed-emitter';
7
7
  import {
8
8
  FfiHandle,
9
9
  livekitCopyBuffer,
package/src/index.ts CHANGED
@@ -17,8 +17,8 @@ export {
17
17
  } from './track.js';
18
18
  export { VideoFrame } from './video_frame.js';
19
19
  export { AudioFrame } from './audio_frame.js';
20
- export { AudioStream, AudioStreamEvent, AudioFrameEvent } from './audio_stream.js';
21
- export { VideoStream, VideoStreamEvent, VideoFrameEvent } from './video_stream.js';
20
+ export { AudioStream } from './audio_stream.js';
21
+ export { VideoStream, VideoFrameEvent } from './video_stream.js';
22
22
  export { AudioSource } from './audio_source.js';
23
23
  export { VideoSource } from './video_source.js';
24
24
  export {
@@ -40,4 +40,5 @@ export {
40
40
  export { EncryptionType, EncryptionState } from './proto/e2ee_pb.js';
41
41
  export { StreamState, TrackKind, TrackSource } from './proto/track_pb.js';
42
42
  export { VideoBufferType, VideoRotation } from './proto/video_frame_pb.js';
43
+ export { ParticipantKind } from './proto/participant_pb.js';
43
44
  export { dispose } from './ffi_client.js';
@@ -3,14 +3,11 @@
3
3
 
4
4
  /* auto-generated by NAPI-RS */
5
5
 
6
- export declare function livekitInitialize(
7
- callback: (data: Uint8Array) => void,
8
- captureLogs: boolean,
9
- ): void;
10
- export declare function livekitFfiRequest(data: Uint8Array): Uint8Array;
11
- export declare function livekitRetrievePtr(handle: Uint8Array): bigint;
12
- export declare function livekitCopyBuffer(ptr: bigint, len: number): Uint8Array;
13
- export declare function livekitDispose(): Promise<void>;
6
+ export function livekitInitialize(callback: (data: Uint8Array) => void, captureLogs: boolean): void;
7
+ export function livekitFfiRequest(data: Uint8Array): Uint8Array;
8
+ export function livekitRetrievePtr(handle: Uint8Array): bigint;
9
+ export function livekitCopyBuffer(ptr: bigint, len: number): Uint8Array;
10
+ export function livekitDispose(): Promise<void>;
14
11
  export declare class FfiHandle {
15
12
  constructor(handle: bigint);
16
13
  dispose(): void;
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import { FfiClient, FfiHandle } from './ffi_client.js';
5
- import type { OwnedParticipant, ParticipantInfo } from './proto/participant_pb.js';
5
+ import type { OwnedParticipant, ParticipantInfo, ParticipantKind } from './proto/participant_pb.js';
6
6
  import type {
7
7
  PublishDataCallback,
8
8
  PublishDataResponse,
@@ -71,6 +71,10 @@ export abstract class Participant {
71
71
  get attributes(): Record<string, string> {
72
72
  return this.info.attributes;
73
73
  }
74
+
75
+ get kind(): ParticipantKind {
76
+ return this.info.kind;
77
+ }
74
78
  }
75
79
 
76
80
  export type DataPublishOptions = {