@ikonai/sdk 1.12.0 → 1.13.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 (40) hide show
  1. package/assets/audio-capture-worker-ubWDRLA3.js +1 -0
  2. package/assets/audio-playback-worker-CLT3Fd56.js +1 -0
  3. package/assets/protocol-worker-CFNK2Kvc.js +3 -0
  4. package/assets/video-capture-worker-Desm980E.js +1 -0
  5. package/assets/video-playback-worker-CsK7Q7OV.js +1 -0
  6. package/assets/viseme-worker-BXdOSahC.js +1 -0
  7. package/client/ikon-client.d.ts +13 -0
  8. package/client/ikon-client.d.ts.map +1 -1
  9. package/{dist-BrkppKKs.js → dist-CNpJsuru.js} +3 -3
  10. package/functions/media-capture-functions.d.ts.map +1 -1
  11. package/{ikon-media-BQjL59S_.js → ikon-media-BNN-Q8p2.js} +28 -8
  12. package/{ikon-media-capture-4aEsbGgC.js → ikon-media-capture-BM64MF85.js} +131 -127
  13. package/index.d.ts +1 -1
  14. package/index.d.ts.map +1 -1
  15. package/index.js +2183 -2912
  16. package/media/ikon-media-capture.d.ts +1 -1
  17. package/media/ikon-media-capture.d.ts.map +1 -1
  18. package/media/ikon-video-capture.d.ts +11 -1
  19. package/media/ikon-video-capture.d.ts.map +1 -1
  20. package/media/ikon-video-playback.d.ts +12 -0
  21. package/media/ikon-video-playback.d.ts.map +1 -1
  22. package/media/index.d.ts +1 -1
  23. package/media/index.d.ts.map +1 -1
  24. package/{media-session-helper-Do-OxyU6.js → media-session-helper-CTZ867xv.js} +2 -2
  25. package/package.json +4 -1
  26. package/{viseme-tracker-CbDKr_6G.js → viseme-tracker-Ctuu8PRU.js} +1 -1
  27. package/webrtc/webrtc-signaling.d.ts +38 -5
  28. package/webrtc/webrtc-signaling.d.ts.map +1 -1
  29. package/webrtc-signaling-C_GA-iWk.js +812 -0
  30. package/worker/video-playback-worker.d.ts +3 -0
  31. package/worker/video-playback-worker.d.ts.map +1 -1
  32. package/assets/audio-capture-worker-CJ5S-nQt.js +0 -1
  33. package/assets/audio-playback-worker-BA5LbdyM.js +0 -1
  34. package/assets/libopus-CnBCihDi.js +0 -1
  35. package/assets/protocol-worker--zkCPur7.js +0 -3
  36. package/assets/src-BKYD07QQ.js +0 -1
  37. package/assets/src-DOUWsCWT.js +0 -1
  38. package/assets/video-capture-worker-DRYxkwR0.js +0 -1
  39. package/assets/video-playback-worker-v179IJ-C.js +0 -1
  40. package/assets/viseme-worker-B6zFPD9n.js +0 -1
@@ -9,7 +9,7 @@ export declare class IkonMediaCapture {
9
9
  readonly audio: IkonAudioCapture;
10
10
  readonly video: IkonVideoCapture;
11
11
  readonly image: IkonImageCapture;
12
- constructor(client: IkonClient, config?: IkonMediaCaptureConfig);
12
+ constructor(client: IkonClient, config?: IkonMediaCaptureConfig, onVideoCapturesChanged?: () => void);
13
13
  dispose(): void;
14
14
  }
15
15
  //# sourceMappingURL=ikon-media-capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ikon-media-capture.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-media-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;gBAErB,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,sBAAsB;IAM/D,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"ikon-media-capture.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-media-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;gBAErB,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,EAAE,MAAM,IAAI;IAMpG,OAAO,IAAI,IAAI;CAIhB"}
@@ -33,12 +33,17 @@ export interface IkonVideoCaptureHandle {
33
33
  }
