@norskvideo/norsk-studio-built-ins 1.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 (332) hide show
  1. package/client/info.js +17990 -0
  2. package/client/output.preview/styles.css +128 -0
  3. package/client/processor.audioLevel/styles.css +164 -0
  4. package/client/processor.audioMixer/styles.css +249 -0
  5. package/client/processor.cascadingSwitch/extra.css +0 -0
  6. package/lib/index.d.ts +3 -0
  7. package/lib/index.js +15 -0
  8. package/lib/index.js.map +1 -0
  9. package/lib/info.d.ts +3 -0
  10. package/lib/info.js +74 -0
  11. package/lib/info.js.map +1 -0
  12. package/lib/input.mediaconnect/flow-selection.d.ts +9 -0
  13. package/lib/input.mediaconnect/flow-selection.js +40 -0
  14. package/lib/input.mediaconnect/flow-selection.js.map +1 -0
  15. package/lib/input.mediaconnect/info.d.ts +3 -0
  16. package/lib/input.mediaconnect/info.js +70 -0
  17. package/lib/input.mediaconnect/info.js.map +1 -0
  18. package/lib/input.mediaconnect/node-view.d.ts +6 -0
  19. package/lib/input.mediaconnect/node-view.js +38 -0
  20. package/lib/input.mediaconnect/node-view.js.map +1 -0
  21. package/lib/input.mediaconnect/output-selection.d.ts +9 -0
  22. package/lib/input.mediaconnect/output-selection.js +55 -0
  23. package/lib/input.mediaconnect/output-selection.js.map +1 -0
  24. package/lib/input.mediaconnect/runtime.d.ts +23 -0
  25. package/lib/input.mediaconnect/runtime.js +133 -0
  26. package/lib/input.mediaconnect/runtime.js.map +1 -0
  27. package/lib/input.rtmp/info.d.ts +3 -0
  28. package/lib/input.rtmp/info.js +101 -0
  29. package/lib/input.rtmp/info.js.map +1 -0
  30. package/lib/input.rtmp/inline-view.d.ts +6 -0
  31. package/lib/input.rtmp/inline-view.js +16 -0
  32. package/lib/input.rtmp/inline-view.js.map +1 -0
  33. package/lib/input.rtmp/runtime.d.ts +19 -0
  34. package/lib/input.rtmp/runtime.js +75 -0
  35. package/lib/input.rtmp/runtime.js.map +1 -0
  36. package/lib/input.rtmp/summary-view.d.ts +6 -0
  37. package/lib/input.rtmp/summary-view.js +22 -0
  38. package/lib/input.rtmp/summary-view.js.map +1 -0
  39. package/lib/input.silence/info.d.ts +3 -0
  40. package/lib/input.silence/info.js +47 -0
  41. package/lib/input.silence/info.js.map +1 -0
  42. package/lib/input.silence/runtime.d.ts +22 -0
  43. package/lib/input.silence/runtime.js +52 -0
  44. package/lib/input.silence/runtime.js.map +1 -0
  45. package/lib/input.srt-caller/info.d.ts +3 -0
  46. package/lib/input.srt-caller/info.js +74 -0
  47. package/lib/input.srt-caller/info.js.map +1 -0
  48. package/lib/input.srt-caller/runtime.d.ts +12 -0
  49. package/lib/input.srt-caller/runtime.js +14 -0
  50. package/lib/input.srt-caller/runtime.js.map +1 -0
  51. package/lib/input.srt-listener/info.d.ts +3 -0
  52. package/lib/input.srt-listener/info.js +125 -0
  53. package/lib/input.srt-listener/info.js.map +1 -0
  54. package/lib/input.srt-listener/inline-view.d.ts +6 -0
  55. package/lib/input.srt-listener/inline-view.js +16 -0
  56. package/lib/input.srt-listener/inline-view.js.map +1 -0
  57. package/lib/input.srt-listener/runtime.d.ts +24 -0
  58. package/lib/input.srt-listener/runtime.js +75 -0
  59. package/lib/input.srt-listener/runtime.js.map +1 -0
  60. package/lib/input.srt-listener/summary-view.d.ts +6 -0
  61. package/lib/input.srt-listener/summary-view.js +22 -0
  62. package/lib/input.srt-listener/summary-view.js.map +1 -0
  63. package/lib/input.udp-ts/info.d.ts +3 -0
  64. package/lib/input.udp-ts/info.js +34 -0
  65. package/lib/input.udp-ts/info.js.map +1 -0
  66. package/lib/input.udp-ts/runtime.d.ts +10 -0
  67. package/lib/input.udp-ts/runtime.js +24 -0
  68. package/lib/input.udp-ts/runtime.js.map +1 -0
  69. package/lib/input.videoTestCard/info.d.ts +3 -0
  70. package/lib/input.videoTestCard/info.js +42 -0
  71. package/lib/input.videoTestCard/info.js.map +1 -0
  72. package/lib/input.videoTestCard/runtime.d.ts +10 -0
  73. package/lib/input.videoTestCard/runtime.js +14 -0
  74. package/lib/input.videoTestCard/runtime.js.map +1 -0
  75. package/lib/output.autoCmaf/form-views.d.ts +3 -0
  76. package/lib/output.autoCmaf/form-views.js +13 -0
  77. package/lib/output.autoCmaf/form-views.js.map +1 -0
  78. package/lib/output.autoCmaf/fullscreen.d.ts +6 -0
  79. package/lib/output.autoCmaf/fullscreen.js +31 -0
  80. package/lib/output.autoCmaf/fullscreen.js.map +1 -0
  81. package/lib/output.autoCmaf/info.d.ts +3 -0
  82. package/lib/output.autoCmaf/info.js +197 -0
  83. package/lib/output.autoCmaf/info.js.map +1 -0
  84. package/lib/output.autoCmaf/runtime.d.ts +66 -0
  85. package/lib/output.autoCmaf/runtime.js +285 -0
  86. package/lib/output.autoCmaf/runtime.js.map +1 -0
  87. package/lib/output.autoCmaf/summary.d.ts +6 -0
  88. package/lib/output.autoCmaf/summary.js +32 -0
  89. package/lib/output.autoCmaf/summary.js.map +1 -0
  90. package/lib/output.medialive/channel-selection.d.ts +9 -0
  91. package/lib/output.medialive/channel-selection.js +40 -0
  92. package/lib/output.medialive/channel-selection.js.map +1 -0
  93. package/lib/output.medialive/fullscreen.d.ts +6 -0
  94. package/lib/output.medialive/fullscreen.js +31 -0
  95. package/lib/output.medialive/fullscreen.js.map +1 -0
  96. package/lib/output.medialive/info.d.ts +3 -0
  97. package/lib/output.medialive/info.js +111 -0
  98. package/lib/output.medialive/info.js.map +1 -0
  99. package/lib/output.medialive/inline.d.ts +6 -0
  100. package/lib/output.medialive/inline.js +30 -0
  101. package/lib/output.medialive/inline.js.map +1 -0
  102. package/lib/output.medialive/input-selection.d.ts +9 -0
  103. package/lib/output.medialive/input-selection.js +58 -0
  104. package/lib/output.medialive/input-selection.js.map +1 -0
  105. package/lib/output.medialive/node-view.d.ts +6 -0
  106. package/lib/output.medialive/node-view.js +36 -0
  107. package/lib/output.medialive/node-view.js.map +1 -0
  108. package/lib/output.medialive/runtime.d.ts +34 -0
  109. package/lib/output.medialive/runtime.js +142 -0
  110. package/lib/output.medialive/runtime.js.map +1 -0
  111. package/lib/output.medialive/url-selection.d.ts +9 -0
  112. package/lib/output.medialive/url-selection.js +45 -0
  113. package/lib/output.medialive/url-selection.js.map +1 -0
  114. package/lib/output.preview/info.d.ts +5 -0
  115. package/lib/output.preview/info.js +103 -0
  116. package/lib/output.preview/info.js.map +1 -0
  117. package/lib/output.preview/inline-view.d.ts +6 -0
  118. package/lib/output.preview/inline-view.js +29 -0
  119. package/lib/output.preview/inline-view.js.map +1 -0
  120. package/lib/output.preview/runtime.d.ts +34 -0
  121. package/lib/output.preview/runtime.js +86 -0
  122. package/lib/output.preview/runtime.js.map +1 -0
  123. package/lib/output.rtmp/info.d.ts +3 -0
  124. package/lib/output.rtmp/info.js +76 -0
  125. package/lib/output.rtmp/info.js.map +1 -0
  126. package/lib/output.rtmp/inline-view.d.ts +6 -0
  127. package/lib/output.rtmp/inline-view.js +10 -0
  128. package/lib/output.rtmp/inline-view.js.map +1 -0
  129. package/lib/output.rtmp/runtime.d.ts +23 -0
  130. package/lib/output.rtmp/runtime.js +51 -0
  131. package/lib/output.rtmp/runtime.js.map +1 -0
  132. package/lib/output.srt/info.d.ts +3 -0
  133. package/lib/output.srt/info.js +102 -0
  134. package/lib/output.srt/info.js.map +1 -0
  135. package/lib/output.srt/runtime.d.ts +12 -0
  136. package/lib/output.srt/runtime.js +14 -0
  137. package/lib/output.srt/runtime.js.map +1 -0
  138. package/lib/output.statistics/info.d.ts +4 -0
  139. package/lib/output.statistics/info.js +69 -0
  140. package/lib/output.statistics/info.js.map +1 -0
  141. package/lib/output.statistics/inline-view.d.ts +6 -0
  142. package/lib/output.statistics/inline-view.js +32 -0
  143. package/lib/output.statistics/inline-view.js.map +1 -0
  144. package/lib/output.statistics/runtime.d.ts +18 -0
  145. package/lib/output.statistics/runtime.js +36 -0
  146. package/lib/output.statistics/runtime.js.map +1 -0
  147. package/lib/output.udpTs/info.d.ts +3 -0
  148. package/lib/output.udpTs/info.js +33 -0
  149. package/lib/output.udpTs/info.js.map +1 -0
  150. package/lib/output.udpTs/runtime.d.ts +10 -0
  151. package/lib/output.udpTs/runtime.js +14 -0
  152. package/lib/output.udpTs/runtime.js.map +1 -0
  153. package/lib/output.whep/info.d.ts +3 -0
  154. package/lib/output.whep/info.js +28 -0
  155. package/lib/output.whep/info.js.map +1 -0
  156. package/lib/output.whep/runtime.d.ts +14 -0
  157. package/lib/output.whep/runtime.js +21 -0
  158. package/lib/output.whep/runtime.js.map +1 -0
  159. package/lib/processor.actionReplay/info.d.ts +5 -0
  160. package/lib/processor.actionReplay/info.js +100 -0
  161. package/lib/processor.actionReplay/info.js.map +1 -0
  162. package/lib/processor.actionReplay/runtime.d.ts +59 -0
  163. package/lib/processor.actionReplay/runtime.js +224 -0
  164. package/lib/processor.actionReplay/runtime.js.map +1 -0
  165. package/lib/processor.actionReplay/summary.d.ts +7 -0
  166. package/lib/processor.actionReplay/summary.js +76 -0
  167. package/lib/processor.actionReplay/summary.js.map +1 -0
  168. package/lib/processor.audioLevel/info.d.ts +3 -0
  169. package/lib/processor.audioLevel/info.js +83 -0
  170. package/lib/processor.audioLevel/info.js.map +1 -0
  171. package/lib/processor.audioLevel/inline-view.d.ts +6 -0
  172. package/lib/processor.audioLevel/inline-view.js +23 -0
  173. package/lib/processor.audioLevel/inline-view.js.map +1 -0
  174. package/lib/processor.audioLevel/runtime.d.ts +49 -0
  175. package/lib/processor.audioLevel/runtime.js +82 -0
  176. package/lib/processor.audioLevel/runtime.js.map +1 -0
  177. package/lib/processor.audioLevel/summary-view.d.ts +7 -0
  178. package/lib/processor.audioLevel/summary-view.js +36 -0
  179. package/lib/processor.audioLevel/summary-view.js.map +1 -0
  180. package/lib/processor.audioMixer/fullscreen-view.d.ts +8 -0
  181. package/lib/processor.audioMixer/fullscreen-view.js +121 -0
  182. package/lib/processor.audioMixer/fullscreen-view.js.map +1 -0
  183. package/lib/processor.audioMixer/info.d.ts +4 -0
  184. package/lib/processor.audioMixer/info.js +148 -0
  185. package/lib/processor.audioMixer/info.js.map +1 -0
  186. package/lib/processor.audioMixer/inline-view.d.ts +7 -0
  187. package/lib/processor.audioMixer/inline-view.js +43 -0
  188. package/lib/processor.audioMixer/inline-view.js.map +1 -0
  189. package/lib/processor.audioMixer/runtime.d.ts +119 -0
  190. package/lib/processor.audioMixer/runtime.js +142 -0
  191. package/lib/processor.audioMixer/runtime.js.map +1 -0
  192. package/lib/processor.audioMixer/summary-view.d.ts +7 -0
  193. package/lib/processor.audioMixer/summary-view.js +11 -0
  194. package/lib/processor.audioMixer/summary-view.js.map +1 -0
  195. package/lib/processor.aws-transcribe/info.d.ts +3 -0
  196. package/lib/processor.aws-transcribe/info.js +81 -0
  197. package/lib/processor.aws-transcribe/info.js.map +1 -0
  198. package/lib/processor.aws-transcribe/runtime.d.ts +39 -0
  199. package/lib/processor.aws-transcribe/runtime.js +164 -0
  200. package/lib/processor.aws-transcribe/runtime.js.map +1 -0
  201. package/lib/processor.aws-transcribe/transcribe-language-selection.d.ts +9 -0
  202. package/lib/processor.aws-transcribe/transcribe-language-selection.js +40 -0
  203. package/lib/processor.aws-transcribe/transcribe-language-selection.js.map +1 -0
  204. package/lib/processor.aws-transcribe/translate-language-selection.d.ts +9 -0
  205. package/lib/processor.aws-transcribe/translate-language-selection.js +40 -0
  206. package/lib/processor.aws-transcribe/translate-language-selection.js.map +1 -0
  207. package/lib/processor.browserOverlay/info.d.ts +3 -0
  208. package/lib/processor.browserOverlay/info.js +38 -0
  209. package/lib/processor.browserOverlay/info.js.map +1 -0
  210. package/lib/processor.browserOverlay/runtime.d.ts +29 -0
  211. package/lib/processor.browserOverlay/runtime.js +121 -0
  212. package/lib/processor.browserOverlay/runtime.js.map +1 -0
  213. package/lib/processor.cascadingSwitch/info.d.ts +3 -0
  214. package/lib/processor.cascadingSwitch/info.js +155 -0
  215. package/lib/processor.cascadingSwitch/info.js.map +1 -0
  216. package/lib/processor.cascadingSwitch/inline-view.d.ts +6 -0
  217. package/lib/processor.cascadingSwitch/inline-view.js +15 -0
  218. package/lib/processor.cascadingSwitch/inline-view.js.map +1 -0
  219. package/lib/processor.cascadingSwitch/runtime.d.ts +59 -0
  220. package/lib/processor.cascadingSwitch/runtime.js +117 -0
  221. package/lib/processor.cascadingSwitch/runtime.js.map +1 -0
  222. package/lib/processor.cascadingSwitch/source-selection.d.ts +7 -0
  223. package/lib/processor.cascadingSwitch/source-selection.js +36 -0
  224. package/lib/processor.cascadingSwitch/source-selection.js.map +1 -0
  225. package/lib/processor.fixedLadder/info.d.ts +8 -0
  226. package/lib/processor.fixedLadder/info.js +71 -0
  227. package/lib/processor.fixedLadder/info.js.map +1 -0
  228. package/lib/processor.fixedLadder/runtime.d.ts +16 -0
  229. package/lib/processor.fixedLadder/runtime.js +165 -0
  230. package/lib/processor.fixedLadder/runtime.js.map +1 -0
  231. package/lib/processor.monetise/info.d.ts +3 -0
  232. package/lib/processor.monetise/info.js +90 -0
  233. package/lib/processor.monetise/info.js.map +1 -0
  234. package/lib/processor.monetise/runtime.d.ts +57 -0
  235. package/lib/processor.monetise/runtime.js +141 -0
  236. package/lib/processor.monetise/runtime.js.map +1 -0
  237. package/lib/processor.monetise/summary.d.ts +7 -0
  238. package/lib/processor.monetise/summary.js +39 -0
  239. package/lib/processor.monetise/summary.js.map +1 -0
  240. package/lib/processor.whisper-transcribe/info.d.ts +3 -0
  241. package/lib/processor.whisper-transcribe/info.js +43 -0
  242. package/lib/processor.whisper-transcribe/info.js.map +1 -0
  243. package/lib/processor.whisper-transcribe/runtime.d.ts +29 -0
  244. package/lib/processor.whisper-transcribe/runtime.js +83 -0
  245. package/lib/processor.whisper-transcribe/runtime.js.map +1 -0
  246. package/lib/shared/srt-form-views.d.ts +2 -0
  247. package/lib/shared/srt-form-views.js +10 -0
  248. package/lib/shared/srt-form-views.js.map +1 -0
  249. package/lib/shared/srt-socket-options.d.ts +4 -0
  250. package/lib/shared/srt-socket-options.js +36 -0
  251. package/lib/shared/srt-socket-options.js.map +1 -0
  252. package/lib/shared/srt-types.d.ts +2 -0
  253. package/lib/shared/srt-types.js +3 -0
  254. package/lib/shared/srt-types.js.map +1 -0
  255. package/lib/test/audio-mixer.d.ts +0 -0
  256. package/lib/test/audio-mixer.js +2 -0
  257. package/lib/test/audio-mixer.js.map +1 -0
  258. package/lib/test/auto-cmaf.d.ts +1 -0
  259. package/lib/test/auto-cmaf.js +142 -0
  260. package/lib/test/auto-cmaf.js.map +1 -0
  261. package/lib/test/browser-overlay.d.ts +1 -0
  262. package/lib/test/browser-overlay.js +79 -0
  263. package/lib/test/browser-overlay.js.map +1 -0
  264. package/lib/test/cascading-switch.d.ts +1 -0
  265. package/lib/test/cascading-switch.js +286 -0
  266. package/lib/test/cascading-switch.js.map +1 -0
  267. package/lib/test/fixed-ladder.d.ts +1 -0
  268. package/lib/test/fixed-ladder.js +100 -0
  269. package/lib/test/fixed-ladder.js.map +1 -0
  270. package/lib/test/rtmp-input.d.ts +1 -0
  271. package/lib/test/rtmp-input.js +182 -0
  272. package/lib/test/rtmp-input.js.map +1 -0
  273. package/lib/test/rtmp-output.d.ts +1 -0
  274. package/lib/test/rtmp-output.js +74 -0
  275. package/lib/test/rtmp-output.js.map +1 -0
  276. package/lib/test/silence-generator.d.ts +1 -0
  277. package/lib/test/silence-generator.js +65 -0
  278. package/lib/test/silence-generator.js.map +1 -0
  279. package/lib/test/srt-input-caller.d.ts +1 -0
  280. package/lib/test/srt-input-caller.js +79 -0
  281. package/lib/test/srt-input-caller.js.map +1 -0
  282. package/lib/test/srt-input-listener.d.ts +1 -0
  283. package/lib/test/srt-input-listener.js +382 -0
  284. package/lib/test/srt-input-listener.js.map +1 -0
  285. package/lib/test/srt-output.d.ts +1 -0
  286. package/lib/test/srt-output.js +78 -0
  287. package/lib/test/srt-output.js.map +1 -0
  288. package/lib/test/udp-output.d.ts +1 -0
  289. package/lib/test/udp-output.js +76 -0
  290. package/lib/test/udp-output.js.map +1 -0
  291. package/lib/test/udp-ts-input.d.ts +1 -0
  292. package/lib/test/udp-ts-input.js +78 -0
  293. package/lib/test/udp-ts-input.js.map +1 -0
  294. package/lib/test/video-card.d.ts +1 -0
  295. package/lib/test/video-card.js +68 -0
  296. package/lib/test/video-card.js.map +1 -0
  297. package/lib/test/whep-output.d.ts +1 -0
  298. package/lib/test/whep-output.js +92 -0
  299. package/lib/test/whep-output.js.map +1 -0
  300. package/lib/util.latency/info.d.ts +3 -0
  301. package/lib/util.latency/info.js +116 -0
  302. package/lib/util.latency/info.js.map +1 -0
  303. package/lib/util.latency/inline-view.d.ts +6 -0
  304. package/lib/util.latency/inline-view.js +74 -0
  305. package/lib/util.latency/inline-view.js.map +1 -0
  306. package/lib/util.latency/runtime.d.ts +19 -0
  307. package/lib/util.latency/runtime.js +87 -0
  308. package/lib/util.latency/runtime.js.map +1 -0
  309. package/lib/util.latency/source-node-selection.d.ts +9 -0
  310. package/lib/util.latency/source-node-selection.js +17 -0
  311. package/lib/util.latency/source-node-selection.js.map +1 -0
  312. package/lib/util.ma35d/info.d.ts +3 -0
  313. package/lib/util.ma35d/info.js +78 -0
  314. package/lib/util.ma35d/info.js.map +1 -0
  315. package/lib/util.ma35d/inline-view.d.ts +6 -0
  316. package/lib/util.ma35d/inline-view.js +76 -0
  317. package/lib/util.ma35d/inline-view.js.map +1 -0
  318. package/lib/util.ma35d/runtime.d.ts +21 -0
  319. package/lib/util.ma35d/runtime.js +49 -0
  320. package/lib/util.ma35d/runtime.js.map +1 -0
  321. package/lib/util.timestamps/info.d.ts +5 -0
  322. package/lib/util.timestamps/info.js +86 -0
  323. package/lib/util.timestamps/info.js.map +1 -0
  324. package/lib/util.timestamps/inline-view.d.ts +6 -0
  325. package/lib/util.timestamps/inline-view.js +94 -0
  326. package/lib/util.timestamps/inline-view.js.map +1 -0
  327. package/lib/util.timestamps/runtime.d.ts +29 -0
  328. package/lib/util.timestamps/runtime.js +40 -0
  329. package/lib/util.timestamps/runtime.js.map +1 -0
  330. package/package.json +61 -0
  331. package/shared/style.css +1617 -0
  332. package/shared/tailwind.css +31 -0
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
4
+ const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
5
+ class FixedLadderDefinition {
6
+ async create(norsk, cfg, cb) {
7
+ const wrapper = new base_nodes_1.SimpleProcessorWrapper(cfg.id, async () => {
8
+ return await norsk.processor.transform.videoEncode({
9
+ id: `${cfg.id}-ladder`,
10
+ rungs: cfg.rungs.map((r) => createRung(r, cfg.__global.hardware))
11
+ });
12
+ });
13
+ await wrapper.initialised;
14
+ cb(wrapper);
15
+ }
16
+ }
17
+ exports.default = FixedLadderDefinition;
18
+ function createRung(rung, hardware) {
19
+ switch (hardware) {
20
+ case undefined:
21
+ switch (rung) {
22
+ case 'h264_1920x1080':
23
+ return createRungImpl({ name: rung, threads: 8, bitrate: 5_000 });
24
+ case 'h264_1280x720':
25
+ return createRungImpl({ name: rung, threads: 4, bitrate: 2_500 });
26
+ case 'h264_640x360':
27
+ return createRungImpl({ name: rung, threads: 2, bitrate: 1_000 });
28
+ case 'h264_320x180':
29
+ return createRungImpl({ name: rung, threads: 1, bitrate: 800 });
30
+ default:
31
+ return (0, util_1.assertUnreachable)(rung);
32
+ }
33
+ case "ma35d":
34
+ switch (rung) {
35
+ case 'h264_1920x1080':
36
+ return createMa35DHevcRungImpl({ name: rung, bitrate: 10_000 });
37
+ case 'h264_1280x720':
38
+ return createMa35DH264RungImpl({ name: rung, bitrate: 5_000 });
39
+ case 'h264_640x360':
40
+ return createMa35DH264RungImpl({ name: rung, bitrate: 2_000 });
41
+ case 'h264_320x180':
42
+ return createMa35DH264RungImpl({ name: rung, bitrate: 1_000 });
43
+ default:
44
+ return (0, util_1.assertUnreachable)(rung);
45
+ }
46
+ case 'logan':
47
+ throw new Error("Logan not supported, just for show");
48
+ case 'nvidia':
49
+ switch (rung) {
50
+ case 'h264_1920x1080':
51
+ return createNvidiaRungImpl({ name: rung, bitrate: 5_000_000 });
52
+ case 'h264_1280x720':
53
+ return createNvidiaRungImpl({ name: rung, bitrate: 2_500_000 });
54
+ case 'h264_640x360':
55
+ return createNvidiaRungImpl({ name: rung, bitrate: 1_000_000 });
56
+ case 'h264_320x180':
57
+ return createNvidiaRungImpl({ name: rung, bitrate: 800_000 });
58
+ default:
59
+ return (0, util_1.assertUnreachable)(rung);
60
+ }
61
+ case 'quadra':
62
+ switch (rung) {
63
+ case 'h264_1920x1080':
64
+ return createQuadraRungImpl({ name: rung, bitrate: 5_000_000 });
65
+ case 'h264_1280x720':
66
+ return createQuadraRungImpl({ name: rung, bitrate: 2_500_000 });
67
+ case 'h264_640x360':
68
+ return createQuadraRungImpl({ name: rung, bitrate: 1_000_000 });
69
+ case 'h264_320x180':
70
+ return createQuadraRungImpl({ name: rung, bitrate: 800_000 });
71
+ default:
72
+ return (0, util_1.assertUnreachable)(rung);
73
+ }
74
+ default:
75
+ return (0, util_1.assertUnreachable)(hardware);
76
+ }
77
+ }
78
+ function rungWidth(rungName) {
79
+ return parseInt(rungName.split('_')[1].split(`x`)[0]);
80
+ }
81
+ function rungHeight(rungName) {
82
+ return parseInt(rungName.split('_')[1].split(`x`)[1]);
83
+ }
84
+ function createRungImpl({ name, threads, bitrate }) {
85
+ const codec = {
86
+ type: "x264",
87
+ bitrateMode: { value: bitrate, mode: "abr" },
88
+ keyFrameIntervalMax: 50,
89
+ keyFrameIntervalMin: 50,
90
+ sceneCut: 0,
91
+ preset: "fast",
92
+ tune: "zerolatency",
93
+ threads,
94
+ bframes: 0,
95
+ };
96
+ return {
97
+ name,
98
+ width: rungWidth(name),
99
+ height: rungHeight(name),
100
+ codec,
101
+ frameRate: { frames: 25, seconds: 1 },
102
+ };
103
+ }
104
+ function createMa35DHevcRungImpl({ name, bitrate }) {
105
+ const codec = {
106
+ type: "amdMA35D-hevc",
107
+ profile: "main",
108
+ rateControl: { mode: "cbr", bitrate: bitrate },
109
+ gopSize: 50,
110
+ };
111
+ return {
112
+ name,
113
+ width: rungWidth(name),
114
+ height: rungHeight(name),
115
+ codec,
116
+ frameRate: { frames: 25, seconds: 1 },
117
+ };
118
+ }
119
+ function createMa35DH264RungImpl({ name, bitrate }) {
120
+ const codec = {
121
+ type: "amdMA35D-h264",
122
+ profile: "main",
123
+ rateControl: { mode: "cbr", bitrate: bitrate },
124
+ gopSize: 50,
125
+ };
126
+ return {
127
+ name,
128
+ width: rungWidth(name),
129
+ height: rungHeight(name),
130
+ codec,
131
+ frameRate: { frames: 25, seconds: 1 },
132
+ };
133
+ }
134
+ function createQuadraRungImpl({ name, bitrate }) {
135
+ const codec = {
136
+ type: "quadra-h264",
137
+ intraPeriod: 50,
138
+ bitrate
139
+ };
140
+ return {
141
+ name,
142
+ width: rungWidth(name),
143
+ height: rungHeight(name),
144
+ codec,
145
+ frameRate: { frames: 25, seconds: 1 },
146
+ };
147
+ }
148
+ function createNvidiaRungImpl({ name, bitrate }) {
149
+ const codec = {
150
+ type: "nv-h264",
151
+ idrPeriod: 50,
152
+ rateControl: {
153
+ mode: 'vbr',
154
+ averageBitrate: bitrate
155
+ }
156
+ };
157
+ return {
158
+ name,
159
+ width: rungWidth(name),
160
+ height: rungHeight(name),
161
+ codec,
162
+ frameRate: { frames: 25, seconds: 1 },
163
+ };
164
+ }
165
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.fixedLadder/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MonetiseOutputCommand, MonetiseOutputEvent, MonetiseOutputSettings, MonetiseOutputState } from "./runtime";
2
+ import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
3
+ export default function (R: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<MonetiseOutputSettings, MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importDefault(require("react"));
30
+ const config_1 = require("@norskvideo/norsk-studio/lib/shared/config");
31
+ function default_1(R) {
32
+ const { defineComponent, Av, } = R;
33
+ const SummaryView = react_1.default.lazy(async () => Promise.resolve().then(() => __importStar(require('./summary'))));
34
+ return defineComponent({
35
+ identifier: 'processor.monetise',
36
+ category: 'output',
37
+ name: "Monetise",
38
+ subscription: {
39
+ accepts: {
40
+ type: "single-stream",
41
+ media: Av
42
+ },
43
+ produces: {
44
+ type: 'single-stream',
45
+ media: ["audio", "video", "ancillary"]
46
+ }
47
+ },
48
+ extraValidation: (ctx) => {
49
+ ctx.requireVideo(1);
50
+ ctx.requireAudio(1);
51
+ },
52
+ display: (_desc) => { return {}; },
53
+ runtime: {
54
+ initialState: () => ({}),
55
+ handleEvent(ev, state) {
56
+ const evType = ev.type;
57
+ switch (evType) {
58
+ case 'url-published':
59
+ state.url = ev.url;
60
+ break;
61
+ case 'advert-started':
62
+ state.currentAdvert = { timeLeftMs: ev.durationMs };
63
+ break;
64
+ case 'advert-tick':
65
+ state.currentAdvert = { timeLeftMs: ev.timeLeftMs };
66
+ break;
67
+ case 'advert-finished':
68
+ state.currentAdvert = undefined;
69
+ break;
70
+ default:
71
+ assertUnreachable(evType);
72
+ }
73
+ return { ...state };
74
+ },
75
+ summary: SummaryView
76
+ },
77
+ configForm: {
78
+ global: {
79
+ iceServers: (0, config_1.GlobalIceServers)(R),
80
+ hardware: (0, config_1.HardwareSelection)()
81
+ },
82
+ form: {}
83
+ }
84
+ });
85
+ }
86
+ exports.default = default_1;
87
+ function assertUnreachable(_) {
88
+ throw new Error("Didn't expect to get here");
89
+ }
90
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.monetise/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,uEAAiG;AAEjG,mBAAwB,CAAe;IACrC,MAAM,EACJ,eAAe,EACf,EAAE,GACH,GAAG,CAAC,CAAC;IACN,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,WAAW,GAAC,CAAC,CAAC;IAEhE,OAAO,eAAe,CAA0F;QAC9G,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;aACvC;SACF;QACD,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,EAAE;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,EAAE,EAAE,KAAK;gBACnB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;gBACvB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,eAAe;wBAClB,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;wBACnB,MAAM;oBACR,KAAK,gBAAgB;wBACnB,KAAK,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;wBACpD,MAAM;oBACR,KAAK,aAAa;wBAChB,KAAK,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;wBACpD,MAAM;oBACR,KAAK,iBAAiB;wBACpB,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;wBAChC,MAAM;oBACR;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;gBACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,WAAW;SACrB;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,UAAU,EAAE,IAAA,yBAAgB,EAAC,CAAC,CAAC;gBAC/B,QAAQ,EAAE,IAAA,0BAAiB,GAAE;aAC9B;YACD,IAAI,EAAE,EACL;SACF;KACF,CAAC,CAAC;AACL,CAAC;AA3DD,4BA2DC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { AncillaryNode, JitterBufferNode, Norsk, SourceMediaNode, StreamMetadataOverrideNode, WhepOutputNode } from '@norskvideo/norsk-sdk';
2
+ import { OnCreated, RuntimeUpdates, ServerComponentDefinition, StudioNodeSubscriptionSource, StudioRuntime, StudioShared } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ import { CustomAutoDuplexNode, SubscriptionOpts } from '@norskvideo/norsk-studio/lib/extension/base-nodes';
4
+ import { HardwareAccelerationType } from '@norskvideo/norsk-studio/lib/shared/config';
5
+ export type MonetiseOutputSettings = {
6
+ id: string;
7
+ displayName: string;
8
+ __global: {
9
+ iceServers: string[];
10
+ hardware?: HardwareAccelerationType;
11
+ };
12
+ };
13
+ export type MonetiseOutputState = {
14
+ url?: string;
15
+ currentAdvert?: {
16
+ timeLeftMs: number;
17
+ };
18
+ };
19
+ export type MonetiseOutputEvent = {
20
+ type: 'url-published';
21
+ url: string;
22
+ } | {
23
+ type: 'advert-started';
24
+ durationMs: number;
25
+ } | {
26
+ type: 'advert-tick';
27
+ timeLeftMs: number;
28
+ } | {
29
+ type: 'advert-finished';
30
+ };
31
+ export type MonetiseOutputCommand = {
32
+ type: 'inject-advert';
33
+ durationMs: number;
34
+ };
35
+ export default class WhepOutputDefinition implements ServerComponentDefinition<MonetiseOutputSettings, MonetiseOutput, MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent> {
36
+ create(norsk: Norsk, cfg: MonetiseOutputSettings, cb: OnCreated<MonetiseOutput>, runtime: StudioRuntime<MonetiseOutputState, MonetiseOutputEvent>): Promise<void>;
37
+ handleCommand(node: MonetiseOutput, command: MonetiseOutputCommand): void;
38
+ }
39
+ declare class MonetiseOutput extends CustomAutoDuplexNode {
40
+ initialised: Promise<void>;
41
+ norsk: Norsk;
42
+ updates: RuntimeUpdates<MonetiseOutputState, MonetiseOutputEvent>;
43
+ shared: StudioShared;
44
+ cfg: MonetiseOutputSettings;
45
+ encoder?: SourceMediaNode;
46
+ whep?: WhepOutputNode;
47
+ delayed?: JitterBufferNode;
48
+ ancillary?: AncillaryNode;
49
+ output?: StreamMetadataOverrideNode;
50
+ start: Date;
51
+ constructor(norsk: Norsk, runtime: StudioRuntime<MonetiseOutputState, MonetiseOutputEvent>, cfg: MonetiseOutputSettings);
52
+ initialise(): Promise<void>;
53
+ injectAdvert(durationMs: number): void;
54
+ subscribe(sources: StudioNodeSubscriptionSource[], _opts?: SubscriptionOpts | undefined): void;
55
+ setupPreview(sources: StudioNodeSubscriptionSource[]): Promise<void>;
56
+ }
57
+ export {};
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
4
+ const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
5
+ const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
6
+ class WhepOutputDefinition {
7
+ async create(norsk, cfg, cb, runtime) {
8
+ const node = new MonetiseOutput(norsk, runtime, cfg);
9
+ await node.initialised;
10
+ cb(node);
11
+ }
12
+ handleCommand(node, command) {
13
+ const t = command.type;
14
+ switch (t) {
15
+ case 'inject-advert':
16
+ node.injectAdvert(command.durationMs);
17
+ break;
18
+ default:
19
+ (0, util_1.assertUnreachable)(t);
20
+ }
21
+ }
22
+ }
23
+ exports.default = WhepOutputDefinition;
24
+ class MonetiseOutput extends base_nodes_1.CustomAutoDuplexNode {
25
+ initialised;
26
+ norsk;
27
+ updates;
28
+ shared;
29
+ cfg;
30
+ encoder;
31
+ whep;
32
+ delayed;
33
+ ancillary;
34
+ output;
35
+ start;
36
+ constructor(norsk, runtime, cfg) {
37
+ super(cfg.id);
38
+ this.cfg = cfg;
39
+ this.norsk = norsk;
40
+ this.updates = runtime.updates;
41
+ this.shared = runtime.shared;
42
+ this.initialised = this.initialise();
43
+ this.start = new Date();
44
+ }
45
+ async initialise() {
46
+ const whepCfg = {
47
+ id: `${this.cfg.id}-whep`,
48
+ bufferDelayMs: 500.0,
49
+ iceServers: this.cfg.__global.iceServers.map((s) => ({ urls: [s] })),
50
+ };
51
+ this.whep = await this.norsk.output.whep(whepCfg);
52
+ this.ancillary = await this.norsk.processor.transform.ancillary({ id: `${this.cfg.id}-inject` });
53
+ this.delayed = await this.norsk.processor.transform.jitterBuffer({
54
+ id: `${this.cfg.id}-delay`,
55
+ delayMs: 2000
56
+ });
57
+ this.output = await this.norsk.processor.transform.streamMetadataOverride({
58
+ id: `${this.cfg.id}-output`
59
+ });
60
+ this.output.subscribe([
61
+ { source: this.ancillary, sourceSelector: norsk_sdk_1.selectAncillary },
62
+ { source: this.delayed, sourceSelector: norsk_sdk_1.selectAV }
63
+ ]);
64
+ this.setup({
65
+ input: this.delayed,
66
+ output: [this.output]
67
+ });
68
+ }
69
+ injectAdvert(durationMs) {
70
+ this.updates.raiseEvent({ type: 'advert-started', durationMs });
71
+ let remaining = durationMs;
72
+ const updateTick = setInterval(() => {
73
+ remaining -= 1000;
74
+ this.updates.raiseEvent({
75
+ type: 'advert-tick',
76
+ timeLeftMs: Math.max(0, remaining)
77
+ });
78
+ }, 1000);
79
+ setTimeout(() => {
80
+ this.updates.raiseEvent({ type: 'advert-finished' });
81
+ clearInterval(updateTick);
82
+ }, durationMs);
83
+ const id = Math.random().toString().slice(-5);
84
+ this.ancillary?.sendScte35({
85
+ streamId: 1,
86
+ programNumber: 1,
87
+ sourceName: 'monetise',
88
+ renditionName: 'default'
89
+ }, {
90
+ sapType: 3,
91
+ protocolVersion: 0,
92
+ encryptedPacket: false,
93
+ encryptionAlgorithm: 0,
94
+ ptsAdjustment: BigInt(0),
95
+ cwIndex: 0,
96
+ tier: 4095,
97
+ spliceCommand: {
98
+ type: "insert",
99
+ value: {
100
+ spliceEventId: Number(id),
101
+ spliceEventCancelIndicator: false,
102
+ outOfNetworkIndicator: true,
103
+ spliceImmediateFlag: true,
104
+ mode: {
105
+ mode: 'program'
106
+ },
107
+ breakDuration: { autoReturn: true, duration: BigInt(durationMs * 90) },
108
+ uniqueProgramId: 12345,
109
+ availNum: 0,
110
+ availsExpected: 0
111
+ },
112
+ },
113
+ descriptors: []
114
+ });
115
+ }
116
+ subscribe(sources, _opts) {
117
+ if (!this.whep)
118
+ return;
119
+ this.delayed?.subscribe(sources.flatMap((s) => s.selectAV()));
120
+ void this.setupPreview(sources);
121
+ }
122
+ async setupPreview(sources) {
123
+ const videoSource = sources.find((s) => s.streams.select.includes("video"));
124
+ const audioSource = sources.find((s) => s.streams.select.includes("audio"));
125
+ if (!videoSource)
126
+ return;
127
+ if (!audioSource)
128
+ return;
129
+ this.encoder = await this.shared.previewEncode(videoSource.selectVideo()[0], this.cfg.__global.hardware);
130
+ this.whep?.subscribe([
131
+ { source: this.encoder, sourceSelector: norsk_sdk_1.selectVideo },
132
+ audioSource.selectAudio()[0]
133
+ ], (ctx) => {
134
+ if (ctx.streams.length == 2 && this.whep?.endpointUrl) {
135
+ this.updates.raiseEvent({ type: 'url-published', url: this.whep?.endpointUrl });
136
+ }
137
+ return (0, norsk_sdk_1.requireAV)(ctx);
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.monetise/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { MonetiseOutputCommand, MonetiseOutputSettings, MonetiseOutputState } from "./runtime";
2
+ declare function InlineView({ state, config, sendCommand }: {
3
+ state: MonetiseOutputState;
4
+ config: MonetiseOutputSettings;
5
+ sendCommand: (command: MonetiseOutputCommand) => void;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export default InlineView;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("react");
5
+ const webrtc_client_1 = require("@norskvideo/webrtc-client");
6
+ function InlineView({ state, config, sendCommand }) {
7
+ const url = state.url;
8
+ const id = config.id;
9
+ const previewVideo = (0, react_1.useRef)(null);
10
+ const durationSlider = (0, react_1.useRef)(null);
11
+ (0, react_1.useEffect)(() => {
12
+ if (!url)
13
+ return;
14
+ setTimeout(() => {
15
+ if (!url)
16
+ return;
17
+ if (!previewVideo.current)
18
+ return;
19
+ const client = new webrtc_client_1.WhepClient({ url, container: previewVideo.current });
20
+ void client.start();
21
+ }, 1000.0);
22
+ }, [state.url]);
23
+ if (!url)
24
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: "Starting up..." });
25
+ return (0, jsx_runtime_1.jsxs)("div", { className: "mb-5", children: [(0, jsx_runtime_1.jsx)("div", { ref: previewVideo, className: "", id: `preview-${id}` }), state.currentAdvert ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Advert currently playing: ", Math.floor(state.currentAdvert.timeLeftMs / 1000), "s"] }) :
26
+ (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("label", { htmlFor: "default-range", className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", children: ["Advert Duration (", durationSlider.current?.value ?? 16, "s)"] }), (0, jsx_runtime_1.jsx)("input", { ref: durationSlider, id: "default-range", type: "range", defaultValue: "16", min: "16", max: "120", className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700" }), (0, jsx_runtime_1.jsx)("button", { onClick: sendAdvertCommand, type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", children: "Inject Advert" })] })] });
27
+ function sendAdvertCommand() {
28
+ if (!previewVideo.current)
29
+ return;
30
+ if (!durationSlider.current)
31
+ return;
32
+ sendCommand({
33
+ type: "inject-advert",
34
+ durationMs: parseInt(durationSlider.current.value, 10) * 1000
35
+ });
36
+ }
37
+ }
38
+ exports.default = InlineView;
39
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/processor.monetise/summary.tsx"],"names":[],"mappings":";;;AAAA,iCAA0C;AAG1C,6DAAsD;AAEtD,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAyH;IACvK,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IAErB,MAAM,YAAY,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAA;IAErD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAClC,MAAM,MAAM,GAAG,IAAI,0BAAU,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QAEtB,CAAC,EAAE,MAAM,CAAC,CAAC;IACb,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhB,IAAI,CAAC,GAAG;QAAE,OAAO,8EAAmB,CAAA;IAEpC,OAAO,iCAAK,SAAS,EAAC,MAAM,aAC1B,gCAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,EAAE,EAAC,EAAE,EAAE,WAAW,EAAE,EAAE,GAClD,EACL,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,2FAA6B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,SAAK,CAAC,CAAC;gBAC1G,6DACE,mCAAO,OAAO,EAAC,eAAe,EAAC,SAAS,EAAC,8DAA8D,kCAAmB,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,UAAW,EACxK,kCAAO,GAAG,EAAE,cAAc,EAAE,EAAE,EAAC,eAAe,EAAC,IAAI,EAAC,OAAO,EAAC,YAAY,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,mFAAmF,GAAS,EACvM,mCAAQ,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,wQAAwQ,8BAE3T,IACR,IAEA,CAAA;IAEP,SAAS,iBAAiB;QACxB,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,OAAO;QAClC,IAAI,CAAC,cAAc,CAAC,OAAO;YAAE,OAAO;QACpC,WAAW,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI;SAC9D,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
+ import type { WhisperTranscribeConfig } from "./runtime";
3
+ export default function ({ defineComponent, Av, Subtitle, validation: { Z } }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<WhisperTranscribeConfig, object, object, object>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function default_1({ defineComponent, Av, Subtitle, validation: { Z } }) {
4
+ return defineComponent({
5
+ identifier: 'processor.whisper-transcribe',
6
+ category: 'processor',
7
+ name: "Whisper Transcribe",
8
+ subscription: {
9
+ accepts: {
10
+ type: 'single-stream',
11
+ media: Av
12
+ },
13
+ produces: {
14
+ media: Subtitle,
15
+ type: "single-stream",
16
+ }
17
+ },
18
+ extraValidation: function (ctx) {
19
+ const video = ctx.videoInputs();
20
+ const audio = ctx.audioInputs();
21
+ if (video.length !== 1) {
22
+ ctx.addError("Whisper Transcribe requires a single video stream to use as a reference");
23
+ }
24
+ if (audio.length !== 1) {
25
+ ctx.addError("Whisper Transcribe requires a single audio stream to transcribe");
26
+ }
27
+ },
28
+ display: (desc) => {
29
+ return {
30
+ model: desc.config.model
31
+ };
32
+ },
33
+ configForm: {
34
+ form: {
35
+ model: { help: "The ggml model path", hint: { type: 'text', validation: Z.string().min(1, "Choosing a model is mandatory") } },
36
+ translate: { help: "Whether to translate the output to English", hint: { type: 'boolean', defaultValue: false } },
37
+ language: { help: "Source language (otherwise automatic)", hint: { type: 'text', validation: Z.union([Z.string().length(0), Z.string().min(1)]) } }
38
+ }
39
+ }
40
+ });
41
+ }
42
+ exports.default = default_1;
43
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.whisper-transcribe/info.ts"],"names":[],"mappings":";;AAGA,mBAAwB,EACtB,eAAe,EACf,EAAE,EACF,QAAQ,EACR,UAAU,EAAE,EAAE,CAAC,EAAE,EACJ;IACb,OAAO,eAAe,CAA0B;QAC9C,UAAU,EAAE,8BAA8B;QAC1C,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,oBAAoB;QAC1B,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE;aACV;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,eAAe;aACtB;SACF;QACD,eAAe,EAAE,UAAS,GAAG;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,yEAAyE,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,iEAAiE,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;aACzB,CAAA;QACH,CAAC;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC,EAAE,EAAE;gBAC9H,SAAS,EAAE,EAAE,IAAI,EAAE,4CAA4C,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE;gBACjH,QAAQ,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;aACpJ;SACF;KACF,CAAC,CAAC;AACL,CAAC;AA3CD,4BA2CC"}
@@ -0,0 +1,29 @@
1
+ import { AudioTranscribeWhisperNode, Norsk, StreamKeyOverrideNode, StreamMetadataOverrideNode, SubscribeDestination, SubscriptionError } from '@norskvideo/norsk-sdk';
2
+ import { CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, StudioNodeSubscriptionSource } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
+ export type WhisperTranscribeConfig = {
4
+ id: string;
5
+ displayName: string;
6
+ model: string;
7
+ translate: boolean;
8
+ language: string;
9
+ };
10
+ export default class WhisperTranscribeDefinition implements ServerComponentDefinition<WhisperTranscribeConfig, WhisperTranscribeNode> {
11
+ create(norsk: Norsk, cfg: WhisperTranscribeConfig, cb: OnCreated<WhisperTranscribeNode>): Promise<void>;
12
+ }
13
+ declare class WhisperTranscribeNode implements CreatedMediaNode, SubscribeDestination {
14
+ norsk: Norsk;
15
+ cfg: WhisperTranscribeConfig;
16
+ initialised: Promise<void>;
17
+ whisper?: AudioTranscribeWhisperNode;
18
+ whisperCreating: boolean;
19
+ streamkey?: StreamKeyOverrideNode;
20
+ source?: StudioNodeSubscriptionSource;
21
+ output?: StreamMetadataOverrideNode;
22
+ constructor(norsk: Norsk, cfg: WhisperTranscribeConfig);
23
+ get id(): string;
24
+ relatedMediaNodes: RelatedMediaNodes;
25
+ initialise(): Promise<void>;
26
+ subscribe(sources: StudioNodeSubscriptionSource[]): void;
27
+ sourceContextChange(_responseCallback: (error?: SubscriptionError | undefined) => void): Promise<boolean>;
28
+ }
29
+ export {};