@blockcast/mmt-container 0.5.0 → 1.0.0-main.3cb7359ea316

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 (136) hide show
  1. package/README.md +21 -16
  2. package/dist/browser-runtime.js +1024 -1078
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.d.ts +33 -87
  5. package/dist/carp-catalog.d.ts.map +1 -1
  6. package/dist/carp-catalog.js +12 -434
  7. package/dist/carp-catalog.js.map +4 -4
  8. package/dist/catalog-fec-params.d.ts +48 -161
  9. package/dist/catalog-fec-params.d.ts.map +1 -1
  10. package/dist/catalog-fec-params.js +567 -592
  11. package/dist/catalog-fec-params.js.map +4 -4
  12. package/dist/catalog-network-source.js +6 -2
  13. package/dist/catalog-network-source.js.map +3 -3
  14. package/dist/delivery-catalog.js +12 -4
  15. package/dist/delivery-catalog.js.map +4 -4
  16. package/dist/delta-fallback-config.d.ts +21 -26
  17. package/dist/delta-fallback-config.d.ts.map +1 -1
  18. package/dist/delta-fallback-config.js +582 -24
  19. package/dist/delta-fallback-config.js.map +4 -4
  20. package/dist/fec-manager.js +6 -2
  21. package/dist/fec-manager.js.map +3 -3
  22. package/dist/fec-state.d.ts +5 -43
  23. package/dist/fec-state.d.ts.map +1 -1
  24. package/dist/fec-state.js +529 -34
  25. package/dist/fec-state.js.map +4 -4
  26. package/dist/fec-worker-setup.js +6 -2
  27. package/dist/fec-worker-setup.js.map +3 -3
  28. package/dist/held-layer-admission.js +6 -2
  29. package/dist/held-layer-admission.js.map +3 -3
  30. package/dist/index.d.ts +3 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +5 -39
  33. package/dist/index.js.map +2 -2
  34. package/dist/iso-block-locator.js +6 -2
  35. package/dist/iso-block-locator.js.map +3 -3
  36. package/dist/mfu-reassembler.js +6 -2
  37. package/dist/mfu-reassembler.js.map +3 -3
  38. package/dist/mmtp-container-parser.js +6 -2
  39. package/dist/mmtp-container-parser.js.map +3 -3
  40. package/dist/mmtp-container-parser.no-modules.js +551 -452
  41. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  42. package/dist/mmtp-decode-pipeline.js +6 -2
  43. package/dist/mmtp-decode-pipeline.js.map +3 -3
  44. package/dist/mmtp-fec-session.d.ts +7 -6
  45. package/dist/mmtp-fec-session.d.ts.map +1 -1
  46. package/dist/mmtp-fec-session.js +13 -9
  47. package/dist/mmtp-fec-session.js.map +3 -3
  48. package/dist/mmtp-router.d.ts +7 -16
  49. package/dist/mmtp-router.d.ts.map +1 -1
  50. package/dist/mmtp-router.js +19 -29
  51. package/dist/mmtp-router.js.map +3 -3
  52. package/dist/multicast-auth-catalog.js +7 -3
  53. package/dist/multicast-auth-catalog.js.map +3 -3
  54. package/dist/multicast-input.js +7 -3
  55. package/dist/multicast-input.js.map +3 -3
  56. package/dist/multicast-manager.d.ts +29 -32
  57. package/dist/multicast-manager.d.ts.map +1 -1
  58. package/dist/multicast-manager.js +682 -253
  59. package/dist/multicast-manager.js.map +4 -4
  60. package/dist/multicast-transport.d.ts +23 -2
  61. package/dist/multicast-transport.d.ts.map +1 -1
  62. package/dist/multicast-transport.js +57 -16
  63. package/dist/multicast-transport.js.map +4 -4
  64. package/dist/multicast-unwrap.js +6 -2
  65. package/dist/multicast-unwrap.js.map +3 -3
  66. package/dist/no-modules.js +551 -452
  67. package/dist/no-modules.js.map +4 -4
  68. package/dist/phase14-catalog-override.d.ts +10 -5
  69. package/dist/phase14-catalog-override.d.ts.map +1 -1
  70. package/dist/phase14-catalog-override.js +35 -11
  71. package/dist/phase14-catalog-override.js.map +2 -2
  72. package/dist/repair-fetch.d.ts +3 -1
  73. package/dist/repair-fetch.d.ts.map +1 -1
  74. package/dist/repair-fetch.js +16 -3
  75. package/dist/repair-fetch.js.map +3 -3
  76. package/dist/repair-layers.d.ts +0 -123
  77. package/dist/repair-layers.d.ts.map +1 -1
  78. package/dist/repair-layers.js +1 -349
  79. package/dist/repair-layers.js.map +3 -3
  80. package/dist/signaling.js +6 -2
  81. package/dist/signaling.js.map +3 -3
  82. package/dist/timestamp-codec.js +6 -2
  83. package/dist/timestamp-codec.js.map +3 -3
  84. package/dist/wasm-mfu-reassembler.js +6 -2
  85. package/dist/wasm-mfu-reassembler.js.map +3 -3
  86. package/dist/wasm-mmtp-container-parser.js +6 -2
  87. package/dist/wasm-mmtp-container-parser.js.map +3 -3
  88. package/package.json +9 -5
  89. package/schemas/catalog.schema.json +53 -58
  90. package/src/carp-catalog.ts +39 -229
  91. package/src/catalog-fec-params.ts +130 -493
  92. package/src/delta-fallback-config.ts +63 -50
  93. package/src/fec-state.ts +7 -62
  94. package/src/index.ts +10 -30
  95. package/src/mmtp-fec-session.ts +11 -10
  96. package/src/mmtp-router.ts +14 -29
  97. package/src/multicast-manager.ts +89 -121
  98. package/src/multicast-transport.ts +65 -12
  99. package/src/phase14-catalog-override.ts +67 -16
  100. package/src/repair-fetch.ts +27 -3
  101. package/src/repair-layers.ts +7 -520
  102. package/test-vectors/catalog/README.md +39 -67
  103. package/test-vectors/catalog/fec-01-runtime/README.md +15 -0
  104. package/test-vectors/catalog/{negative/fec-block-profile-retired.json → fec-01-runtime/fec-iso-ssbg1.json} +1 -1
  105. package/test-vectors/catalog/fec-01-runtime/fec-layered-repair.json +106 -0
  106. package/test-vectors/catalog/{negative/fec-block-profile-unknown.json → fec-01-runtime/fec-multicast.json} +2 -1
  107. package/test-vectors/catalog/fec-01-runtime/multicast-native-ssm-no-network-source.json +44 -0
  108. package/test-vectors/catalog/negative/fec-block-profile-missing.json +24 -11
  109. package/test-vectors/catalog/negative/fec-iso-symbol-size-below-floor.json +13 -8
  110. package/test-vectors/catalog/negative/fec-reed-solomon-iso-symbol-size-13.json +13 -8
  111. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +20 -10
  112. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +20 -10
  113. package/test-vectors/catalog/negative/fec-repair-overlay-source-symbols-zero.json +25 -17
  114. package/test-vectors/catalog/negative/fec-repair-symbols-zero.json +13 -8
  115. package/test-vectors/catalog/negative/fec-source-symbols-zero.json +13 -8
  116. package/test-vectors/catalog/negative/fec-symbol-size-zero.json +13 -8
  117. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +18 -9
  118. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +13 -8
  119. package/test-vectors/catalog/positive/fec-algorithm-unimplemented.json +14 -9
  120. package/test-vectors/catalog/positive/fec-iso-ssbg1.json +25 -12
  121. package/test-vectors/catalog/positive/fec-layered-repair.json +79 -35
  122. package/test-vectors/catalog/positive/fec-multicast.json +26 -13
  123. package/test-vectors/catalog/positive/fec-reed-solomon-layered.json +29 -18
  124. package/test-vectors/catalog/positive/multicast-draft01-4-1-example.json +28 -20
  125. package/test-vectors/catalog/positive/multicast-draft01-7-2-6-example.json +14 -10
  126. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +22 -12
  127. package/test-vectors/catalog/section-codes.json +13 -22
  128. package/test-vectors/catalog-timing.json +2 -2
  129. package/test-vectors/catalog-validation.json +30 -243
  130. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +0 -28
  131. package/test-vectors/catalog/negative/fec-reed-solomon-k-plus-p-over-255.json +0 -39
  132. package/test-vectors/catalog/negative/fec-reed-solomon-overlay-over-255.json +0 -40
  133. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +0 -32
  134. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +0 -34
  135. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +0 -24
  136. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +0 -33
