@blockcast/mmt-container 1.0.1 → 2.0.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.
Files changed (100) hide show
  1. package/README.md +9 -7
  2. package/dist/browser-runtime.js +6931 -6685
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.d.ts +7 -7
  5. package/dist/carp-catalog.d.ts.map +1 -1
  6. package/dist/carp-catalog.js +65 -230
  7. package/dist/carp-catalog.js.map +3 -3
  8. package/dist/catalog-fec-params.js.map +1 -1
  9. package/dist/catalog-network-source.js.map +1 -1
  10. package/dist/delivery-catalog.js.map +1 -1
  11. package/dist/delta-fallback-config.js.map +1 -1
  12. package/dist/fec-manager.d.ts +25 -1
  13. package/dist/fec-manager.d.ts.map +1 -1
  14. package/dist/fec-manager.js +208 -15
  15. package/dist/fec-manager.js.map +2 -2
  16. package/dist/fec-state.js.map +1 -1
  17. package/dist/fec-worker-setup.js.map +1 -1
  18. package/dist/held-layer-admission.d.ts +8 -0
  19. package/dist/held-layer-admission.d.ts.map +1 -1
  20. package/dist/held-layer-admission.js +22 -1
  21. package/dist/held-layer-admission.js.map +2 -2
  22. package/dist/iso-block-locator.js.map +1 -1
  23. package/dist/mfu-reassembler.js.map +1 -1
  24. package/dist/mmtp-container-parser.js.map +1 -1
  25. package/dist/mmtp-container-parser.no-modules.js +127 -322
  26. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  27. package/dist/mmtp-decode-pipeline.js.map +1 -1
  28. package/dist/mmtp-fec-session.d.ts.map +1 -1
  29. package/dist/mmtp-fec-session.js +61 -15
  30. package/dist/mmtp-fec-session.js.map +3 -3
  31. package/dist/mmtp-router.d.ts +11 -6
  32. package/dist/mmtp-router.d.ts.map +1 -1
  33. package/dist/mmtp-router.js +47 -10
  34. package/dist/mmtp-router.js.map +3 -3
  35. package/dist/multicast-auth-catalog.d.ts +8 -8
  36. package/dist/multicast-auth-catalog.d.ts.map +1 -1
  37. package/dist/multicast-auth-catalog.js +171 -75
  38. package/dist/multicast-auth-catalog.js.map +4 -4
  39. package/dist/multicast-input.d.ts +5 -5
  40. package/dist/multicast-input.d.ts.map +1 -1
  41. package/dist/multicast-input.js +126 -49
  42. package/dist/multicast-input.js.map +3 -3
  43. package/dist/multicast-manager.d.ts +11 -4
  44. package/dist/multicast-manager.d.ts.map +1 -1
  45. package/dist/multicast-manager.js +7922 -7700
  46. package/dist/multicast-manager.js.map +4 -4
  47. package/dist/multicast-transport.d.ts +8 -0
  48. package/dist/multicast-transport.d.ts.map +1 -1
  49. package/dist/multicast-transport.js +27 -3
  50. package/dist/multicast-transport.js.map +3 -3
  51. package/dist/multicast-unwrap.js +2 -2
  52. package/dist/multicast-unwrap.js.map +2 -2
  53. package/dist/no-modules.js +81 -278
  54. package/dist/no-modules.js.map +4 -4
  55. package/dist/repair-fetch.js.map +1 -1
  56. package/dist/signaling.js.map +1 -1
  57. package/dist/timestamp-codec.js.map +1 -1
  58. package/dist/wasm-mfu-reassembler.js.map +1 -1
  59. package/dist/wasm-mmtp-container-parser.js.map +1 -1
  60. package/package.json +5 -5
  61. package/schemas/catalog.schema.json +15 -7
  62. package/src/carp-catalog.ts +14 -13
  63. package/src/fec-manager.ts +89 -14
  64. package/src/held-layer-admission.ts +38 -1
  65. package/src/mmtp-fec-session.ts +20 -12
  66. package/src/mmtp-router.ts +65 -16
  67. package/src/multicast-auth-catalog.ts +43 -36
  68. package/src/multicast-input.ts +28 -8
  69. package/src/multicast-manager.ts +38 -34
  70. package/src/multicast-transport.ts +31 -3
  71. package/test-vectors/bc-provenance-v2.json +614 -175
  72. package/test-vectors/catalog/README.md +24 -8
  73. package/test-vectors/catalog/negative/multicast-auth-asm-missing-sender-address.json +0 -2
  74. package/test-vectors/catalog/negative/{multicast-auth-manifest-port-equals-port.json → multicast-auth-draft01-manifest-port.json} +1 -1
  75. package/test-vectors/catalog/negative/multicast-auth-duplicate-first-epoch.json +0 -1
  76. package/test-vectors/catalog/negative/multicast-auth-duplicate-kid.json +0 -1
  77. package/test-vectors/catalog/negative/multicast-auth-endpoint-auth-without-object-auth.json +0 -1
  78. package/test-vectors/catalog/negative/multicast-auth-endpoint-missing-bandwidth.json +0 -1
  79. package/test-vectors/catalog/negative/multicast-auth-manifest-timer-out-of-range.json +0 -1
  80. package/test-vectors/catalog/negative/multicast-auth-sender-address-on-ssm.json +0 -1
  81. package/test-vectors/catalog/negative/multicast-auth-shared-sg-port.json +73 -0
  82. package/test-vectors/catalog/negative/multicast-auth-version-1.json +0 -1
  83. package/test-vectors/catalog/negative/multicast-auth-version-3.json +0 -1
  84. package/test-vectors/catalog/negative/multicast-auth-version-missing.json +0 -1
  85. package/test-vectors/catalog/negative/multicast-endpoint-address-family-mismatch.json +55 -0
  86. package/test-vectors/catalog/negative/multicast-endpoint-address-host-name.json +55 -0
  87. package/test-vectors/catalog/negative/multicast-endpoint-address-leading-zero.json +55 -0
  88. package/test-vectors/catalog/negative/multicast-endpoint-address-ls32-leading-zero.json +55 -0
  89. package/test-vectors/catalog/negative/multicast-endpoint-address-mapped-family-mismatch.json +55 -0
  90. package/test-vectors/catalog/negative/multicast-endpoint-address-zone-id.json +55 -0
  91. package/test-vectors/catalog/positive/multicast-auth-asm-sender.json +0 -2
  92. package/test-vectors/catalog/{negative/multicast-auth-max-auth-delay-above-max.json → positive/multicast-auth-max-auth-delay-above-max-clamped.json} +0 -1
  93. package/test-vectors/catalog/{negative/multicast-auth-max-auth-delay-below-min.json → positive/multicast-auth-max-auth-delay-below-min-clamped.json} +0 -1
  94. package/test-vectors/catalog/positive/multicast-auth-max-auth-delay-string.json +55 -0
  95. package/test-vectors/catalog/positive/multicast-auth-rotation.json +0 -1
  96. package/test-vectors/catalog/positive/multicast-draft01-7-2-6-example.json +0 -1
  97. package/test-vectors/catalog/section-codes.json +8 -3
  98. package/test-vectors/catalog-multicast-auth-v1.json +0 -1
  99. package/test-vectors/catalog-validation.json +3 -3
  100. package/test-vectors/generate-bc-provenance-v2.mjs +94 -14