34
34
  export declare class IkonVideoCapture {
35
35
  private readonly client;
36
+ private readonly onCapturesChanged?;
36
37
  private worker;
37
38
  private protocolPort;
38
39
  private sendPort;
39
40
  private nextTrackId;
40
41
  private captures;
41
- constructor(client: IkonClient);
42
+ /**
43
+ * @param onCapturesChanged Called after a protocol-channel capture starts or stops, so local
44
+ * previews can re-resolve {@link getLocalStreamByStreamId}.
45
+ */
46
+ constructor(client: IkonClient, onCapturesChanged?: (() => void) | undefined);
42
47
  private allocateTrackId;
43
48
  private ensureWorker;
44
49
  private failCapture;
@@ -54,6 +59,11 @@ export declare class IkonVideoCapture {
54
59
  * Returns the MediaStream of an active screen capture, if any.
55
60
  */
56
61
  getActiveScreenStream(): MediaStream | null;
62
+ /**
63
+ * The local `MediaStream` of the active protocol-channel capture whose stream id (its capture id)
64
+ * is `streamId`, or null. WebRTC captures are not tracked here.
65
+ */
66
+ getLocalStreamByStreamId(streamId: string): MediaStream | null;
57
67
  dispose(): void;
58
68
  }
59
69
  //# sourceMappingURL=ikon-video-capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ikon-video-capture.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-video-capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAyC,MAAM,uBAAuB,CAAC;AAE/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAQhF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC7D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAgCD,qBAAa,gBAAgB;IAOf,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAoC;gBAEvB,MAAM,EAAE,UAAU;IAE/C,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAqEpB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;YA0BL,cAAc;YAmCd,iBAAiB;YAmEjB,iBAAiB;IAyDzB,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwPxE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C;;OAEG;IACH,qBAAqB,IAAI,WAAW,GAAG,IAAI;IAS3C,OAAO,IAAI,IAAI;CA0BhB"}
1
+ {"version":3,"file":"ikon-video-capture.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-video-capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAyC,MAAM,uBAAuB,CAAC;AAG/F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAQhF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC7D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAgCD,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAZrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAoC;IAEpD;;;OAGG;gBAEgB,MAAM,EAAE,UAAU,EAClB,iBAAiB,CAAC,GAAE,MAAM,IAAI,aAAA;IAGjD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAqEpB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,WAAW;YA0BL,cAAc;YAmCd,iBAAiB;YAyDjB,iBAAiB;IAqDzB,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA0PxE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C;;OAEG;IACH,qBAAqB,IAAI,WAAW,GAAG,IAAI;IAS3C;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAK9D,OAAO,IAAI,IAAI;CA0BhB"}
@@ -11,6 +11,11 @@ export interface IkonVideoPlaybackConfig {
11
11
  preferOffscreenCanvas?: boolean;
12
12
  };
13
13
  }
14
+ /**
15
+ * What happened to a stream's picture: `firstFrame` when its first frame reached the canvas
16
+ * (again after each attach and each end), `end` when the stream ended.
17
+ */
18
+ export type IkonVideoStreamEvent = 'firstFrame' | 'end';
14
19
  /**
15
20
  * Video playback pipeline for Ikon protocol video streams.
16
21
  *
@@ -27,6 +32,7 @@ export declare class IkonVideoPlayback {
27
32
  private stateUnsubscribe;
28
33
  private worker;
29
34
  private protocolPort;
35
+ private readonly streamListeners;
30
36
  private readonly surfaces;
31
37
  constructor(client: IkonClient, config?: IkonVideoPlaybackConfig);
32
38
  /**
@@ -36,6 +42,11 @@ export declare class IkonVideoPlayback {
36
42
  * so the UI thread only participates in layout and input handling.
37
43
  */
38
44
  attachCanvas(streamId: string, canvas: HTMLCanvasElement): Promise<void>;
45
+ /**
46
+ * Subscribe to the picture events of one stream, typically before attaching its canvas.
47
+ * Returns the unsubscribe function.
48
+ */
49
+ addStreamListener(streamId: string, listener: (event: IkonVideoStreamEvent) => void): () => void;
39
50
  /**
40
51
  * Detach the canvas for the given stream id.
41
52
  */
