@norskvideo/norsk-studio-alpha 1.27.0-2025-09-07-cf101e3f → 1.27.0-2025-09-17-ca470951

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 (89) hide show
  1. package/client/info.js +2043 -30121
  2. package/client/style.css +22 -92
  3. package/lib/index.js +1 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/info.js +7 -17
  6. package/lib/info.js.map +1 -1
  7. package/lib/output.player/info.d.ts +8 -0
  8. package/lib/output.player/info.js +65 -0
  9. package/lib/output.player/info.js.map +1 -0
  10. package/lib/output.player/runtime.d.ts +42 -0
  11. package/lib/output.player/runtime.js +205 -0
  12. package/lib/output.player/runtime.js.map +1 -0
  13. package/lib/output.player/summary-view.d.ts +7 -0
  14. package/lib/output.player/summary-view.js +20 -0
  15. package/lib/output.player/summary-view.js.map +1 -0
  16. package/lib/{input.ndi → output.player}/types.d.ts +24 -5
  17. package/lib/{input.ndi → output.player}/types.js.map +1 -1
  18. package/lib/output.player/types.yaml +87 -0
  19. package/lib/output.recorder/runtime.js +1 -1
  20. package/lib/output.recorder/runtime.js.map +1 -1
  21. package/package.json +4 -4
  22. package/lib/input.decklink/info.d.ts +0 -3
  23. package/lib/input.decklink/info.js +0 -51
  24. package/lib/input.decklink/info.js.map +0 -1
  25. package/lib/input.decklink/runtime.d.ts +0 -12
  26. package/lib/input.decklink/runtime.js +0 -22
  27. package/lib/input.decklink/runtime.js.map +0 -1
  28. package/lib/input.decklink/types.d.ts +0 -23
  29. package/lib/input.decklink/types.js.map +0 -1
  30. package/lib/input.decklink/types.yaml +0 -32
  31. package/lib/input.ndi/info.d.ts +0 -3
  32. package/lib/input.ndi/info.js +0 -52
  33. package/lib/input.ndi/info.js.map +0 -1
  34. package/lib/input.ndi/runtime.d.ts +0 -24
  35. package/lib/input.ndi/runtime.js +0 -60
  36. package/lib/input.ndi/runtime.js.map +0 -1
  37. package/lib/input.ndi/source-selection.d.ts +0 -10
  38. package/lib/input.ndi/source-selection.js +0 -84
  39. package/lib/input.ndi/source-selection.js.map +0 -1
  40. package/lib/input.ndi/types.js +0 -3
  41. package/lib/input.ndi/types.yaml +0 -37
  42. package/lib/output.ndi/info.d.ts +0 -16
  43. package/lib/output.ndi/info.js +0 -63
  44. package/lib/output.ndi/info.js.map +0 -1
  45. package/lib/output.ndi/inline-view.d.ts +0 -6
  46. package/lib/output.ndi/inline-view.js +0 -12
  47. package/lib/output.ndi/inline-view.js.map +0 -1
  48. package/lib/output.ndi/runtime.d.ts +0 -14
  49. package/lib/output.ndi/runtime.js +0 -35
  50. package/lib/output.ndi/runtime.js.map +0 -1
  51. package/lib/output.ndi/types.d.ts +0 -56
  52. package/lib/output.ndi/types.js +0 -3
  53. package/lib/output.ndi/types.js.map +0 -1
  54. package/lib/output.ndi/types.source.yaml +0 -72
  55. package/lib/output.ndi/types.yaml +0 -77
  56. package/lib/processor.gemini-poc/info.d.ts +0 -8
  57. package/lib/processor.gemini-poc/info.js +0 -59
  58. package/lib/processor.gemini-poc/info.js.map +0 -1
  59. package/lib/processor.gemini-poc/runtime.d.ts +0 -38
  60. package/lib/processor.gemini-poc/runtime.js +0 -132
  61. package/lib/processor.gemini-poc/runtime.js.map +0 -1
  62. package/lib/processor.gemini-poc/types.d.ts +0 -23
  63. package/lib/processor.gemini-poc/types.js +0 -3
  64. package/lib/processor.gemini-poc/types.js.map +0 -1
  65. package/lib/processor.gemini-poc/types.yaml +0 -43
  66. package/lib/processor.mixMinus/info.d.ts +0 -7
  67. package/lib/processor.mixMinus/info.js +0 -40
  68. package/lib/processor.mixMinus/info.js.map +0 -1
  69. package/lib/processor.mixMinus/runtime.d.ts +0 -23
  70. package/lib/processor.mixMinus/runtime.js +0 -85
  71. package/lib/processor.mixMinus/runtime.js.map +0 -1
  72. package/lib/processor.mixMinus/types.d.ts +0 -18
  73. package/lib/processor.mixMinus/types.js +0 -3
  74. package/lib/processor.mixMinus/types.js.map +0 -1
  75. package/lib/processor.mixMinus/types.yaml +0 -19
  76. package/lib/processor.monetise/info.d.ts +0 -3
  77. package/lib/processor.monetise/info.js +0 -72
  78. package/lib/processor.monetise/info.js.map +0 -1
  79. package/lib/processor.monetise/runtime.d.ts +0 -62
  80. package/lib/processor.monetise/runtime.js +0 -219
  81. package/lib/processor.monetise/runtime.js.map +0 -1
  82. package/lib/processor.monetise/summary.d.ts +0 -7
  83. package/lib/processor.monetise/summary.js +0 -40
  84. package/lib/processor.monetise/summary.js.map +0 -1
  85. package/lib/processor.monetise/types.d.ts +0 -16
  86. package/lib/processor.monetise/types.js +0 -3
  87. package/lib/processor.monetise/types.js.map +0 -1
  88. package/lib/processor.monetise/types.yaml +0 -9
  89. /package/lib/{input.decklink → output.player}/types.js +0 -0
