@norskvideo/norsk-studio-built-ins 1.11.3 → 1.12.0-2025-01-27-b21c8c91

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 (246) hide show
  1. package/README.md +16 -0
  2. package/client/info.js +1288 -788
  3. package/client/output.whep/styles.css +9 -0
  4. package/client/style.css +501 -863
  5. package/lib/index.js +1 -2
  6. package/lib/index.js.map +1 -1
  7. package/lib/info.js +5 -9
  8. package/lib/info.js.map +1 -1
  9. package/lib/input.rtmp/info.js +3 -2
  10. package/lib/input.rtmp/info.js.map +1 -1
  11. package/lib/input.rtmp/openApi.d.ts +133 -0
  12. package/lib/input.rtmp/openApi.js +3 -0
  13. package/lib/input.rtmp/openApi.js.map +1 -0
  14. package/lib/input.rtmp/runtime.d.ts +24 -5
  15. package/lib/input.rtmp/runtime.js +166 -60
  16. package/lib/input.rtmp/runtime.js.map +1 -1
  17. package/lib/input.rtmp/summary-view.d.ts +3 -5
  18. package/lib/input.rtmp/summary-view.js +26 -6
  19. package/lib/input.rtmp/summary-view.js.map +1 -1
  20. package/lib/input.rtmp/types.yaml +99 -0
  21. package/lib/input.silence/info.js +4 -3
  22. package/lib/input.silence/info.js.map +1 -1
  23. package/lib/input.srt-caller/info.js +7 -6
  24. package/lib/input.srt-caller/info.js.map +1 -1
  25. package/lib/input.srt-caller/runtime.d.ts +1 -1
  26. package/lib/input.srt-listener/info.js +8 -6
  27. package/lib/input.srt-listener/info.js.map +1 -1
  28. package/lib/input.srt-listener/openApi.d.ts +133 -0
  29. package/lib/input.srt-listener/openApi.js +3 -0
  30. package/lib/input.srt-listener/openApi.js.map +1 -0
  31. package/lib/input.srt-listener/runtime.d.ts +26 -6
  32. package/lib/input.srt-listener/runtime.js +168 -57
  33. package/lib/input.srt-listener/runtime.js.map +1 -1
  34. package/lib/input.srt-listener/summary-view.d.ts +3 -5
  35. package/lib/input.srt-listener/summary-view.js +28 -4
  36. package/lib/input.srt-listener/summary-view.js.map +1 -1
  37. package/lib/input.srt-listener/types.yaml +99 -0
  38. package/lib/input.udp-ts/info.d.ts +1 -1
  39. package/lib/input.udp-ts/info.js +6 -5
  40. package/lib/input.udp-ts/info.js.map +1 -1
  41. package/lib/input.udp-ts/runtime.d.ts +1 -1
  42. package/lib/input.videoTestCard/info.d.ts +1 -1
  43. package/lib/input.videoTestCard/info.js +15 -5
  44. package/lib/input.videoTestCard/info.js.map +1 -1
  45. package/lib/output.autoCmaf/form-views.js +2 -3
  46. package/lib/output.autoCmaf/form-views.js.map +1 -1
  47. package/lib/output.autoCmaf/info.d.ts +2 -2
  48. package/lib/output.autoCmaf/info.js +66 -8
  49. package/lib/output.autoCmaf/info.js.map +1 -1
  50. package/lib/output.autoCmaf/runtime.d.ts +29 -9
  51. package/lib/output.autoCmaf/runtime.js +198 -60
  52. package/lib/output.autoCmaf/runtime.js.map +1 -1
  53. package/lib/output.autoCmaf/summary.js +26 -1
  54. package/lib/output.autoCmaf/summary.js.map +1 -1
  55. package/lib/output.autoCmaf/types.d.ts +101 -0
  56. package/lib/output.autoCmaf/types.js +3 -0
  57. package/lib/output.autoCmaf/types.js.map +1 -0
  58. package/lib/output.autoCmaf/types.yaml +28 -0
  59. package/lib/output.preview/info.js +5 -3
  60. package/lib/output.preview/info.js.map +1 -1
  61. package/lib/output.preview/inline-view.d.ts +2 -4
  62. package/lib/output.preview/inline-view.js +8 -4
  63. package/lib/output.preview/inline-view.js.map +1 -1
  64. package/lib/output.preview/runtime.d.ts +4 -3
  65. package/lib/output.preview/runtime.js +29 -18
  66. package/lib/output.preview/runtime.js.map +1 -1
  67. package/lib/output.rtmp/info.js +2 -1
  68. package/lib/output.rtmp/info.js.map +1 -1
  69. package/lib/output.rtmp/inline-view.js +2 -2
  70. package/lib/output.rtmp/runtime.d.ts +2 -2
  71. package/lib/output.rtmp/runtime.js.map +1 -1
  72. package/lib/output.srt/info.d.ts +2 -2
  73. package/lib/output.srt/info.js +27 -6
  74. package/lib/output.srt/info.js.map +1 -1
  75. package/lib/output.srt/runtime.d.ts +30 -5
  76. package/lib/output.srt/runtime.js +139 -5
  77. package/lib/output.srt/runtime.js.map +1 -1
  78. package/lib/output.srt/types.d.ts +101 -0
  79. package/lib/output.srt/types.js +3 -0
  80. package/lib/output.srt/types.js.map +1 -0
  81. package/lib/output.srt/types.yaml +31 -0
  82. package/lib/output.statistics/info.js +3 -3
  83. package/lib/output.statistics/info.js.map +1 -1
  84. package/lib/output.statistics/inline-view.js +3 -2
  85. package/lib/output.statistics/inline-view.js.map +1 -1
  86. package/lib/output.statistics/runtime.d.ts +1 -1
  87. package/lib/output.statistics/runtime.js.map +1 -1
  88. package/lib/output.udpTs/info.d.ts +1 -1
  89. package/lib/output.udpTs/info.js +5 -4
  90. package/lib/output.udpTs/info.js.map +1 -1
  91. package/lib/output.udpTs/runtime.d.ts +1 -1
  92. package/lib/output.whep/info.d.ts +2 -2
  93. package/lib/output.whep/info.js +49 -1
  94. package/lib/output.whep/info.js.map +1 -1
  95. package/lib/output.whep/inline-view.d.ts +4 -0
  96. package/lib/output.whep/inline-view.js +24 -0
  97. package/lib/output.whep/inline-view.js.map +1 -0
  98. package/lib/output.whep/runtime.d.ts +26 -5
  99. package/lib/output.whep/runtime.js +64 -13
  100. package/lib/output.whep/runtime.js.map +1 -1
  101. package/lib/output.whep/types.d.ts +101 -0
  102. package/lib/output.whep/types.js +3 -0
  103. package/lib/output.whep/types.js.map +1 -0
  104. package/lib/output.whep/types.yaml +30 -0
  105. package/lib/processor.browserOverlay/info.d.ts +2 -2
  106. package/lib/processor.browserOverlay/info.js +57 -3
  107. package/lib/processor.browserOverlay/info.js.map +1 -1
  108. package/lib/processor.browserOverlay/inline-view.d.ts +6 -0
  109. package/lib/processor.browserOverlay/inline-view.js +8 -0
  110. package/lib/processor.browserOverlay/inline-view.js.map +1 -0
  111. package/lib/processor.browserOverlay/openApi.d.ts +174 -0
  112. package/lib/processor.browserOverlay/openApi.js +3 -0
  113. package/lib/processor.browserOverlay/openApi.js.map +1 -0
  114. package/lib/processor.browserOverlay/runtime.d.ts +40 -6
  115. package/lib/processor.browserOverlay/runtime.js +151 -23
  116. package/lib/processor.browserOverlay/runtime.js.map +1 -1
  117. package/lib/processor.browserOverlay/summary-view.d.ts +4 -0
  118. package/lib/processor.browserOverlay/summary-view.js +27 -0
  119. package/lib/processor.browserOverlay/summary-view.js.map +1 -0
  120. package/lib/processor.browserOverlay/types.yaml +65 -0
  121. package/lib/processor.cascadingSwitch/info.js +5 -4
  122. package/lib/processor.cascadingSwitch/info.js.map +1 -1
  123. package/lib/processor.cascadingSwitch/inline-view.js +3 -3
  124. package/lib/processor.cascadingSwitch/runtime.d.ts +1 -1
  125. package/lib/processor.cascadingSwitch/runtime.js +2 -2
  126. package/lib/processor.cascadingSwitch/runtime.js.map +1 -1
  127. package/lib/processor.fixedLadder/codec-editor.js +2 -2
  128. package/lib/processor.fixedLadder/codec-editor.js.map +1 -1
  129. package/lib/processor.fixedLadder/codec-view.js +2 -2
  130. package/lib/processor.fixedLadder/codec-view.js.map +1 -1
  131. package/lib/processor.fixedLadder/info.js +11 -9
  132. package/lib/processor.fixedLadder/info.js.map +1 -1
  133. package/lib/processor.fixedLadder/rung-view.js +2 -2
  134. package/lib/processor.fixedLadder/rung-view.js.map +1 -1
  135. package/lib/processor.onscreenGraphic/image-selection.d.ts +9 -0
  136. package/lib/{processor.dynamicBug/bug-selection.js → processor.onscreenGraphic/image-selection.js} +10 -10
  137. package/lib/processor.onscreenGraphic/image-selection.js.map +1 -0
  138. package/lib/processor.onscreenGraphic/info.d.ts +3 -0
  139. package/lib/{processor.dynamicBug → processor.onscreenGraphic}/info.js +24 -17
  140. package/lib/processor.onscreenGraphic/info.js.map +1 -0
  141. package/lib/processor.onscreenGraphic/runtime.d.ts +91 -0
  142. package/lib/processor.onscreenGraphic/runtime.js +503 -0
  143. package/lib/processor.onscreenGraphic/runtime.js.map +1 -0
  144. package/lib/processor.onscreenGraphic/summary-view.d.ts +4 -0
  145. package/lib/processor.onscreenGraphic/summary-view.js +343 -0
  146. package/lib/processor.onscreenGraphic/summary-view.js.map +1 -0
  147. package/lib/processor.onscreenGraphic/types.d.ts +271 -0
  148. package/lib/processor.onscreenGraphic/types.js +3 -0
  149. package/lib/processor.onscreenGraphic/types.js.map +1 -0
  150. package/lib/processor.onscreenGraphic/types.yaml +211 -0
  151. package/lib/processor.streamKeyOverride/info.d.ts +3 -0
  152. package/lib/processor.streamKeyOverride/info.js +150 -0
  153. package/lib/processor.streamKeyOverride/info.js.map +1 -0
  154. package/lib/processor.streamKeyOverride/runtime.d.ts +54 -0
  155. package/lib/processor.streamKeyOverride/runtime.js +226 -0
  156. package/lib/processor.streamKeyOverride/runtime.js.map +1 -0
  157. package/lib/shared/drm/axinom.d.ts +2 -0
  158. package/lib/shared/drm/axinom.js +120 -0
  159. package/lib/shared/drm/axinom.js.map +1 -0
  160. package/lib/shared/drm/cpix.d.ts +24 -0
  161. package/lib/shared/drm/cpix.js +97 -0
  162. package/lib/shared/drm/cpix.js.map +1 -0
  163. package/lib/shared/drm/ezdrm.d.ts +2 -0
  164. package/lib/shared/drm/ezdrm.js +26 -0
  165. package/lib/shared/drm/ezdrm.js.map +1 -0
  166. package/lib/shared/srt-form-views.js +1 -2
  167. package/lib/shared/srt-form-views.js.map +1 -1
  168. package/lib/shared/srt-socket-options.js +6 -6
  169. package/lib/shared/srt-socket-options.js.map +1 -1
  170. package/lib/shared/webrtcSettings.js +1 -2
  171. package/lib/shared/webrtcSettings.js.map +1 -1
  172. package/lib/test/auto-cmaf.js +25 -17
  173. package/lib/test/auto-cmaf.js.map +1 -1
  174. package/lib/test/browser-overlay.js +3 -2
  175. package/lib/test/browser-overlay.js.map +1 -1
  176. package/lib/test/{dynamic-bug.js → onscreen-graphic.js} +146 -114
  177. package/lib/test/onscreen-graphic.js.map +1 -0
  178. package/lib/test/preview.js +3 -3
  179. package/lib/test/preview.js.map +1 -1
  180. package/lib/test/rtmp-input.js +6 -3
  181. package/lib/test/rtmp-input.js.map +1 -1
  182. package/lib/test/srt-input-caller.js +5 -5
  183. package/lib/test/srt-input-caller.js.map +1 -1
  184. package/lib/test/srt-input-listener.js +99 -18
  185. package/lib/test/srt-input-listener.js.map +1 -1
  186. package/lib/test/srt-output.js +13 -5
  187. package/lib/test/srt-output.js.map +1 -1
  188. package/lib/test/udp-output.js +11 -4
  189. package/lib/test/udp-output.js.map +1 -1
  190. package/lib/test/udp-ts-input.js +2 -2
  191. package/lib/test/udp-ts-input.js.map +1 -1
  192. package/lib/test/whep-output.js +11 -5
  193. package/lib/test/whep-output.js.map +1 -1
  194. package/lib/{util.latency → util.stats.latency}/info.js +3 -2
  195. package/lib/util.stats.latency/info.js.map +1 -0
  196. package/lib/util.stats.latency/inline-view.js.map +1 -0
  197. package/lib/{util.latency → util.stats.latency}/runtime.d.ts +1 -1
  198. package/lib/{util.latency → util.stats.latency}/runtime.js +2 -2
  199. package/lib/util.stats.latency/runtime.js.map +1 -0
  200. package/lib/util.stats.latency/source-node-selection.js.map +1 -0
  201. package/package.json +12 -5
  202. package/lib/processor.dynamicBug/bug-selection.d.ts +0 -9
  203. package/lib/processor.dynamicBug/bug-selection.js.map +0 -1
  204. package/lib/processor.dynamicBug/info.d.ts +0 -3
  205. package/lib/processor.dynamicBug/info.js.map +0 -1
  206. package/lib/processor.dynamicBug/runtime.d.ts +0 -64
  207. package/lib/processor.dynamicBug/runtime.js +0 -304
  208. package/lib/processor.dynamicBug/runtime.js.map +0 -1
  209. package/lib/processor.dynamicBug/summary-view.d.ts +0 -4
  210. package/lib/processor.dynamicBug/summary-view.js +0 -60
  211. package/lib/processor.dynamicBug/summary-view.js.map +0 -1
  212. package/lib/processor.whisper-transcribe/info.d.ts +0 -3
  213. package/lib/processor.whisper-transcribe/info.js +0 -43
  214. package/lib/processor.whisper-transcribe/info.js.map +0 -1
  215. package/lib/processor.whisper-transcribe/runtime.d.ts +0 -29
  216. package/lib/processor.whisper-transcribe/runtime.js +0 -83
  217. package/lib/processor.whisper-transcribe/runtime.js.map +0 -1
  218. package/lib/test/dynamic-bug.js.map +0 -1
  219. package/lib/util.latency/info.js.map +0 -1
  220. package/lib/util.latency/inline-view.js.map +0 -1
  221. package/lib/util.latency/runtime.js.map +0 -1
  222. package/lib/util.latency/source-node-selection.js.map +0 -1
  223. package/lib/util.ma35d/info.d.ts +0 -3
  224. package/lib/util.ma35d/info.js +0 -78
  225. package/lib/util.ma35d/info.js.map +0 -1
  226. package/lib/util.ma35d/inline-view.d.ts +0 -6
  227. package/lib/util.ma35d/inline-view.js +0 -76
  228. package/lib/util.ma35d/inline-view.js.map +0 -1
  229. package/lib/util.ma35d/runtime.d.ts +0 -21
  230. package/lib/util.ma35d/runtime.js +0 -49
  231. package/lib/util.ma35d/runtime.js.map +0 -1
  232. package/lib/util.timestamps/info.d.ts +0 -5
  233. package/lib/util.timestamps/info.js +0 -86
  234. package/lib/util.timestamps/info.js.map +0 -1
  235. package/lib/util.timestamps/inline-view.d.ts +0 -6
  236. package/lib/util.timestamps/inline-view.js +0 -94
  237. package/lib/util.timestamps/inline-view.js.map +0 -1
  238. package/lib/util.timestamps/runtime.d.ts +0 -29
  239. package/lib/util.timestamps/runtime.js +0 -40
  240. package/lib/util.timestamps/runtime.js.map +0 -1
  241. /package/lib/test/{dynamic-bug.d.ts → onscreen-graphic.d.ts} +0 -0
  242. /package/lib/{util.latency → util.stats.latency}/info.d.ts +0 -0
  243. /package/lib/{util.latency → util.stats.latency}/inline-view.d.ts +0 -0
  244. /package/lib/{util.latency → util.stats.latency}/inline-view.js +0 -0
  245. /package/lib/{util.latency → util.stats.latency}/source-node-selection.d.ts +0 -0
  246. /package/lib/{util.latency → util.stats.latency}/source-node-selection.js +0 -0
