@blockcast/mmt-transport 0.2.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.
- package/dist/abr-controller.d.ts +94 -0
- package/dist/abr-controller.d.ts.map +1 -0
- package/dist/abr-controller.js +174 -0
- package/dist/abr-controller.js.map +1 -0
- package/dist/amt-gateway.d.ts +160 -0
- package/dist/amt-gateway.d.ts.map +1 -0
- package/dist/amt-gateway.js +390 -0
- package/dist/amt-gateway.js.map +1 -0
- package/dist/clock.d.ts +104 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +183 -0
- package/dist/clock.js.map +1 -0
- package/dist/driad-discovery.d.ts +50 -0
- package/dist/driad-discovery.d.ts.map +1 -0
- package/dist/driad-discovery.js +170 -0
- package/dist/driad-discovery.js.map +1 -0
- package/dist/fec-client.d.ts +442 -0
- package/dist/fec-client.d.ts.map +1 -0
- package/dist/fec-client.js +784 -0
- package/dist/fec-client.js.map +1 -0
- package/dist/fec-client.test.d.ts +8 -0
- package/dist/fec-client.test.d.ts.map +1 -0
- package/dist/fec-client.test.js +112 -0
- package/dist/fec-client.test.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/transport-manager.d.ts +114 -0
- package/dist/transport-manager.d.ts.map +1 -0
- package/dist/transport-manager.js +396 -0
- package/dist/transport-manager.js.map +1 -0
- package/dist/types.d.ts +356 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +85 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
- package/src/abr-controller.ts +227 -0
- package/src/amt-gateway.ts +511 -0
- package/src/clock.ts +212 -0
- package/src/driad-discovery.ts +193 -0
- package/src/fec-client.test.ts +140 -0
- package/src/fec-client.ts +1097 -0
- package/src/index.ts +122 -0
- package/src/transport-manager.ts +460 -0
- package/src/types.ts +420 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @blockcast/transport - MMT FEC Client
|
|
3
|
+
*
|
|
4
|
+
* MMT FEC Client for Browser Players
|
|
5
|
+
*
|
|
6
|
+
* Integrates libmmt WASM FEC decoder with:
|
|
7
|
+
* - MFU fragment reassembly
|
|
8
|
+
* - window.Multicast API from pim-multicast-gateway
|
|
9
|
+
* - Green-fill fallback for unrecoverable frames
|
|
10
|
+
*
|
|
11
|
+
* Designed for hang and moqtail players.
|
|
12
|
+
*/
|
|
13
|
+
import type { ProcessingStats, MmtFecClientOptions } from "./types.js";
|
|
14
|
+
/**
|
|
15
|
+
* FEC decoder configuration parameters (RFC 6330 OTI)
|
|
16
|
+
* This is distinct from the high-level FecConfig in types.ts which is for enabling/configuring FEC.
|
|
17
|
+
*/
|
|
18
|
+
export interface FecDecoderConfig {
|
|
19
|
+
/** Symbol size in bytes (T) */
|
|
20
|
+
symbolSize: number;
|
|
21
|
+
/** Number of source blocks (Z) */
|
|
22
|
+
sourceBlocks: number;
|
|
23
|
+
/** Number of sub-blocks (N) - used for large blocks */
|
|
24
|
+
subBlocks: number;
|
|
25
|
+
/** Symbol alignment (Al) - typically 8 for byte-aligned */
|
|
26
|
+
alignment: number;
|
|
27
|
+
/** Interleave depth - number of blocks that can be "in flight" */
|
|
28
|
+
interleaveDepth: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* FEC Decoder interface (WASM module)
|
|
32
|
+
*/
|
|
33
|
+
interface FecDecoder {
|
|
34
|
+
configure(oti: Uint8Array): void;
|
|
35
|
+
add_repair(sbn: number, esi: number, data: Uint8Array, timestamp: number): Uint8Array | null;
|
|
36
|
+
cleanup(timestamp: number): number[];
|
|
37
|
+
cleanup_by_interleave(current_sbn: number): number[];
|
|
38
|
+
get_stats(): {
|
|
39
|
+
source_packets: bigint;
|
|
40
|
+
repair_packets: bigint;
|
|
41
|
+
blocks_complete: bigint;
|
|
42
|
+
blocks_recovered: bigint;
|
|
43
|
+
blocks_failed: bigint;
|
|
44
|
+
recovery_rate(): number;
|
|
45
|
+
};
|
|
46
|
+
reset_stats(): void;
|
|
47
|
+
flush(): void;
|
|
48
|
+
set_timeout(ms: number): void;
|
|
49
|
+
set_green_fill(enabled: boolean): void;
|
|
50
|
+
set_interleave_depth(depth: number): void;
|
|
51
|
+
get_interleave_depth(): number;
|
|
52
|
+
get_symbol_size(): number;
|
|
53
|
+
get_source_blocks(): number;
|
|
54
|
+
get_sub_blocks(): number;
|
|
55
|
+
get_alignment(): number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* FEC Payload ID parser interface
|
|
59
|
+
*/
|
|
60
|
+
interface FecPayloadId {
|
|
61
|
+
sbn: number;
|
|
62
|
+
esi: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* MMT FEC Client
|
|
66
|
+
*
|
|
67
|
+
* Combines WASM FEC decoder with MFU reassembler for complete
|
|
68
|
+
* MMT packet processing in browser players.
|
|
69
|
+
*/
|
|
70
|
+
export declare class MmtFecClient {
|
|
71
|
+
private fecDecoder;
|
|
72
|
+
private mfuReassembler;
|
|
73
|
+
private options;
|
|
74
|
+
private initialized;
|
|
75
|
+
private greenFillCount;
|
|
76
|
+
private cleanupInterval;
|
|
77
|
+
private wasmInit?;
|
|
78
|
+
private wasmFecDecoder?;
|
|
79
|
+
private wasmParseFecPayloadId?;
|
|
80
|
+
private wasmIsSimdEnabled?;
|
|
81
|
+
constructor(options?: MmtFecClientOptions);
|
|
82
|
+
/**
|
|
83
|
+
* Set WASM module functions (called before init)
|
|
84
|
+
*/
|
|
85
|
+
setWasmModule(module: {
|
|
86
|
+
init: () => Promise<void>;
|
|
87
|
+
MmtFecDecoder: new (interleaveDepth: number) => FecDecoder;
|
|
88
|
+
parse_fec_payload_id: (data: Uint8Array) => FecPayloadId;
|
|
89
|
+
is_simd_enabled: () => boolean;
|
|
90
|
+
}): void;
|
|
91
|
+
/**
|
|
92
|
+
* Initialize the WASM module
|
|
93
|
+
*/
|
|
94
|
+
init(): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Configure FEC from OTI
|
|
97
|
+
*/
|
|
98
|
+
configureFec(oti: Uint8Array): void;
|
|
99
|
+
/**
|
|
100
|
+
* Process an MMTP packet
|
|
101
|
+
*
|
|
102
|
+
* Handles FEC and MFU reassembly automatically.
|
|
103
|
+
* Calls onMfuReady when a complete MFU is available.
|
|
104
|
+
*/
|
|
105
|
+
processPacket(packet: Uint8Array): void;
|
|
106
|
+
/**
|
|
107
|
+
* Process FEC repair packet
|
|
108
|
+
*/
|
|
109
|
+
private processFecPacket;
|
|
110
|
+
/**
|
|
111
|
+
* Cleanup expired blocks and MFUs
|
|
112
|
+
*/
|
|
113
|
+
cleanup(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Get current statistics
|
|
116
|
+
*/
|
|
117
|
+
getStats(): ProcessingStats;
|
|
118
|
+
/**
|
|
119
|
+
* Reset statistics
|
|
120
|
+
*/
|
|
121
|
+
resetStats(): void;
|
|
122
|
+
/**
|
|
123
|
+
* Get current FEC configuration
|
|
124
|
+
* Returns the OTI parameters and interleave depth
|
|
125
|
+
*/
|
|
126
|
+
getConfig(): FecDecoderConfig;
|
|
127
|
+
/**
|
|
128
|
+
* Set interleave depth
|
|
129
|
+
*
|
|
130
|
+
* The interleave depth determines how many blocks can be "in flight" at once.
|
|
131
|
+
* Higher values provide better burst loss protection but increase latency.
|
|
132
|
+
*
|
|
133
|
+
* @param depth - Number of interleaved blocks (min: 1, typical: 30 for ~1s at 30fps)
|
|
134
|
+
*/
|
|
135
|
+
setInterleaveDepth(depth: number): void;
|
|
136
|
+
/**
|
|
137
|
+
* Cleanup blocks that are too old based on interleave depth
|
|
138
|
+
*
|
|
139
|
+
* This method expires blocks that are more than `interleaveDepth` behind
|
|
140
|
+
* the current block number. Call this when processing a new source block
|
|
141
|
+
* to maintain memory bounds.
|
|
142
|
+
*
|
|
143
|
+
* @param currentSbn - Current source block number being processed
|
|
144
|
+
* @returns Array of expired block numbers
|
|
145
|
+
*/
|
|
146
|
+
cleanupByInterleave(currentSbn: number): number[];
|
|
147
|
+
/**
|
|
148
|
+
* Check if initialized
|
|
149
|
+
*/
|
|
150
|
+
isInitialized(): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Dispose of resources
|
|
153
|
+
*/
|
|
154
|
+
dispose(): void;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Integration with window.Multicast API (pim-multicast-gateway)
|
|
158
|
+
*/
|
|
159
|
+
export declare function createMulticastFecHandler(client: MmtFecClient, options?: {
|
|
160
|
+
onPacket?: (data: ArrayBuffer) => void;
|
|
161
|
+
}): (data: ArrayBuffer) => void;
|
|
162
|
+
/**
|
|
163
|
+
* Quick setup for hang/moqtail integration
|
|
164
|
+
*/
|
|
165
|
+
export declare function setupMmtFec(options?: MmtFecClientOptions): Promise<MmtFecClient>;
|
|
166
|
+
/**
|
|
167
|
+
* MoQ FEC configuration
|
|
168
|
+
*/
|
|
169
|
+
export interface MoqFecClientConfig {
|
|
170
|
+
/** Symbol size in bytes (typically 1280 for MTU) */
|
|
171
|
+
symbolSize: number;
|
|
172
|
+
/** Source symbols per block (K) */
|
|
173
|
+
k: number;
|
|
174
|
+
/** Repair symbols per block (P) */
|
|
175
|
+
p: number;
|
|
176
|
+
/** Interleave depth for burst loss protection */
|
|
177
|
+
interleaveDepth: number;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* MoQ FEC statistics for ABR
|
|
181
|
+
*/
|
|
182
|
+
export interface MoqFecClientStats {
|
|
183
|
+
/** Blocks successfully decoded */
|
|
184
|
+
blocksComplete: number;
|
|
185
|
+
/** Blocks with some symbols but not yet complete */
|
|
186
|
+
blocksIncomplete: number;
|
|
187
|
+
/** Total symbols received */
|
|
188
|
+
totalSymbolsReceived: number;
|
|
189
|
+
/** Source symbols per block (K) */
|
|
190
|
+
k: number;
|
|
191
|
+
/** Repair symbols per block (P) */
|
|
192
|
+
p: number;
|
|
193
|
+
/** Interleave depth */
|
|
194
|
+
interleaveDepth: number;
|
|
195
|
+
/** Effective loss rate after FEC recovery (0.0-1.0) */
|
|
196
|
+
effectiveLossRate: number;
|
|
197
|
+
/** Recovery rate (0.0-1.0) */
|
|
198
|
+
recoveryRate: number;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* MoQ FEC Encoder interface (WASM module)
|
|
202
|
+
*/
|
|
203
|
+
interface WasmMoqFecEncoder {
|
|
204
|
+
encodeBlock(data: Uint8Array): {
|
|
205
|
+
block_id: number;
|
|
206
|
+
original_len: number;
|
|
207
|
+
k: number;
|
|
208
|
+
p: number;
|
|
209
|
+
getOti(): Uint8Array;
|
|
210
|
+
sourceSymbolCount(): number;
|
|
211
|
+
getSourceSymbol(index: number): Uint8Array | null;
|
|
212
|
+
repairSymbolCount(): number;
|
|
213
|
+
getRepairSymbol(index: number): Uint8Array | null;
|
|
214
|
+
};
|
|
215
|
+
blockCount(): number;
|
|
216
|
+
getOti(): Uint8Array;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* MoQ FEC Decoder interface (WASM module)
|
|
220
|
+
*/
|
|
221
|
+
interface WasmMoqFecDecoder {
|
|
222
|
+
addSourceSymbol(blockId: number, esi: number, symbol: Uint8Array, originalLen?: number): Uint8Array | null;
|
|
223
|
+
addRepairSymbol(blockId: number, esi: number, symbol: Uint8Array): Uint8Array | null;
|
|
224
|
+
isBlockComplete(blockId: number): boolean;
|
|
225
|
+
getBlockData(blockId: number): Uint8Array;
|
|
226
|
+
resetBlock(blockId: number): void;
|
|
227
|
+
getStats(): {
|
|
228
|
+
blocksComplete: number;
|
|
229
|
+
blocksIncomplete: number;
|
|
230
|
+
totalSymbolsReceived: number;
|
|
231
|
+
k: number;
|
|
232
|
+
p: number;
|
|
233
|
+
interleaveDepth: number;
|
|
234
|
+
effectiveLossRate(): number;
|
|
235
|
+
recoveryRate(): number;
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* MoQ FEC Config interface (WASM module)
|
|
240
|
+
*/
|
|
241
|
+
interface WasmMoqFecConfig {
|
|
242
|
+
maxBlockSize(): number;
|
|
243
|
+
overheadRatio(): number;
|
|
244
|
+
symbol_size: number;
|
|
245
|
+
k: number;
|
|
246
|
+
p: number;
|
|
247
|
+
interleaveDepth: number;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* MoQ FEC Client
|
|
251
|
+
*
|
|
252
|
+
* Wraps mmt-wasm MoQ FEC bindings for use in TypeScript applications.
|
|
253
|
+
* Designed for WebTransport-based MoQ streaming with FEC protection.
|
|
254
|
+
*
|
|
255
|
+
* ## Usage
|
|
256
|
+
*
|
|
257
|
+
* ```typescript
|
|
258
|
+
* import { MoqFecClient } from '@blockcast/ssm-transport';
|
|
259
|
+
*
|
|
260
|
+
* const client = new MoqFecClient({
|
|
261
|
+
* symbolSize: 1280,
|
|
262
|
+
* k: 10,
|
|
263
|
+
* p: 3,
|
|
264
|
+
* interleaveDepth: 30,
|
|
265
|
+
* });
|
|
266
|
+
*
|
|
267
|
+
* await client.init();
|
|
268
|
+
*
|
|
269
|
+
* // Encoder (publisher side)
|
|
270
|
+
* const encoded = client.encodeBlock(groupData);
|
|
271
|
+
* encoded.sourceSymbols.forEach((symbol, esi) => {
|
|
272
|
+
* sendSourceSymbol(encoded.blockId, esi, symbol);
|
|
273
|
+
* });
|
|
274
|
+
* encoded.repairSymbols.forEach((symbol, i) => {
|
|
275
|
+
* sendRepairSymbol(encoded.blockId, encoded.k + i, symbol);
|
|
276
|
+
* });
|
|
277
|
+
*
|
|
278
|
+
* // Decoder (subscriber side)
|
|
279
|
+
* client.setOti(encoded.oti);
|
|
280
|
+
* onSourceSymbol((blockId, esi, symbol) => {
|
|
281
|
+
* const decoded = client.addSourceSymbol(blockId, esi, symbol);
|
|
282
|
+
* if (decoded) processGroup(decoded);
|
|
283
|
+
* });
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
declare let wasmModuleCache: {
|
|
287
|
+
init: () => Promise<void>;
|
|
288
|
+
MoqFecConfig: new (symbolSize: number, k: number, p: number, interleaveDepth: number) => WasmMoqFecConfig;
|
|
289
|
+
MoqFecEncoder: new (config: WasmMoqFecConfig) => WasmMoqFecEncoder;
|
|
290
|
+
MoqFecDecoder: new (config: WasmMoqFecConfig, oti: Uint8Array) => WasmMoqFecDecoder;
|
|
291
|
+
} | null;
|
|
292
|
+
/**
|
|
293
|
+
* Load the mmt-wasm module dynamically
|
|
294
|
+
*
|
|
295
|
+
* @param wasmPath - Path to the mmt-wasm module (default: tries common locations)
|
|
296
|
+
* @returns The loaded WASM module
|
|
297
|
+
*/
|
|
298
|
+
export declare function loadMmtWasm(wasmPath?: string): Promise<typeof wasmModuleCache>;
|
|
299
|
+
/**
|
|
300
|
+
* Create a MoqFecClient with auto-loaded WASM module
|
|
301
|
+
*
|
|
302
|
+
* @param config - FEC configuration
|
|
303
|
+
* @param wasmPath - Optional path to mmt-wasm module
|
|
304
|
+
* @returns Initialized MoqFecClient
|
|
305
|
+
*/
|
|
306
|
+
export declare function createMoqFecClient(config?: Partial<MoqFecClientConfig>, wasmPath?: string): Promise<MoqFecClient>;
|
|
307
|
+
export declare class MoqFecClient {
|
|
308
|
+
private config;
|
|
309
|
+
private encoder;
|
|
310
|
+
private decoder;
|
|
311
|
+
private wasmConfig;
|
|
312
|
+
private oti;
|
|
313
|
+
private initialized;
|
|
314
|
+
private onBlockDecoded?;
|
|
315
|
+
private wasmInit?;
|
|
316
|
+
private wasmMoqFecConfig?;
|
|
317
|
+
private wasmMoqFecEncoder?;
|
|
318
|
+
private wasmMoqFecDecoder?;
|
|
319
|
+
constructor(config?: Partial<MoqFecClientConfig>);
|
|
320
|
+
/**
|
|
321
|
+
* Create and initialize a MoqFecClient with auto-loaded WASM
|
|
322
|
+
*
|
|
323
|
+
* This is a convenience static method that handles WASM loading automatically.
|
|
324
|
+
*
|
|
325
|
+
* @param config - FEC configuration
|
|
326
|
+
* @param wasmPath - Optional path to mmt-wasm module
|
|
327
|
+
* @returns Initialized MoqFecClient
|
|
328
|
+
*/
|
|
329
|
+
static create(config?: Partial<MoqFecClientConfig>, wasmPath?: string): Promise<MoqFecClient>;
|
|
330
|
+
/**
|
|
331
|
+
* Set WASM module functions (called before init)
|
|
332
|
+
*/
|
|
333
|
+
setWasmModule(module: {
|
|
334
|
+
init: () => Promise<void>;
|
|
335
|
+
MoqFecConfig: new (symbolSize: number, k: number, p: number, interleaveDepth: number) => WasmMoqFecConfig;
|
|
336
|
+
MoqFecEncoder: new (config: WasmMoqFecConfig) => WasmMoqFecEncoder;
|
|
337
|
+
MoqFecDecoder: new (config: WasmMoqFecConfig, oti: Uint8Array) => WasmMoqFecDecoder;
|
|
338
|
+
}): void;
|
|
339
|
+
/**
|
|
340
|
+
* Initialize the WASM module and create encoder
|
|
341
|
+
*/
|
|
342
|
+
init(): Promise<void>;
|
|
343
|
+
/**
|
|
344
|
+
* Set OTI from encoder (required for decoder)
|
|
345
|
+
* Call this when receiving FEC config from publisher
|
|
346
|
+
*/
|
|
347
|
+
setOti(oti: Uint8Array): void;
|
|
348
|
+
/**
|
|
349
|
+
* Get the current OTI
|
|
350
|
+
*/
|
|
351
|
+
getOti(): Uint8Array | null;
|
|
352
|
+
/**
|
|
353
|
+
* Set callback for decoded blocks
|
|
354
|
+
*/
|
|
355
|
+
setBlockDecodedCallback(callback: (blockId: number, data: Uint8Array) => void): void;
|
|
356
|
+
/**
|
|
357
|
+
* Encode a data block (publisher side)
|
|
358
|
+
*
|
|
359
|
+
* @param data - The data block to encode (e.g., MoQ Group)
|
|
360
|
+
* @returns Encoded block with source and repair symbols
|
|
361
|
+
*/
|
|
362
|
+
encodeBlock(data: Uint8Array): {
|
|
363
|
+
blockId: number;
|
|
364
|
+
originalLen: number;
|
|
365
|
+
k: number;
|
|
366
|
+
p: number;
|
|
367
|
+
oti: Uint8Array;
|
|
368
|
+
sourceSymbols: Uint8Array[];
|
|
369
|
+
repairSymbols: Uint8Array[];
|
|
370
|
+
};
|
|
371
|
+
/**
|
|
372
|
+
* Add a source symbol (subscriber side)
|
|
373
|
+
*
|
|
374
|
+
* @param blockId - Block this symbol belongs to
|
|
375
|
+
* @param esi - Encoding Symbol ID (0 to K-1)
|
|
376
|
+
* @param symbol - Symbol data
|
|
377
|
+
* @param originalLen - Original data length (optional)
|
|
378
|
+
* @returns Decoded data if block is complete, null otherwise
|
|
379
|
+
*/
|
|
380
|
+
addSourceSymbol(blockId: number, esi: number, symbol: Uint8Array, originalLen?: number): Uint8Array | null;
|
|
381
|
+
/**
|
|
382
|
+
* Add a repair symbol (subscriber side)
|
|
383
|
+
*
|
|
384
|
+
* @param blockId - Block this symbol belongs to
|
|
385
|
+
* @param esi - Encoding Symbol ID (K to K+P-1)
|
|
386
|
+
* @param symbol - Symbol data
|
|
387
|
+
* @returns Decoded data if block is recovered, null otherwise
|
|
388
|
+
*/
|
|
389
|
+
addRepairSymbol(blockId: number, esi: number, symbol: Uint8Array): Uint8Array | null;
|
|
390
|
+
/**
|
|
391
|
+
* Check if a block is complete
|
|
392
|
+
*/
|
|
393
|
+
isBlockComplete(blockId: number): boolean;
|
|
394
|
+
/**
|
|
395
|
+
* Get decoded data for a complete block
|
|
396
|
+
*/
|
|
397
|
+
getBlockData(blockId: number): Uint8Array | null;
|
|
398
|
+
/**
|
|
399
|
+
* Reset a block slot for reuse
|
|
400
|
+
*/
|
|
401
|
+
resetBlock(blockId: number): void;
|
|
402
|
+
/**
|
|
403
|
+
* Get FEC statistics for ABR decisions
|
|
404
|
+
*/
|
|
405
|
+
getStats(): MoqFecClientStats;
|
|
406
|
+
/**
|
|
407
|
+
* Get ABR-compatible statistics
|
|
408
|
+
* Returns stats in format suitable for ABR controller
|
|
409
|
+
*/
|
|
410
|
+
getAbrStats(): {
|
|
411
|
+
effectiveLossRate: number;
|
|
412
|
+
rawLossRate: number;
|
|
413
|
+
recoveryRate: number;
|
|
414
|
+
fecEnabled: boolean;
|
|
415
|
+
};
|
|
416
|
+
/**
|
|
417
|
+
* Get the FEC configuration
|
|
418
|
+
*/
|
|
419
|
+
getConfig(): MoqFecClientConfig;
|
|
420
|
+
/**
|
|
421
|
+
* Get max block size
|
|
422
|
+
*/
|
|
423
|
+
getMaxBlockSize(): number;
|
|
424
|
+
/**
|
|
425
|
+
* Get overhead ratio (P/K)
|
|
426
|
+
*/
|
|
427
|
+
getOverheadRatio(): number;
|
|
428
|
+
/**
|
|
429
|
+
* Check if initialized
|
|
430
|
+
*/
|
|
431
|
+
isInitialized(): boolean;
|
|
432
|
+
/**
|
|
433
|
+
* Check if decoder is ready
|
|
434
|
+
*/
|
|
435
|
+
isDecoderReady(): boolean;
|
|
436
|
+
/**
|
|
437
|
+
* Dispose of resources
|
|
438
|
+
*/
|
|
439
|
+
dispose(): void;
|
|
440
|
+
}
|
|
441
|
+
export {};
|
|
442
|
+
//# sourceMappingURL=fec-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fec-client.d.ts","sourceRoot":"","sources":["../src/fec-client.ts"],"names":[],"mappings":"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"}
|