@@ -10,18 +10,23 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 0,
17
- "repairSymbols": 8,
18
- "symbolSize": 1312,
19
- "repairTrack": "video-repair"
20
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 0,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 1312,
21
+ "repairTrack": "video-repair"
22
+ }
23
+ ]
21
24
  },
22
25
  {
23
26
  "name": "video-repair",
24
27
  "packaging": "fec-repair",
28
+ "source": "video",
29
+ "instanceId": 0,
25
30
  "priority": 240
26
31
  }
27
32
  ]
@@ -10,18 +10,23 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 32,
17
- "repairSymbols": 8,
18
- "symbolSize": 0,
19
- "repairTrack": "video-repair"
20
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 32,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 0,
21
+ "repairTrack": "video-repair"
22
+ }
23
+ ]
21
24
  },
22
25
  {
23
26
  "name": "video-repair",
24
27
  "packaging": "fec-repair",
28
+ "source": "video",
29
+ "instanceId": 0,
25
30
  "priority": 240
26
31
  }
27
32
  ]
@@ -10,15 +10,24 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 56404,
17
- "repairSymbols": 8,
18
- "symbolSize": 1312,
19
- "repairTrack": "video/repair"
20
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 56404,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 1312,
21
+ "repairTrack": "video/repair"
22
+ }
23
+ ]
21
24
  },