@@ -35,15 +35,31 @@ The negatives:
35
35
  an endpoint `relayAddress` is retired and rejected (`multicast_relay_address`),
36
36
  not ignored.
37
37
  - `multicast-auth-*.json`, `multicast-endpoint-protocol-*.json`,
38
+ `multicast-endpoint-address-*.json`,
38
39
  `multicast-endpoint-foreign-namespace-track.json`: the
39
- draft-ramadan-moq-multicast-01 4.1 / 7.2.6 rules (BLO-49770, draft pinned at
40
- Blockcast/moqcast-draft@fd962fd73d21ed281b60219c11ea61cc9e4e91c4). Each is one
41
- mutation of a positive. `src/catalog-schema.test.ts` pins the schema keyword
42
- and the runtime code and path of each (`multicastRuntimeExpectations`), and
43
- that the transport receiver ignores exactly the endpoint it names. Four of
44
- them the schema cannot state and accepts: a repeated `kid`, a repeated
45
- `firstEpoch`, a `manifestPort` equal to a port of its `(S, G)`, and a track
46
- declaring a foreign namespace. `multicast-auth-root-dotted-key.json`,
40
+ draft-ramadan-moq-multicast-02 4.1 / 7.2.6 rules (BLO-51622, draft pinned at
41
+ Blockcast/moqcast-draft@5f49172). Each is one mutation of a positive.
42
+ `src/catalog-schema.test.ts` pins the schema keyword and the
43
+ `multicastCatalogIssues` code and path of each
44
+ (`multicastRuntimeExpectations`), that `validateCmsfMmtpCatalog` does not
45
+ throw on any of them (a receiver ignores the endpoint, or admits no multicast
46
+ data on a catalog-level fault, and MoQ unicast stays usable), and that the
47
+ transport receiver ignores exactly the endpoints it names. Records ride in
48
+ band on the flow's own `port` (7.2.3), so `multicast-auth-draft01-manifest-port.json`
49
+ is a draft -01 catalog whose endpoint `auth` still names its record port: an
50
+ unknown member, so the endpoint is ignored (libmmt policy, failing closed;
51
+ the posted 7.2.6 states no unknown-member rule). The schema cannot state, and
52
+ accepts: a repeated `kid`, a repeated `firstEpoch`, two protected endpoints
53
+ on one `(S, G, port)` (`multicast-auth-shared-sg-port.json`, spelled
54
+ differently, compared as addresses), the address-literal and address-family
55
+ rules (a leading-zero dec-octet in a dotted quad or an ls32 tail, a host
56
+ name, a zone id, mixed families, an IPv4-mapped source counting as IPv6),
57
+ and a track declaring a foreign namespace. A receiver clamps a
58
+ `maxAuthDelayMs` outside 50..1000 and reads a non-number as absent, so
59
+ `positive/multicast-auth-max-auth-delay-{below-min,above-max}-clamped.json`
60
+ and `positive/multicast-auth-max-auth-delay-string.json` are positives;
61
+ `positive/multicast-auth-asm-sender.json` is an ASM pair sharing G and port
62
+ with different `senderAddress`. `multicast-auth-root-dotted-key.json`,
47
63
  `multicast-auth-padded-key.json`, `multicast-auth-reused-track-format.json`