@@ -1,132 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GeminiLogger = void 0;
7
- exports.exhaustiveCheck = exhaustiveCheck;
8
- const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
9
- const process_1 = require("process");
10
- const path_1 = __importDefault(require("path"));
11
- const schemas_1 = require("../shared/schemas");
12
- const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
13
- class GeminiAIDefinition {
14
- async schemas() {
15
- return (0, schemas_1.schemaFromTypes)(path_1.default.join(__dirname, 'types.yaml'), {
16
- config: 'GeminiAIConfig'
17
- });
18
- }
19
- async create(norsk, cfg, cb, runtime) {
20
- const node = new GeminiAINode(norsk, cfg, runtime);
21
- await node.initialised;
22
- cb(node);
23
- }
24
- }
25
- exports.default = GeminiAIDefinition;
26
- class GeminiAINode {
27
- norsk;
28
- cfg;
29
- initialised;
30
- logger;
31
- gemini;
32
- runtime;
33
- t0;
34
- constructor(norsk, cfg, runtime) {
35
- this.norsk = norsk;
36
- this.cfg = cfg;
37
- this.runtime = runtime;
38
- this.logger = new GeminiLogger(cfg.id, runtime);
39
- this.initialised = this.initialise();
40
- this.t0 = new Date();
41
- }
42
- get id() { return this.cfg.id; }
43
- relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
44
- async textDetected(_callMetadata, text) {
45
- this.runtime.report.registerInfo(this.cfg.id, text);
46
- }
47
- async jsonDetected(_callMetadata, jsonString) {
48
- console.log("JSON!!!", jsonString);
49
- }
50
- async initialise() {
51
- this.gemini = await this.norsk.processor.control.geminiProcessor({
52
- googleApiKey: process_1.env.GOOGLE_API_KEY,
53
- model: this.cfg.api == "live" ? "gemini-2.0-flash-exp" : "gemini-2.5-flash",
54
- systemInstruction: this.cfg.systemInstruction,
55
- functions: [],
56
- infoCb: (info) => console.log(`Info: ${info}`),
57
- contentCb: this.logger.logContent.bind(this.logger),
58
- videoSettings: {
59
- frameRate: { frames: 1, seconds: 5 },
60
- resolution: { width: 360, height: 280 },
61
- },
62
- apiChoice: (() => {
63
- const apiType = this.cfg.api;
64
- switch (apiType) {
65
- case "live": return {
66
- apiType: "live",
67
- };
68
- case "traditional": return {
69
- apiType: "singleShot",
70
- historicalContextMs: 30000,
71
- prompt: "In this request, I am sending you an image plus context that you gave from about previous images. Using this information, perform what is requested in the systemInstruction and also return a text-based description of the action in image that I can send back to you on future images to give you some historical context for the current image."
72
- };
73
- default:
74
- return (0, util_1.assertUnreachable)(apiType);
75
- }
76
- })()
77
- });
78
- }
79
- async subscribe(sources) {
80
- const video = sources.find((s) => s.isMedia("video"));
81
- const audio = sources.find((s) => s.isMedia("audio"));
82
- if (!video || !audio)
83
- return;
84
- this.gemini?.subscribe([video.select(), audio.select()]);
85
- }
86
- }
87
- class GeminiLogger {
88
- id;
89
- t0;
90
- inTurn;
91
- currentStr;
92
- runtime;
93
- constructor(id, runtime) {
94
- this.id = id;
95
- this.inTurn = false;
96
- this.t0 = new Date();
97
- this.currentStr = "";
98
- this.runtime = runtime;
99
- }
100
- logContent(content) {
101
- if (content.parts.length > 0) {
102
- if (!this.inTurn) {
103
- this.currentStr = `${(new Date()).getTime() - this.t0.getTime()}: `;
104
- }
105
- this.inTurn = true;
106
- }
107
- content.parts.forEach((part) => {
108
- const partType = part.partType;
109
- switch (partType) {
110
- case "text":
111
- {
112
- const t = part.value.replace(/```/, '').replace(/text_response\("/, '').replace(/"\)/, '');
113
- this.currentStr = this.currentStr + t;
114
- }
115
- break;
116
- case "blob":
117
- break;
118
- default:
119
- exhaustiveCheck(partType);
120
- }
121
- });
122
- if (content.turnComplete && this.inTurn) {
123
- this.runtime.report.registerInfo(this.id, this.currentStr);
124
- this.inTurn = false;
125
- }
126
- }
127
- }
128
- exports.GeminiLogger = GeminiLogger;
129
- function exhaustiveCheck(a) {
130
- throw new Error(`Unhandled case: ${a}`);
131
- }
132
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.gemini-poc/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export type paths = Record<string, never>;
2
- export type webhooks = Record<string, never>;
3
- export interface components {
4
- schemas: {
5
- GeminiAIConfig: {
6
- id: string;
7
- displayName: string;
8
- systemInstruction: string;
9
- api: "live" | "traditional";
10
- notes?: string;
11
- };
12
- GeminiAIState: Record<string, never>;
13
- GeminiAICommands: Record<string, never>;
14
- GeminiAIEvents: Record<string, never>;
15
- };
16
- responses: never;
17
- parameters: never;
18
- requestBodies: never;
19
- headers: never;
20
- pathItems: never;
21
- }
22
- export type $defs = Record<string, never>;
23
- export type operations = Record<string, never>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/processor.gemini-poc/types.ts"],"names":[],"mappings":""}
@@ -1,43 +0,0 @@
1
- openapi: 3.0.0
2
- info:
3
- title: Gemini Replay
4
- version: 1.0.0
5
-
6
- components:
7
- schemas:
8
- GeminiAIConfig:
9
- type: object
10
- properties:
11
- id:
12
- type: string
13
- displayName:
14
- type: string
15
- systemInstruction:
16
- type: string
17
- api:
18
- type: string
19
- enum: ["live", "traditional"]
20
- default: "live"
21
- notes:
22
- type: string
23
- required:
24
- - id
25
- - displayName
26
- - systemInstruction
27
- GeminiAIState:
28
- type: object
29
- required:
30
- - enabled
31
- properties:
32
-
33
- GeminiAICommands:
34
- type: object
35
- required:
36
- - enabled
37
- properties:
38
-
39
- GeminiAIEvents:
40
- type: object
41
- required:
42
- - enabled
43
- properties:
@@ -1,7 +0,0 @@
1
- import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
2
- export default function ({ defineComponent }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<{
3
- id: string;
4
- displayName: string;
5
- notes?: string;
6
- }, object, object, object>;
7
- export declare function assertUnreachable(_: never): never;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = default_1;
4
- exports.assertUnreachable = assertUnreachable;
5
- const FaKey_1 = require("@react-icons/all-files/fa/FaKey");
6
- function default_1({ defineComponent }) {
7
- return defineComponent({
8
- identifier: 'processor.mixMinus',
9
- category: 'processor',
10
- name: "Mix Minus",
11
- description: "Mix n audio streams into n streams, each with every stream except n",
12
- icon: FaKey_1.FaKey,
13
- subscription: {
14
- accepts: {
15
- type: 'dynamic-streams',
16
- mode: 'any',
17
- streams: () => [{ media: 'audio' }]
18
- },
19
- produces: {
20
- type: "dynamic-streams",
21
- streams: (cfg, inputs) => {
22
- return inputs?.map((s, i) => {
23
- const output = { ...s };
24
- output.sourceName = `${cfg.id}-${i}`;
25
- return output;
26
- }) ?? [];
27
- },
28
- }
29
- },
30
- configForm: {
31
- form: {
32
- notes: { help: "Notes about this component", hint: { type: 'text', optional: true } },
33
- }
34
- }
35
- });
36
- }
37
- function assertUnreachable(_) {
38
- throw new Error("Didn't expect to get here");
39
- }
40
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.mixMinus/info.ts"],"names":[],"mappings":";;AAKA,4BAgCC;AAED,8CAEC;AAtCD,2DAAwD;AAExD,mBAAwB,EACtB,eAAe,EACF;IACb,OAAO,eAAe,CAAiB;QACrC,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qEAAqE;QAClF,IAAI,EAAE,aAAK;QACX,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;aACpC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBACvB,OAAO,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBAC1B,MAAM,MAAM,GAA2B,EAAE,GAAG,CAAC,EAAE,CAAC;wBAChD,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;wBACrC,OAAO,MAAM,CAAC;oBAChB,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,CAAC;aACF;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,KAAK,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;aACtF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAQ;IACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,23 +0,0 @@
1
- import { AudioMixNode, AudioSignalGeneratorNode, Norsk, StreamKeyOverrideNode } from '@norskvideo/norsk-sdk';
2
- import { CreatedMediaNode, OnCreated, RelatedMediaNodes, ServerComponentDefinition, ServerComponentSchemas, StudioComponentInputStream } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
- import { components } from './types';
4
- export type MixMinusConfig = components['schemas']['MixMinusConfig'];
5
- export default class MixMinusDefinition implements ServerComponentDefinition<MixMinusConfig, MixMinus> {
6
- schemas(): Promise<ServerComponentSchemas>;
7
- create(norsk: Norsk, cfg: MixMinusConfig, cb: OnCreated<MixMinus>): Promise<void>;
8
- }
9
- export declare class MixMinus implements CreatedMediaNode {
10
- static uid: number;
11
- norsk: Norsk;
12
- cfg: MixMinusConfig;
13
- initialised: Promise<void>;
14
- id: string;
15
- relatedMediaNodes: RelatedMediaNodes;
16
- silence?: AudioSignalGeneratorNode;
17
- mixers: (AudioMixNode<string> | null)[];
18
- skos: (StreamKeyOverrideNode | null)[];
19
- static create(norsk: Norsk, cfg: MixMinusConfig): Promise<MixMinus>;
20
- constructor(norsk: Norsk, cfg: MixMinusConfig);
21
- initialise(): Promise<void>;
22
- subscribe(inputs: StudioComponentInputStream[]): Promise<void>;
23
- }
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MixMinus = void 0;
7
- const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
8
- const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
9
- const path_1 = __importDefault(require("path"));
10
- const schemas_1 = require("../shared/schemas");
11
- class MixMinusDefinition {
12
- async schemas() {
13
- return (0, schemas_1.schemaFromTypes)(path_1.default.join(__dirname, 'types.yaml'), {
14
- config: 'MixMinusConfig'
15
- });
16
- }
17
- async create(norsk, cfg, cb) {
18
- const node = await MixMinus.create(norsk, cfg);
19
- cb(node);
20
- }
21
- }
22
- exports.default = MixMinusDefinition;
23
- class MixMinus {
24
- static uid = 0;
25
- norsk;
26
- cfg;
27
- initialised;
28
- id;
29
- relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
30
- silence;
31
- mixers = [];
32
- skos = [];
33
- static async create(norsk, cfg) {
34
- const node = new MixMinus(norsk, cfg);
35
- await node.initialised;
36
- return node;
37
- }
38
- constructor(norsk, cfg) {
39
- this.id = cfg.id;
40
- this.cfg = cfg;
41
- this.norsk = norsk;
42
- this.initialised = this.initialise();
43
- }
44
- async initialise() {
45
- this.silence = await this.norsk.input.audioSignal({
46
- id: `${this.id}-silence`,
47
- channelLayout: 'mono',
48
- sampleRate: 48000,
49
- sourceName: `${this.id}-silence`,
50
- wave: { type: 'silence' }
51
- });
52
- }
53
- async subscribe(inputs) {
54
- await Promise.all(inputs.map(async (_input, i) => {
55
- const configSources = inputs.filter((_, a) => a !== i)
56
- .map((_, a) => {
57
- return { pin: `audio-${a}` };
58
- });
59
- if (configSources.length == 0) {
60
- configSources.push({ pin: "silence" });
61
- }
62
- if (!this.mixers[i]) {
63
- const audioMix = await this.norsk.processor.transform.audioMix({
64
- id: `${this.id}-mixer-${i}`,
65
- sources: configSources,
66
- outputSource: `${this.cfg.id}-${i}`,
67
- channelLayout: 'mono'
68
- });
69
- this.mixers[i] = audioMix;
70
- this.relatedMediaNodes.addInput(this.mixers[i]);
71
- this.relatedMediaNodes.addOutput(this.mixers[i]);
72
- }
73
- const sources = inputs
74
- .filter((_, a) => a !== i)
75
- .map((input, a) => {
76
- return input.selectToPin(`audio-${a}`);
77
- });
78
- sources.push({ source: this.silence, sourceSelector: (0, norsk_sdk_1.audioToPin)("silence") });
79
- this.mixers[i].subscribeToPins(sources);
80
- this.mixers[i].updateConfig({ sources: configSources });
81
- }));
82
- }
83
- }
84
- exports.MixMinus = MixMinus;
85
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.mixMinus/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export type paths = Record<string, never>;
2
- export type webhooks = Record<string, never>;
3
- export interface components {
4
- schemas: {
5
- MixMinusConfig: {
6
- id: string;
7
- displayName: string;
8
- notes?: string;
9
- };
10
- };
11
- responses: never;
12
- parameters: never;
13
- requestBodies: never;
14
- headers: never;
15
- pathItems: never;
16
- }
17
- export type $defs = Record<string, never>;
18
- export type operations = Record<string, never>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/processor.mixMinus/types.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- openapi: 3.0.0
2
- info:
3
- title: Mix Minus
4
- version: 1.0.0
5
-
6
- components:
7
- schemas:
8
- MixMinusConfig:
9
- type: object
10
- properties:
11
- id:
12
- type: string
13
- displayName:
14
- type: string
15
- notes:
16
- type: string
17
- required:
18
- - id
19
- - displayName
@@ -1,3 +0,0 @@
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>;
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = default_1;
7
- const config_1 = require("@norskvideo/norsk-studio/lib/shared/config");
8
- const summary_1 = __importDefault(require("./summary"));
9
- function default_1(R) {
10
- const { defineComponent, } = R;
11
- return defineComponent({
12
- identifier: 'processor.scte35inject',
13
- category: 'processor',
14
- name: "SCTE35 Inject",
15
- description: "Injects SCTE-35 markers into audio and video streams for ad insertion and monetization",
16
- subscription: {
17
- accepts: {
18
- type: "simple-stream",
19
- audio: true,
20
- video: true
21
- },
22
- produces: {
23
- type: 'simple-stream',
24
- audio: true,
25
- video: true,
26
- ancillary: true
27
- }
28
- },
29
- extraValidation: (ctx) => {
30
- ctx.requireExactVideo(1);
31
- ctx.requireExactAudio(1);
32
- },
33
- display: (_desc) => { return {}; },
34
- runtime: {
35
- initialState: () => ({}),
36
- handleEvent(ev, state) {
37
- const evType = ev.type;
38
- switch (evType) {
39
- case 'url-published':
40
- state.url = ev.url;
41
- break;
42
- case 'advert-started':
43
- state.currentAdvert = { timeLeftMs: ev.durationMs };
44
- break;
45
- case 'advert-tick':
46
- state.currentAdvert = { timeLeftMs: ev.timeLeftMs };
47
- break;
48
- case 'advert-finished':
49
- state.currentAdvert = undefined;
50
- break;
51
- default:
52
- assertUnreachable(evType);
53
- }
54
- return { ...state };
55
- },
56
- summary: summary_1.default
57
- },
58
- configForm: {
59
- global: {
60
- iceServers: (0, config_1.GlobalIceServers)(R),
61
- hardware: (0, config_1.HardwareSelection)()
62
- },
63
- form: {
64
- notes: { help: "Notes about this component", hint: { type: 'text', optional: true } },
65
- }
66
- }
67
- });
68
- }
69
- function assertUnreachable(_) {
70
- throw new Error("Didn't expect to get here");
71
- }
72
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.monetise/info.ts"],"names":[],"mappings":";;;;;AAKA,4BA8DC;AAjED,uEAAiG;AACjG,wDAAoC;AAEpC,mBAAwB,CAAe;IACrC,MAAM,EACJ,eAAe,GAChB,GAAG,CAAC,CAAC;IAEN,OAAO,eAAe,CAA0F;QAC9G,UAAU,EAAE,wBAAwB;QACpC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wFAAwF;QACrG,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;aAChB;SACF;QACD,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC3B,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,iBAAW;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;gBACJ,KAAK,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;aACtF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,62 +0,0 @@
1
- import { AncillaryNode, JitterBufferNode, Norsk, SourceMediaNode, StreamMetadataOverrideNode, WhepOutputNode } from '@norskvideo/norsk-sdk';
2
- import { InstanceRouteInfo, OnCreated, RuntimeUpdates, ServerComponentDefinition, ServerComponentSchemas, StudioComponentInputStream, StudioRuntime, StudioShared } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
3
- import { CustomAutoDuplexNode } from '@norskvideo/norsk-studio/lib/extension/base-nodes';
4
- import { HardwareAccelerationType, IceServer } from '@norskvideo/norsk-studio/lib/shared/config';
5
- import { components } from './types';
6
- export type MonetiseOutputSettings = {
7
- id: string;
8
- displayName: string;
9
- __global: {
10
- iceServers: IceServer[];
11
- hardware?: HardwareAccelerationType;
12
- };
13
- notes?: string;
14
- };
15
- export type MonetiseOutputState = {
16
- url?: string;
17
- currentAdvert?: {
18
- timeLeftMs: number;
19
- };
20
- };
21
- export type MonetiseOutputEvent = {
22
- type: 'url-published';
23
- url: string;
24
- } | {
25
- type: 'advert-started';
26
- durationMs: number;
27
- } | {
28
- type: 'advert-tick';
29
- timeLeftMs: number;
30
- } | {
31
- type: 'advert-finished';
32
- };
33
- export type MonetiseOutputCommand = {
34
- type: 'inject-advert';
35
- durationMs: number;
36
- };
37
- export type MonetiseHttpInject = components['schemas']['inject'];
38
- export default class MonetiseDefinition implements ServerComponentDefinition<MonetiseOutputSettings, MonetiseOutput, MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent> {
39
- create(norsk: Norsk, cfg: MonetiseOutputSettings, cb: OnCreated<MonetiseOutput>, runtime: StudioRuntime<MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent>): Promise<void>;
40
- schemas(): Promise<ServerComponentSchemas>;
41
- handleCommand(node: MonetiseOutput, command: MonetiseOutputCommand): void;
42
- instanceRoutes(): Promise<InstanceRouteInfo<MonetiseOutputSettings, MonetiseOutput, MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent>[]>;
43
- }
44
- declare class MonetiseOutput extends CustomAutoDuplexNode {
45
- initialised: Promise<void>;
46
- norsk: Norsk;
47
- updates: RuntimeUpdates<MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent>;
48
- shared: StudioShared;
49
- cfg: MonetiseOutputSettings;
50
- encoder?: SourceMediaNode;
51
- whep?: WhepOutputNode;
52
- delayed?: JitterBufferNode;
53
- ancillary?: AncillaryNode;
54
- output?: StreamMetadataOverrideNode;
55
- start: Date;
56
- constructor(norsk: Norsk, runtime: StudioRuntime<MonetiseOutputState, MonetiseOutputCommand, MonetiseOutputEvent>, cfg: MonetiseOutputSettings);
57
- initialise(): Promise<void>;
58
- injectAdvert(durationMs: number): void;
59
- subscribe(sources: StudioComponentInputStream[]): Promise<void>;
60
- setupPreview(sources: StudioComponentInputStream[]): Promise<void>;
61
- }
62
- export {};