22
- { "name": "video/repair", "packaging": "fec-repair", "priority": 240 }
25
+ {
26
+ "name": "video/repair",
27
+ "packaging": "fec-repair",
28
+ "source": "video",
29
+ "instanceId": 0,
30
+ "priority": 240
31
+ }
23
32
  ]
24
33
  }
@@ -10,18 +10,23 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 32,
17
- "repairSymbols": 8,
18
- "symbolSize": 1310,
19
- "repairTrack": "video-repair"
20
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 32,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 1310,
21
+ "repairTrack": "video-repair"
22
+ }
23
+ ]
21
24
  },
22
25
  {
23
26
  "name": "video-repair",
24
27
  "packaging": "fec-repair",
28
+ "source": "video",
29
+ "instanceId": 0,
25
30
  "priority": 240
26
31
  }
27
32
  ]
@@ -10,19 +10,24 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "blockProfile": "iso-ssbg1-v1",
15
- "symbolSize": 1316,
16
- "interleaveDepthMs": 1000,
17
- "repairTrack": "video/repair",
18
- "algorithm": "x-unregistered-code",
19
- "sourceSymbols": 32,
20
- "repairSymbols": 8
21
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "x-unregistered-code",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 32,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 1316,
21
+ "interleaveDepthMs": 1000,
22
+ "repairTrack": "video/repair"
23
+ }
24
+ ]
22
25
  },
23
26
  {
24
27
  "name": "video/repair",
25
28
  "packaging": "fec-repair",
29
+ "source": "video",
30
+ "instanceId": 0,
26
31
  "priority": 240
27
32
  }
28
33
  ]
@@ -10,19 +10,23 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 768,
17
- "repairSymbols": 384,
18
- "symbolSize": 1312,
19
- "repairTrack": "video-repair",
20
- "mode": "interleaved"
21
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 768,
19
+ "repairSymbols": 384,
20
+ "symbolSize": 1312,
21
+ "repairTrack": "video-repair"
22
+ }
23
+ ]
22
24
  },
23
25
  {
24
26
  "name": "video-repair",
25
27
  "packaging": "fec-repair",
28
+ "source": "video",
29
+ "instanceId": 0,
26
30
  "priority": 240
27
31
  }
28
32
  ],
@@ -33,13 +37,22 @@
33
37
  "groupAddress": "232.1.1.1",
34
38
  "port": 5000,
35
39
  "tracks": [
36
- { "name": "video", "packetId": 1 },
37
- { "name": "video-repair", "packetId": 2 }
40
+ {
41
+ "name": "video",
42
+ "packetId": 1
43
+ },
44
+ {
45
+ "name": "video-repair",
46
+ "packetId": 2
47
+ }
38
48
  ]