48
64
  and `multicast-auth-trailing-pad-bits.json` are draft -00 root-key blocks kept
49
65
  as negative controls: the root `"multicast.auth"` key itself is refused.
@@ -51,7 +51,6 @@
51
51
  }
52
52
  ],
53
53
  "auth": {
54
- "manifestPort": 5005,
55
54
  "streamId": 1
56
55
  }
57
56
  },
@@ -67,7 +66,6 @@
67
66
  }
68
67
  ],
69
68
  "auth": {
70
- "manifestPort": 5005,
71
69
  "streamId": 2,
72
70
  "senderAddress": "198.51.100.8"
73
71
  }
@@ -44,7 +44,7 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5004,
47
+ "manifestPort": 5005,
48
48
  "streamId": 2864434397,
49
49
  "maxAuthDelayMs": 200,
50
50
  "manifestTimerMs": 20,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -26,7 +26,6 @@
26
26
  }
27
27
  ],
28
28
  "auth": {
29
- "manifestPort": 5005,
30
29
  "streamId": 2864434397,
31
30
  "maxAuthDelayMs": 200,
32
31
  "manifestTimerMs": 20,
@@ -43,7 +43,6 @@
43
43
  }
44
44
  ],
45
45
  "auth": {
46
- "manifestPort": 5005,
47
46
  "streamId": 2864434397,
48
47
  "maxAuthDelayMs": 200,
49
48
  "manifestTimerMs": 20,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 0,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -0,0 +1,73 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "2001:db8::7",
37
+ "groupAddress": "ff3e::10:20:30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ },
53
+ {
54
+ "sourceAddress": "2001:DB8:0::0007",
55
+ "groupAddress": "FF3E:0::10:20:30",
56
+ "port": 5004,
57
+ "bandwidth": 100000000,
58
+ "tracks": [
59
+ {
60
+ "name": "video",
61
+ "packetId": 1
62
+ }
63
+ ],
64
+ "auth": {
65
+ "streamId": 2864434398,
66
+ "maxAuthDelayMs": 200,
67
+ "manifestTimerMs": 20,
68
+ "manifestTrack": "video/manifest"
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ }
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -43,7 +43,6 @@
43
43
  }
44
44
  ],
