@blockcast/mmt-container 2.1.0 → 2.2.0-main.20c61ec37932

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 (73) hide show
  1. package/dist/browser-runtime.js +636 -77
  2. package/dist/browser-runtime.js.map +4 -4
  3. package/dist/carp-catalog.js.map +1 -1
  4. package/dist/catalog-fec-params.d.ts +16 -0
  5. package/dist/catalog-fec-params.d.ts.map +1 -1
  6. package/dist/catalog-fec-params.js +15 -0
  7. package/dist/catalog-fec-params.js.map +2 -2
  8. package/dist/catalog-network-source.js.map +1 -1
  9. package/dist/cmcd-producer.d.ts +5 -0
  10. package/dist/cmcd-producer.d.ts.map +1 -1
  11. package/dist/cmcd-producer.js.map +2 -2
  12. package/dist/delivery-catalog.js.map +1 -1
  13. package/dist/delta-fallback-config.js.map +1 -1
  14. package/dist/fec-manager.js.map +2 -2
  15. package/dist/fec-state.js.map +1 -1
  16. package/dist/fec-worker-setup.js.map +1 -1
  17. package/dist/held-layer-admission.js.map +1 -1
  18. package/dist/index.d.ts +3 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +6 -0
  21. package/dist/index.js.map +2 -2
  22. package/dist/iso-block-locator.js.map +1 -1
  23. package/dist/mfu-reassembler.js +12 -19
  24. package/dist/mfu-reassembler.js.map +2 -2
  25. package/dist/mmtp-container-parser.js +12 -19
  26. package/dist/mmtp-container-parser.js.map +2 -2
  27. package/dist/mmtp-container-parser.no-modules.js +133 -34
  28. package/dist/mmtp-container-parser.no-modules.js.map +3 -3
  29. package/dist/mmtp-decode-pipeline.js +12 -19
  30. package/dist/mmtp-decode-pipeline.js.map +2 -2
  31. package/dist/mmtp-fec-session.d.ts +41 -3
  32. package/dist/mmtp-fec-session.d.ts.map +1 -1
  33. package/dist/mmtp-fec-session.js +118 -13
  34. package/dist/mmtp-fec-session.js.map +3 -3
  35. package/dist/mmtp-router.d.ts +9 -1
  36. package/dist/mmtp-router.d.ts.map +1 -1
  37. package/dist/mmtp-router.js +1468 -33
  38. package/dist/mmtp-router.js.map +4 -4
  39. package/dist/multicast-auth-catalog.js.map +1 -1
  40. package/dist/multicast-input.js.map +1 -1
  41. package/dist/multicast-manager.d.ts +15 -2
  42. package/dist/multicast-manager.d.ts.map +1 -1
  43. package/dist/multicast-manager.js +15246 -14969
  44. package/dist/multicast-manager.js.map +4 -4
  45. package/dist/multicast-transport.d.ts +11 -3
  46. package/dist/multicast-transport.d.ts.map +1 -1
  47. package/dist/multicast-transport.js +255 -19
  48. package/dist/multicast-transport.js.map +4 -4
  49. package/dist/multicast-unwrap.js +12 -19
  50. package/dist/multicast-unwrap.js.map +2 -2
  51. package/dist/no-modules.js +130 -33
  52. package/dist/no-modules.js.map +3 -3
  53. package/dist/repair-fetch.js.map +1 -1
  54. package/dist/repair-layer-subscriptions.d.ts +82 -0
  55. package/dist/repair-layer-subscriptions.d.ts.map +1 -0
  56. package/dist/repair-layer-subscriptions.js +192 -0
  57. package/dist/repair-layer-subscriptions.js.map +7 -0
  58. package/dist/signaling.js.map +2 -2
  59. package/dist/timestamp-codec.js +12 -19
  60. package/dist/timestamp-codec.js.map +2 -2
  61. package/dist/wasm-mfu-reassembler.js.map +1 -1
  62. package/dist/wasm-mmtp-container-parser.js +12 -19
  63. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  64. package/package.json +5 -5
  65. package/schemas/catalog.schema.json +4 -0
  66. package/src/catalog-fec-params.ts +35 -0
  67. package/src/cmcd-producer.ts +5 -0
  68. package/src/index.ts +12 -0
  69. package/src/mmtp-fec-session.ts +115 -15
  70. package/src/mmtp-router.ts +81 -16
  71. package/src/multicast-manager.ts +26 -5
  72. package/src/multicast-transport.ts +44 -20
  73. package/src/repair-layer-subscriptions.ts +261 -0