39
49
  }
40
50
  ],
41
51
  "networkSource": [
42
- { "type": "amt", "discovery": "driad" },
52
+ {
53
+ "type": "amt",
54
+ "discovery": "driad"
55
+ },
43
56
  {
44
57
  "type": "atsc3",
45
58
  "frequency": 587000,
@@ -10,28 +10,44 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 64,
17
- "repairSymbols": 8,
18
- "symbolSize": 1312,
19
- "interleaveDepthMs": 1000,
20
- "reorderToleranceMs": 40,
21
- "repairTrack": "video/repair"
22
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 64,
19
+ "repairSymbols": 8,
20
+ "symbolSize": 1312,
21
+ "interleaveDepthMs": 1000,
22
+ "reorderToleranceMs": 40,
23
+ "repairTrack": "video/repair"
24
+ },
25
+ {
26
+ "instanceId": 1,
27
+ "scope": "keyframe",
28
+ "scheme": "raptorq",
29
+ "blockProfile": "iso-ssbg1-v1",
30
+ "sourceSymbols": 256,
31
+ "repairSymbols": 32,
32
+ "symbolSize": 1312,
33
+ "interleaveDepthMs": 1000,
34
+ "repairTrack": "video/keyframe-repair"
35
+ }
36
+ ]
23
37
  },
24
38
  {
25
39
  "name": "video/repair",
26
40
  "packaging": "fec-repair",
27
- "depends": ["video"],
41
+ "source": "video",
42
+ "instanceId": 0,
28
43
  "repairLayer": 0,
29
44
  "priority": 240
30
45
  },
31
46
  {
32
47
  "name": "video/repair/1",
33
48
  "packaging": "fec-repair",
34
- "depends": ["video"],
49
+ "source": "video",
50
+ "instanceId": 0,
35
51
  "repairLayer": 1,
36
52
  "repairSymbols": 16,
37
53
  "priority": 244
@@ -39,7 +55,8 @@
39
55
  {
40
56
  "name": "video/repair/2",
41
57
  "packaging": "fec-repair",
42
- "depends": ["video"],
58
+ "source": "video",
59
+ "instanceId": 0,
43
60
  "repairLayer": 2,
44
61
  "repairSymbols": 32,
45
62
  "priority": 248
@@ -47,10 +64,8 @@
47
64
  {
48
65
  "name": "video/keyframe-repair",
49
66
  "packaging": "fec-repair",
50
- "depends": ["video"],
51
- "scope": "keyframe",
52
- "sourceSymbols": 256,
53
- "repairSymbols": 32,
67
+ "source": "video",
68
+ "instanceId": 1,
54
69
  "priority": 242
55
70
  },
56
71
  {
@@ -60,19 +75,24 @@
60
75
  "mmtpMode": "mfu",
61
76
  "timescale": 48000,
62
77
  "groupDurationMs": 1000,
63
- "fec": {
64
- "algorithm": "raptorq",
65
- "blockProfile": "iso-ssbg1-v1",
66
- "sourceSymbols": 47,
67
- "repairSymbols": 4,
68
- "symbolSize": 1312,
69
- "interleaveDepthMs": 1000,
70
- "repairTrack": "audio-repair"
71
- }
78
+ "fec": [
79
+ {
80
+ "instanceId": 0,
81
+ "scheme": "raptorq",
82
+ "blockProfile": "iso-ssbg1-v1",
83
+ "sourceSymbols": 47,
84
+ "repairSymbols": 4,
85
+ "symbolSize": 1312,
86
+ "interleaveDepthMs": 1000,
87
+ "repairTrack": "audio-repair"
88
+ }
89
+ ]
72
90
  },
73
91
  {
74
92
  "name": "audio-repair",
75
- "packaging": "fec-repair"
93
+ "packaging": "fec-repair",
94
+ "source": "audio",
95
+ "instanceId": 0
76
96
  }
77
97
  ],
78
98
  "multicast": {
@@ -82,10 +102,22 @@
82
102
  "groupAddress": "232.1.1.1",
83
103
  "port": 5000,
84
104
  "tracks": [
85
- { "name": "video", "packetId": 1 },
86
- { "name": "audio", "packetId": 2 },
87
- { "name": "video/repair", "packetId": 3 },
88
- { "name": "audio-repair", "packetId": 4 }
105
+ {
106
+ "name": "video",
107
+ "packetId": 1
108
+ },
109
+ {
110
+ "name": "audio",
111
+ "packetId": 2
112
+ },
113
+ {
114
+ "name": "video/repair",
115
+ "packetId": 3
116
+ },
117
+ {
118
+ "name": "audio-repair",
119
+ "packetId": 4
120
+ }
89
121
  ]
90
122
  },
91
123
  {
@@ -93,14 +125,26 @@
93
125
  "groupAddress": "232.1.1.2",
94
126
  "port": 5000,
95
127
  "tracks": [
96
- { "name": "video/repair/1", "packetId": 5 },
97
- { "name": "video/repair/2", "packetId": 6 },
98
- { "name": "video/keyframe-repair", "packetId": 7 }
128
+ {
129
+ "name": "video/repair/1",
130
+ "packetId": 5
131
+ },
132
+ {
133
+ "name": "video/repair/2",
134
+ "packetId": 6
135
+ },
136
+ {
137
+ "name": "video/keyframe-repair",
138
+ "packetId": 7
139
+ }
99
140
  ]
100
141
  }
101
142
  ],
