livekit-client 2.22.1 → 2.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +177 -39
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +85 -60
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts +7 -0
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/constants.d.ts +5 -0
- package/dist/src/e2ee/constants.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +9 -2
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts +42 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts +12 -0
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/data-stream/incoming/StreamReader.d.ts +17 -17
- package/dist/src/room/data-stream/incoming/StreamReader.d.ts.map +1 -1
- package/dist/ts4.2/e2ee/E2eeManager.d.ts +7 -0
- package/dist/ts4.2/e2ee/constants.d.ts +5 -0
- package/dist/ts4.2/e2ee/types.d.ts +9 -2
- package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +42 -1
- package/dist/ts4.2/room/PCTransportManager.d.ts +12 -0
- package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +17 -17
- package/package.json +1 -1
- package/src/api/SignalClient.ts +2 -1
- package/src/e2ee/E2eeManager.ts +38 -14
- package/src/e2ee/constants.ts +6 -0
- package/src/e2ee/subscriberBlackScreen.test.ts +544 -0
- package/src/e2ee/types.ts +9 -2
- package/src/e2ee/worker/FrameCryptor.race.test.ts +9 -26
- package/src/e2ee/worker/FrameCryptor.test.ts +0 -1
- package/src/e2ee/worker/FrameCryptor.ts +185 -52
- package/src/e2ee/worker/e2ee.worker.ts +38 -6
- package/src/room/PCTransportManager.test.ts +35 -0
- package/src/room/PCTransportManager.ts +12 -4
- package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +171 -0
- package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +17 -18
- package/src/room/data-stream/incoming/StreamReader.ts +20 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,qBAAqB,EACrB,uBAAuB,EAEvB,0BAA0B,EAI1B,YAAY,EACZ,YAAY,EAEZ,wBAAwB,EAExB,eAAe,EAGf,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAElB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EAEvB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EAGxB,0BAA0B,EAK1B,kBAAkB,EAClB,mBAAmB,EAEnB,UAAU,EAIX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQjD,OAAO,EAA4B,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAS9E,UAAU,WAAY,SAAQ,aAAa;IACzC,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAmCD,oBAAY,qBAAqB;IAC/B,UAAU,IAAA;IACV,SAAS,IAAA;IACT,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,YAAY,IAAA;CACb;AA6BD,gBAAgB;AAChB,qBAAa,YAAY;IACvB,YAAY,EAAE,UAAU,CAAC;IAEzB,cAAc,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3C,OAAO,EAAE,OAAO,CAAC;IAEjB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAK;IAEhB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,QAAQ,CAAC,EAAE,CACT,EAAE,EAAE,yBAAyB,EAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KACpC,IAAI,CAAC;IAEV,OAAO,CAAC,EAAE,CACR,EAAE,EAAE,yBAAyB,EAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KACpC,IAAI,CAAC;IAGV,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAEpE,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAE3D,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAE9D,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAElC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAEjD,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEpC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAEhE,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE1D,yBAAyB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAEtE,8BAA8B,CAAC,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAEhF,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAE7D,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAElE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAExC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAExD,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAE/C,0BAA0B,CAAC,EAAE,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAE7E,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAEvE,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAE3E,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAE3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAEzC,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B,EAAE,CAAC,EAAE,eAAe,CAAC;IAErB,IAAI,YAAY,0BAEf;IAED,IAAI,cAAc,YAKjB;IAED,8FAA8F;IAC9F,OAAO,KAAK,cAAc,GAEzB;IAED,yEAAyE;IACzE,OAAO,KAAK,SAAS,GAEpB;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;OAIG;YACW,mBAAmB;IAKjC,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,OAAO,CAAC,CAAgB;IAEhC,OAAO,CAAC,WAAW,CAA4C;IAE/D,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,oBAAoB,CAAqB;IAEjD,OAAO,CAAC,YAAY,CAA6C;IAEjE,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,GAAG,CAAO;IAElB,OAAO,CAAC,eAAe,CAAC,CAAmC;IAE3D,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,YAAY,CAAgE;IAEpF,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,GAAE,OAAe,EAAE,aAAa,GAAE,aAAkB;IAqBvE,OAAO,KAAK,UAAU,GAErB;IAEK,IAAI,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,EACnB,WAAW,CAAC,EAAE,WAAW,EACzB,SAAS,GAAE,OAAe,EAC1B,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAAC,YAAY,CAAC;IAwBlB,SAAS,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YAwC3B,OAAO;IA+Of,gBAAgB,CACpB,YAAY,EAAE,2BAA2B,CAAC,MAAM,GAAG,WAAW,CAAC,EAC/D,YAAY,CAAC,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,13 @@ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEMan
|
|
|
59
59
|
private postEnable;
|
|
60
60
|
private postRTPMap;
|
|
61
61
|
private postSifTrailer;
|
|
62
|
+
/**
|
|
63
|
+
* Derive the participant's encryption state from one of its publications.
|
|
64
|
+
* Publications without trackInfo are skipped rather than thrown on: throwing
|
|
65
|
+
* inside the forEach above would leave every remaining participant without an
|
|
66
|
+
* encryption state, and a cryptor with unknown state can no longer decrypt.
|
|
67
|
+
*/
|
|
68
|
+
private setParticipantCryptorEnabledForPublication;
|
|
62
69
|
private setupE2EEReceiver;
|
|
63
70
|
private setupE2EESender;
|
|
64
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAInD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,11 @@ export declare const UNENCRYPTED_BYTES: {
|
|
|
9
9
|
};
|
|
10
10
|
export declare const IV_LENGTH = 12;
|
|
11
11
|
export declare const E2EE_FLAG = "lk_e2ee";
|
|
12
|
+
/**
|
|
13
|
+
* trackId a receiver's/sender's encoded stream pipeline was last set up for.
|
|
14
|
+
* Needed to recover the right cryptor when a transceiver gets reused.
|
|
15
|
+
*/
|
|
16
|
+
export declare const E2EE_TRACK_ID = "lk_e2ee_track_id";
|
|
12
17
|
export declare const SALT = "LKFrameEncryptionKey";
|
|
13
18
|
export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
|
|
14
19
|
export declare const MAX_SIF_COUNT = 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,kBAO1B,CAAC;AAEX,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAEhD,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,kBAO1B,CAAC;AAEX,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
|
package/dist/src/e2ee/types.d.ts
CHANGED
|
@@ -47,7 +47,6 @@ export interface EncodeMessage extends BaseMessage {
|
|
|
47
47
|
writableStream: WritableStream;
|
|
48
48
|
trackId: string;
|
|
49
49
|
codec?: VideoCodec;
|
|
50
|
-
isReuse: boolean;
|
|
51
50
|
/**
|
|
52
51
|
* Whether the published track advertises packet trailer features.
|
|
53
52
|
* When false, the cryptor skips the per-frame trailer extraction path
|
|
@@ -72,7 +71,15 @@ export interface UpdateCodecMessage extends BaseMessage {
|
|
|
72
71
|
data: {
|
|
73
72
|
participantIdentity: string;
|
|
74
73
|
trackId: string;
|
|
75
|
-
|
|
74
|
+
/** undefined for audio tracks */
|
|
75
|
+
codec?: VideoCodec;
|
|
76
|
+
/**
|
|
77
|
+
* trackId this receiver's pipeline was previously set up for, set when a
|
|
78
|
+
* transceiver gets reused for a new track. Lets the worker find the cryptor
|
|
79
|
+
* that still owns the (already transferred) encoded streams and re-point it,
|
|
80
|
+
* rather than creating a fresh cryptor with no pipeline at all.
|
|
81
|
+
*/
|
|
82
|
+
previousTrackId?: string;
|
|
76
83
|
hasPacketTrailer: boolean;
|
|
77
84
|
};
|
|
78
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE;QACJ,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,OAAO,EAAE,mBAAmB,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE;QACJ,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,OAAO,EAAE,mBAAmB,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB;;;;WAIG;QACH,gBAAgB,EAAE,OAAO,CAAC;QAC1B;;WAEG;QACH,aAAa,CAAC,EAAE,2BAA2B,CAAC;KAC7C,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,iCAAiC;QACjC,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB;;;;;WAKG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,aAAa,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC;QACb,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;QAC7B,EAAE,EAAE,mBAAmB,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;QAC7B,EAAE,EAAE,mBAAmB,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,cAAc,GACd,iBAAiB,GACjB,OAAO,GACP,yBAAyB,GACzB,0BAA0B,GAC1B,yBAAyB,GACzB,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAG1B,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,GAAG,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB;IACE,8BAA8B;IAC9B,WAAW,EAAE,eAAe,CAAC;CAC9B,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,gBAAgB;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,2BAA2B,CAAC;CAC7C,CAAC"}
|
|
@@ -39,6 +39,17 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
39
39
|
private sifTrailer;
|
|
40
40
|
private detectedCodec?;
|
|
41
41
|
private currentTransform?;
|
|
42
|
+
/**
|
|
43
|
+
* The encoded streams this cryptor was last set up with, retained beyond the
|
|
44
|
+
* lifetime of {@link currentTransform}.
|
|
45
|
+
*
|
|
46
|
+
* The main thread transfers a receiver's encoded streams to the worker once and
|
|
47
|
+
* cannot transfer them again (a transferred stream is locked), and
|
|
48
|
+
* `createEncodedStreams()` may only be called once per receiver. So when a
|
|
49
|
+
* transceiver is reused, or when a pipe dies underneath us, re-establishing the
|
|
50
|
+
* transform is only possible from here. See {@link ensureTransform}.
|
|
51
|
+
*/
|
|
52
|
+
private retainedStreams?;
|
|
42
53
|
/**
|
|
43
54
|
* Whether the subscribed track advertises packet trailer features.
|
|
44
55
|
* When false, we skip the per-frame trailer extraction path entirely
|
|
@@ -55,6 +66,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
55
66
|
private readonly ERROR_THROTTLE_MS;
|
|
56
67
|
private readonly MAX_ERRORS_PER_MINUTE;
|
|
57
68
|
private readonly ERROR_WINDOW_MS;
|
|
69
|
+
private undecryptedTrackTimeout?;
|
|
70
|
+
/** grace period for a teardown or a resubscribe to land before we report a stalled track */
|
|
71
|
+
private readonly UNDECRYPTED_TRACK_GRACE_MS;
|
|
58
72
|
/**
|
|
59
73
|
* Tracks (participant, trackId, payloadType) tuples for which we've already logged a NALU
|
|
60
74
|
* fallback, so a persistent bad state doesn't flood the console (Firefox doesn't filter debug).
|
|
@@ -78,6 +92,33 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
78
92
|
isEnabled(): boolean | undefined;
|
|
79
93
|
getParticipantIdentity(): string | undefined;
|
|
80
94
|
getTrackId(): string | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Re-point this cryptor at a new trackId, keeping its (already transferred)
|
|
97
|
+
* encoded streams. Used when a transceiver is reused for a new track.
|
|
98
|
+
*/
|
|
99
|
+
setTrackId(trackId: string): void;
|
|
100
|
+
hasActiveTransform(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* A track that is subscribed and known to be encrypted, but has no transform to
|
|
103
|
+
* decrypt it, will never produce a decodable frame again. That state used to be
|
|
104
|
+
* completely silent (a black tile and endless PLIs), so report it.
|
|
105
|
+
*
|
|
106
|
+
* Deferred, because on teardown the encoded streams routinely close before the
|
|
107
|
+
* 'removeTransform' message arrives -- checking immediately would cry wolf on
|
|
108
|
+
* every unsubscribe.
|
|
109
|
+
*
|
|
110
|
+
* Only meaningful while decoding: a sender's pipe closing on unpublish is
|
|
111
|
+
* routine and has no 'removeTransform' equivalent to quiet it down.
|
|
112
|
+
*/
|
|
113
|
+
private scheduleUndecryptedTrackWatchdog;
|
|
114
|
+
/**
|
|
115
|
+
* Re-establish the transform if it is gone while we still own the encoded
|
|
116
|
+
* streams, e.g. after a pipe died on its own (the swallowed
|
|
117
|
+
* 'Destination stream closed') or when a reused transceiver never got a new
|
|
118
|
+
* pipeline. Without this the frames pile up in a readable nobody reads and the
|
|
119
|
+
* decoder starves, which shows up as a permanently black tile.
|
|
120
|
+
*/
|
|
121
|
+
ensureTransform(): boolean;
|
|
81
122
|
/**
|
|
82
123
|
* Update the video codec used by the mediaStreamTrack
|
|
83
124
|
* @param codec
|
|
@@ -95,7 +136,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
95
136
|
*/
|
|
96
137
|
setHasFrameMetadata(hasFrameMetadata: boolean): void;
|
|
97
138
|
setFrameMetadataOpts(frameMetadata?: FrameMetadataPublishOptions): void;
|
|
98
|
-
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string,
|
|
139
|
+
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): boolean;
|
|
99
140
|
setSifTrailer(trailer: NonSharedUint8Array): void;
|
|
100
141
|
/**
|
|
101
142
|
* Checks if we should emit an error based on throttling rules to prevent memory leaks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAKnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAG7E,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAGxF,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAEV,kBAAkB,EAInB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIrE,eAAO,MAAM,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAa,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,KAAK,IAAI,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;qCAEsD,UAAU,iBAAiB,CAAC,gBAAgB,CAAC;AAApG,qBAAa,gBAAiB,SAAQ,qBAA+D;IACnG,SAAS,CAAC,cAAc,CACtB,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EACzD,UAAU,EAAE,gCAAgC,GAC3C,OAAO,CAAC,GAAG,CAAC;IAIf,SAAS,CAAC,cAAc,CACtB,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EACzD,UAAU,EAAE,gCAAgC,GAC3C,OAAO,CAAC,GAAG,CAAC;CAGhB;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,IAAI,CAAwB;IAEpC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,OAAO,CAAC,MAAM,CAA0B;IAExC,OAAO,CAAC,kBAAkB,CAAqB;IAE/C;;OAEG;IACH,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,aAAa,CAAC,CAAa;IAEnC,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAE3C;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAkB;IAE1C,OAAO,CAAC,iBAAiB,CAAC,CAA8B;IAExD,OAAO,CAAC,oBAAoB,CAAK;IAEjC;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,WAAW,CAAkC;IAErD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAE1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAE3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAA0B;gBAEzC,IAAI,EAAE;QAChB,IAAI,EAAE,qBAAqB,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;KAClC;IAUD,OAAO,KAAK,UAAU,GAMrB;IAED;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB;IAqBtD,gBAAgB;
|
|
1
|
+
{"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,18 @@ export declare class PCTransportManager {
|
|
|
41
41
|
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
|
42
42
|
removeTrack(sender: RTCRtpSender): void | undefined;
|
|
43
43
|
close(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Restarts ICE on the transports that need it. Only the publisher: the server restarts the
|
|
46
|
+
* subscriber's ICE itself and follows with a fresh offer.
|
|
47
|
+
*
|
|
48
|
+
* The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
|
|
49
|
+
* candidates would guard against candidates for a new generation arriving before the offer
|
|
50
|
+
* that introduces it, but the server does not send them in that order -- on a same-node
|
|
51
|
+
* resume it buffers them until the offer has gone out, and on a reconnect that lands on
|
|
52
|
+
* another node it withholds subscriber candidates until immediately before creating the
|
|
53
|
+
* offer. Setting the flag only risks withholding candidates during the window that decides
|
|
54
|
+
* whether the reconnect succeeded.
|
|
55
|
+
*/
|
|
44
56
|
triggerIceRestart(): Promise<void>;
|
|
45
57
|
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
|
46
58
|
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAGjE,OAAO,WAAyB,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAmB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,oBAAY,gBAAgB;IAC1B,GAAG,IAAA;IACH,UAAU,IAAA;IACV,SAAS,IAAA;IACT,MAAM,IAAA;IACN,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,KAAK,MAAM,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAC5E,qBAAa,kBAAkB;IACtB,SAAS,EAAE,WAAW,CAAC;IAEvB,UAAU,CAAC,EAAE,WAAW,CAAC;IAEzB,qBAAqB,EAAE,MAAM,CAAmD;IAEvF,IAAW,cAAc,YAExB;IAED,IAAW,eAAe,YAEzB;IAED,IAAW,YAAY,qBAEtB;IAEM,aAAa,CAAC,EAAE,CACrB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,CAAC,EAAE,sBAAsB,KAC9B,IAAI,CAAC;IAEH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAErE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAElD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;IAEtC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtF,OAAO,CAAC,6BAA6B,CAAU;IAE/C,OAAO,CAAC,8BAA8B,CAAU;IAEhD,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,GAAG,CAAO;IAElB,OAAO,CAAC,MAAM,CAAO;IAErB,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,KAAK,CAAS;IAEtB,IAAI,IAAI,IAAI,MAAM,CAEjB;gBAEW,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,gBAAgB;IA8CpF,OAAO,KAAK,UAAU,GAIrB;IAED,gBAAgB,CAAC,OAAO,UAAO;IAK/B,2BAA2B,CAAC,OAAO,CAAC,EAAE,eAAe;IAIrD,kBAAkB,CAAC,EAAE,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;IAIjE,WAAW,CAAC,MAAM,EAAE,YAAY;IAI1B,KAAK;
|
|
1
|
+
{"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,13 +13,19 @@ declare abstract class BaseStreamReader<T extends BaseStreamInfo> {
|
|
|
13
13
|
/** @internal */
|
|
14
14
|
protected validateBytesReceived(doneReceiving?: boolean): void;
|
|
15
15
|
constructor(info: T, stream: ReadableStream<DataStream_Chunk>, totalByteSize?: number);
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Counts a chunk's bytes against `totalByteSize` and reports progress. Chunk ordering and
|
|
18
|
+
* de-duplication happen upstream in the manager's `ensureOrderedChunks`, so every chunk reaching
|
|
19
|
+
* here is new and in order.
|
|
20
|
+
*/
|
|
21
|
+
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
22
|
+
/**
|
|
23
|
+
* @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
|
|
24
|
+
*/
|
|
17
25
|
onProgress?: (progress: number | undefined) => void;
|
|
18
26
|
abstract readAll(opts?: BaseStreamReaderReadAllOpts): Promise<string | Array<Uint8Array>>;
|
|
19
27
|
}
|
|
20
28
|
export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
|
|
21
|
-
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
22
|
-
onProgress?: (progress: number | undefined) => void;
|
|
23
29
|
signal?: AbortSignal;
|
|
24
30
|
[Symbol.asyncIterator](): {
|
|
25
31
|
next: () => Promise<IteratorResult<Uint8Array>>;
|
|
@@ -36,25 +42,19 @@ export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
|
|
|
36
42
|
readAll(opts?: BaseStreamReaderReadAllOpts): Promise<Array<Uint8Array>>;
|
|
37
43
|
}
|
|
38
44
|
/**
|
|
39
|
-
* A class to read chunks from a ReadableStream and
|
|
45
|
+
* A class to read chunks from a ReadableStream and decode them as UTF-8 text.
|
|
46
|
+
*
|
|
47
|
+
* NOTE: chunk-level `version` (resending a chunk at an already-received `chunkIndex` to supersede
|
|
48
|
+
* it) is not supported. The reader used to rebuild the whole string from a per-index chunk map and
|
|
49
|
+
* yield it as `TextStreamChunk.collected`, which made superseding work; 5d4a6346 (#1410, text auto
|
|
50
|
+
* chunking) changed the iterator to yield each chunk's text as it arrives, and a streaming reader
|
|
51
|
+
* cannot retract text it has already handed to the consumer. No sender emits a versioned chunk.
|
|
40
52
|
*/
|
|
41
53
|
export declare class TextStreamReader extends BaseStreamReader<TextStreamInfo> {
|
|
42
|
-
private receivedChunks;
|
|
43
54
|
signal?: AbortSignal;
|
|
44
|
-
/**
|
|
45
|
-
* A TextStreamReader instance can be used as an AsyncIterator that returns the entire string
|
|
46
|
-
* that has been received up to the current point in time.
|
|
47
|
-
*/
|
|
48
|
-
constructor(info: TextStreamInfo, stream: ReadableStream<DataStream_Chunk>, totalChunkCount?: number);
|
|
49
|
-
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
50
|
-
/**
|
|
51
|
-
* @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
|
|
52
|
-
*/
|
|
53
|
-
onProgress?: (progress: number | undefined) => void;
|
|
54
55
|
/**
|
|
55
56
|
* Async iterator implementation to allow usage of `for await...of` syntax.
|
|
56
|
-
* Yields
|
|
57
|
-
*
|
|
57
|
+
* Yields each chunk's decoded text as it arrives - a delta, not the string accumulated so far.
|
|
58
58
|
*/
|
|
59
59
|
[Symbol.asyncIterator](): {
|
|
60
60
|
next: () => Promise<IteratorResult<string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamReader.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-stream/incoming/StreamReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"StreamReader.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-stream/incoming/StreamReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,MAAM,2BAA2B,GAAG;IACxC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,uBAAe,gBAAgB,CAAC,CAAC,SAAS,cAAc;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEnD,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEjC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnB,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAEhC,IAAI,IAAI,MAEP;IAED,gBAAgB;IAChB,SAAS,CAAC,qBAAqB,CAAC,aAAa,GAAE,OAAe;gBAkBlD,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM;IAOrF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB;IAUrD;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAEpD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1F;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,CAAC,MAAM,CAAC,aAAa,CAAC;oBAYF,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;kBAwCnC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;IAOvD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW;IAK7B,OAAO,CAAC,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;CAQlF;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;OAGG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC;oBAcF,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;kBAqD/B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;;IAOnD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW;IAK7B,OAAO,CAAC,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC,MAAM,CAAC;CAQvE;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAClC,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAClC,IAAI,CAAC"}
|
|
@@ -59,6 +59,13 @@ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEMan
|
|
|
59
59
|
private postEnable;
|
|
60
60
|
private postRTPMap;
|
|
61
61
|
private postSifTrailer;
|
|
62
|
+
/**
|
|
63
|
+
* Derive the participant's encryption state from one of its publications.
|
|
64
|
+
* Publications without trackInfo are skipped rather than thrown on: throwing
|
|
65
|
+
* inside the forEach above would leave every remaining participant without an
|
|
66
|
+
* encryption state, and a cryptor with unknown state can no longer decrypt.
|
|
67
|
+
*/
|
|
68
|
+
private setParticipantCryptorEnabledForPublication;
|
|
62
69
|
private setupE2EEReceiver;
|
|
63
70
|
private setupE2EESender;
|
|
64
71
|
/**
|
|
@@ -9,6 +9,11 @@ export declare const UNENCRYPTED_BYTES: {
|
|
|
9
9
|
};
|
|
10
10
|
export declare const IV_LENGTH = 12;
|
|
11
11
|
export declare const E2EE_FLAG = "lk_e2ee";
|
|
12
|
+
/**
|
|
13
|
+
* trackId a receiver's/sender's encoded stream pipeline was last set up for.
|
|
14
|
+
* Needed to recover the right cryptor when a transceiver gets reused.
|
|
15
|
+
*/
|
|
16
|
+
export declare const E2EE_TRACK_ID = "lk_e2ee_track_id";
|
|
12
17
|
export declare const SALT = "LKFrameEncryptionKey";
|
|
13
18
|
export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
|
|
14
19
|
export declare const MAX_SIF_COUNT = 100;
|
|
@@ -47,7 +47,6 @@ export interface EncodeMessage extends BaseMessage {
|
|
|
47
47
|
writableStream: WritableStream;
|
|
48
48
|
trackId: string;
|
|
49
49
|
codec?: VideoCodec;
|
|
50
|
-
isReuse: boolean;
|
|
51
50
|
/**
|
|
52
51
|
* Whether the published track advertises packet trailer features.
|
|
53
52
|
* When false, the cryptor skips the per-frame trailer extraction path
|
|
@@ -72,7 +71,15 @@ export interface UpdateCodecMessage extends BaseMessage {
|
|
|
72
71
|
data: {
|
|
73
72
|
participantIdentity: string;
|
|
74
73
|
trackId: string;
|
|
75
|
-
|
|
74
|
+
/** undefined for audio tracks */
|
|
75
|
+
codec?: VideoCodec;
|
|
76
|
+
/**
|
|
77
|
+
* trackId this receiver's pipeline was previously set up for, set when a
|
|
78
|
+
* transceiver gets reused for a new track. Lets the worker find the cryptor
|
|
79
|
+
* that still owns the (already transferred) encoded streams and re-point it,
|
|
80
|
+
* rather than creating a fresh cryptor with no pipeline at all.
|
|
81
|
+
*/
|
|
82
|
+
previousTrackId?: string;
|
|
76
83
|
hasPacketTrailer: boolean;
|
|
77
84
|
};
|
|
78
85
|
}
|
|
@@ -39,6 +39,17 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
39
39
|
private sifTrailer;
|
|
40
40
|
private detectedCodec?;
|
|
41
41
|
private currentTransform?;
|
|
42
|
+
/**
|
|
43
|
+
* The encoded streams this cryptor was last set up with, retained beyond the
|
|
44
|
+
* lifetime of {@link currentTransform}.
|
|
45
|
+
*
|
|
46
|
+
* The main thread transfers a receiver's encoded streams to the worker once and
|
|
47
|
+
* cannot transfer them again (a transferred stream is locked), and
|
|
48
|
+
* `createEncodedStreams()` may only be called once per receiver. So when a
|
|
49
|
+
* transceiver is reused, or when a pipe dies underneath us, re-establishing the
|
|
50
|
+
* transform is only possible from here. See {@link ensureTransform}.
|
|
51
|
+
*/
|
|
52
|
+
private retainedStreams?;
|
|
42
53
|
/**
|
|
43
54
|
* Whether the subscribed track advertises packet trailer features.
|
|
44
55
|
* When false, we skip the per-frame trailer extraction path entirely
|
|
@@ -55,6 +66,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
55
66
|
private readonly ERROR_THROTTLE_MS;
|
|
56
67
|
private readonly MAX_ERRORS_PER_MINUTE;
|
|
57
68
|
private readonly ERROR_WINDOW_MS;
|
|
69
|
+
private undecryptedTrackTimeout?;
|
|
70
|
+
/** grace period for a teardown or a resubscribe to land before we report a stalled track */
|
|
71
|
+
private readonly UNDECRYPTED_TRACK_GRACE_MS;
|
|
58
72
|
/**
|
|
59
73
|
* Tracks (participant, trackId, payloadType) tuples for which we've already logged a NALU
|
|
60
74
|
* fallback, so a persistent bad state doesn't flood the console (Firefox doesn't filter debug).
|
|
@@ -78,6 +92,33 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
78
92
|
isEnabled(): boolean | undefined;
|
|
79
93
|
getParticipantIdentity(): string | undefined;
|
|
80
94
|
getTrackId(): string | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Re-point this cryptor at a new trackId, keeping its (already transferred)
|
|
97
|
+
* encoded streams. Used when a transceiver is reused for a new track.
|
|
98
|
+
*/
|
|
99
|
+
setTrackId(trackId: string): void;
|
|
100
|
+
hasActiveTransform(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* A track that is subscribed and known to be encrypted, but has no transform to
|
|
103
|
+
* decrypt it, will never produce a decodable frame again. That state used to be
|
|
104
|
+
* completely silent (a black tile and endless PLIs), so report it.
|
|
105
|
+
*
|
|
106
|
+
* Deferred, because on teardown the encoded streams routinely close before the
|
|
107
|
+
* 'removeTransform' message arrives -- checking immediately would cry wolf on
|
|
108
|
+
* every unsubscribe.
|
|
109
|
+
*
|
|
110
|
+
* Only meaningful while decoding: a sender's pipe closing on unpublish is
|
|
111
|
+
* routine and has no 'removeTransform' equivalent to quiet it down.
|
|
112
|
+
*/
|
|
113
|
+
private scheduleUndecryptedTrackWatchdog;
|
|
114
|
+
/**
|
|
115
|
+
* Re-establish the transform if it is gone while we still own the encoded
|
|
116
|
+
* streams, e.g. after a pipe died on its own (the swallowed
|
|
117
|
+
* 'Destination stream closed') or when a reused transceiver never got a new
|
|
118
|
+
* pipeline. Without this the frames pile up in a readable nobody reads and the
|
|
119
|
+
* decoder starves, which shows up as a permanently black tile.
|
|
120
|
+
*/
|
|
121
|
+
ensureTransform(): boolean;
|
|
81
122
|
/**
|
|
82
123
|
* Update the video codec used by the mediaStreamTrack
|
|
83
124
|
* @param codec
|
|
@@ -95,7 +136,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
|
95
136
|
*/
|
|
96
137
|
setHasFrameMetadata(hasFrameMetadata: boolean): void;
|
|
97
138
|
setFrameMetadataOpts(frameMetadata?: FrameMetadataPublishOptions): void;
|
|
98
|
-
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string,
|
|
139
|
+
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): boolean;
|
|
99
140
|
setSifTrailer(trailer: NonSharedUint8Array): void;
|
|
100
141
|
/**
|
|
101
142
|
* Checks if we should emit an error based on throttling rules to prevent memory leaks
|
|
@@ -41,6 +41,18 @@ export declare class PCTransportManager {
|
|
|
41
41
|
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
|
42
42
|
removeTrack(sender: RTCRtpSender): void | undefined;
|
|
43
43
|
close(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Restarts ICE on the transports that need it. Only the publisher: the server restarts the
|
|
46
|
+
* subscriber's ICE itself and follows with a fresh offer.
|
|
47
|
+
*
|
|
48
|
+
* The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
|
|
49
|
+
* candidates would guard against candidates for a new generation arriving before the offer
|
|
50
|
+
* that introduces it, but the server does not send them in that order -- on a same-node
|
|
51
|
+
* resume it buffers them until the offer has gone out, and on a reconnect that lands on
|
|
52
|
+
* another node it withholds subscriber candidates until immediately before creating the
|
|
53
|
+
* offer. Setting the flag only risks withholding candidates during the window that decides
|
|
54
|
+
* whether the reconnect succeeded.
|
|
55
|
+
*/
|
|
44
56
|
triggerIceRestart(): Promise<void>;
|
|
45
57
|
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
|
46
58
|
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
|
@@ -13,13 +13,19 @@ declare abstract class BaseStreamReader<T extends BaseStreamInfo> {
|
|
|
13
13
|
/** @internal */
|
|
14
14
|
protected validateBytesReceived(doneReceiving?: boolean): void;
|
|
15
15
|
constructor(info: T, stream: ReadableStream<DataStream_Chunk>, totalByteSize?: number);
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Counts a chunk's bytes against `totalByteSize` and reports progress. Chunk ordering and
|
|
18
|
+
* de-duplication happen upstream in the manager's `ensureOrderedChunks`, so every chunk reaching
|
|
19
|
+
* here is new and in order.
|
|
20
|
+
*/
|
|
21
|
+
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
22
|
+
/**
|
|
23
|
+
* @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
|
|
24
|
+
*/
|
|
17
25
|
onProgress?: (progress: number | undefined) => void;
|
|
18
26
|
abstract readAll(opts?: BaseStreamReaderReadAllOpts): Promise<string | Array<Uint8Array>>;
|
|
19
27
|
}
|
|
20
28
|
export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
|
|
21
|
-
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
22
|
-
onProgress?: (progress: number | undefined) => void;
|
|
23
29
|
signal?: AbortSignal;
|
|
24
30
|
[Symbol.asyncIterator](): {
|
|
25
31
|
next: () => Promise<IteratorResult<Uint8Array>>;
|
|
@@ -36,25 +42,19 @@ export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
|
|
|
36
42
|
readAll(opts?: BaseStreamReaderReadAllOpts): Promise<Array<Uint8Array>>;
|
|
37
43
|
}
|
|
38
44
|
/**
|
|
39
|
-
* A class to read chunks from a ReadableStream and
|
|
45
|
+
* A class to read chunks from a ReadableStream and decode them as UTF-8 text.
|
|
46
|
+
*
|
|
47
|
+
* NOTE: chunk-level `version` (resending a chunk at an already-received `chunkIndex` to supersede
|
|
48
|
+
* it) is not supported. The reader used to rebuild the whole string from a per-index chunk map and
|
|
49
|
+
* yield it as `TextStreamChunk.collected`, which made superseding work; 5d4a6346 (#1410, text auto
|
|
50
|
+
* chunking) changed the iterator to yield each chunk's text as it arrives, and a streaming reader
|
|
51
|
+
* cannot retract text it has already handed to the consumer. No sender emits a versioned chunk.
|
|
40
52
|
*/
|
|
41
53
|
export declare class TextStreamReader extends BaseStreamReader<TextStreamInfo> {
|
|
42
|
-
private receivedChunks;
|
|
43
54
|
signal?: AbortSignal;
|
|
44
|
-
/**
|
|
45
|
-
* A TextStreamReader instance can be used as an AsyncIterator that returns the entire string
|
|
46
|
-
* that has been received up to the current point in time.
|
|
47
|
-
*/
|
|
48
|
-
constructor(info: TextStreamInfo, stream: ReadableStream<DataStream_Chunk>, totalChunkCount?: number);
|
|
49
|
-
protected handleChunkReceived(chunk: DataStream_Chunk): void;
|
|
50
|
-
/**
|
|
51
|
-
* @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
|
|
52
|
-
*/
|
|
53
|
-
onProgress?: (progress: number | undefined) => void;
|
|
54
55
|
/**
|
|
55
56
|
* Async iterator implementation to allow usage of `for await...of` syntax.
|
|
56
|
-
* Yields
|
|
57
|
-
*
|
|
57
|
+
* Yields each chunk's decoded text as it arrives - a delta, not the string accumulated so far.
|
|
58
58
|
*/
|
|
59
59
|
[Symbol.asyncIterator](): {
|
|
60
60
|
next: () => Promise<IteratorResult<string>>;
|
package/package.json
CHANGED
package/src/api/SignalClient.ts
CHANGED
|
@@ -667,6 +667,7 @@ export class SignalClient {
|
|
|
667
667
|
if (firstMessage) {
|
|
668
668
|
this.handleSignalResponse(firstMessage);
|
|
669
669
|
}
|
|
670
|
+
const attemptId = this.attemptId;
|
|
670
671
|
while (true) {
|
|
671
672
|
if (this.signalLatency) {
|
|
672
673
|
await sleep(this.signalLatency);
|
|
@@ -680,7 +681,7 @@ export class SignalClient {
|
|
|
680
681
|
this.handleSignalResponse(resp);
|
|
681
682
|
} catch (e) {
|
|
682
683
|
this.log.error(`error reading from signal stream`, { error: e });
|
|
683
|
-
await this.
|
|
684
|
+
await this.handleOnClose('error in reading loop', attemptId);
|
|
684
685
|
break;
|
|
685
686
|
}
|
|
686
687
|
}
|