@blockcast/mmt-wasm 0.0.0-stage → 0.1.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/README.md +47 -2
- package/package.json +39 -5
- package/pkg/mmt_wasm.d.ts +1067 -0
- package/pkg/mmt_wasm.js +2990 -0
- package/pkg/mmt_wasm_bg.wasm +0 -0
- package/pkg/mmt_wasm_bg.wasm.d.ts +246 -0
- package/pkg/package.json +20 -0
- package/pkg-no-modules/mmt_wasm.d.ts +1058 -0
- package/pkg-no-modules/mmt_wasm.js +3018 -0
- package/pkg-no-modules/mmt_wasm_bg.wasm +0 -0
- package/pkg-no-modules/mmt_wasm_bg.wasm.d.ts +246 -0
- package/pkg-no-modules/package.json +16 -0
|
@@ -0,0 +1,1067 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
export class CombinedSampleJs {
|
|
5
|
+
private constructor();
|
|
6
|
+
free(): void;
|
|
7
|
+
[Symbol.dispose](): void;
|
|
8
|
+
readonly attribution: number | undefined;
|
|
9
|
+
readonly sample_number: number;
|
|
10
|
+
readonly stream_identity: number | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Number of subsample data units combined (1 for a whole-sample DU or a
|
|
13
|
+
* non-timed passthrough).
|
|
14
|
+
*/
|
|
15
|
+
readonly subsample_count: number;
|
|
16
|
+
readonly mpu_sequence_number: number;
|
|
17
|
+
readonly packet_sequence_numbers: Uint32Array | undefined;
|
|
18
|
+
readonly movie_fragment_sequence_number: number;
|
|
19
|
+
readonly repaired_packet_sequence_numbers: Uint32Array | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Same pattern as [`ReassembledMfuJs::data`].
|
|
22
|
+
*/
|
|
23
|
+
readonly data: Uint8Array;
|
|
24
|
+
readonly priority: number | undefined;
|
|
25
|
+
readonly rap_flag: boolean;
|
|
26
|
+
readonly timestamp: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class FecStats {
|
|
30
|
+
free(): void;
|
|
31
|
+
[Symbol.dispose](): void;
|
|
32
|
+
/**
|
|
33
|
+
* Recovery rate as percentage (0-100)
|
|
34
|
+
* Counts all blocks: complete + recovered + FEC-failed + delivery-failed
|
|
35
|
+
*/
|
|
36
|
+
recovery_rate(): number;
|
|
37
|
+
constructor();
|
|
38
|
+
source_packets: bigint;
|
|
39
|
+
repair_packets: bigint;
|
|
40
|
+
blocks_complete: bigint;
|
|
41
|
+
blocks_recovered: bigint;
|
|
42
|
+
blocks_failed: bigint;
|
|
43
|
+
bytes_recovered: bigint;
|
|
44
|
+
/**
|
|
45
|
+
* Blocks that expired with fewer than K symbols (delivery issue, not FEC issue)
|
|
46
|
+
*/
|
|
47
|
+
blocks_delivery_failed: bigint;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class MfuFragmentJs {
|
|
51
|
+
free(): void;
|
|
52
|
+
[Symbol.dispose](): void;
|
|
53
|
+
/**
|
|
54
|
+
* Attach the non-timed MFU Item_ID.
|
|
55
|
+
*/
|
|
56
|
+
set_item_id(item_id: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* Attach timed-MFU DU priority metadata.
|
|
59
|
+
*/
|
|
60
|
+
set_priority(priority: number): void;
|
|
61
|
+
/**
|
|
62
|
+
* Attach an opaque host attribution tag that follows the accepted frame.
|
|
63
|
+
*/
|
|
64
|
+
set_attribution(attribution: number): void;
|
|
65
|
+
/**
|
|
66
|
+
* Attach the authored source-header packet sequence and whether FEC
|
|
67
|
+
* reconstructed it. Recovered packets must retain the original u32 value.
|
|
68
|
+
*/
|
|
69
|
+
set_packet_delivery(packet_sequence_number: number, recovered: boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* Attach an opaque host stream identity used to isolate reassembly state.
|
|
72
|
+
*/
|
|
73
|
+
set_stream_identity(stream_identity: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* Attach the timed-MFU DU-header sample identity (offset mode / the IFC
|
|
76
|
+
* path): `movie_fragment_sequence`, `sample_number`, byte `offset`.
|
|
77
|
+
*
|
|
78
|
+
* `offset` is this DU's authored base byte position within its sample
|
|
79
|
+
* (moqcast #37): 0 for a whole-sample DU, nonzero for one subsample DU
|
|
80
|
+
* of a partitioned sample. One `SampleIdentity`, so a fragment built
|
|
81
|
+
* through this facade always carries movie + sample + offset together
|
|
82
|
+
* (the core's folded `Option<SampleIdentity>` makes the partial hybrid
|
|
83
|
+
* unrepresentable).
|
|
84
|
+
*/
|
|
85
|
+
with_sample_identity(movie_fragment_sequence: number, sample_number: number, offset: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* Build a fragment from the MPU/MFU header fields.
|
|
88
|
+
*
|
|
89
|
+
* `data` is the fragment payload AFTER the MPU/MFU (and any DU) header has
|
|
90
|
+
* been stripped by the caller; it is copied once across the wasm boundary
|
|
91
|
+
* into an owned `Bytes`. A fragmented FI=1 start must subsequently receive
|
|
92
|
+
* timed sample identity or a non-timed Item_ID before it is added.
|
|
93
|
+
*/
|
|
94
|
+
constructor(mpu_sequence_number: number, fragmentation_indicator: number, fragment_counter: number, data: Uint8Array, timestamp: number, rap_flag: boolean);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export class MmtFecDecoder {
|
|
98
|
+
free(): void;
|
|
99
|
+
[Symbol.dispose](): void;
|
|
100
|
+
/**
|
|
101
|
+
* Add a repair symbol per ISO 23008-1 §C.5.3.
|
|
102
|
+
*
|
|
103
|
+
* Repair carries (SS_Start, SSB_length, RS_ID).
|
|
104
|
+
* SS_Start = SS_ID of first source in block = SBN * K.
|
|
105
|
+
* SSB_length = the authored source-symbol count in this block (1..=K).
|
|
106
|
+
* SBN = SS_Start / configured K.
|
|
107
|
+
* Repair ESI = K + RS_ID.
|
|
108
|
+
*
|
|
109
|
+
* The decoder's configured K is the fixed RaptorQ geometry. A short
|
|
110
|
+
* authored block (`SSB_length < K`) is the producer's K-symbol RaptorQ
|
|
111
|
+
* block with ESIs `SSB_length..K` zero-filled and never transmitted
|
|
112
|
+
* (fec-raptorq `InterleavedEncoder::force_complete`). The block records
|
|
113
|
+
* `SSB_length`, completes once that many source symbols arrived, and
|
|
114
|
+
* recovers from `SSB_length` received symbols by supplying the known
|
|
115
|
+
* padding itself. A conflicting `SSB_length` for one block is rejected
|
|
116
|
+
* without changing that block.
|
|
117
|
+
*
|
|
118
|
+
* Under `iso-ssbg1-v1` the block is `[SS_Start, SS_Start + SSB_length)`
|
|
119
|
+
* with `1 <= SSB_length <= K` (K is only the maximum), its RaptorQ geometry
|
|
120
|
+
* is K' = SSB_length with no padding, and repair ESI = SSB_length + RS_ID
|
|
121
|
+
* (C.5.3). The first repair defines the block and claims every held source
|
|
122
|
+
* in range. A conflicting SSB_length, or a range overlapping a different
|
|
123
|
+
* known block, is refused without changing any block. Output is the K'*T
|
|
124
|
+
* concatenated ssbg_mode1 symbols: split by T and trim by the length field.
|
|
125
|
+
*/
|
|
126
|
+
add_repair(ss_start: number, ssb_length: number, rs_id: number, data: Uint8Array, timestamp: number): Uint8Array | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* Add a source symbol by SS_ID per ISO 23008-1 §C.5.2.
|
|
129
|
+
*
|
|
130
|
+
* SS_ID is a flat 32-bit counter. An unconfigured decoder rejects the
|
|
131
|
+
* packet.
|
|
132
|
+
*
|
|
133
|
+
* - `k-padded-v1`: derives SBN = floor(SS_ID / K), ESI = SS_ID % K and
|
|
134
|
+
* zero-pads `data` to T.
|
|
135
|
+
* - `iso-ssbg1-v1`: builds the C.3.3 ssbg_mode1 symbol
|
|
136
|
+
* `u16be(len) || data || zero padding` (refusing `len + 2 > T`) and
|
|
137
|
+
* places it at ESI = serial distance from the start of the known block
|
|
138
|
+
* whose `[SS_Start, SS_Start + SSB_length)` contains SS_ID. A source
|
|
139
|
+
* whose block no repair has defined yet is held by SS_ID until one does.
|
|
140
|
+
*
|
|
141
|
+
* # Arguments
|
|
142
|
+
* * `ss_id` - Source symbol ID (32-bit monotonic counter)
|
|
143
|
+
* * `data` - The protected MMTP packet, without its Source FEC Payload ID
|
|
144
|
+
* * `timestamp` - Current timestamp (performance.now())
|
|
145
|
+
*/
|
|
146
|
+
add_source(ss_id: number, data: Uint8Array, timestamp: number): Uint8Array | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* Reset statistics
|
|
149
|
+
*/
|
|
150
|
+
reset_stats(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Get alignment (Al) parameter from OTI
|
|
153
|
+
*/
|
|
154
|
+
get_alignment(): number;
|
|
155
|
+
/**
|
|
156
|
+
* `k-padded-v1` only: cleanup blocks more than `interleave_depth` blocks
|
|
157
|
+
* behind `current_sbn`. Refused under `iso-ssbg1-v1`, which has no SBN
|
|
158
|
+
* (use `cleanup_by_ss_start`).
|
|
159
|
+
*
|
|
160
|
+
* Blocks are ordered by RFC 1982 serial comparison of their first SS_ID
|
|
161
|
+
* (`sbn * K mod 2^32`, ISO/IEC 23008-1 C.5.2; BLO-35597 iso:5). For a
|
|
162
|
+
* stream that has not wrapped SS_ID that is exactly the old
|
|
163
|
+
* `sbn < current_sbn - interleave_depth`; after the wrap it still retires
|
|
164
|
+
* the pre-wrap blocks instead of keeping them forever.
|
|
165
|
+
*/
|
|
166
|
+
cleanup_by_sbn(current_sbn: number): Uint32Array;
|
|
167
|
+
/**
|
|
168
|
+
* Get sub-blocks (N) parameter from OTI
|
|
169
|
+
*/
|
|
170
|
+
get_sub_blocks(): number;
|
|
171
|
+
/**
|
|
172
|
+
* Get number of pending blocks
|
|
173
|
+
*/
|
|
174
|
+
pending_blocks(): number;
|
|
175
|
+
/**
|
|
176
|
+
* Get symbol size (T) parameter from OTI
|
|
177
|
+
*/
|
|
178
|
+
get_symbol_size(): number;
|
|
179
|
+
/**
|
|
180
|
+
* `iso-ssbg1-v1` only: retire the held source symbols that no repair can
|
|
181
|
+
* place any more, by the same rule as `cleanup_by_ss_start`, without
|
|
182
|
+
* retiring any block. For a caller that retires blocks itself, by their
|
|
183
|
+
* deadlines (`cleanup_blocks_detailed`), and needs only this half. Returns
|
|
184
|
+
* how many it retired.
|
|
185
|
+
*/
|
|
186
|
+
retire_unplaced(current: number): number;
|
|
187
|
+
/**
|
|
188
|
+
* Configure FEC directly from catalog parameters (K, T).
|
|
189
|
+
*
|
|
190
|
+
* Preferred over `configure()` when the player has catalog-level params
|
|
191
|
+
* (fecSourceSymbols, fecSymbolSize) rather than raw 12-byte OTI.
|
|
192
|
+
* Derives F = K * T (Z=1, N=1, Al=8) per RFC 6330.
|
|
193
|
+
*/
|
|
194
|
+
configure_params(k: number, symbol_size: number): void;
|
|
195
|
+
/**
|
|
196
|
+
* The `fec.blockProfile` token this decoder was built for.
|
|
197
|
+
*/
|
|
198
|
+
get_block_profile(): string;
|
|
199
|
+
/**
|
|
200
|
+
* Get source blocks (Z) parameter from OTI
|
|
201
|
+
*/
|
|
202
|
+
get_source_blocks(): number;
|
|
203
|
+
/**
|
|
204
|
+
* `iso-ssbg1-v1` only: retire every block, and every held source symbol,
|
|
205
|
+
* lying more than `interleave_depth` blocks behind SS_ID `current`, the
|
|
206
|
+
* newest SS_ID the caller has seen (no block start or held source follows
|
|
207
|
+
* it). A block start or held source that `current` has moved at least
|
|
208
|
+
* half the SS_ID space past no longer precedes it and is retired too
|
|
209
|
+
* (`iso_past_horizon`).
|
|
210
|
+
*
|
|
211
|
+
* Blocks have no SBN under ssbg_mode1, so distance is measured on the
|
|
212
|
+
* first SS_ID: a block starting at `s` is
|
|
213
|
+
* `serial_precedes(s, current) ? floor(serial_distance(s, current) / K) : 0`
|
|
214
|
+
* blocks behind, a lower bound because no block exceeds the configured K
|
|
215
|
+
* (`iso_blocks_behind_lower_bound`, shared with the TypeScript worker and
|
|
216
|
+
* FECManager). Returns the retired block starts.
|
|
217
|
+
*/
|
|
218
|
+
cleanup_by_ss_start(current: number): Uint32Array;
|
|
219
|
+
/**
|
|
220
|
+
* Get current interleave depth
|
|
221
|
+
*/
|
|
222
|
+
get_interleave_depth(): number;
|
|
223
|
+
/**
|
|
224
|
+
* Finalize only the source blocks whose host-owned deadlines fired.
|
|
225
|
+
* Keys are SBNs under `k-padded-v1` and SS_Starts under `iso-ssbg1-v1`.
|
|
226
|
+
*
|
|
227
|
+
* The JavaScript FEC manager owns per-block repair grace. A timeout for one
|
|
228
|
+
* block must therefore not run the decoder's global age scan and evict a
|
|
229
|
+
* peer block that is still waiting for fetched repair.
|
|
230
|
+
*/
|
|
231
|
+
cleanup_blocks_detailed(sbns: Uint32Array): void;
|
|
232
|
+
/**
|
|
233
|
+
* Create a new FEC decoder
|
|
234
|
+
*
|
|
235
|
+
* # Arguments
|
|
236
|
+
* * `interleave_depth` - Explicit positive number of interleaved blocks.
|
|
237
|
+
* * `block_profile` - Catalog `fec.blockProfile`: `"k-padded-v1"` or
|
|
238
|
+
* `"iso-ssbg1-v1"`. Required; any other value is refused.
|
|
239
|
+
*/
|
|
240
|
+
constructor(interleave_depth: number, block_profile: string);
|
|
241
|
+
/**
|
|
242
|
+
* Flush all pending decoder state while preserving configuration.
|
|
243
|
+
*/
|
|
244
|
+
flush(): void;
|
|
245
|
+
/**
|
|
246
|
+
* Get K (symbols per block) derived from OTI
|
|
247
|
+
*/
|
|
248
|
+
get_k(): number;
|
|
249
|
+
/**
|
|
250
|
+
* Configure FEC from 12-byte OTI
|
|
251
|
+
*
|
|
252
|
+
* # Arguments
|
|
253
|
+
* * `oti` - 12-byte Object Transmission Information from S-TSID fecOTI
|
|
254
|
+
*/
|
|
255
|
+
configure(oti: Uint8Array): void;
|
|
256
|
+
/**
|
|
257
|
+
* Get current statistics
|
|
258
|
+
*/
|
|
259
|
+
get_stats(): FecStats;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export class MmtFecEncoder {
|
|
263
|
+
free(): void;
|
|
264
|
+
[Symbol.dispose](): void;
|
|
265
|
+
/**
|
|
266
|
+
* Encode `repair_count` repair symbols for one source block and return them
|
|
267
|
+
* framed per ISO/IEC 23008-1 §C.5.3, concatenated into one flat buffer.
|
|
268
|
+
*
|
|
269
|
+
* Each entry is `REPAIR_FEC_PID_SIZE + symbol_size` bytes:
|
|
270
|
+
* `[SS_Start:4][RSB_length:3][RS_ID:3][SSB_length:3][symbol: T]`.
|
|
271
|
+
* Callers split on that stride; `entry i` is at `i * (13 + T)`.
|
|
272
|
+
*
|
|
273
|
+
* `k-padded-v1`: `block` is the Source Block Number and `source_block`
|
|
274
|
+
* MUST be exactly `K * symbol_size` bytes — the caller pads the final
|
|
275
|
+
* (short) block with zeros, mirroring `InterleavedEncoder` and the FFmpeg
|
|
276
|
+
* path. `SS_Start = block * K` (wrapping), `SSB_length = K`.
|
|
277
|
+
*
|
|
278
|
+
* `iso-ssbg1-v1`: `block` is the SS_Start (the block's first SS_ID) and
|
|
279
|
+
* `source_block` is the block's K' ssbg_mode1 symbols (`1 <= K' <= K`,
|
|
280
|
+
* `len % T == 0`, each a well-formed C.3.3 symbol). RaptorQ runs over K'
|
|
281
|
+
* symbols (F = K'*T) and `SSB_length = K'`.
|
|
282
|
+
*
|
|
283
|
+
* # Arguments
|
|
284
|
+
* * `block` - SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`).
|
|
285
|
+
* * `source_block` - The block's source symbols, as described above.
|
|
286
|
+
* * `repair_count` - Number of repair symbols (P) to generate.
|
|
287
|
+
*/
|
|
288
|
+
encode_repair(block: number, source_block: Uint8Array, repair_count: number): Uint8Array;
|
|
289
|
+
/**
|
|
290
|
+
* Create an encoder for a fixed `(K, symbol_size)` block geometry.
|
|
291
|
+
*
|
|
292
|
+
* Builds the OTI as `ObjectTransmissionInformation::new(K*T, T, 1, 1, 8)`
|
|
293
|
+
* (single source block, single sub-block, byte alignment) — matching the
|
|
294
|
+
* decoder's recovery model in [`FecBlock::try_decode`] — and pre-computes
|
|
295
|
+
* the shared `SourceBlockEncodingPlan` so per-block encoding is cheap.
|
|
296
|
+
*
|
|
297
|
+
* `block_profile` is the catalog `fec.blockProfile` (`"k-padded-v1"` or
|
|
298
|
+
* `"iso-ssbg1-v1"`); any other value is refused. Under `iso-ssbg1-v1`, K
|
|
299
|
+
* is the maximum SSB_length.
|
|
300
|
+
*/
|
|
301
|
+
constructor(k: number, symbol_size: number, block_profile: string);
|
|
302
|
+
/**
|
|
303
|
+
* The configured 12-byte OTI (RFC 6330 §3.3.2 Common FEC OTI).
|
|
304
|
+
*
|
|
305
|
+
* Publishers (BLO-8975 / BLO-8990 catalog-gen) emit this so the player's
|
|
306
|
+
* [`MmtFecDecoder::configure`] reconstructs identical block geometry. The
|
|
307
|
+
* bytes round-trip exactly through `OtiParams::from_bytes`.
|
|
308
|
+
*/
|
|
309
|
+
oti(): Uint8Array;
|
|
310
|
+
/**
|
|
311
|
+
* Symbol size (T) in bytes.
|
|
312
|
+
*/
|
|
313
|
+
readonly symbol_size: number;
|
|
314
|
+
/**
|
|
315
|
+
* The `fec.blockProfile` token this encoder was built for.
|
|
316
|
+
*/
|
|
317
|
+
readonly block_profile: string;
|
|
318
|
+
/**
|
|
319
|
+
* Source symbols per block (K).
|
|
320
|
+
*/
|
|
321
|
+
readonly k: number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* MMT MPU fragment type (ISO/IEC 23008-1 MPU fragmentation), exposed to JS as
|
|
326
|
+
* a u8-backed enum. Mirrors `mmt_core::header::FragmentType`.
|
|
327
|
+
*/
|
|
328
|
+
export enum MmtFragmentType {
|
|
329
|
+
/**
|
|
330
|
+
* Initialization segment (ftyp + moov).
|
|
331
|
+
*/
|
|
332
|
+
Init = 0,
|
|
333
|
+
/**
|
|
334
|
+
* Movie fragment (moof + mdat).
|
|
335
|
+
*/
|
|
336
|
+
Fragment = 1,
|
|
337
|
+
/**
|
|
338
|
+
* Media Fragment Unit (individual samples / NAL units).
|
|
339
|
+
*/
|
|
340
|
+
Mfu = 2,
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
export class MmtPacketizer {
|
|
344
|
+
free(): void;
|
|
345
|
+
[Symbol.dispose](): void;
|
|
346
|
+
/**
|
|
347
|
+
* Create a packetizer for the given link MTU (bytes).
|
|
348
|
+
*
|
|
349
|
+
* Errors if `mtu` is too small to leave any room for the MMTP/MPU/MFU
|
|
350
|
+
* header overhead (i.e. `max_payload` would be 0) — otherwise `fragment()`
|
|
351
|
+
* could never make progress. Callers in the ingress arms (BLO-8975 /
|
|
352
|
+
* BLO-8990) get a clear error here instead of a hung JS thread.
|
|
353
|
+
*/
|
|
354
|
+
constructor(mtu: number);
|
|
355
|
+
/**
|
|
356
|
+
* MTU-fragment `payload`, returning fragment boundary offsets as a flat
|
|
357
|
+
* `[0, b1, b2, ..., payload.len()]` (count + 1 entries). Fragment `i` is
|
|
358
|
+
* `payload[offsets[i]..offsets[i+1]]`.
|
|
359
|
+
*
|
|
360
|
+
* Returns offsets rather than `Vec<Vec<u8>>` so JS slices the original
|
|
361
|
+
* buffer zero-copy (`payload.subarray(offsets[i], offsets[i+1])`) instead
|
|
362
|
+
* of paying one copy per fragment across the wasm boundary. An empty
|
|
363
|
+
* payload yields `[0]` (zero fragments).
|
|
364
|
+
*/
|
|
365
|
+
fragment(payload: Uint8Array): Uint32Array;
|
|
366
|
+
/**
|
|
367
|
+
* Build one complete MFU packet (MMTP + MPU + MFU headers + `sample_data`)
|
|
368
|
+
* and return its bytes.
|
|
369
|
+
*/
|
|
370
|
+
build_mfu(packet_id: number, mpu_sequence: number, movie_fragment_sequence: number, sample_number: number, sample_data: Uint8Array, rap_flag: boolean): Uint8Array;
|
|
371
|
+
/**
|
|
372
|
+
* Build one complete MPU packet (MMTP header + MPU header + `payload`) and
|
|
373
|
+
* return its bytes. `fragment_type` selects Init / Fragment / Mfu framing.
|
|
374
|
+
*/
|
|
375
|
+
build_mpu(packet_id: number, mpu_sequence: number, fragment_type: MmtFragmentType, payload: Uint8Array, rap_flag: boolean): Uint8Array;
|
|
376
|
+
/**
|
|
377
|
+
* Maximum MFU payload bytes per packet at this MTU (MTU minus MMTP+MPU+MFU
|
|
378
|
+
* header overhead). Use this to size access-unit fragments before
|
|
379
|
+
* `build_mfu`.
|
|
380
|
+
*/
|
|
381
|
+
readonly max_payload: number;
|
|
382
|
+
/**
|
|
383
|
+
* Configured MTU.
|
|
384
|
+
*/
|
|
385
|
+
readonly mtu: number;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
export class MmtReassembler {
|
|
389
|
+
free(): void;
|
|
390
|
+
[Symbol.dispose](): void;
|
|
391
|
+
/**
|
|
392
|
+
* Create a CLOCK-FREE reassembler — no timeout, with generic buffers and
|
|
393
|
+
* authored active and continuation-only run state bounded by `max_buffered`. For hosts with no
|
|
394
|
+
* monotonic clock that never call [`cleanup_timeouts`](Self::cleanup_timeouts),
|
|
395
|
+
* there is no `timeout_ms` to supply, so none is invented. `max_buffered` is
|
|
396
|
+
* REQUIRED, derived from the catalog (rejects `0`).
|
|
397
|
+
*
|
|
398
|
+
* Exposed to JS as the static `MmtReassembler.clock_free(max_buffered)`.
|
|
399
|
+
*/
|
|
400
|
+
static clock_free(max_buffered: number): MmtReassembler;
|
|
401
|
+
/**
|
|
402
|
+
* Switch to a catalog/in-band-derived numeric deadline without dropping
|
|
403
|
+
* in-flight MFUs.
|
|
404
|
+
*/
|
|
405
|
+
set_timeout(timeout_ms: number): void;
|
|
406
|
+
/**
|
|
407
|
+
* Add a fragment. A valid incomplete data unit returns `null`; a completed
|
|
408
|
+
* one returns its MFU. Malformed or conflicting authored state throws a JS
|
|
409
|
+
* `Error` whose stable `code` property is the core rejection code.
|
|
410
|
+
*
|
|
411
|
+
* `now` is `performance.now()` (ms), floored to the engine clock (D-1).
|
|
412
|
+
* Consumes `fragment`.
|
|
413
|
+
*/
|
|
414
|
+
add_fragment(now: number, fragment: MfuFragmentJs): ReassembledMfuJs | undefined;
|
|
415
|
+
/**
|
|
416
|
+
* Drop one stream's buffered and dedup state without disturbing other
|
|
417
|
+
* tracks sharing this reassembler instance.
|
|
418
|
+
*/
|
|
419
|
+
reset_stream(stream_identity: number): void;
|
|
420
|
+
/**
|
|
421
|
+
* Switch to reliable-MoQ clock-free operation without dropping in-flight MFUs.
|
|
422
|
+
*/
|
|
423
|
+
set_clock_free(): void;
|
|
424
|
+
/**
|
|
425
|
+
* Earliest absolute `performance.now()` millisecond tick requiring cleanup.
|
|
426
|
+
*/
|
|
427
|
+
next_timeout_at(): number | undefined;
|
|
428
|
+
/**
|
|
429
|
+
* Expire incomplete objects past the timeout and enforce the memory limit.
|
|
430
|
+
* The host drives this — see the constructor note.
|
|
431
|
+
*/
|
|
432
|
+
cleanup_timeouts(now: number): void;
|
|
433
|
+
/**
|
|
434
|
+
* Create a reassembler. Both args are REQUIRED — no defaults.
|
|
435
|
+
*
|
|
436
|
+
* The caller derives them from the catalog (timeout from the FEC interleave
|
|
437
|
+
* span; `max_buffered` from the count of concurrent in-flight samples),
|
|
438
|
+
* never a literal. The constructor rejects `0` for either: the engine's own
|
|
439
|
+
* `new` currently accepts `0` and then silently breaks reassembly
|
|
440
|
+
* (`max_buffered = 0` evicts every buffer on each `cleanup_timeouts`), so the
|
|
441
|
+
* facade refuses it at the boundary.
|
|
442
|
+
*
|
|
443
|
+
* * `timeout_ms` — incomplete-MFU timeout in ms (> 0).
|
|
444
|
+
* * `max_buffered` — max concurrent incomplete objects (> 0).
|
|
445
|
+
*
|
|
446
|
+
* `max_buffered` is enforced eagerly on every `add_fragment`; active and
|
|
447
|
+
* continuation-only producer runs share the bound, and a distinct new run
|
|
448
|
+
* throws `active-data-unit-limit` at capacity.
|
|
449
|
+
* `timeout_ms` adds time-based expiry of permanently-incomplete (tail-lost)
|
|
450
|
+
* MFUs, which the host activates by driving
|
|
451
|
+
* [`cleanup_timeouts`](Self::cleanup_timeouts) periodically. A host with no
|
|
452
|
+
* clock should use [`clock_free`](Self::clock_free).
|
|
453
|
+
*/
|
|
454
|
+
constructor(timeout_ms: number, max_buffered: number);
|
|
455
|
+
/**
|
|
456
|
+
* Drop all buffered fragments and dedup state (call on stream end / seek).
|
|
457
|
+
*/
|
|
458
|
+
flush(): void;
|
|
459
|
+
/**
|
|
460
|
+
* Flush buffered state and zero statistics.
|
|
461
|
+
*/
|
|
462
|
+
reset(): void;
|
|
463
|
+
/**
|
|
464
|
+
* Statistics snapshot.
|
|
465
|
+
*/
|
|
466
|
+
stats(): ReassemblerStatsJs;
|
|
467
|
+
/**
|
|
468
|
+
* Number of incomplete objects currently buffered.
|
|
469
|
+
*/
|
|
470
|
+
readonly buffered_count: number;
|
|
471
|
+
/**
|
|
472
|
+
* Fragments retained across all incomplete objects.
|
|
473
|
+
*/
|
|
474
|
+
readonly pending_fragment_count: number;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
export class MmtSampleCombiner {
|
|
478
|
+
free(): void;
|
|
479
|
+
[Symbol.dispose](): void;
|
|
480
|
+
/**
|
|
481
|
+
* Drop one stream's buffered and registered-size state without
|
|
482
|
+
* disturbing other streams sharing this combiner instance.
|
|
483
|
+
*/
|
|
484
|
+
reset_stream(stream_identity: number): void;
|
|
485
|
+
/**
|
|
486
|
+
* Discard samples whose oldest held segment has waited past
|
|
487
|
+
* `timeout_ms`. The host drives this, mirroring
|
|
488
|
+
* [`MmtReassembler::cleanup_timeouts`].
|
|
489
|
+
*/
|
|
490
|
+
cleanup_timeouts(now: number, timeout_ms: number): void;
|
|
491
|
+
/**
|
|
492
|
+
* Register the authored sample size from the host's own FT=1
|
|
493
|
+
* (movie-fragment-metadata) parse. `stream_identity` is `None` for a
|
|
494
|
+
* single-stream host.
|
|
495
|
+
*/
|
|
496
|
+
register_authored_size(stream_identity: number | null | undefined, mpu_sequence_number: number, movie_fragment_sequence_number: number, sample_number: number, size: number): CombinedSampleJs | undefined;
|
|
497
|
+
/**
|
|
498
|
+
* * `max_buffered` — max concurrent incomplete samples (> 0), derived from
|
|
499
|
+
* the catalog (e.g. concurrent in-flight samples across tracks). A full
|
|
500
|
+
* table evicts its oldest sample by insertion order, so one lost
|
|
501
|
+
* subsample data unit cannot wedge every later sample.
|
|
502
|
+
* * `require_authored_size` — when true, an offset-zero data unit with no
|
|
503
|
+
* registered authored size waits for one instead of passing through as
|
|
504
|
+
* a whole sample. Pass true when the host always drives FT=1 into
|
|
505
|
+
* `register_authored_size`; false keeps the pre-moqcast-#37
|
|
506
|
+
* immediate-passthrough shape.
|
|
507
|
+
* * `max_segments_per_sample` — max subsample data units held for one
|
|
508
|
+
* sample at once (> 0).
|
|
509
|
+
*/
|
|
510
|
+
constructor(max_buffered: number, require_authored_size: boolean, max_segments_per_sample: number);
|
|
511
|
+
/**
|
|
512
|
+
* Drop all buffered subsample state (call on stream end / seek).
|
|
513
|
+
*/
|
|
514
|
+
flush(): void;
|
|
515
|
+
/**
|
|
516
|
+
* Statistics snapshot.
|
|
517
|
+
*/
|
|
518
|
+
stats(): SampleCombinerStatsJs;
|
|
519
|
+
/**
|
|
520
|
+
* Add one reassembled data unit (from [`MmtReassembler::add_fragment`]).
|
|
521
|
+
* Returns the combined sample once every constituent data unit has
|
|
522
|
+
* arrived and totals the authored size. `now` is `performance.now()`
|
|
523
|
+
* (ms), floored to the engine clock (D-1). Consumes `mfu`.
|
|
524
|
+
*/
|
|
525
|
+
add_mfu(now: number, mfu: ReassembledMfuJs): CombinedSampleJs | undefined;
|
|
526
|
+
/**
|
|
527
|
+
* Number of incomplete samples currently buffered.
|
|
528
|
+
*/
|
|
529
|
+
readonly pending_count: number;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export class MoqEncodedBlock {
|
|
533
|
+
private constructor();
|
|
534
|
+
free(): void;
|
|
535
|
+
[Symbol.dispose](): void;
|
|
536
|
+
getRepairSymbol(index: number): Uint8Array | undefined;
|
|
537
|
+
getSourceSymbol(index: number): Uint8Array | undefined;
|
|
538
|
+
repairSymbolCount(): number;
|
|
539
|
+
sourceSymbolCount(): number;
|
|
540
|
+
getOti(): Uint8Array;
|
|
541
|
+
readonly original_len: number;
|
|
542
|
+
readonly k: number;
|
|
543
|
+
readonly p: number;
|
|
544
|
+
readonly block_id: number;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
export class MoqFecConfig {
|
|
548
|
+
free(): void;
|
|
549
|
+
[Symbol.dispose](): void;
|
|
550
|
+
maxBlockSize(): number;
|
|
551
|
+
overheadRatio(): number;
|
|
552
|
+
constructor(symbol_size: number, k: number, p: number, interleave_depth: number);
|
|
553
|
+
readonly symbol_size: number;
|
|
554
|
+
readonly interleaveDepth: number;
|
|
555
|
+
readonly k: number;
|
|
556
|
+
readonly p: number;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
export class MoqFecDecoder {
|
|
560
|
+
free(): void;
|
|
561
|
+
[Symbol.dispose](): void;
|
|
562
|
+
resetBlock(block_id: number): void;
|
|
563
|
+
getBlockData(block_id: number): Uint8Array;
|
|
564
|
+
addRepairSymbol(block_id: number, esi: number, symbol: Uint8Array): Uint8Array | undefined;
|
|
565
|
+
addSourceSymbol(block_id: number, esi: number, symbol: Uint8Array, original_len?: number | null): Uint8Array | undefined;
|
|
566
|
+
isBlockComplete(block_id: number): boolean;
|
|
567
|
+
constructor(config: MoqFecConfig, oti: Uint8Array);
|
|
568
|
+
getStats(): MoqFecStatsJs;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export class MoqFecEncoder {
|
|
572
|
+
free(): void;
|
|
573
|
+
[Symbol.dispose](): void;
|
|
574
|
+
blockCount(): number;
|
|
575
|
+
encodeBlock(data: Uint8Array): MoqEncodedBlock;
|
|
576
|
+
constructor(config: MoqFecConfig);
|
|
577
|
+
getOti(): Uint8Array;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export class MoqFecStatsJs {
|
|
581
|
+
private constructor();
|
|
582
|
+
free(): void;
|
|
583
|
+
[Symbol.dispose](): void;
|
|
584
|
+
recoveryRate(): number;
|
|
585
|
+
effectiveLossRate(): number;
|
|
586
|
+
readonly blocksComplete: number;
|
|
587
|
+
readonly interleaveDepth: number;
|
|
588
|
+
readonly blocksIncomplete: number;
|
|
589
|
+
readonly k: number;
|
|
590
|
+
readonly p: number;
|
|
591
|
+
readonly totalSymbolsReceived: number;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export class ReassembledMfuJs {
|
|
595
|
+
private constructor();
|
|
596
|
+
free(): void;
|
|
597
|
+
[Symbol.dispose](): void;
|
|
598
|
+
readonly attribution: number | undefined;
|
|
599
|
+
readonly sample_number: number | undefined;
|
|
600
|
+
readonly fragment_count: number;
|
|
601
|
+
readonly stream_identity: number | undefined;
|
|
602
|
+
readonly mpu_sequence_number: number;
|
|
603
|
+
readonly packet_sequence_numbers: Uint32Array | undefined;
|
|
604
|
+
readonly movie_fragment_sequence_number: number | undefined;
|
|
605
|
+
readonly repaired_packet_sequence_numbers: Uint32Array | undefined;
|
|
606
|
+
/**
|
|
607
|
+
* The reassembled bytes. Two copies per access (a Rust-side clone — a
|
|
608
|
+
* `&self` getter cannot move out of `Bytes` — plus the boundary
|
|
609
|
+
* `Uint8Array` copy), re-incurred on every read: read once and cache.
|
|
610
|
+
* A zero-copy linear-memory view is not an option — it cannot safely
|
|
611
|
+
* outlive the next reassembler call.
|
|
612
|
+
*/
|
|
613
|
+
readonly data: Uint8Array;
|
|
614
|
+
/**
|
|
615
|
+
* This DU's authored base byte offset within its sample (moqcast #37).
|
|
616
|
+
* 0 for a whole-sample DU; nonzero identifies one subsample DU among
|
|
617
|
+
* siblings partitioning an oversized sample. Feed into
|
|
618
|
+
* [`MmtSampleCombiner`] to reassemble the full sample.
|
|
619
|
+
*/
|
|
620
|
+
readonly offset: number | undefined;
|
|
621
|
+
readonly priority: number | undefined;
|
|
622
|
+
readonly rap_flag: boolean;
|
|
623
|
+
readonly timestamp: number;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
export class ReassemblerStatsJs {
|
|
627
|
+
private constructor();
|
|
628
|
+
free(): void;
|
|
629
|
+
[Symbol.dispose](): void;
|
|
630
|
+
total_fragments: bigint;
|
|
631
|
+
reassembled_mfus: bigint;
|
|
632
|
+
timed_out_mfus: bigint;
|
|
633
|
+
evicted_memory_limit: bigint;
|
|
634
|
+
/**
|
|
635
|
+
* Incomplete data units released by the MMT policy's clock-free
|
|
636
|
+
* replacement at `max_buffered` (BLO-31513). Distinct from
|
|
637
|
+
* `evicted_memory_limit`, which counts the generic engine's own
|
|
638
|
+
* memory-limit eviction; a host wanting every bound-driven drop sums the
|
|
639
|
+
* two. Surfaced here because the wasm facade is a host surface: without
|
|
640
|
+
* it, sustained head loss is silent on wasm-backed engines.
|
|
641
|
+
*/
|
|
642
|
+
evicted_data_units: bigint;
|
|
643
|
+
out_of_order_fragments: bigint;
|
|
644
|
+
duplicate_fragments: bigint;
|
|
645
|
+
ambiguous_fallback_fragments: bigint;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
export class RecoveredSet {
|
|
649
|
+
private constructor();
|
|
650
|
+
free(): void;
|
|
651
|
+
[Symbol.dispose](): void;
|
|
652
|
+
/**
|
|
653
|
+
* FEC set index within the slot.
|
|
654
|
+
*/
|
|
655
|
+
readonly fec_set_index: number;
|
|
656
|
+
/**
|
|
657
|
+
* Solana slot of the recovered FEC set (JS: `BigInt`).
|
|
658
|
+
*/
|
|
659
|
+
readonly slot: bigint;
|
|
660
|
+
/**
|
|
661
|
+
* The reassembled FEC-set bytes. Two copies per access (a Rust-side clone
|
|
662
|
+
* — a `&self` getter cannot move the `Box` — plus the boundary
|
|
663
|
+
* `Uint8Array` copy), re-incurred on every read: read once and cache.
|
|
664
|
+
* Same pattern as [`ReassembledMfuJs::data`].
|
|
665
|
+
*/
|
|
666
|
+
readonly payload: Uint8Array;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
export class SampleCombinerStatsJs {
|
|
670
|
+
private constructor();
|
|
671
|
+
free(): void;
|
|
672
|
+
[Symbol.dispose](): void;
|
|
673
|
+
combined_samples: bigint;
|
|
674
|
+
passthrough_samples: bigint;
|
|
675
|
+
timed_out_samples: bigint;
|
|
676
|
+
/**
|
|
677
|
+
* Incomplete samples discarded to enforce `max_buffered`.
|
|
678
|
+
*/
|
|
679
|
+
evicted_samples: bigint;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
export class ShredFecBuffer {
|
|
683
|
+
free(): void;
|
|
684
|
+
[Symbol.dispose](): void;
|
|
685
|
+
/**
|
|
686
|
+
* Call periodically (every ~50ms) to attempt RS recovery on a stale FEC set.
|
|
687
|
+
* Returns one recovered set's bytes or null — the caller should loop until null
|
|
688
|
+
* to drain a backlog (a single set per tick cannot keep up with the shred rate).
|
|
689
|
+
*
|
|
690
|
+
* The payload alone carries no set identity; use
|
|
691
|
+
* [`try_recover_all_with_identity`](Self::try_recover_all_with_identity) when
|
|
692
|
+
* the caller needs to attribute the bytes to a `(slot, fec_set_index)`. Both
|
|
693
|
+
* methods drain the SAME backlog (a set is returned by whichever is called
|
|
694
|
+
* first, never both), and every call advances the staleness clock — run
|
|
695
|
+
* exactly one variant per buffer, not both interleaved.
|
|
696
|
+
*/
|
|
697
|
+
try_recover_all(_now_ms: number): Uint8Array | undefined;
|
|
698
|
+
/**
|
|
699
|
+
* Number of incomplete (non-tombstone) FEC sets buffered.
|
|
700
|
+
*/
|
|
701
|
+
pending_fec_sets(): number;
|
|
702
|
+
/**
|
|
703
|
+
* Identity-carrying variant of [`try_recover_all`](Self::try_recover_all):
|
|
704
|
+
* same recovery pass, same drain semantics (loop until null), but the result
|
|
705
|
+
* also carries the recovered set's `(slot, fec_set_index)` key. ADDITIVE —
|
|
706
|
+
* `try_recover_all` is unchanged (the in-flight pim player uses it); both
|
|
707
|
+
* methods drain the same underlying backlog, so a set is returned by
|
|
708
|
+
* whichever is called first, never both. They are alternatives for a single
|
|
709
|
+
* consumer — interleaving them doubles the tick rate, aging pending sets out
|
|
710
|
+
* of the recovery window in half the wall-clock time.
|
|
711
|
+
*
|
|
712
|
+
* JS ownership: the returned [`RecoveredSet`] is wasm-owned — call `.free()`
|
|
713
|
+
* after consuming each set (see the type's docs), unlike `try_recover_all`'s
|
|
714
|
+
* auto-freed `Uint8Array`.
|
|
715
|
+
*/
|
|
716
|
+
try_recover_all_with_identity(_now_ms: number): RecoveredSet | undefined;
|
|
717
|
+
constructor(timeout_ms: bigint, max_buffered: number);
|
|
718
|
+
/**
|
|
719
|
+
* Feed a data or coding shred (wire-v3 erasure shard).
|
|
720
|
+
* Returns reassembled FEC-set bytes if the set just completed, null otherwise.
|
|
721
|
+
*/
|
|
722
|
+
add_shred(slot: bigint, fec_set_index: number, local_index: number, num_data: number, num_coding: number, is_coding: boolean, payload: Uint8Array, last_in_set: boolean): Uint8Array | undefined;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
export class ShredReassembler {
|
|
726
|
+
free(): void;
|
|
727
|
+
[Symbol.dispose](): void;
|
|
728
|
+
/**
|
|
729
|
+
* Number of FEC sets currently buffered (incomplete).
|
|
730
|
+
*/
|
|
731
|
+
pending_fec_sets(): number;
|
|
732
|
+
constructor(timeout_ms: bigint, max_buffered: number);
|
|
733
|
+
/**
|
|
734
|
+
* Feed one data shred.
|
|
735
|
+
* Returns the reassembled FEC-set bytes when the set is complete, otherwise null.
|
|
736
|
+
*/
|
|
737
|
+
add_shred(slot: bigint, fec_set_index: number, local_index: number, payload: Uint8Array, last_in_set: boolean): Uint8Array | undefined;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* True when an Annex B access unit contains a keyframe slice for the
|
|
742
|
+
* catalog codec's family. Every NAL unit header is validated.
|
|
743
|
+
*/
|
|
744
|
+
export function annexb_access_unit_is_keyframe(codec: string, access_unit: Uint8Array): boolean;
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* The RFC 6381 codec string of an HEVC stream derived from its SPS NAL unit
|
|
748
|
+
* (ISO/IEC 14496-15 Annex E.3), using the sample entry (`hev1`/`hvc1`) of
|
|
749
|
+
* the catalog codec string.
|
|
750
|
+
*/
|
|
751
|
+
export function hevc_codec_string(codec: string, sps: Uint8Array): string;
|
|
752
|
+
|
|
753
|
+
/**
|
|
754
|
+
* The `hvcC` HEVCDecoderConfigurationRecord (ISO/IEC 14496-15 8.3.3.1)
|
|
755
|
+
* built from the VPS, SPS and PPS carried in an Annex B IRAP access unit;
|
|
756
|
+
* usable as the fMP4 `hvcC` box payload and the WebCodecs `description`.
|
|
757
|
+
* Samples must then be 4-byte length-prefixed (`lengthSizeMinusOne` = 3).
|
|
758
|
+
*/
|
|
759
|
+
export function hevc_hvcc_from_annexb(codec: string, access_unit: Uint8Array): Uint8Array;
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* Initialize the WASM module
|
|
763
|
+
*/
|
|
764
|
+
export function init(): void;
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* True when one NAL unit (no start code or length prefix) is a keyframe
|
|
768
|
+
* slice for the catalog codec's family: an AVC IDR slice (H.264 Table 7-1)
|
|
769
|
+
* or an HEVC IRAP picture (H.265 Table 7-1, `nal_unit_type` 16..=23).
|
|
770
|
+
* Throws for an unknown family or a malformed NAL unit header.
|
|
771
|
+
*/
|
|
772
|
+
export function is_keyframe_nal(codec: string, nal: Uint8Array): boolean;
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* Exact browser-facing MoQ FEC contract implemented by this module.
|
|
776
|
+
*/
|
|
777
|
+
export function moq_fec_contract_version(): string;
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Hash one authenticated object on the browser main thread.
|
|
781
|
+
*/
|
|
782
|
+
export function source_auth_blake3(object: Uint8Array): Uint8Array;
|
|
783
|
+
|
|
784
|
+
/**
|
|
785
|
+
* Build one `iso-ssbg1-v1` source symbol (ISO/IEC 23008-1 C.3.3
|
|
786
|
+
* ssbg_mode1): `u16be(len) || packet || zero padding` to `symbol_size` bytes.
|
|
787
|
+
* `packet` is the protected MMTP packet without its Source FEC Payload ID;
|
|
788
|
+
* a packet with `len + 2 > symbol_size` is refused.
|
|
789
|
+
*/
|
|
790
|
+
export function ssbg1_source_symbol(packet: Uint8Array, symbol_size: number): Uint8Array;
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* The sample entry four-character code (`avc1`, `avc3`, `hev1`, `hvc1`)
|
|
794
|
+
* named by a catalog codec string. Throws for any other codec family.
|
|
795
|
+
*/
|
|
796
|
+
export function video_sample_entry_from_codec_string(codec: string): string;
|
|
797
|
+
|
|
798
|
+
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
799
|
+
|
|
800
|
+
export interface InitOutput {
|
|
801
|
+
readonly memory: WebAssembly.Memory;
|
|
802
|
+
readonly __wbg_combinedsamplejs_free: (a: number, b: number) => void;
|
|
803
|
+
readonly __wbg_fecstats_free: (a: number, b: number) => void;
|
|
804
|
+
readonly __wbg_get_fecstats_blocks_complete: (a: number) => bigint;
|
|
805
|
+
readonly __wbg_get_fecstats_blocks_delivery_failed: (a: number) => bigint;
|
|
806
|
+
readonly __wbg_get_fecstats_blocks_failed: (a: number) => bigint;
|
|
807
|
+
readonly __wbg_get_fecstats_blocks_recovered: (a: number) => bigint;
|
|
808
|
+
readonly __wbg_get_fecstats_bytes_recovered: (a: number) => bigint;
|
|
809
|
+
readonly __wbg_get_fecstats_repair_packets: (a: number) => bigint;
|
|
810
|
+
readonly __wbg_get_fecstats_source_packets: (a: number) => bigint;
|
|
811
|
+
readonly __wbg_get_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number) => bigint;
|
|
812
|
+
readonly __wbg_mfufragmentjs_free: (a: number, b: number) => void;
|
|
813
|
+
readonly __wbg_mmtfecdecoder_free: (a: number, b: number) => void;
|
|
814
|
+
readonly __wbg_mmtfecencoder_free: (a: number, b: number) => void;
|
|
815
|
+
readonly __wbg_mmtpacketizer_free: (a: number, b: number) => void;
|
|
816
|
+
readonly __wbg_mmtreassembler_free: (a: number, b: number) => void;
|
|
817
|
+
readonly __wbg_mmtsamplecombiner_free: (a: number, b: number) => void;
|
|
818
|
+
readonly __wbg_moqencodedblock_free: (a: number, b: number) => void;
|
|
819
|
+
readonly __wbg_moqfecconfig_free: (a: number, b: number) => void;
|
|
820
|
+
readonly __wbg_moqfecdecoder_free: (a: number, b: number) => void;
|
|
821
|
+
readonly __wbg_moqfecencoder_free: (a: number, b: number) => void;
|
|
822
|
+
readonly __wbg_moqfecstatsjs_free: (a: number, b: number) => void;
|
|
823
|
+
readonly __wbg_reassembledmfujs_free: (a: number, b: number) => void;
|
|
824
|
+
readonly __wbg_reassemblerstatsjs_free: (a: number, b: number) => void;
|
|
825
|
+
readonly __wbg_recoveredset_free: (a: number, b: number) => void;
|
|
826
|
+
readonly __wbg_samplecombinerstatsjs_free: (a: number, b: number) => void;
|
|
827
|
+
readonly __wbg_set_fecstats_blocks_complete: (a: number, b: bigint) => void;
|
|
828
|
+
readonly __wbg_set_fecstats_blocks_delivery_failed: (a: number, b: bigint) => void;
|
|
829
|
+
readonly __wbg_set_fecstats_blocks_failed: (a: number, b: bigint) => void;
|
|
830
|
+
readonly __wbg_set_fecstats_blocks_recovered: (a: number, b: bigint) => void;
|
|
831
|
+
readonly __wbg_set_fecstats_bytes_recovered: (a: number, b: bigint) => void;
|
|
832
|
+
readonly __wbg_set_fecstats_repair_packets: (a: number, b: bigint) => void;
|
|
833
|
+
readonly __wbg_set_fecstats_source_packets: (a: number, b: bigint) => void;
|
|
834
|
+
readonly __wbg_set_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number, b: bigint) => void;
|
|
835
|
+
readonly __wbg_shredfecbuffer_free: (a: number, b: number) => void;
|
|
836
|
+
readonly __wbg_shredreassembler_free: (a: number, b: number) => void;
|
|
837
|
+
readonly annexb_access_unit_is_keyframe: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
838
|
+
readonly combinedsamplejs_attribution: (a: number) => number;
|
|
839
|
+
readonly combinedsamplejs_data: (a: number) => [number, number];
|
|
840
|
+
readonly combinedsamplejs_movie_fragment_sequence_number: (a: number) => number;
|
|
841
|
+
readonly combinedsamplejs_mpu_sequence_number: (a: number) => number;
|
|
842
|
+
readonly combinedsamplejs_packet_sequence_numbers: (a: number) => [number, number];
|
|
843
|
+
readonly combinedsamplejs_priority: (a: number) => number;
|
|
844
|
+
readonly combinedsamplejs_rap_flag: (a: number) => number;
|
|
845
|
+
readonly combinedsamplejs_repaired_packet_sequence_numbers: (a: number) => [number, number];
|
|
846
|
+
readonly combinedsamplejs_sample_number: (a: number) => number;
|
|
847
|
+
readonly combinedsamplejs_stream_identity: (a: number) => number;
|
|
848
|
+
readonly combinedsamplejs_subsample_count: (a: number) => number;
|
|
849
|
+
readonly combinedsamplejs_timestamp: (a: number) => number;
|
|
850
|
+
readonly fecstats_new: () => number;
|
|
851
|
+
readonly fecstats_recovery_rate: (a: number) => number;
|
|
852
|
+
readonly hevc_codec_string: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
853
|
+
readonly hevc_hvcc_from_annexb: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
854
|
+
readonly is_keyframe_nal: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
855
|
+
readonly mfufragmentjs_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
856
|
+
readonly mfufragmentjs_set_attribution: (a: number, b: number) => void;
|
|
857
|
+
readonly mfufragmentjs_set_item_id: (a: number, b: number) => void;
|
|
858
|
+
readonly mfufragmentjs_set_packet_delivery: (a: number, b: number, c: number) => void;
|
|
859
|
+
readonly mfufragmentjs_set_priority: (a: number, b: number) => void;
|
|
860
|
+
readonly mfufragmentjs_set_stream_identity: (a: number, b: number) => void;
|
|
861
|
+
readonly mfufragmentjs_with_sample_identity: (a: number, b: number, c: number, d: number) => void;
|
|
862
|
+
readonly mmtfecdecoder_add_repair: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
|
|
863
|
+
readonly mmtfecdecoder_add_source: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
864
|
+
readonly mmtfecdecoder_cleanup_blocks_detailed: (a: number, b: number, c: number) => void;
|
|
865
|
+
readonly mmtfecdecoder_cleanup_by_sbn: (a: number, b: number) => [number, number, number, number];
|
|
866
|
+
readonly mmtfecdecoder_cleanup_by_ss_start: (a: number, b: number) => [number, number, number, number];
|
|
867
|
+
readonly mmtfecdecoder_configure: (a: number, b: number, c: number) => [number, number];
|
|
868
|
+
readonly mmtfecdecoder_configure_params: (a: number, b: number, c: number) => [number, number];
|
|
869
|
+
readonly mmtfecdecoder_flush: (a: number) => void;
|
|
870
|
+
readonly mmtfecdecoder_get_alignment: (a: number) => [number, number, number];
|
|
871
|
+
readonly mmtfecdecoder_get_block_profile: (a: number) => [number, number];
|
|
872
|
+
readonly mmtfecdecoder_get_interleave_depth: (a: number) => number;
|
|
873
|
+
readonly mmtfecdecoder_get_k: (a: number) => [number, number, number];
|
|
874
|
+
readonly mmtfecdecoder_get_source_blocks: (a: number) => [number, number, number];
|
|
875
|
+
readonly mmtfecdecoder_get_stats: (a: number) => number;
|
|
876
|
+
readonly mmtfecdecoder_get_sub_blocks: (a: number) => [number, number, number];
|
|
877
|
+
readonly mmtfecdecoder_get_symbol_size: (a: number) => [number, number, number];
|
|
878
|
+
readonly mmtfecdecoder_new: (a: number, b: number, c: number) => [number, number, number];
|
|
879
|
+
readonly mmtfecdecoder_pending_blocks: (a: number) => number;
|
|
880
|
+
readonly mmtfecdecoder_reset_stats: (a: number) => void;
|
|
881
|
+
readonly mmtfecdecoder_retire_unplaced: (a: number, b: number) => [number, number, number];
|
|
882
|
+
readonly mmtfecencoder_block_profile: (a: number) => [number, number];
|
|
883
|
+
readonly mmtfecencoder_encode_repair: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
884
|
+
readonly mmtfecencoder_k: (a: number) => number;
|
|
885
|
+
readonly mmtfecencoder_new: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
886
|
+
readonly mmtfecencoder_oti: (a: number) => [number, number];
|
|
887
|
+
readonly mmtfecencoder_symbol_size: (a: number) => number;
|
|
888
|
+
readonly mmtpacketizer_build_mfu: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
|
|
889
|
+
readonly mmtpacketizer_build_mpu: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
|
|
890
|
+
readonly mmtpacketizer_fragment: (a: number, b: number, c: number) => [number, number];
|
|
891
|
+
readonly mmtpacketizer_max_payload: (a: number) => number;
|
|
892
|
+
readonly mmtpacketizer_mtu: (a: number) => number;
|
|
893
|
+
readonly mmtpacketizer_new: (a: number) => [number, number, number];
|
|
894
|
+
readonly mmtreassembler_add_fragment: (a: number, b: number, c: number) => [number, number, number];
|
|
895
|
+
readonly mmtreassembler_buffered_count: (a: number) => number;
|
|
896
|
+
readonly mmtreassembler_cleanup_timeouts: (a: number, b: number) => void;
|
|
897
|
+
readonly mmtreassembler_clock_free: (a: number) => [number, number, number];
|
|
898
|
+
readonly mmtreassembler_flush: (a: number) => void;
|
|
899
|
+
readonly mmtreassembler_new: (a: number, b: number) => [number, number, number];
|
|
900
|
+
readonly mmtreassembler_next_timeout_at: (a: number) => [number, number];
|
|
901
|
+
readonly mmtreassembler_pending_fragment_count: (a: number) => number;
|
|
902
|
+
readonly mmtreassembler_reset: (a: number) => void;
|
|
903
|
+
readonly mmtreassembler_reset_stream: (a: number, b: number) => void;
|
|
904
|
+
readonly mmtreassembler_set_clock_free: (a: number) => void;
|
|
905
|
+
readonly mmtreassembler_set_timeout: (a: number, b: number) => [number, number];
|
|
906
|
+
readonly mmtreassembler_stats: (a: number) => number;
|
|
907
|
+
readonly mmtsamplecombiner_add_mfu: (a: number, b: number, c: number) => [number, number, number];
|
|
908
|
+
readonly mmtsamplecombiner_cleanup_timeouts: (a: number, b: number, c: number) => void;
|
|
909
|
+
readonly mmtsamplecombiner_flush: (a: number) => void;
|
|
910
|
+
readonly mmtsamplecombiner_new: (a: number, b: number, c: number) => [number, number, number];
|
|
911
|
+
readonly mmtsamplecombiner_pending_count: (a: number) => number;
|
|
912
|
+
readonly mmtsamplecombiner_register_authored_size: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
913
|
+
readonly mmtsamplecombiner_reset_stream: (a: number, b: number) => void;
|
|
914
|
+
readonly mmtsamplecombiner_stats: (a: number) => number;
|
|
915
|
+
readonly moq_fec_contract_version: () => [number, number];
|
|
916
|
+
readonly moqencodedblock_block_id: (a: number) => number;
|
|
917
|
+
readonly moqencodedblock_getOti: (a: number) => [number, number];
|
|
918
|
+
readonly moqencodedblock_getRepairSymbol: (a: number, b: number) => [number, number];
|
|
919
|
+
readonly moqencodedblock_getSourceSymbol: (a: number, b: number) => [number, number];
|
|
920
|
+
readonly moqencodedblock_k: (a: number) => number;
|
|
921
|
+
readonly moqencodedblock_original_len: (a: number) => number;
|
|
922
|
+
readonly moqencodedblock_repairSymbolCount: (a: number) => number;
|
|
923
|
+
readonly moqencodedblock_sourceSymbolCount: (a: number) => number;
|
|
924
|
+
readonly moqfecconfig_interleaveDepth: (a: number) => number;
|
|
925
|
+
readonly moqfecconfig_k: (a: number) => number;
|
|
926
|
+
readonly moqfecconfig_maxBlockSize: (a: number) => number;
|
|
927
|
+
readonly moqfecconfig_new: (a: number, b: number, c: number, d: number) => [number, number, number];
|
|
928
|
+
readonly moqfecconfig_overheadRatio: (a: number) => number;
|
|
929
|
+
readonly moqfecconfig_p: (a: number) => number;
|
|
930
|
+
readonly moqfecconfig_symbol_size: (a: number) => number;
|
|
931
|
+
readonly moqfecdecoder_addRepairSymbol: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
932
|
+
readonly moqfecdecoder_addSourceSymbol: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
|
|
933
|
+
readonly moqfecdecoder_getBlockData: (a: number, b: number) => [number, number, number, number];
|
|
934
|
+
readonly moqfecdecoder_getStats: (a: number) => number;
|
|
935
|
+
readonly moqfecdecoder_isBlockComplete: (a: number, b: number) => number;
|
|
936
|
+
readonly moqfecdecoder_new: (a: number, b: number, c: number) => [number, number, number];
|
|
937
|
+
readonly moqfecdecoder_resetBlock: (a: number, b: number) => [number, number];
|
|
938
|
+
readonly moqfecencoder_blockCount: (a: number) => number;
|
|
939
|
+
readonly moqfecencoder_encodeBlock: (a: number, b: number, c: number) => [number, number, number];
|
|
940
|
+
readonly moqfecencoder_getOti: (a: number) => [number, number];
|
|
941
|
+
readonly moqfecencoder_new: (a: number) => [number, number, number];
|
|
942
|
+
readonly moqfecstatsjs_effectiveLossRate: (a: number) => number;
|
|
943
|
+
readonly moqfecstatsjs_interleaveDepth: (a: number) => number;
|
|
944
|
+
readonly moqfecstatsjs_k: (a: number) => number;
|
|
945
|
+
readonly moqfecstatsjs_p: (a: number) => number;
|
|
946
|
+
readonly moqfecstatsjs_recoveryRate: (a: number) => number;
|
|
947
|
+
readonly reassembledmfujs_attribution: (a: number) => number;
|
|
948
|
+
readonly reassembledmfujs_data: (a: number) => [number, number];
|
|
949
|
+
readonly reassembledmfujs_fragment_count: (a: number) => number;
|
|
950
|
+
readonly reassembledmfujs_movie_fragment_sequence_number: (a: number) => number;
|
|
951
|
+
readonly reassembledmfujs_mpu_sequence_number: (a: number) => number;
|
|
952
|
+
readonly reassembledmfujs_offset: (a: number) => number;
|
|
953
|
+
readonly reassembledmfujs_packet_sequence_numbers: (a: number) => [number, number];
|
|
954
|
+
readonly reassembledmfujs_priority: (a: number) => number;
|
|
955
|
+
readonly reassembledmfujs_rap_flag: (a: number) => number;
|
|
956
|
+
readonly reassembledmfujs_repaired_packet_sequence_numbers: (a: number) => [number, number];
|
|
957
|
+
readonly reassembledmfujs_sample_number: (a: number) => number;
|
|
958
|
+
readonly reassembledmfujs_stream_identity: (a: number) => number;
|
|
959
|
+
readonly reassembledmfujs_timestamp: (a: number) => number;
|
|
960
|
+
readonly recoveredset_fec_set_index: (a: number) => number;
|
|
961
|
+
readonly recoveredset_payload: (a: number) => [number, number];
|
|
962
|
+
readonly recoveredset_slot: (a: number) => bigint;
|
|
963
|
+
readonly shredfecbuffer_add_shred: (a: number, b: bigint, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
|
|
964
|
+
readonly shredfecbuffer_new: (a: bigint, b: number) => number;
|
|
965
|
+
readonly shredfecbuffer_pending_fec_sets: (a: number) => number;
|
|
966
|
+
readonly shredfecbuffer_try_recover_all: (a: number, b: number) => [number, number];
|
|
967
|
+
readonly shredfecbuffer_try_recover_all_with_identity: (a: number, b: number) => number;
|
|
968
|
+
readonly shredreassembler_add_shred: (a: number, b: bigint, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
969
|
+
readonly shredreassembler_new: (a: bigint, b: number) => number;
|
|
970
|
+
readonly source_auth_blake3: (a: number, b: number) => [number, number];
|
|
971
|
+
readonly ssbg1_source_symbol: (a: number, b: number, c: number) => [number, number, number, number];
|
|
972
|
+
readonly video_sample_entry_from_codec_string: (a: number, b: number) => [number, number, number, number];
|
|
973
|
+
readonly moqencodedblock_p: (a: number) => number;
|
|
974
|
+
readonly moqfecstatsjs_blocksComplete: (a: number) => number;
|
|
975
|
+
readonly moqfecstatsjs_blocksIncomplete: (a: number) => number;
|
|
976
|
+
readonly moqfecstatsjs_totalSymbolsReceived: (a: number) => number;
|
|
977
|
+
readonly shredreassembler_pending_fec_sets: (a: number) => number;
|
|
978
|
+
readonly __wbg_get_reassemblerstatsjs_duplicate_fragments: (a: number) => bigint;
|
|
979
|
+
readonly __wbg_get_reassemblerstatsjs_evicted_data_units: (a: number) => bigint;
|
|
980
|
+
readonly __wbg_get_reassemblerstatsjs_evicted_memory_limit: (a: number) => bigint;
|
|
981
|
+
readonly __wbg_get_reassemblerstatsjs_out_of_order_fragments: (a: number) => bigint;
|
|
982
|
+
readonly __wbg_get_reassemblerstatsjs_reassembled_mfus: (a: number) => bigint;
|
|
983
|
+
readonly __wbg_get_reassemblerstatsjs_timed_out_mfus: (a: number) => bigint;
|
|
984
|
+
readonly __wbg_get_reassemblerstatsjs_total_fragments: (a: number) => bigint;
|
|
985
|
+
readonly __wbg_get_samplecombinerstatsjs_combined_samples: (a: number) => bigint;
|
|
986
|
+
readonly __wbg_get_samplecombinerstatsjs_evicted_samples: (a: number) => bigint;
|
|
987
|
+
readonly __wbg_get_samplecombinerstatsjs_passthrough_samples: (a: number) => bigint;
|
|
988
|
+
readonly __wbg_get_samplecombinerstatsjs_timed_out_samples: (a: number) => bigint;
|
|
989
|
+
readonly __wbg_set_reassemblerstatsjs_duplicate_fragments: (a: number, b: bigint) => void;
|
|
990
|
+
readonly __wbg_set_reassemblerstatsjs_evicted_data_units: (a: number, b: bigint) => void;
|
|
991
|
+
readonly __wbg_set_reassemblerstatsjs_evicted_memory_limit: (a: number, b: bigint) => void;
|
|
992
|
+
readonly __wbg_set_reassemblerstatsjs_out_of_order_fragments: (a: number, b: bigint) => void;
|
|
993
|
+
readonly __wbg_set_reassemblerstatsjs_reassembled_mfus: (a: number, b: bigint) => void;
|
|
994
|
+
readonly __wbg_set_reassemblerstatsjs_timed_out_mfus: (a: number, b: bigint) => void;
|
|
995
|
+
readonly __wbg_set_reassemblerstatsjs_total_fragments: (a: number, b: bigint) => void;
|
|
996
|
+
readonly __wbg_set_samplecombinerstatsjs_combined_samples: (a: number, b: bigint) => void;
|
|
997
|
+
readonly __wbg_set_samplecombinerstatsjs_evicted_samples: (a: number, b: bigint) => void;
|
|
998
|
+
readonly __wbg_set_samplecombinerstatsjs_passthrough_samples: (a: number, b: bigint) => void;
|
|
999
|
+
readonly __wbg_set_samplecombinerstatsjs_timed_out_samples: (a: number, b: bigint) => void;
|
|
1000
|
+
readonly init: () => void;
|
|
1001
|
+
readonly raptorq_create_oti: (a: bigint, b: number, c: number, d: number, e: number, f: number) => number;
|
|
1002
|
+
readonly raptorq_decoder_add_packet: (a: number, b: number, c: number) => number;
|
|
1003
|
+
readonly raptorq_decoder_free: (a: number) => void;
|
|
1004
|
+
readonly raptorq_decoder_get_data: (a: number, b: number, c: number, d: number) => number;
|
|
1005
|
+
readonly raptorq_decoder_is_complete: (a: number) => number;
|
|
1006
|
+
readonly raptorq_decoder_new: (a: number) => number;
|
|
1007
|
+
readonly raptorq_decoder_new_with_params: (a: bigint, b: number, c: number, d: number, e: number) => number;
|
|
1008
|
+
readonly raptorq_decoder_packet_size: (a: number) => number;
|
|
1009
|
+
readonly raptorq_decoder_symbol_size: (a: number) => number;
|
|
1010
|
+
readonly raptorq_decoder_transfer_length: (a: number) => bigint;
|
|
1011
|
+
readonly raptorq_encoder_free: (a: number) => void;
|
|
1012
|
+
readonly raptorq_encoder_get_oti: (a: number, b: number) => number;
|
|
1013
|
+
readonly raptorq_encoder_get_repair_packets: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
1014
|
+
readonly raptorq_encoder_get_source_packets: (a: number, b: number, c: number) => number;
|
|
1015
|
+
readonly raptorq_encoder_new: (a: number, b: number, c: number, d: number) => number;
|
|
1016
|
+
readonly raptorq_encoder_source_symbol_count: (a: number) => number;
|
|
1017
|
+
readonly raptorq_free: (a: number, b: number) => void;
|
|
1018
|
+
readonly raptorq_interleaved_decoder_add_packet: (a: number, b: number, c: number, d: number) => number;
|
|
1019
|
+
readonly raptorq_interleaved_decoder_free: (a: number) => void;
|
|
1020
|
+
readonly raptorq_interleaved_decoder_get_block_data: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
1021
|
+
readonly raptorq_interleaved_decoder_is_block_complete: (a: number, b: number) => number;
|
|
1022
|
+
readonly raptorq_interleaved_decoder_new: (a: number, b: number) => number;
|
|
1023
|
+
readonly raptorq_interleaved_decoder_reset_block: (a: number, b: number) => number;
|
|
1024
|
+
readonly raptorq_interleaved_encoder_add_packet: (a: number, b: number, c: number, d: number) => number;
|
|
1025
|
+
readonly raptorq_interleaved_encoder_add_packet_ex: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
1026
|
+
readonly raptorq_interleaved_encoder_force_complete: (a: number, b: number, c: number) => number;
|
|
1027
|
+
readonly raptorq_interleaved_encoder_free: (a: number) => void;
|
|
1028
|
+
readonly raptorq_interleaved_encoder_generate_repair: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
1029
|
+
readonly raptorq_interleaved_encoder_get_block_status: (a: number, b: number, c: number) => number;
|
|
1030
|
+
readonly raptorq_interleaved_encoder_get_oti: (a: number, b: number) => number;
|
|
1031
|
+
readonly raptorq_interleaved_encoder_new: (a: number, b: number, c: number, d: number) => number;
|
|
1032
|
+
readonly raptorq_oti_symbol_size: (a: number) => number;
|
|
1033
|
+
readonly raptorq_oti_transfer_length: (a: number) => bigint;
|
|
1034
|
+
readonly raptorq_encoder_symbol_size: (a: number) => number;
|
|
1035
|
+
readonly raptorq_encoder_transfer_length: (a: number) => bigint;
|
|
1036
|
+
readonly raptorq_encoder_packet_size: (a: number) => number;
|
|
1037
|
+
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
|
1038
|
+
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
|
1039
|
+
readonly __wbindgen_exn_store: (a: number) => void;
|
|
1040
|
+
readonly __externref_table_alloc: () => number;
|
|
1041
|
+
readonly __wbindgen_externrefs: WebAssembly.Table;
|
|
1042
|
+
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
1043
|
+
readonly __externref_table_dealloc: (a: number) => void;
|
|
1044
|
+
readonly __wbindgen_start: () => void;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
export type SyncInitInput = BufferSource | WebAssembly.Module;
|
|
1048
|
+
|
|
1049
|
+
/**
|
|
1050
|
+
* Instantiates the given `module`, which can either be bytes or
|
|
1051
|
+
* a precompiled `WebAssembly.Module`.
|
|
1052
|
+
*
|
|
1053
|
+
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
|
|
1054
|
+
*
|
|
1055
|
+
* @returns {InitOutput}
|
|
1056
|
+
*/
|
|
1057
|
+
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
|
|
1058
|
+
|
|
1059
|
+
/**
|
|
1060
|
+
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
|
|
1061
|
+
* for everything else, calls `WebAssembly.instantiate` directly.
|
|
1062
|
+
*
|
|
1063
|
+
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
|
|
1064
|
+
*
|
|
1065
|
+
* @returns {Promise<InitOutput>}
|
|
1066
|
+
*/
|
|
1067
|
+
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
|