102
143
  "networkSource": [
103
- { "type": "amt", "discovery": "driad" }
144
+ {
145
+ "type": "amt",
146
+ "discovery": "driad"
147
+ }
104
148
  ]
105
149
  }
106
150
  }
@@ -10,20 +10,24 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 768,
17
- "repairSymbols": 384,
18
- "symbolSize": 1312,
19
- "interleaveDepthMs": 1000,
20
- "repairTrack": "video-repair",
21
- "mode": "interleaved"
22
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 768,
19
+ "repairSymbols": 384,
20
+ "symbolSize": 1312,
21
+ "interleaveDepthMs": 1000,
22
+ "repairTrack": "video-repair"
23
+ }
24
+ ]
23
25
  },
24
26
  {
25
27
  "name": "video-repair",
26
28
  "packaging": "fec-repair",
29
+ "source": "video",
30
+ "instanceId": 0,
27
31
  "priority": 240
28
32
  }
29
33
  ],
@@ -34,13 +38,22 @@
34
38
  "groupAddress": "232.1.1.1",
35
39
  "port": 5000,
36
40
  "tracks": [
37
- { "name": "video", "packetId": 1 },
38
- { "name": "video-repair", "packetId": 2 }
41
+ {
42
+ "name": "video",
43
+ "packetId": 1
44
+ },
45
+ {
46
+ "name": "video-repair",
47
+ "packetId": 2
48
+ }
39
49
  ]
40
50
  }
41
51
  ],
42
52
  "networkSource": [
43
- { "type": "amt", "discovery": "driad" },
53
+ {
54
+ "type": "amt",
55
+ "discovery": "driad"
56
+ },
44
57
  {
45
58
  "type": "atsc3",
46
59
  "frequency": 587000,
@@ -10,27 +10,42 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "blockProfile": "iso-ssbg1-v1",
15
- "symbolSize": 1316,
16
- "interleaveDepthMs": 1000,
17
- "repairTrack": "video/repair",
18
- "algorithm": "reed-solomon",
19
- "sourceSymbols": 200,
20
- "repairSymbols": 15
21
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "reed-solomon",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 200,
19
+ "repairSymbols": 15,
20
+ "symbolSize": 1316,
21
+ "interleaveDepthMs": 1000,
22
+ "repairTrack": "video/repair"
23
+ },
24
+ {
25
+ "instanceId": 1,
26
+ "scope": "keyframe",
27
+ "scheme": "reed-solomon",
28
+ "blockProfile": "iso-ssbg1-v1",
29
+ "sourceSymbols": 223,
30
+ "repairSymbols": 32,
31
+ "symbolSize": 1316,
32
+ "interleaveDepthMs": 1000,
33
+ "repairTrack": "video/keyframe-repair"
34
+ }
35
+ ]
22
36
  },