45
45
  "auth": {
46
- "manifestPort": 5005,
47
46
  "streamId": 2864434397,
48
47
  "maxAuthDelayMs": 200,
49
48
  "manifestTimerMs": 20,
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "198.51.100.7",
37
+ "groupAddress": "ff3e::10:20:30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "sender.example.net",
37
+ "groupAddress": "232.10.20.30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "198.51.100.07",
37
+ "groupAddress": "232.10.20.30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "::ffff:198.51.100.07",
37
+ "groupAddress": "ff3e::10:20:30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "::ffff:198.51.100.7",
37
+ "groupAddress": "232.10.20.30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "fe80::7%eth0",
37
+ "groupAddress": "ff3e::10:20:30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": 200,
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -51,7 +51,6 @@
51
51
  }
52
52
  ],
53
53
  "auth": {
54
- "manifestPort": 5005,
55
54
  "streamId": 1,
56
55
  "senderAddress": "198.51.100.7"
57
56
  }
@@ -68,7 +67,6 @@
68
67
  }
69
68
  ],
70
69
  "auth": {
71
- "manifestPort": 5005,
72
70
  "streamId": 2,
73
71
  "senderAddress": "198.51.100.8"
74
72
  }
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 1001,
50
49
  "manifestTimerMs": 20,
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 49,
50
49
  "manifestTimerMs": 20,
@@ -0,0 +1,55 @@
1
+ {
2
+ "version": 1,
3
+ "streamingFormat": "mmtp",
4
+ "streamingFormatVersion": "draft-ramadan-moq-mmt-01",
5
+ "tracks": [
6
+ {
7
+ "name": "video",
8
+ "packaging": "mmtp",
9
+ "codec": "avc1.640028",
10
+ "mmtpMode": "mfu",
11
+ "timescale": 90000,
12
+ "groupDurationMs": 1000
13
+ }
14
+ ],
15
+ "multicast": {
16
+ "auth": {
17
+ "scheme": "bc-provenance",
18
+ "version": 2,
19
+ "sig": "ed25519",
20
+ "keys": [
21
+ {
22
+ "kid": 1,
23
+ "publicKey": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
24
+ "firstEpoch": 1
25
+ },
26
+ {
27
+ "kid": 2,
28
+ "publicKey": "mm4Ae7fTOTrOb2d_zK9mlXVV2YgeBBvBncabOQRh1Z4",
29
+ "firstEpoch": 17
30
+ }
31
+ ],
32
+ "minEpoch": 17
33
+ },
34
+ "endpoints": [
35
+ {
36
+ "sourceAddress": "198.51.100.7",
37
+ "groupAddress": "232.10.20.30",
38
+ "port": 5004,
39
+ "bandwidth": 100000000,
40
+ "tracks": [
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ }
45
+ ],
46
+ "auth": {
47
+ "streamId": 2864434397,
48
+ "maxAuthDelayMs": "300",
49
+ "manifestTimerMs": 20,
50
+ "manifestTrack": "video/manifest"
51
+ }
52
+ }
53
+ ]
54
+ }
55
+ }
@@ -44,7 +44,6 @@
44
44
  }
45
45
  ],
46
46
  "auth": {
47
- "manifestPort": 5005,
48
47
  "streamId": 2864434397,
49
48
  "maxAuthDelayMs": 200,
50
49
  "manifestTimerMs": 20,
@@ -62,7 +62,6 @@
62
62
  }
63
63
  ],
64
64
  "auth": {
65
- "manifestPort": 5005,
66
65
  "streamId": 2864434397,
67
66
  "maxAuthDelayMs": 200,
68
67
  "manifestTimerMs": 20,