@@ -0,0 +1,211 @@
1
+ openapi: 3.0.0
2
+ info:
3
+ title: Onscreen Graphics Overlay Component
4
+ version: 1.0.0
5
+
6
+ paths:
7
+ # Static paths (available at runtime and design time)
8
+ /graphics:
9
+ get:
10
+ summary: Return the currently available graphic files
11
+ description: Returns all the graphics files on the server
12
+ x-route-type: static
13
+ responses:
14
+ 200:
15
+ description: Successful operation
16
+ content:
17
+ application/json:
18
+ schema:
19
+ type: array
20
+ description: A list of the graphic files available
21
+ items:
22
+ $ref: "#/components/schemas/graphic"
23
+ post:
24
+ summary: Upload a new graphic
25
+ description: Upload a new graphic as a multi-part form POST
26
+ x-route-type: static
27
+ requestBody:
28
+ description: A multipart form containing the file to upload)
29
+ content:
30
+ multipart/form-data:
31
+ schema:
32
+ type: object
33
+ properties:
34
+ # The property name 'file' will be used for all files.
35
+ file:
36
+ type: string
37
+ format: binary
38
+ required: [file]
39
+ responses:
40
+ 204:
41
+ description: The file was uploaded successfully
42
+ 400:
43
+ description: No file was uploaded
44
+ 404:
45
+ description: Not Found
46
+ 409:
47
+ description: A graphic with the same name already exists
48
+ 500:
49
+ description: File upload failed
50
+ /graphic:
51
+ delete:
52
+ summary: Delete a graphic file from the server
53
+ description: Deletes the passed filename from the server if present
54
+ x-route-type: static
55
+ tags: [foo]
56
+ requestBody:
57
+ description: The graphic to delete
58
+ content:
59
+ application/json:
60
+ schema:
61
+ type: object
62
+ properties:
63
+ filename:
64
+ type: string
65
+ description: 'The name of the graphic file to delete'
66
+ example: graphic.png
67
+ required: ['filename']
68
+ responses:
69
+ 204:
70
+ description: The graphic was successfully deleted
71
+ 404:
72
+ description: The specified graphic was not found
73
+ 500:
74
+ description: Failed to delete the graphic
75
+ # Component instance paths (available at runtime only)
76
+ /active-graphic:
77
+ get:
78
+ summary: Info about the current graphic
79
+ description: Returns the configuration for current the onscreen graphic is any
80
+ x-route-type: instance
81
+ responses:
82
+ 200:
83
+ description: Details of the configured graphic
84
+ content:
85
+ application/json:
86
+ schema:
87
+ $ref: "#/components/schemas/config"
88
+ 204:
89
+ description: No graphic configured
90
+ 404:
91
+ description: Component not found
92
+ post:
93
+ summary: Change the current graphic file and/or position
94
+ description: Change the current graphic file and/or position
95
+ x-route-type: instance
96
+ requestBody:
97
+ description: The graphic filename and location (sending an empty JSON object will delete the graphic)
98
+ content:
99
+ application/json:
100
+ schema:
101
+ oneOf:
102
+ - $ref: "#/components/schemas/config"
103
+ - $ref: "#/components/schemas/emptyObject"
104
+ responses:
105
+ 204:
106
+ description: The active graphic was successfully updated
107
+ 400:
108
+ description: Invalid request
109
+ content:
110
+ application/json:
111
+ schema:
112
+ $ref: '#/components/schemas/errorResponse'
113
+ 404:
114
+ description: Component not found
115
+ delete:
116
+ summary: Stop displaying the current graphic
117
+ x-route-type: instance
118
+ responses:
119
+ 204:
120
+ description: The active graphic was successfully hidden
121
+ 404:
122
+ description: Component not found
123
+ components:
124
+ schemas:
125
+ graphic:
126
+ type: string
127
+ description: The name of the image file
128
+ example: Norsk.png
129
+
130
+ coordinatePosition:
131
+ type: object
132
+ properties:
133
+ type:
134
+ type: string
135
+ enum: ['coordinate']
136
+ x:
137
+ type: number
138
+ description: X coordinate position (pixels)
139
+ minimum: 0
140
+ y:
141
+ type: number
142
+ description: Y coordinate position (pixels)
143
+ minimum: 0
144
+ required:
145
+ - type
146
+ - x
147
+ - y
148
+
149
+ percentagePosition:
150
+ type: object
151
+ properties:
152
+ type:
153
+ type: string
154
+ enum: ['percentage']
155
+ x:
156
+ type: number
157
+ description: X coordinate percentage
158
+ minimum: 0
159
+ maximum: 100
160
+ y:
161
+ type: number
162
+ description: Y coordinate percentage
163
+ minimum: 0
164
+ maximum: 100
165
+ required:
166
+ - type
167
+ - x
168
+ - y
169
+
170
+ namedPosition:
171
+ type: object
172
+ properties:
173
+ type:
174
+ type: string
175
+ enum: ['named']
176
+ position:
177
+ type: string
178
+ enum: [topleft, topright, bottomleft, bottomright, center]
179
+ description: Named position for the graphic
180
+ required:
181
+ - type
182
+ - position
183
+
184
+ position:
185
+ oneOf:
186
+ - $ref: '#/components/schemas/coordinatePosition'
187
+ - $ref: '#/components/schemas/namedPosition'
188
+
189
+ config:
190
+ type: object
191
+ description: The configuration for the onscreen graphic
192
+ properties:
193
+ graphic:
194
+ $ref: "#/components/schemas/graphic"
195
+ position:
196
+ $ref: "#/components/schemas/position"
197
+
198
+ emptyObject:
199
+ type: object
200
+ example: {}
201
+
202
+ errorResponse:
203
+ type: object
204
+ description: Details of why the request failed
205
+ properties:
206
+ error:
207
+ type: string
208
+ description: A description of the error
209
+ details:
210
+ type: string
211
+ description: The unacceptable data
@@ -0,0 +1,3 @@
1
+ import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
+ import type { StreamKeyOverrideConfig } from "./runtime";
3
+ export default function ({ defineComponent, All, validation: { Z }, }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<StreamKeyOverrideConfig, object, object, object>;
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ function default_1({ defineComponent, All, validation: { Z }, }) {
5
+ return defineComponent({
6
+ identifier: 'processor.StreamKeyOverride',
7
+ category: 'processor',
8
+ name: "Stream Key Override",
9
+ description: "Override stream keys for several streams at once, setting some components of the keys and optionally incrementing stream ID.",
10
+ subscription: {
11
+ accepts: {
12
+ type: 'multi-stream',
13
+ media: All
14
+ },
15
+ produces: {
16
+ type: "fixed-list",
17
+ possibleMedia: All,
18
+ keys: (cfg, subs) => {
19
+ const outputs = subs.flatMap(sub => {
20
+ const sourceNode = sub.document.components[sub.source];
21
+ if (!sourceNode)
22
+ return [];
23
+ const produces = sourceNode.info.subscription.produces;
24
+ if (produces?.type === "fixed-list") {
25
+ return produces
26
+ .keys(sourceNode.config, sourceNode.subscriptions)
27
+ .map(sel => ({ ...sel, key: `${sourceNode.id}-${sel.key}`, display: `${sourceNode.config.displayName}: ${sel.display}` }));
28
+ }
29
+ else {
30
+ return [{ key: `${sourceNode.id}`, display: `${sourceNode.config.displayName}`, media: produces ? produces.media : All }];
31
+ }
32
+ });
33
+ if (cfg.output === 'merged') {
34
+ const media = Array.from(new Set(outputs.flatMap(x => x.media)));
35
+ return [{ key: `merged`, display: "Merged", media }];
36
+ }
37
+ return outputs;
38
+ },
39
+ selector: () => {
40
+ console.error("Use selectOutputs from process.streamKeyOverride/runtime.ts, not selector from info.ts");
41
+ return [];
42
+ },
43
+ }
44
+ },
45
+ display: ({ config }) => {
46
+ const disp = {};
47
+ disp.mode = config.mode || "simple";
48
+ disp.output = config.output || "individually-selectable";
49
+ if (config.sourceName) {
50
+ disp.sourceName = config.sourceName;
51
+ }
52
+ if (config.programNumber !== undefined) {
53
+ disp.programNumber = String(config.programNumber);
54
+ }
55
+ if (config.streamId !== undefined) {
56
+ disp.streamId = String(config.streamId);
57
+ }
58
+ if (config.renditionName) {
59
+ disp.renditionName = config.renditionName;
60
+ }
61
+ return disp;
62
+ },
63
+ extraValidation: (ctx) => {
64
+ const { config, subscriptions } = ctx;
65
+ if ((config.mode || "simple") == "simple" && config.sourceName && config.programNumber !== undefined && config.streamId !== undefined && config.renditionName) {
66
+ if (subscriptions.length > 1)
67
+ ctx.addError("A fully specified stream key override must only subscribe to one stream, or use a mode other than simple");
68
+ }
69
+ if (config.mode === "by-media-type" && config.streamId === undefined) {
70
+ ctx.addError("You must specify the starting streamId for a by-media-type stream key override");
71
+ }
72
+ if (config.output === "merged" && !config.sourceName) {
73
+ ctx.addError("You must specify a sourceName for a single merged output");
74
+ }
75
+ },
76
+ configForm: {
77
+ form: {
78
+ mode: {
79
+ help: "Multi-stream behavior",
80
+ hint: {
81
+ type: 'select',
82
+ defaultValue: "simple",
83
+ options: [
84
+ {
85
+ display: "Override values directly",
86
+ value: "simple",
87
+ },
88
+ {
89
+ display: "Increment stream ID by media type (video, audio, ...)",
90
+ value: "by-media-type",
91
+ },
92
+ {
93
+ display: "Increment stream ID per program in order of subscription",
94
+ value: "in-order",
95
+ },
96
+ ],
97
+ },
98
+ },
99
+ output: {
100
+ help: "Output individual streams or a single merged stream",
101
+ hint: {
102
+ type: 'select',
103
+ defaultValue: "individually-selectable",
104
+ options: [
105
+ {
106
+ display: "Individual inputs can be selected in the output",
107
+ value: "individually-selectable",
108
+ },
109
+ {
110
+ display: "The outputs are merged into a single stream",
111
+ value: "merged",
112
+ },
113
+ ],
114
+ },
115
+ },
116
+ sourceName: {
117
+ help: "Override source name",
118
+ hint: {
119
+ type: 'text',
120
+ optional: true,
121
+ }
122
+ },
123
+ programNumber: {
124
+ help: "Override program number",
125
+ hint: {
126
+ type: 'numeric',
127
+ optional: true,
128
+ validation: Z.number().min(0).int().optional(),
129
+ }
130
+ },
131
+ streamId: {
132
+ help: "Override stream ID",
133
+ hint: {
134
+ type: 'numeric',
135
+ optional: true,
136
+ validation: Z.number().min(0).int().optional(),
137
+ }
138
+ },
139
+ renditionName: {
140
+ help: "Override rendition name",
141
+ hint: {
142
+ type: 'text',
143
+ optional: true,
144
+ }
145
+ },
146
+ }
147
+ }
148
+ });
149
+ }
150
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.streamKeyOverride/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Norsk, StreamKey, StreamKeyOverrideNode, StreamMetadataMessage, SubscribeDestination, SubscriptionError } from '@norskvideo/norsk-sdk';
2
+ import { ActiveStream, CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, StudioNodeSubscriptionSource } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ import { NodeDescriptionId } from '@norskvideo/norsk-studio/lib/shared/document';
4
+ export type StreamKeyOverrideConfig = {
5
+ id: string;
6
+ displayName: string;
7
+ mode: "simple" | "by-media-type" | "in-order";
8
+ output: "merged" | "individually-selectable";
9
+ sourceName?: string;
10
+ programNumber?: number;
11
+ streamId?: number;
12
+ renditionName?: string;
13
+ };
14
+ export default class StreamKeyOverrideDefinition implements ServerComponentDefinition<StreamKeyOverrideConfig, StreamKeyOverride> {
15
+ create(norsk: Norsk, cfg: StreamKeyOverrideConfig, cb: OnCreated<StreamKeyOverride>): Promise<void>;
16
+ }
17
+ type Mapping = {
18
+ from: ActiveStream;
19
+ to: StreamKey;
20
+ node?: StreamKeyOverrideNode;
21
+ nodeDescriptionId: NodeDescriptionId;
22
+ };
23
+ type Diff = {
24
+ added: Mapping[];
25
+ removed: Mapping[];
26
+ unchanged: Mapping[];
27
+ };
28
+ type History = {
29
+ sourceName: string;
30
+ programNumber: number;
31
+ lastStreamId: number;
32
+ }[];
33
+ export declare class StreamKeyOverride implements CreatedMediaNode, SubscribeDestination {
34
+ static uid: number;
35
+ norsk: Norsk;
36
+ mapping: Mapping[];
37
+ history: History;
38
+ currentSources: StudioNodeSubscriptionSource[];
39
+ cfg: StreamKeyOverrideConfig;
40
+ initialised: Promise<void>;
41
+ id: string;
42
+ relatedMediaNodes: RelatedMediaNodes;
43
+ static create(norsk: Norsk, cfg: StreamKeyOverrideConfig): Promise<StreamKeyOverride>;
44
+ constructor(norsk: Norsk, cfg: StreamKeyOverrideConfig);
45
+ initialise(): Promise<void>;
46
+ chooseStreamKey(sourceKey: StreamKey, metadata: StreamMetadataMessage): StreamKey;
47
+ subscribe(sources: StudioNodeSubscriptionSource[]): void;
48
+ sourceContextChange(_responseCallback: (error?: SubscriptionError) => void): Promise<boolean>;
49
+ diff(currentMapping: Mapping[]): Diff;
50
+ updateNodes({ added, removed, unchanged }: Diff): Promise<void>;
51
+ close(): Promise<void>;
52
+ selectOutputs(selectionKeys: string[]): StreamKey[];
53
+ }
54
+ export {};
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamKeyOverride = void 0;
4
+ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
5
+ const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
6
+ const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
7
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
8
+ class StreamKeyOverrideDefinition {
9
+ async create(norsk, cfg, cb) {
10
+ const node = await StreamKeyOverride.create(norsk, cfg);
11
+ cb(node);
12
+ }
13
+ }
14
+ exports.default = StreamKeyOverrideDefinition;
15
+ class StreamKeyOverride {
16
+ static uid = 0;
17
+ norsk;
18
+ mapping = [];
19
+ history = [];
20
+ currentSources = [];
21
+ cfg;
22
+ initialised;
23
+ id;
24
+ relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
25
+ static async create(norsk, cfg) {
26
+ const node = new StreamKeyOverride(norsk, cfg);
27
+ await node.initialised;
28
+ return node;
29
+ }
30
+ constructor(norsk, cfg) {
31
+ this.id = cfg.id;
32
+ this.cfg = cfg;
33
+ this.norsk = norsk;
34
+ this.initialised = this.initialise();
35
+ }
36
+ async initialise() {
37
+ }
38
+ chooseStreamKey(sourceKey, metadata) {
39
+ const cfg = this.cfg;
40
+ const destKey = {
41
+ sourceName: cfg.sourceName || sourceKey.sourceName,
42
+ programNumber: cfg.programNumber ?? sourceKey.programNumber,
43
+ streamId: cfg.streamId ?? sourceKey.streamId,
44
+ renditionName: cfg.renditionName || sourceKey.renditionName,
45
+ };
46
+ switch (cfg.mode) {
47
+ case "simple":
48
+ break;
49
+ case "by-media-type":
50
+ switch (metadata?.case) {
51
+ case "video":
52
+ destKey.streamId += 0;
53
+ break;
54
+ case "audio":
55
+ destKey.streamId += 1;
56
+ break;
57
+ case "subtitle":
58
+ destKey.streamId += 2;
59
+ break;
60
+ case "ancillary":
61
+ destKey.streamId += 3;
62
+ break;
63
+ case "playlist":
64
+ destKey.streamId += 4;
65
+ break;
66
+ case undefined:
67
+ destKey.streamId += 5;
68
+ break;
69
+ default:
70
+ (0, util_1.assertUnreachable)(metadata);
71
+ }
72
+ break;
73
+ case "in-order": {
74
+ for (const m of this.mapping) {
75
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(sourceKey, m.from.metadata.streamKey)) {
76
+ return m.to;
77
+ }
78
+ }
79
+ let streamId = undefined;
80
+ for (const program of this.history) {
81
+ if (program.sourceName === destKey.sourceName && program.programNumber === destKey.programNumber) {
82
+ streamId = ++program.lastStreamId;
83
+ break;
84
+ }
85
+ }
86
+ if (streamId === undefined) {
87
+ streamId = cfg.streamId ?? 1;
88
+ this.history.push({
89
+ sourceName: destKey.sourceName,
90
+ programNumber: destKey.programNumber,
91
+ lastStreamId: streamId,
92
+ });
93
+ }
94
+ destKey.streamId = streamId;
95
+ break;
96
+ }
97
+ default:
98
+ if (cfg.mode !== undefined && cfg.mode !== "")
99
+ (0, util_1.assertUnreachable)(cfg.mode);
100
+ }
101
+ return destKey;
102
+ }
103
+ subscribe(sources) {
104
+ this.currentSources.forEach((source) => source.unregisterForContextChange(this));
105
+ this.currentSources = sources;
106
+ this.currentSources.forEach((source) => source.registerForContextChange(this));
107
+ void this.sourceContextChange(() => { });
108
+ }
109
+ async sourceContextChange(_responseCallback) {
110
+ const currentMapping = this.currentSources.flatMap(source => source.latestStreams().map(stream => {
111
+ const sourceKey = stream.metadata.streamKey;
112
+ const destKey = this.chooseStreamKey(sourceKey, stream.metadata.message);
113
+ return { from: stream, to: destKey, node: undefined, nodeDescriptionId: source.sourceDescription.id };
114
+ }));
115
+ await this.updateNodes(this.diff(currentMapping));
116
+ return false;
117
+ }
118
+ diff(currentMapping) {
119
+ const previousMapping = this.mapping.map(fromTo => ({ ...fromTo, used: false }));
120
+ const added = [];
121
+ const removed = [];
122
+ const unchanged = [];
123
+ for (const fromTo of currentMapping) {
124
+ let found = undefined;
125
+ for (const prev of previousMapping) {
126
+ if (prev.used)
127
+ continue;
128
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(fromTo.from.metadata.streamKey, prev.from.metadata.streamKey)) {
129
+ found = prev;
130
+ prev.used = true;
131
+ break;
132
+ }
133
+ }
134
+ if (!found) {
135
+ added.push(fromTo);
136
+ }
137
+ else if (!(0, norsk_sdk_1.streamKeysAreEqual)(fromTo.to, found.to)) {
138
+ added.push(fromTo);
139
+ removed.push(found);
140
+ }
141
+ else {
142
+ unchanged.push(fromTo);
143
+ }
144
+ }
145
+ for (const prev of previousMapping) {
146
+ if (!prev.used) {
147
+ removed.push(prev);
148
+ }
149
+ }
150
+ return { added, removed, unchanged };
151
+ }
152
+ async updateNodes({ added, removed, unchanged }) {
153
+ (0, logging_1.debuglog)("SKO update (added/removed)", added.map(showMapping), removed.map(showMapping));
154
+ const promises = [];
155
+ for (const fromTo of added) {
156
+ const awaiting = this.norsk.processor.transform.streamKeyOverride({
157
+ id: `sko.${StreamKeyOverride.uid++}[${showStreamKey(fromTo.to)}]`,
158
+ onCreate: (node) => {
159
+ this.relatedMediaNodes.addInput(node);
160
+ this.relatedMediaNodes.addOutput(node);
161
+ fromTo.node = node;
162
+ node.subscribe([{ source: fromTo.from.mediaNode, sourceSelector: () => [fromTo.from.metadata.streamKey] }]);
163
+ },
164
+ streamKey: fromTo.to,
165
+ });
166
+ promises.push(awaiting.then());
167
+ }
168
+ for (const { node } of removed) {
169
+ if (!node)
170
+ continue;
171
+ this.relatedMediaNodes.removeInput(node);
172
+ this.relatedMediaNodes.removeOutput(node);
173
+ const awaiting = node.close();
174
+ promises.push(awaiting);
175
+ }
176
+ this.mapping = added.concat(unchanged);
177
+ await Promise.all(promises);
178
+ }
179
+ async close() {
180
+ await this.updateNodes({ added: [], removed: this.mapping, unchanged: [] });
181
+ }
182
+ selectOutputs(selectionKeys) {
183
+ if (this.cfg.output === 'merged') {
184
+ if (!selectionKeys.length)
185
+ return [];
186
+ return this.mapping.map(m => m.to);
187
+ }
188
+ return this.currentSources.flatMap(source => {
189
+ const sourceNode = source.sourceDescription;
190
+ const produces = sourceNode.info.subscription.produces;
191
+ if (produces?.type != "fixed-list") {
192
+ if (selectionKeys.includes(sourceNode.id)) {
193
+ return this.mapping
194
+ .filter(m => m.nodeDescriptionId === sourceNode.id)
195
+ .map(m => m.to);
196
+ }
197
+ else {
198
+ return [];
199
+ }
200
+ }
201
+ const prefix = `${sourceNode.id}-`;
202
+ const upstreamKeys = selectionKeys
203
+ .filter(k => k.startsWith(prefix))
204
+ .map(k => k.substring(prefix.length));
205
+ const upstream = source.latestStreams(upstreamKeys).map(x => x.metadata.streamKey);
206
+ const downstream = [];
207
+ for (const sourceKey of upstream) {
208
+ for (const m of this.mapping) {
209
+ if ((0, norsk_sdk_1.streamKeysAreEqual)(sourceKey, m.from.metadata.streamKey)) {
210
+ downstream.push(m.to);
211
+ break;
212
+ }
213
+ }
214
+ }
215
+ return downstream;
216
+ });
217
+ }
218
+ }
219
+ exports.StreamKeyOverride = StreamKeyOverride;
220
+ function showMapping({ from, to }) {
221
+ return `${showStreamKey(from.metadata.streamKey)} -> ${showStreamKey(to)}`;
222
+ }
223
+ function showStreamKey(key) {
224
+ return `${key.sourceName}-${key.programNumber}-${key.streamId}-${key.renditionName}`;
225
+ }
226
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.streamKeyOverride/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AxinomConfig } from "@norskvideo/norsk-studio/lib/shared/config";
2
+ export declare function axinomInit(config: AxinomConfig | undefined): Promise<import("./cpix").CryptoDetails>;