23
37
  {
24
38
  "name": "video/repair",
25
39
  "packaging": "fec-repair",
40
+ "source": "video",
41
+ "instanceId": 0,
26
42
  "priority": 240
27
43
  },
28
44
  {
29
45
  "name": "video/repair/1",
30
46
  "packaging": "fec-repair",
31
- "depends": [
32
- "video"
33
- ],
47
+ "source": "video",
48
+ "instanceId": 0,
34
49
  "repairLayer": 1,
35
50
  "repairSymbols": 40,
36
51
  "priority": 244
@@ -38,12 +53,8 @@
38
53
  {
39
54
  "name": "video/keyframe-repair",
40
55
  "packaging": "fec-repair",
41
- "depends": [
42
- "video"
43
- ],
44
- "scope": "keyframe",
45
- "sourceSymbols": 223,
46
- "repairSymbols": 32,
56
+ "source": "video",
57
+ "instanceId": 1,
47
58
  "priority": 242
48
59
  }
49
60
  ]
@@ -10,20 +10,24 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 768,
17
- "repairSymbols": 384,
18
- "symbolSize": 1312,
19
- "interleaveDepthMs": 1000,
20
- "repairTrack": "video/repair",
21
- "mode": "interleaved"
22
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 768,
19
+ "repairSymbols": 384,
20
+ "symbolSize": 1312,
21
+ "interleaveDepthMs": 1000,
22
+ "repairTrack": "video/repair"
23
+ }
24
+ ]
23
25
  },
24
26
  {
25
27
  "name": "video/repair",
26
28
  "packaging": "fec-repair",
29
+ "source": "video",
30
+ "instanceId": 0,
27
31
  "priority": 240
28
32
  },
29
33
  {
@@ -33,20 +37,24 @@
33
37
  "mmtpMode": "mfu",
34
38
  "timescale": 48000,
35
39
  "groupDurationMs": 1000,
36
- "fec": {
37
- "algorithm": "raptorq",
38
- "blockProfile": "iso-ssbg1-v1",
39
- "sourceSymbols": 768,
40
- "repairSymbols": 384,
41
- "symbolSize": 1312,
42
- "interleaveDepthMs": 1000,
43
- "repairTrack": "audio/repair",
44
- "mode": "interleaved"
45
- }
40
+ "fec": [
41
+ {
42
+ "instanceId": 0,
43
+ "scheme": "raptorq",
44
+ "blockProfile": "iso-ssbg1-v1",
45
+ "sourceSymbols": 768,
46
+ "repairSymbols": 384,
47
+ "symbolSize": 1312,
48
+ "interleaveDepthMs": 1000,
49
+ "repairTrack": "audio/repair"
50
+ }
51
+ ]
46
52
  },
47
53
  {
48
54
  "name": "audio/repair",
49
55
  "packaging": "fec-repair",
56
+ "source": "audio",
57
+ "instanceId": 0,
50
58
  "priority": 240
51
59
  }
52
60
  ],
@@ -10,20 +10,24 @@
10
10
  "mmtpMode": "mfu",
11
11
  "timescale": 90000,
12
12
  "groupDurationMs": 1000,
13
- "fec": {
14
- "algorithm": "raptorq",
15
- "blockProfile": "iso-ssbg1-v1",
16
- "sourceSymbols": 768,
17
- "repairSymbols": 384,
18
- "symbolSize": 1312,
19
- "interleaveDepthMs": 1000,
20
- "repairTrack": "video/repair",
21
- "mode": "interleaved"
22
- }
13
+ "fec": [
14
+ {
15
+ "instanceId": 0,
16
+ "scheme": "raptorq",
17
+ "blockProfile": "iso-ssbg1-v1",
18
+ "sourceSymbols": 768,
19
+ "repairSymbols": 384,
20
+ "symbolSize": 1312,
21
+ "interleaveDepthMs": 1000,
22
+ "repairTrack": "video/repair"
23
+ }
24
+ ]
23
25
  },
24
26
  {
25
27
  "name": "video/repair",
26
28
  "packaging": "fec-repair",
29
+ "source": "video",
30
+ "instanceId": 0,
27
31
  "priority": 240
28
32
  }
29
33
  ],