@@ -51,6 +62,7 @@ export declare class IkonVideoPlayback {
51
62
  private canUseOffscreenCanvas;
52
63
  private ensureWorker;
53
64
  private onWorkerMessage;
65
+ private notifyStreamListeners;
54
66
  private syncAllStreamsToWorker;
55
67
  private syncStreamToWorker;
56
68
  private requestIdrForStream;
@@ -1 +1 @@
1
- {"version":3,"file":"ikon-video-playback.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-video-playback.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6E,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/H,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AAO7E,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC;CACH;AASD;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAK;IAExD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CASrB;gBAEQ,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,uBAAuB;IAQhE;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9E;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0BpC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjD;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,qBAAqB;YAQf,YAAY;IAiD1B,OAAO,CAAC,eAAe;IA6EvB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IA+C1B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;IAwB1B;;;;;;OAMG;IACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAsB1D;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAYtC;;;;OAIG;IACH,2BAA2B,IAAI,IAAI;IAWnC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,uBAAuB;CAoBhC"}
1
+ {"version":3,"file":"ikon-video-playback.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/ikon-video-playback.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6E,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/H,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AAO7E,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,KAAK,CAAC;AASxD;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAK;IAExD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiE;IAEjG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CASrB;gBAEQ,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,uBAAuB;IAQhE;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9E;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,MAAM,IAAI;IAyBhG;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0BpC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjD;;OAEG;IACH,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,qBAAqB;YAQf,YAAY;IAiD1B,OAAO,CAAC,eAAe;IAmFvB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IA+C1B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;IAwB1B;;;;;;OAMG;IACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAsB1D;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAYtC;;;;OAIG;IACH,2BAA2B,IAAI,IAAI;IAWnC,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,uBAAuB;CAoBhC"}
package/media/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { IkonMediaConfig, MediaSessionConfig } from './ikon-media';
3
3
  export { IkonAudioPlayback } from './ikon-audio-playback';
4
4
  export type { IkonAudioPlaybackConfig } from './ikon-audio-playback';
5
5
  export { IkonVideoPlayback } from './ikon-video-playback';
6
- export type { IkonVideoPlaybackConfig } from './ikon-video-playback';
6
+ export type { IkonVideoPlaybackConfig, IkonVideoStreamEvent } from './ikon-video-playback';
7
7
  export { VisemeTracker } from './viseme-tracker';
8
8
  export { isSharedArrayBufferSupported, isAudioWorkletSupported } from './capabilities';
9
9
  export { IkonMediaCapture } from './ikon-media-capture';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7I,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGpJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxG,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7I,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGpJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxG,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -13,10 +13,10 @@ var t = class {
13
13
  return this._silentAudioElement;
14
14
  }
15
15
  ensureSilentPlaybackElement() {
16
- typeof document > "u" || (this._silentAudioElement || (this._silentAudioElement = document.createElement("audio"), this._silentAudioElement.src = e(), this._silentAudioElement.loop = !0, this._silentAudioElement.volume = .01), this._silentAudioElement.paused && this._silentAudioElement.play().catch(() => {}));
16
+ typeof document < "u" && (this._silentAudioElement || (this._silentAudioElement = document.createElement("audio"), this._silentAudioElement.src = e(), this._silentAudioElement.loop = !0, this._silentAudioElement.volume = .01), this._silentAudioElement.paused && this._silentAudioElement.play().catch(() => {}));
17
17
  }
18
18
  setup(e, t) {
19
- if (!(typeof document > "u") && (this.ensureSilentPlaybackElement(), typeof navigator < "u" && "mediaSession" in navigator)) {
19
+ if (typeof document < "u" && (this.ensureSilentPlaybackElement(), typeof navigator < "u" && "mediaSession" in navigator)) {
20
20
  let n = e ?? {};
21
21
  navigator.mediaSession.metadata = new MediaMetadata({
22
22
  title: n.title || "Audio",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikonai/sdk",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -13,5 +13,8 @@
13
13
  "import": "./index.js",
14
14
  "types": "./index.d.ts"
15
15
  }
16
+ },
17
+ "peerDependencies": {
18
+ "@ikonai/sdk-libopus": "*"
16
19
  }
17
20
  }
@@ -2,7 +2,7 @@ import { c as e, n as t } from "./logger-gjegmH6K.js";
2
2
  import { a as n, o as r, r as i } from "./audio-constants-0i9B4zLJ.js";
3
3
  //#region src/worker/viseme-worker.ts?worker
4
4
  function a(e) {
5
- return new Worker(new URL("assets/viseme-worker-B6zFPD9n.js", import.meta.url).href, {
5
+ return new Worker(new URL("assets/viseme-worker-BXdOSahC.js", import.meta.url).href, {
6
6
  type: "module",
7
7
  name: e?.name
8
8
  });
@@ -1,5 +1,26 @@
1
- import { ProtocolMessage, Opcode, WebRTCTrackMap } from '@ikonai/protocol';
1
+ import { ProtocolMessage, Opcode, VideoCodec, WebRTCTrackMap } from '@ikonai/protocol';
2
2
  import { WebRTCConnectionState } from './webrtc-connection';
3
+ export declare const WEBRTC_CAMERA_SENDER_INDEX = 0;
4
+ export declare const WEBRTC_SCREEN_SENDER_INDEX = 1;
5
+ /** What a WebRTC microphone capture is called on the client; the server names it `webrtc_{sessionId}`. */
6
+ export declare const WEBRTC_AUDIO_CAPTURE_ID = "webrtc-audio";
7
+ export type WebRTCVideoCaptureSource = 'camera' | 'screen';
8
+ export interface WebRTCVideoCaptureSettings {
9
+ width?: number;
10
+ height?: number;
11
+ framerate?: number;
12
+ }
13
+ /**
14
+ * Track constraints for a WebRTC video capture: the explicit constraints win, and the width, height
15
+ * and framerate settings fill in only what they leave unset. A screen share takes only the
16
+ * framerate — the shared surface is captured at its native size, as the protocol-channel path does.
17
+ */
18
+ export declare function buildWebRTCVideoCaptureConstraints(source: WebRTCVideoCaptureSource, settings: WebRTCVideoCaptureSettings | undefined, baseConstraints: MediaTrackConstraints | undefined): MediaTrackConstraints | undefined;
19
+ /**
20
+ * The video codec an SDP negotiated: the first media codec (not RTX, RED or FEC) of the first video
21
+ * m-section, in the m-line's payload order. Null when the SDP has no video section or names none.
22
+ */
23
+ export declare function negotiatedVideoCodecFromSdp(sdp: string): VideoCodec | null;
3
24
  export interface WebRTCSignalingConfig {
4
25
  sessionId: number;
5
26
  opcodeGroupsFromServer: Opcode;
@@ -23,6 +44,8 @@ export interface WebRTCSignalingConfig {
23
44
  onAudioTrack?: (trackIndex: number, track: MediaStreamTrack, stream: MediaStream) => void;
24
45
  onVideoTrack?: (trackIndex: number, track: MediaStreamTrack, stream: MediaStream) => void;
25
46
  onTrackMap?: (trackMap: WebRTCTrackMap) => void;
47
+ /** Called after a local video capture starts or stops. */
48
+ onVideoCaptureChanged?: () => void;
26
49
  }
27
50
  export declare class WebRTCSignaling {
28
51
  /**
@@ -38,6 +61,7 @@ export declare class WebRTCSignaling {
38
61
  private audioTrackCount;
39
62
  private videoTrackCount;
40
63
  private iceServersResolve;
64
+ private answerVideoCodec;
41
65
  constructor(config: WebRTCSignalingConfig);
42
66
  get state(): WebRTCConnectionState;
43
67
  get peerConnection(): RTCPeerConnection | null;
@@ -71,8 +95,16 @@ export declare class WebRTCSignaling {
71
95
  */
72
96
  getActiveVideoCaptureStream(): MediaStream | null;
73
97
  /**
74
- * Look up a local video capture MediaStream by its app-level streamId.
75
- * Capture streamId format: `webrtc_video_${sessionId}_${trackIndex}` (see sendVideoStreamBegin).
98
+ * The app-level stream id of the video capture on a sender: `webrtc_video_{sessionId}_{senderIndex}`,
99
+ * the id the server's VideoStreamBegin and the app's video input events carry for it.
100
+ */
101
+ videoCaptureStreamId(senderIndex: number): string;
102
+ /** The sender index a {@link videoCaptureStreamId} names, or null when it is not one of this session's. */
103
+ videoCaptureSenderIndex(streamId: string): number | null;
104
+ /** Whether a stream id names this session's microphone capture, by the client's or the server's name. */
105
+ isAudioCaptureStreamId(streamId: string): boolean;
106
+ /**
107
+ * Look up a local video capture MediaStream by its app-level streamId ({@link videoCaptureStreamId}).
76
108
  * Returns null if no local capture matches.
77
109
  */
78
110
  getLocalVideoCaptureStreamByStreamId(streamId: string): MediaStream | null;
@@ -90,7 +122,9 @@ export declare class WebRTCSignaling {
90
122
  startVideoCapture(constraints?: MediaTrackConstraints, bitrate?: number, senderIndex?: number, correlationId?: string): Promise<MediaStream>;
91
123
  startScreenCapture(constraints?: MediaTrackConstraints, bitrate?: number, senderIndex?: number, correlationId?: string): Promise<MediaStream>;
92
124
  private releaseVideoStream;
93
- stopVideoCapture(senderIndex: number): Promise<void>;
125
+ /** Stops the video capture on one sender. False when that sender had no capture. */
126
+ stopVideoCapture(senderIndex: number): Promise<boolean>;
127
+ private negotiatedVideoCodec;
94
128
  private sendVideoStreamBegin;
95
129
  private sendVideoStreamEnd;
96
130
  /**
@@ -110,7 +144,6 @@ export declare class WebRTCSignaling {
110
144
  private requestIceServers;
111
145
  private handleIceServersResponse;
112
146
  private handleAnswer;
113
- private parseVideoCodecFromSdp;
114
147
  private handleLocalIceCandidate;
115
148
  private handleRemoteIceCandidate;
116
149
  private handleReady;
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-signaling.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/webrtc/webrtc-signaling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webrtc-signaling.d.ts","sourceRoot":"","sources":["../../../../sdk/sdk/src/webrtc/webrtc-signaling.ts"],"names":[],"mappings":"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"}