@@ -148,30 +148,26 @@ function isEmptyOrExactLegacyTrailer(payload, start, end) {
148
148
  const authLength = view2.getUint16(2, false);
149
149
  return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end;
150
150
  }
151
- function resolveDeclaredTrailers(payload, declaredEnd, fecType, options, rapFlag = false) {
151
+ function resolveDeclaredTrailers(payload, declaredEnd, fecType, options) {
152
152
  if (declaredEnd > payload.length)
153
153
  return null;
154
154
  if (options?.skipFecId) {
155
- return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false, hasOverlayFecId: false } : null;
155
+ return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false } : null;
156
156
  }
157
- const overlay = options?.overlayDeclared === true && rapFlag;
158
157
  if (fecType === 1) {
159
- const fecStart = payload.length - sourceFecTrailerSize(overlay);
158
+ const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
160
159
  if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
161
160
  return null;
162
161
  }
163
- return { hasFecId: true, hasOverlayFecId: overlay };
162
+ return { hasFecId: true };
164
163
  }
165
- if (fecType !== 0 || overlay)
164
+ if (fecType !== 0)
166
165
  return null;
167
166
  if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
168
- return { hasFecId: false, hasOverlayFecId: false };
167
+ return { hasFecId: false };
169
168
  }
170
169
  return null;
171
170
  }
172
- function sourceFecTrailerSize(overlay) {
173
- return overlay ? 2 * SOURCE_FEC_PAYLOAD_ID_SIZE : SOURCE_FEC_PAYLOAD_ID_SIZE;
174
- }
175
171
  function planMfuExtraction(mmtpPacket, options, parsedHeader) {
176
172
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE) {
177
173
  return {
@@ -224,11 +220,11 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
224
220
  if ("rejection" in layoutResult)
225
221
  return layoutResult;
226
222
  const { layout } = layoutResult;
227
- const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options, header.rapFlag);
223
+ const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options);
228
224
  if (!trailerLayout) {
229
225
  if (!options?.skipFecId && header.fecType === 1) {
230
226
  const observed = payload.length - layout.dataEnd;
231
- const expected = sourceFecTrailerSize(options?.overlayDeclared === true && header.rapFlag);
227
+ const expected = SOURCE_FEC_PAYLOAD_ID_SIZE;
232
228
  if (observed !== expected) {
233
229
  return {
234
230
  rejection: {
@@ -260,13 +256,10 @@ function extractPlannedMfu(mmtpPacket, result) {
260
256
  const mfuDuHeader = mfuDuHeaderPresent && mpu.timedFlag === 1 ? parseTimedMfuDuHeader(payload, MPU_HEADER_SIZE) : null;
261
257
  const itemId = mfuDuHeaderPresent && mpu.timedFlag === 0 ? new DataView(payload.buffer, payload.byteOffset + MPU_HEADER_SIZE, 4).getUint32(0, false) : null;
262
258
  const data = payload.subarray(mfuOffset, dataEnd);
263
- const trailerStart = mmtpPacket.length - sourceFecTrailerSize(trailerLayout.hasOverlayFecId);
264
- const ssIdAt = (offset) => ({
265
- ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + offset, 4).getUint32(0, false)
266
- });
267
- const fecPayloadId = trailerLayout.hasFecId ? ssIdAt(trailerStart) : null;
268
- const overlayFecPayloadId = trailerLayout.hasOverlayFecId ? ssIdAt(trailerStart + SOURCE_FEC_PAYLOAD_ID_SIZE) : null;
269
- return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId, overlayFecPayloadId };
259
+ const fecPayloadId = trailerLayout.hasFecId ? {
260
+ ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + mmtpPacket.length - SOURCE_FEC_PAYLOAD_ID_SIZE, 4).getUint32(0, false)
261
+ } : null;
262
+ return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId };
270
263
  }
271
264
  function sourceFecPayloadIdOf(mmtpPacket, header) {
272
265
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE)