@blockcast/mmt-wasm 0.3.0 → 0.4.0-main.1d3ea1cc8ff2

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/pkg/mmt_wasm.js CHANGED
@@ -529,6 +529,25 @@ export class FecStats {
529
529
  set blocks_delivery_failed(arg0) {
530
530
  wasm.__wbg_set_fecstats_blocks_delivery_failed(this.__wbg_ptr, arg0);
531
531
  }
532
+ /**
533
+ * `iso-ssbg1-v1` held sources evicted, oldest arrival first, because the
534
+ * unplaced pool was at its `(interleave_depth + 1) * K` cap: no sweep
535
+ * (`cleanup_by_ss_start` / `retire_unplaced`) retired them first.
536
+ * @returns {bigint}
537
+ */
538
+ get unplaced_evicted() {
539
+ const ret = wasm.__wbg_get_fecstats_unplaced_evicted(this.__wbg_ptr);
540
+ return BigInt.asUintN(64, ret);
541
+ }
542
+ /**
543
+ * `iso-ssbg1-v1` held sources evicted, oldest arrival first, because the
544
+ * unplaced pool was at its `(interleave_depth + 1) * K` cap: no sweep
545
+ * (`cleanup_by_ss_start` / `retire_unplaced`) retired them first.
546
+ * @param {bigint} arg0
547
+ */
548
+ set unplaced_evicted(arg0) {
549
+ wasm.__wbg_set_fecstats_unplaced_evicted(this.__wbg_ptr, arg0);
550
+ }
532
551
  /**
533
552
  * Recovery rate as percentage (0-100)
534
553
  * Counts all blocks: complete + recovered + FEC-failed + delivery-failed
@@ -670,27 +689,15 @@ export class MmtFecDecoder {
670
689
  /**
671
690
  * Add a repair symbol per ISO 23008-1 §C.5.3.
672
691
  *
673
- * Repair carries (SS_Start, SSB_length, RS_ID).
674
- * SS_Start = SS_ID of first source in block = SBN * K.
675
- * SSB_length = the authored source-symbol count in this block (1..=K).
676
- * SBN = SS_Start / configured K.
677
- * Repair ESI = K + RS_ID.
678
- *
679
- * The decoder's configured K is the fixed RaptorQ geometry. A short
680
- * authored block (`SSB_length < K`) is the producer's K-symbol RaptorQ
681
- * block with ESIs `SSB_length..K` zero-filled and never transmitted
682
- * (fec-raptorq `InterleavedEncoder::force_complete`). The block records
683
- * `SSB_length`, completes once that many source symbols arrived, and
684
- * recovers from `SSB_length` received symbols by supplying the known
685
- * padding itself. A conflicting `SSB_length` for one block is rejected
686
- * without changing that block.
687
- *
688
- * Under `iso-ssbg1-v1` the block is `[SS_Start, SS_Start + SSB_length)`
689
- * with `1 <= SSB_length <= K` (K is only the maximum), its RaptorQ geometry
690
- * is K' = SSB_length with no padding, and repair ESI = SSB_length + RS_ID
691
- * (C.5.3). The first repair defines the block and claims every held source
692
- * in range. A conflicting SSB_length, or a range overlapping a different
693
- * known block, is refused without changing any block. Output is the K'*T
692
+ * Repair carries (SS_Start, SSB_length, RS_ID). The block is
693
+ * `[SS_Start, SS_Start + SSB_length)` with `1 <= SSB_length <= K` (the
694
+ * configured K is only the maximum), its RaptorQ geometry is
695
+ * K' = SSB_length with no padding, and repair ESI = SSB_length + RS_ID.
696
+ * The first repair defines the block and claims every held source in
697
+ * range. A conflicting SSB_length, a range overlapping a different known
698
+ * block, or a start more than `interleave_depth` blocks behind the last
699
+ * `cleanup_by_ss_start`'s `current` (`iso_blocks_behind_lower_bound`), is
700
+ * refused without changing any block. Output is the K'*T
694
701
  * concatenated ssbg_mode1 symbols: split by T and trim by the length field.
695
702
  * @param {number} ss_start
696
703
  * @param {number} ssb_length
@@ -719,13 +726,12 @@ export class MmtFecDecoder {
719
726
  * SS_ID is a flat 32-bit counter. An unconfigured decoder rejects the
720
727
  * packet.
721
728
  *
722
- * - `k-padded-v1`: derives SBN = floor(SS_ID / K), ESI = SS_ID % K and
723
- * zero-pads `data` to T.
724
- * - `iso-ssbg1-v1`: builds the C.3.3 ssbg_mode1 symbol
725
- * `u16be(len) || data || zero padding` (refusing `len + 2 > T`) and
726
- * places it at ESI = serial distance from the start of the known block
727
- * whose `[SS_Start, SS_Start + SSB_length)` contains SS_ID. A source
728
- * whose block no repair has defined yet is held by SS_ID until one does.
729
+ * Builds the C.3.3 ssbg_mode1 symbol `u16be(len) || data || zero padding`
730
+ * (refusing `len + 2 > T`) and places it at ESI = serial distance from the
731
+ * start of the known block whose `[SS_Start, SS_Start + SSB_length)`
732
+ * contains SS_ID. A source whose block no repair has defined yet is held
733
+ * by SS_ID until one does; at most `(interleave_depth + 1) * K` are held, and
734
+ * the oldest arrival is evicted first (`FecStats::unplaced_evicted`).
729
735
  *
730
736
  * # Arguments
731
737
  * * `ss_id` - Source symbol ID (32-bit monotonic counter)
@@ -756,6 +762,22 @@ export class MmtFecDecoder {
756
762
  reset_stats() {
757
763
  wasm.mmtfecdecoder_reset_stats(this.__wbg_ptr);
758
764
  }
765
+ /**
766
+ * The `fec.algorithm` token this decoder was built for.
767
+ * @returns {string}
768
+ */
769
+ get_algorithm() {
770
+ let deferred1_0;
771
+ let deferred1_1;
772
+ try {
773
+ const ret = wasm.mmtfecdecoder_get_algorithm(this.__wbg_ptr);
774
+ deferred1_0 = ret[0];
775
+ deferred1_1 = ret[1];
776
+ return getStringFromWasm0(ret[0], ret[1]);
777
+ } finally {
778
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
779
+ }
780
+ }
759
781
  /**
760
782
  * Get alignment (Al) parameter from OTI
761
783
  * @returns {number}
@@ -767,28 +789,6 @@ export class MmtFecDecoder {
767
789
  }
768
790
  return ret[0];
769
791
  }
770
- /**
771
- * `k-padded-v1` only: cleanup blocks more than `interleave_depth` blocks
772
- * behind `current_sbn`. Refused under `iso-ssbg1-v1`, which has no SBN
773
- * (use `cleanup_by_ss_start`).
774
- *
775
- * Blocks are ordered by RFC 1982 serial comparison of their first SS_ID
776
- * (`sbn * K mod 2^32`, ISO/IEC 23008-1 C.5.2; BLO-35597 iso:5). For a
777
- * stream that has not wrapped SS_ID that is exactly the old
778
- * `sbn < current_sbn - interleave_depth`; after the wrap it still retires
779
- * the pre-wrap blocks instead of keeping them forever.
780
- * @param {number} current_sbn
781
- * @returns {Uint32Array}
782
- */
783
- cleanup_by_sbn(current_sbn) {
784
- const ret = wasm.mmtfecdecoder_cleanup_by_sbn(this.__wbg_ptr, current_sbn);
785
- if (ret[3]) {
786
- throw takeFromExternrefTable0(ret[2]);
787
- }
788
- var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
789
- wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
790
- return v1;
791
- }
792
792
  /**
793
793
  * Get sub-blocks (N) parameter from OTI
794
794
  * @returns {number}
@@ -820,11 +820,11 @@ export class MmtFecDecoder {
820
820
  return ret[0];
821
821
  }
822
822
  /**
823
- * `iso-ssbg1-v1` only: retire the held source symbols that no repair can
824
- * place any more, by the same rule as `cleanup_by_ss_start`, without
825
- * retiring any block. For a caller that retires blocks itself, by their
826
- * deadlines (`cleanup_blocks_detailed`), and needs only this half. Returns
827
- * how many it retired.
823
+ * Retire the held source symbols that no repair can place any more, by
824
+ * the same rule as `cleanup_by_ss_start`, without retiring any block. For
825
+ * a caller that retires blocks itself, by their deadlines
826
+ * (`cleanup_blocks_detailed`), and needs only this half. Returns how many
827
+ * it retired.
828
828
  * @param {number} current
829
829
  * @returns {number}
830
830
  */
@@ -878,11 +878,11 @@ export class MmtFecDecoder {
878
878
  return ret[0];
879
879
  }
880
880
  /**
881
- * `iso-ssbg1-v1` only: retire every block, and every held source symbol,
882
- * lying more than `interleave_depth` blocks behind SS_ID `current`, the
883
- * newest SS_ID the caller has seen (no block start or held source follows
884
- * it). A block start or held source that `current` has moved at least
885
- * half the SS_ID space past no longer precedes it and is retired too
881
+ * Retire every block, and every held source symbol, lying more than
882
+ * `interleave_depth` blocks behind SS_ID `current`, the newest SS_ID the
883
+ * caller has seen (no block start or held source follows it). A block
884
+ * start or held source that `current` has moved at least half the SS_ID
885
+ * space past no longer precedes it and is retired too
886
886
  * (`iso_past_horizon`).
887
887
  *
888
888
  * Blocks have no SBN under ssbg_mode1, so distance is measured on the
@@ -912,16 +912,16 @@ export class MmtFecDecoder {
912
912
  return ret >>> 0;
913
913
  }
914
914
  /**
915
- * Finalize only the source blocks whose host-owned deadlines fired.
916
- * Keys are SBNs under `k-padded-v1` and SS_Starts under `iso-ssbg1-v1`.
915
+ * Finalize only the source blocks whose host-owned deadlines fired,
916
+ * named by their SS_Starts.
917
917
  *
918
918
  * The JavaScript FEC manager owns per-block repair grace. A timeout for one
919
919
  * block must therefore not run the decoder's global age scan and evict a
920
920
  * peer block that is still waiting for fetched repair.
921
- * @param {Uint32Array} sbns
921
+ * @param {Uint32Array} ss_starts
922
922
  */
923
- cleanup_blocks_detailed(sbns) {
924
- const ptr0 = passArray32ToWasm0(sbns, wasm.__wbindgen_malloc);
923
+ cleanup_blocks_detailed(ss_starts) {
924
+ const ptr0 = passArray32ToWasm0(ss_starts, wasm.__wbindgen_malloc);
925
925
  const len0 = WASM_VECTOR_LEN;
926
926
  wasm.mmtfecdecoder_cleanup_blocks_detailed(this.__wbg_ptr, ptr0, len0);
927
927
  }
@@ -930,15 +930,20 @@ export class MmtFecDecoder {
930
930
  *
931
931
  * # Arguments
932
932
  * * `interleave_depth` - Explicit positive number of interleaved blocks.
933
- * * `block_profile` - Catalog `fec.blockProfile`: `"k-padded-v1"` or
934
- * `"iso-ssbg1-v1"`. Required; any other value is refused.
933
+ * * `block_profile` - Catalog `fec.blockProfile`: `"iso-ssbg1-v1"`.
934
+ * Required; any other value is refused.
935
+ * * `algorithm` - Catalog `fec.algorithm`: `"raptorq"` (the default when
936
+ * omitted) or `"reed-solomon"`; any other value is refused.
935
937
  * @param {number} interleave_depth
936
938
  * @param {string} block_profile
939
+ * @param {string | null} [algorithm]
937
940
  */
938
- constructor(interleave_depth, block_profile) {
941
+ constructor(interleave_depth, block_profile, algorithm) {
939
942
  const ptr0 = passStringToWasm0(block_profile, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
940
943
  const len0 = WASM_VECTOR_LEN;
941
- const ret = wasm.mmtfecdecoder_new(interleave_depth, ptr0, len0);
944
+ var ptr1 = isLikeNone(algorithm) ? 0 : passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
945
+ var len1 = WASM_VECTOR_LEN;
946
+ const ret = wasm.mmtfecdecoder_new(interleave_depth, ptr0, len0, ptr1, len1);
942
947
  if (ret[2]) {
943
948
  throw takeFromExternrefTable0(ret[1]);
944
949
  }
@@ -967,7 +972,8 @@ export class MmtFecDecoder {
967
972
  * Configure FEC from 12-byte OTI
968
973
  *
969
974
  * # Arguments
970
- * * `oti` - 12-byte Object Transmission Information from S-TSID fecOTI
975
+ * * `oti` - 12-byte RFC 6330 Common FEC OTI: decoder geometry per
976
+ * draft-fec-01 Section 4.2 (Z = 1, N = 1, Al = 8)
971
977
  * @param {Uint8Array} oti
972
978
  */
973
979
  configure(oti) {
@@ -1011,21 +1017,16 @@ if (Symbol.dispose) MmtFecDecoder.prototype[Symbol.dispose] = MmtFecDecoder.prot
1011
1017
  * [SS_Start:4][RSB_length:3][RS_ID:3][SSB_length:3][repair symbol: T]
1012
1018
  * ```
1013
1019
  *
1014
- * with, for a block with Source Block Number `sbn` and `K` source symbols:
1015
- * - `SS_Start = sbn * K` (32-bit) — first SS_ID of the block. The decoder
1016
- * derives `SBN = SS_Start / K`, so this MUST be `sbn * K`.
1020
+ * with, for an `iso-ssbg1-v1` block of K' ssbg_mode1 source symbols
1021
+ * (ISO/IEC 23008-1 C.3.3, C.5.2, C.5.3):
1022
+ * - `SS_Start = ` the block's first SS_ID (SS_IDs are consecutive, 32-bit)
1017
1023
  * - `RSB_length = P` (repair count for this block)
1018
- * - `RS_ID = i` (0-based repair index) ⇒ RaptorQ ESI = `K + i`
1019
- * - `SSB_length <= K` (authored source symbols in this block)
1020
- *
1021
- * OTI (Z=1, N=1, Al=8) is delivered out-of-band via the catalog / AL-FEC
1022
- * signaling message — see [`MmtFecEncoder::oti`] — never per-packet.
1024
+ * - `RS_ID = i` (0-based repair index) ⇒ RaptorQ ESI = `K' + i`
1025
+ * - `SSB_length = K'` (`1..=K`; the configured K is only the maximum)
1023
1026
  *
1024
- * That framing is the `k-padded-v1` profile. Under `iso-ssbg1-v1` the same
1025
- * fields carry ISO/IEC 23008-1 C.5.3 semantics: `SS_Start` is the first SS_ID
1026
- * of a block of consecutive SS_IDs, `SSB_length = K'` (`1..=K`), the RaptorQ
1027
- * block is K' symbols with no padding (F = K'*T), and RS_ID `i` is ESI
1028
- * `K' + i`.
1027
+ * The RaptorQ block is K' symbols with no padding (F = K'*T). The configured
1028
+ * OTI (F = K*T, Z=1, N=1, Al=8) is delivered out-of-band via the catalog /
1029
+ * AL-FEC signaling message — see [`MmtFecEncoder::oti`] — never per-packet.
1029
1030
  */
1030
1031
  export class MmtFecEncoder {
1031
1032
  __destroy_into_raw() {
@@ -1070,29 +1071,24 @@ export class MmtFecEncoder {
1070
1071
  * `[SS_Start:4][RSB_length:3][RS_ID:3][SSB_length:3][symbol: T]`.
1071
1072
  * Callers split on that stride; `entry i` is at `i * (13 + T)`.
1072
1073
  *
1073
- * `k-padded-v1`: `block` is the Source Block Number and `source_block`
1074
- * MUST be exactly `K * symbol_size` bytes — the caller pads the final
1075
- * (short) block with zeros, mirroring `InterleavedEncoder` and the FFmpeg
1076
- * path. `SS_Start = block * K` (wrapping), `SSB_length = K`.
1077
- *
1078
- * `iso-ssbg1-v1`: `block` is the SS_Start (the block's first SS_ID) and
1079
- * `source_block` is the block's K' ssbg_mode1 symbols (`1 <= K' <= K`,
1080
- * `len % T == 0`, each a well-formed C.3.3 symbol). RaptorQ runs over K'
1081
- * symbols (F = K'*T) and `SSB_length = K'`.
1074
+ * `ss_start` is the block's first SS_ID and `source_block` is the
1075
+ * block's K' ssbg_mode1 symbols (`1 <= K' <= K`, `len % T == 0`, each a
1076
+ * well-formed C.3.3 symbol). RaptorQ runs over K' symbols (F = K'*T) and
1077
+ * `SSB_length = K'`.
1082
1078
  *
1083
1079
  * # Arguments
1084
- * * `block` - SBN (`k-padded-v1`) or SS_Start (`iso-ssbg1-v1`).
1080
+ * * `ss_start` - SS_Start: the block's first SS_ID.
1085
1081
  * * `source_block` - The block's source symbols, as described above.
1086
1082
  * * `repair_count` - Number of repair symbols (P) to generate.
1087
- * @param {number} block
1083
+ * @param {number} ss_start
1088
1084
  * @param {Uint8Array} source_block
1089
1085
  * @param {number} repair_count
1090
1086
  * @returns {Uint8Array}
1091
1087
  */
1092
- encode_repair(block, source_block, repair_count) {
1088
+ encode_repair(ss_start, source_block, repair_count) {
1093
1089
  const ptr0 = passArray8ToWasm0(source_block, wasm.__wbindgen_malloc);
1094
1090
  const len0 = WASM_VECTOR_LEN;
1095
- const ret = wasm.mmtfecencoder_encode_repair(this.__wbg_ptr, block, ptr0, len0, repair_count);
1091
+ const ret = wasm.mmtfecencoder_encode_repair(this.__wbg_ptr, ss_start, ptr0, len0, repair_count);
1096
1092
  if (ret[3]) {
1097
1093
  throw takeFromExternrefTable0(ret[2]);
1098
1094
  }
@@ -1112,21 +1108,27 @@ export class MmtFecEncoder {
1112
1108
  * Create an encoder for a fixed `(K, symbol_size)` block geometry.
1113
1109
  *
1114
1110
  * Builds the OTI as `ObjectTransmissionInformation::new(K*T, T, 1, 1, 8)`
1115
- * (single source block, single sub-block, byte alignment) — matching the
1116
- * decoder's recovery model in [`FecBlock::try_decode`] — and pre-computes
1117
- * the shared `SourceBlockEncodingPlan` so per-block encoding is cheap.
1111
+ * (single source block, single sub-block, byte alignment) — the geometry
1112
+ * [`MmtFecDecoder::configure`] reads back. K is the maximum SSB_length;
1113
+ * each block is encoded over its own K' symbols (see
1114
+ * [`MmtFecEncoder::encode_repair`]).
1115
+ *
1116
+ * `block_profile` is the catalog `fec.blockProfile` (`"iso-ssbg1-v1"`);
1117
+ * any other value is refused.
1118
1118
  *
1119
- * `block_profile` is the catalog `fec.blockProfile` (`"k-padded-v1"` or
1120
- * `"iso-ssbg1-v1"`); any other value is refused. Under `iso-ssbg1-v1`, K
1121
- * is the maximum SSB_length.
1119
+ * `algorithm` is the catalog `fec.algorithm`: `"raptorq"` (the default
1120
+ * when omitted) or `"reed-solomon"` (K + P <= 255 per block).
1122
1121
  * @param {number} k
1123
1122
  * @param {number} symbol_size
1124
1123
  * @param {string} block_profile
1124
+ * @param {string | null} [algorithm]
1125
1125
  */
1126
- constructor(k, symbol_size, block_profile) {
1126
+ constructor(k, symbol_size, block_profile, algorithm) {
1127
1127
  const ptr0 = passStringToWasm0(block_profile, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1128
1128
  const len0 = WASM_VECTOR_LEN;
1129
- const ret = wasm.mmtfecencoder_new(k, symbol_size, ptr0, len0);
1129
+ var ptr1 = isLikeNone(algorithm) ? 0 : passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1130
+ var len1 = WASM_VECTOR_LEN;
1131
+ const ret = wasm.mmtfecencoder_new(k, symbol_size, ptr0, len0, ptr1, len1);
1130
1132
  if (ret[2]) {
1131
1133
  throw takeFromExternrefTable0(ret[1]);
1132
1134
  }
@@ -1139,7 +1141,8 @@ export class MmtFecEncoder {
1139
1141
  *
1140
1142
  * Publishers (BLO-8975 / BLO-8990 catalog-gen) emit this so the player's
1141
1143
  * [`MmtFecDecoder::configure`] reconstructs identical block geometry. The
1142
- * bytes round-trip exactly through `OtiParams::from_bytes`.
1144
+ * bytes round-trip exactly through `OtiParams::from_bytes`. Empty under
1145
+ * `reed-solomon`, which has no OTI.
1143
1146
  * @returns {Uint8Array}
1144
1147
  */
1145
1148
  oti() {
@@ -1148,6 +1151,22 @@ export class MmtFecEncoder {
1148
1151
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
1149
1152
  return v1;
1150
1153
  }
1154
+ /**
1155
+ * The `fec.algorithm` token this encoder was built for.
1156
+ * @returns {string}
1157
+ */
1158
+ get algorithm() {
1159
+ let deferred1_0;
1160
+ let deferred1_1;
1161
+ try {
1162
+ const ret = wasm.mmtfecencoder_algorithm(this.__wbg_ptr);
1163
+ deferred1_0 = ret[0];
1164
+ deferred1_1 = ret[1];
1165
+ return getStringFromWasm0(ret[0], ret[1]);
1166
+ } finally {
1167
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1168
+ }
1169
+ }
1151
1170
  }
1152
1171
  if (Symbol.dispose) MmtFecEncoder.prototype[Symbol.dispose] = MmtFecEncoder.prototype.free;
1153
1172
 
@@ -2286,14 +2305,14 @@ export class ReassemblerStatsJs {
2286
2305
  * @returns {bigint}
2287
2306
  */
2288
2307
  get ambiguous_fallback_fragments() {
2289
- const ret = wasm.__wbg_get_reassemblerstatsjs_ambiguous_fallback_fragments(this.__wbg_ptr);
2308
+ const ret = wasm.__wbg_get_fecstats_unplaced_evicted(this.__wbg_ptr);
2290
2309
  return BigInt.asUintN(64, ret);
2291
2310
  }
2292
2311
  /**
2293
2312
  * @param {bigint} arg0
2294
2313
  */
2295
2314
  set ambiguous_fallback_fragments(arg0) {
2296
- wasm.__wbg_set_reassemblerstatsjs_ambiguous_fallback_fragments(this.__wbg_ptr, arg0);
2315
+ wasm.__wbg_set_fecstats_unplaced_evicted(this.__wbg_ptr, arg0);
2297
2316
  }
2298
2317
  }
2299
2318
  if (Symbol.dispose) ReassemblerStatsJs.prototype[Symbol.dispose] = ReassemblerStatsJs.prototype.free;
Binary file
@@ -10,7 +10,7 @@ export const __wbg_get_fecstats_blocks_recovered: (a: number) => bigint;
10
10
  export const __wbg_get_fecstats_bytes_recovered: (a: number) => bigint;
11
11
  export const __wbg_get_fecstats_repair_packets: (a: number) => bigint;
12
12
  export const __wbg_get_fecstats_source_packets: (a: number) => bigint;
13
- export const __wbg_get_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number) => bigint;
13
+ export const __wbg_get_fecstats_unplaced_evicted: (a: number) => bigint;
14
14
  export const __wbg_mfufragmentjs_free: (a: number, b: number) => void;
15
15
  export const __wbg_mmtfecdecoder_free: (a: number, b: number) => void;
16
16
  export const __wbg_mmtfecencoder_free: (a: number, b: number) => void;
@@ -23,9 +23,7 @@ export const __wbg_moqfecdecoder_free: (a: number, b: number) => void;
23
23
  export const __wbg_moqfecencoder_free: (a: number, b: number) => void;
24
24
  export const __wbg_moqfecstatsjs_free: (a: number, b: number) => void;
25
25
  export const __wbg_reassembledmfujs_free: (a: number, b: number) => void;
26
- export const __wbg_reassemblerstatsjs_free: (a: number, b: number) => void;
27
26
  export const __wbg_recoveredset_free: (a: number, b: number) => void;
28
- export const __wbg_samplecombinerstatsjs_free: (a: number, b: number) => void;
29
27
  export const __wbg_set_fecstats_blocks_complete: (a: number, b: bigint) => void;
30
28
  export const __wbg_set_fecstats_blocks_delivery_failed: (a: number, b: bigint) => void;
31
29
  export const __wbg_set_fecstats_blocks_failed: (a: number, b: bigint) => void;
@@ -33,7 +31,7 @@ export const __wbg_set_fecstats_blocks_recovered: (a: number, b: bigint) => void
33
31
  export const __wbg_set_fecstats_bytes_recovered: (a: number, b: bigint) => void;
34
32
  export const __wbg_set_fecstats_repair_packets: (a: number, b: bigint) => void;
35
33
  export const __wbg_set_fecstats_source_packets: (a: number, b: bigint) => void;
36
- export const __wbg_set_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number, b: bigint) => void;
34
+ export const __wbg_set_fecstats_unplaced_evicted: (a: number, b: bigint) => void;
37
35
  export const __wbg_shredfecbuffer_free: (a: number, b: number) => void;
38
36
  export const __wbg_shredreassembler_free: (a: number, b: number) => void;
39
37
  export const annexb_access_unit_is_keyframe: (a: number, b: number, c: number, d: number) => [number, number, number];
@@ -64,11 +62,11 @@ export const mfufragmentjs_with_sample_identity: (a: number, b: number, c: numbe
64
62
  export const mmtfecdecoder_add_repair: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
65
63
  export const mmtfecdecoder_add_source: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
66
64
  export const mmtfecdecoder_cleanup_blocks_detailed: (a: number, b: number, c: number) => void;
67
- export const mmtfecdecoder_cleanup_by_sbn: (a: number, b: number) => [number, number, number, number];
68
65
  export const mmtfecdecoder_cleanup_by_ss_start: (a: number, b: number) => [number, number, number, number];
69
66
  export const mmtfecdecoder_configure: (a: number, b: number, c: number) => [number, number];
70
67
  export const mmtfecdecoder_configure_params: (a: number, b: number, c: number) => [number, number];
71
68
  export const mmtfecdecoder_flush: (a: number) => void;
69
+ export const mmtfecdecoder_get_algorithm: (a: number) => [number, number];
72
70
  export const mmtfecdecoder_get_alignment: (a: number) => [number, number, number];
73
71
  export const mmtfecdecoder_get_block_profile: (a: number) => [number, number];
74
72
  export const mmtfecdecoder_get_interleave_depth: (a: number) => number;
@@ -77,14 +75,15 @@ export const mmtfecdecoder_get_source_blocks: (a: number) => [number, number, nu
77
75
  export const mmtfecdecoder_get_stats: (a: number) => number;
78
76
  export const mmtfecdecoder_get_sub_blocks: (a: number) => [number, number, number];
79
77
  export const mmtfecdecoder_get_symbol_size: (a: number) => [number, number, number];
80
- export const mmtfecdecoder_new: (a: number, b: number, c: number) => [number, number, number];
78
+ export const mmtfecdecoder_new: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
81
79
  export const mmtfecdecoder_pending_blocks: (a: number) => number;
82
80
  export const mmtfecdecoder_reset_stats: (a: number) => void;
83
81
  export const mmtfecdecoder_retire_unplaced: (a: number, b: number) => [number, number, number];
82
+ export const mmtfecencoder_algorithm: (a: number) => [number, number];
84
83
  export const mmtfecencoder_block_profile: (a: number) => [number, number];
85
84
  export const mmtfecencoder_encode_repair: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
86
85
  export const mmtfecencoder_k: (a: number) => number;
87
- export const mmtfecencoder_new: (a: number, b: number, c: number, d: number) => [number, number, number];
86
+ export const mmtfecencoder_new: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
88
87
  export const mmtfecencoder_oti: (a: number) => [number, number];
89
88
  export const mmtfecencoder_symbol_size: (a: number) => number;
90
89
  export const mmtpacketizer_build_mfu: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
@@ -177,6 +176,7 @@ export const moqfecstatsjs_blocksComplete: (a: number) => number;
177
176
  export const moqfecstatsjs_blocksIncomplete: (a: number) => number;
178
177
  export const moqfecstatsjs_totalSymbolsReceived: (a: number) => number;
179
178
  export const shredreassembler_pending_fec_sets: (a: number) => number;
179
+ export const __wbg_get_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number) => bigint;
180
180
  export const __wbg_get_reassemblerstatsjs_duplicate_fragments: (a: number) => bigint;
181
181
  export const __wbg_get_reassemblerstatsjs_evicted_data_units: (a: number) => bigint;
182
182
  export const __wbg_get_reassemblerstatsjs_evicted_memory_limit: (a: number) => bigint;
@@ -188,6 +188,9 @@ export const __wbg_get_samplecombinerstatsjs_combined_samples: (a: number) => bi
188
188
  export const __wbg_get_samplecombinerstatsjs_evicted_samples: (a: number) => bigint;
189
189
  export const __wbg_get_samplecombinerstatsjs_passthrough_samples: (a: number) => bigint;
190
190
  export const __wbg_get_samplecombinerstatsjs_timed_out_samples: (a: number) => bigint;
191
+ export const __wbg_reassemblerstatsjs_free: (a: number, b: number) => void;
192
+ export const __wbg_samplecombinerstatsjs_free: (a: number, b: number) => void;
193
+ export const __wbg_set_reassemblerstatsjs_ambiguous_fallback_fragments: (a: number, b: bigint) => void;
191
194
  export const __wbg_set_reassemblerstatsjs_duplicate_fragments: (a: number, b: bigint) => void;
192
195
  export const __wbg_set_reassemblerstatsjs_evicted_data_units: (a: number, b: bigint) => void;
193
196
  export const __wbg_set_reassemblerstatsjs_evicted_memory_limit: (a: number, b: bigint) => void;