@blockcast/mmt-container 2.2.0-main.a88c3a0aa4f3 → 2.2.0-main.efb4fa4521af

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/browser-runtime.js +293 -35
  2. package/dist/browser-runtime.js.map +4 -4
  3. package/dist/carp-catalog.js.map +1 -1
  4. package/dist/catalog-fec-params.js.map +1 -1
  5. package/dist/catalog-network-source.js.map +1 -1
  6. package/dist/delivery-catalog.js.map +1 -1
  7. package/dist/delta-fallback-config.js.map +1 -1
  8. package/dist/fec-manager.js.map +2 -2
  9. package/dist/fec-state.js.map +1 -1
  10. package/dist/fec-worker-setup.js.map +1 -1
  11. package/dist/held-layer-admission.js.map +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -0
  15. package/dist/index.js.map +2 -2
  16. package/dist/iso-block-locator.js.map +1 -1
  17. package/dist/mfu-reassembler.js +12 -19
  18. package/dist/mfu-reassembler.js.map +2 -2
  19. package/dist/mmtp-container-parser.js +12 -19
  20. package/dist/mmtp-container-parser.js.map +2 -2
  21. package/dist/mmtp-container-parser.no-modules.js +133 -34
  22. package/dist/mmtp-container-parser.no-modules.js.map +3 -3
  23. package/dist/mmtp-decode-pipeline.js +12 -19
  24. package/dist/mmtp-decode-pipeline.js.map +2 -2
  25. package/dist/mmtp-fec-session.d.ts +41 -3
  26. package/dist/mmtp-fec-session.d.ts.map +1 -1
  27. package/dist/mmtp-fec-session.js +118 -13
  28. package/dist/mmtp-fec-session.js.map +3 -3
  29. package/dist/mmtp-router.js +12 -19
  30. package/dist/mmtp-router.js.map +2 -2
  31. package/dist/multicast-auth-catalog.js.map +1 -1
  32. package/dist/multicast-input.js.map +1 -1
  33. package/dist/multicast-manager.d.ts +2 -0
  34. package/dist/multicast-manager.d.ts.map +1 -1
  35. package/dist/multicast-manager.js +13 -19
  36. package/dist/multicast-manager.js.map +2 -2
  37. package/dist/multicast-transport.js.map +1 -1
  38. package/dist/multicast-unwrap.js +12 -19
  39. package/dist/multicast-unwrap.js.map +2 -2
  40. package/dist/no-modules.js +130 -33
  41. package/dist/no-modules.js.map +3 -3
  42. package/dist/repair-fetch.js.map +1 -1
  43. package/dist/repair-layer-subscriptions.d.ts +78 -0
  44. package/dist/repair-layer-subscriptions.d.ts.map +1 -0
  45. package/dist/repair-layer-subscriptions.js +189 -0
  46. package/dist/repair-layer-subscriptions.js.map +7 -0
  47. package/dist/signaling.js.map +2 -2
  48. package/dist/timestamp-codec.js +12 -19
  49. package/dist/timestamp-codec.js.map +2 -2
  50. package/dist/wasm-mfu-reassembler.js.map +1 -1
  51. package/dist/wasm-mmtp-container-parser.js +12 -19
  52. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  53. package/package.json +5 -5
  54. package/schemas/catalog.schema.json +4 -0
  55. package/src/index.ts +11 -0
  56. package/src/mmtp-fec-session.ts +115 -15
  57. package/src/multicast-manager.ts +3 -0
  58. package/src/repair-layer-subscriptions.ts +253 -0
@@ -149,30 +149,26 @@ function isEmptyOrExactLegacyTrailer(payload, start, end) {
149
149
  const authLength = view2.getUint16(2, false);
150
150
  return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end;
151
151
  }
152
- function resolveDeclaredTrailers(payload, declaredEnd, fecType, options, rapFlag = false) {
152
+ function resolveDeclaredTrailers(payload, declaredEnd, fecType, options) {
153
153
  if (declaredEnd > payload.length)
154
154
  return null;
155
155
  if (options?.skipFecId) {
156
- return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false, hasOverlayFecId: false } : null;
156
+ return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false } : null;
157
157
  }
158
- const overlay = options?.overlayDeclared === true && rapFlag;
159
158
  if (fecType === 1) {
160
- const fecStart = payload.length - sourceFecTrailerSize(overlay);
159
+ const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
161
160
  if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
162
161
  return null;
163
162
  }
164
- return { hasFecId: true, hasOverlayFecId: overlay };
163
+ return { hasFecId: true };
165
164
  }
166
- if (fecType !== 0 || overlay)
165
+ if (fecType !== 0)
167
166
  return null;
168
167
  if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
169
- return { hasFecId: false, hasOverlayFecId: false };
168
+ return { hasFecId: false };
170
169
  }
171
170
  return null;
172
171
  }
173
- function sourceFecTrailerSize(overlay) {
174
- return overlay ? 2 * SOURCE_FEC_PAYLOAD_ID_SIZE : SOURCE_FEC_PAYLOAD_ID_SIZE;
175
- }
176
172
  function planMfuExtraction(mmtpPacket, options, parsedHeader) {
177
173
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE) {
178
174
  return {
@@ -225,11 +221,11 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
225
221
  if ("rejection" in layoutResult)
226
222
  return layoutResult;
227
223
  const { layout } = layoutResult;
228
- const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options, header.rapFlag);
224
+ const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options);
229
225
  if (!trailerLayout) {
230
226
  if (!options?.skipFecId && header.fecType === 1) {
231
227
  const observed = payload.length - layout.dataEnd;
232
- const expected = sourceFecTrailerSize(options?.overlayDeclared === true && header.rapFlag);
228
+ const expected = SOURCE_FEC_PAYLOAD_ID_SIZE;
233
229
  if (observed !== expected) {
234
230
  return {
235
231
  rejection: {
@@ -261,13 +257,10 @@ function extractPlannedMfu(mmtpPacket, result) {
261
257
  const mfuDuHeader = mfuDuHeaderPresent && mpu.timedFlag === 1 ? parseTimedMfuDuHeader(payload, MPU_HEADER_SIZE) : null;
262
258
  const itemId = mfuDuHeaderPresent && mpu.timedFlag === 0 ? new DataView(payload.buffer, payload.byteOffset + MPU_HEADER_SIZE, 4).getUint32(0, false) : null;
263
259
  const data = payload.subarray(mfuOffset, dataEnd);
264
- const trailerStart = mmtpPacket.length - sourceFecTrailerSize(trailerLayout.hasOverlayFecId);
265
- const ssIdAt = (offset) => ({
266
- ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + offset, 4).getUint32(0, false)
267
- });
268
- const fecPayloadId = trailerLayout.hasFecId ? ssIdAt(trailerStart) : null;
269
- const overlayFecPayloadId = trailerLayout.hasOverlayFecId ? ssIdAt(trailerStart + SOURCE_FEC_PAYLOAD_ID_SIZE) : null;
270
- return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId, overlayFecPayloadId };
260
+ const fecPayloadId = trailerLayout.hasFecId ? {
261
+ ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + mmtpPacket.length - SOURCE_FEC_PAYLOAD_ID_SIZE, 4).getUint32(0, false)
262
+ } : null;
263
+ return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId };
271
264
  }
272
265
  function sourceFecPayloadIdOf(mmtpPacket, header) {
273
266
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE)