@norskvideo/norsk-studio-built-ins 1.14.0 → 1.16.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.
- package/README.md +16 -0
- package/client/info.js +725 -456
- package/client/style.css +321 -112
- package/lib/info.js +2 -2
- package/lib/info.js.map +1 -1
- package/lib/input.rtmp/info.js +1 -1
- package/lib/input.rtmp/info.js.map +1 -1
- package/lib/input.silence/info.js +1 -0
- package/lib/input.silence/info.js.map +1 -1
- package/lib/input.srt-caller/info.js +6 -5
- package/lib/input.srt-caller/info.js.map +1 -1
- package/lib/input.srt-caller/runtime.d.ts +1 -1
- package/lib/input.srt-listener/info.js +7 -5
- package/lib/input.srt-listener/info.js.map +1 -1
- package/lib/input.srt-listener/runtime.d.ts +1 -1
- package/lib/input.udp-ts/info.d.ts +1 -1
- package/lib/input.udp-ts/info.js +5 -4
- package/lib/input.udp-ts/info.js.map +1 -1
- package/lib/input.udp-ts/runtime.d.ts +1 -1
- package/lib/input.videoTestCard/info.js +1 -0
- package/lib/input.videoTestCard/info.js.map +1 -1
- package/lib/output.autoCmaf/info.d.ts +1 -1
- package/lib/output.autoCmaf/info.js +54 -1
- package/lib/output.autoCmaf/info.js.map +1 -1
- package/lib/output.autoCmaf/runtime.d.ts +10 -0
- package/lib/output.autoCmaf/runtime.js +35 -4
- package/lib/output.autoCmaf/runtime.js.map +1 -1
- package/lib/output.autoCmaf/summary.js +23 -1
- package/lib/output.autoCmaf/summary.js.map +1 -1
- package/lib/output.preview/info.js +1 -0
- package/lib/output.preview/info.js.map +1 -1
- package/lib/output.preview/runtime.js +8 -4
- package/lib/output.preview/runtime.js.map +1 -1
- package/lib/output.rtmp/info.js +1 -0
- package/lib/output.rtmp/info.js.map +1 -1
- package/lib/output.srt/info.js +6 -5
- package/lib/output.srt/info.js.map +1 -1
- package/lib/output.srt/runtime.d.ts +1 -1
- package/lib/output.statistics/info.js +1 -0
- package/lib/output.statistics/info.js.map +1 -1
- package/lib/output.udpTs/info.d.ts +1 -1
- package/lib/output.udpTs/info.js +4 -3
- package/lib/output.udpTs/info.js.map +1 -1
- package/lib/output.udpTs/runtime.d.ts +1 -1
- package/lib/output.whep/info.js +1 -0
- package/lib/output.whep/info.js.map +1 -1
- package/lib/processor.browserOverlay/info.d.ts +2 -2
- package/lib/processor.browserOverlay/info.js +55 -1
- package/lib/processor.browserOverlay/info.js.map +1 -1
- package/lib/processor.browserOverlay/inline-view.d.ts +6 -0
- package/lib/processor.browserOverlay/inline-view.js +8 -0
- package/lib/processor.browserOverlay/inline-view.js.map +1 -0
- package/lib/processor.browserOverlay/openApi.d.ts +174 -0
- package/lib/processor.browserOverlay/openApi.js +3 -0
- package/lib/processor.browserOverlay/openApi.js.map +1 -0
- package/lib/processor.browserOverlay/runtime.d.ts +40 -6
- package/lib/processor.browserOverlay/runtime.js +147 -18
- package/lib/processor.browserOverlay/runtime.js.map +1 -1
- package/lib/processor.browserOverlay/summary-view.d.ts +4 -0
- package/lib/processor.browserOverlay/summary-view.js +27 -0
- package/lib/processor.browserOverlay/summary-view.js.map +1 -0
- package/lib/processor.browserOverlay/types.yaml +65 -0
- package/lib/processor.cascadingSwitch/info.js +1 -0
- package/lib/processor.cascadingSwitch/info.js.map +1 -1
- package/lib/processor.fixedLadder/codec-editor.js +1 -1
- package/lib/processor.fixedLadder/codec-editor.js.map +1 -1
- package/lib/processor.fixedLadder/codec-view.js +1 -1
- package/lib/processor.fixedLadder/codec-view.js.map +1 -1
- package/lib/processor.fixedLadder/info.js +1 -0
- package/lib/processor.fixedLadder/info.js.map +1 -1
- package/lib/processor.fixedLadder/rung-view.js +1 -1
- package/lib/processor.fixedLadder/rung-view.js.map +1 -1
- package/lib/processor.onscreenGraphic/image-selection.d.ts +9 -0
- package/lib/{processor.dynamicBug/bug-selection.js → processor.onscreenGraphic/image-selection.js} +10 -10
- package/lib/processor.onscreenGraphic/image-selection.js.map +1 -0
- package/lib/processor.onscreenGraphic/info.d.ts +3 -0
- package/lib/{processor.dynamicBug → processor.onscreenGraphic}/info.js +12 -12
- package/lib/processor.onscreenGraphic/info.js.map +1 -0
- package/lib/processor.onscreenGraphic/runtime.d.ts +67 -0
- package/lib/{processor.dynamicBug → processor.onscreenGraphic}/runtime.js +109 -161
- package/lib/processor.onscreenGraphic/runtime.js.map +1 -0
- package/lib/processor.onscreenGraphic/summary-view.d.ts +4 -0
- package/lib/processor.onscreenGraphic/summary-view.js +128 -0
- package/lib/processor.onscreenGraphic/summary-view.js.map +1 -0
- package/lib/processor.onscreenGraphic/types.d.ts +257 -0
- package/lib/processor.onscreenGraphic/types.js.map +1 -0
- package/lib/processor.onscreenGraphic/types.yaml +162 -0
- package/lib/processor.whisper-transcribe/info.js +3 -2
- package/lib/processor.whisper-transcribe/info.js.map +1 -1
- package/lib/shared/drm/axinom.d.ts +2 -0
- package/lib/shared/drm/axinom.js +120 -0
- package/lib/shared/drm/axinom.js.map +1 -0
- package/lib/shared/drm/cpix.d.ts +24 -0
- package/lib/shared/drm/cpix.js +97 -0
- package/lib/shared/drm/cpix.js.map +1 -0
- package/lib/shared/drm/ezdrm.d.ts +2 -0
- package/lib/shared/drm/ezdrm.js +26 -0
- package/lib/shared/drm/ezdrm.js.map +1 -0
- package/lib/shared/srt-socket-options.js +6 -6
- package/lib/shared/srt-socket-options.js.map +1 -1
- package/lib/test/{dynamic-bug.js → onscreen-graphic.js} +79 -79
- package/lib/test/onscreen-graphic.js.map +1 -0
- package/lib/test/srt-input-caller.js +5 -5
- package/lib/test/srt-input-caller.js.map +1 -1
- package/lib/test/srt-input-listener.js +18 -18
- package/lib/test/srt-input-listener.js.map +1 -1
- package/lib/test/srt-output.js +2 -2
- package/lib/test/srt-output.js.map +1 -1
- package/lib/test/udp-output.js +2 -2
- package/lib/test/udp-output.js.map +1 -1
- package/lib/test/udp-ts-input.js +2 -2
- package/lib/test/udp-ts-input.js.map +1 -1
- package/lib/util.stats.latency/info.js +1 -0
- package/lib/util.stats.latency/info.js.map +1 -1
- package/lib/util.stats.ma35d/info.js +1 -0
- package/lib/util.stats.ma35d/info.js.map +1 -1
- package/lib/util.timestamps/info.js +1 -0
- package/lib/util.timestamps/info.js.map +1 -1
- package/package.json +10 -6
- package/Readme.adoc +0 -16
- package/lib/processor.dynamicBug/bug-selection.d.ts +0 -9
- package/lib/processor.dynamicBug/bug-selection.js.map +0 -1
- package/lib/processor.dynamicBug/info.d.ts +0 -3
- package/lib/processor.dynamicBug/info.js.map +0 -1
- package/lib/processor.dynamicBug/runtime.d.ts +0 -67
- package/lib/processor.dynamicBug/runtime.js.map +0 -1
- package/lib/processor.dynamicBug/summary-view.d.ts +0 -4
- package/lib/processor.dynamicBug/summary-view.js +0 -128
- package/lib/processor.dynamicBug/summary-view.js.map +0 -1
- package/lib/processor.dynamicBug/types.d.ts +0 -19
- package/lib/processor.dynamicBug/types.js.map +0 -1
- package/lib/processor.dynamicBug/types.yaml +0 -25
- package/lib/test/dynamic-bug.js.map +0 -1
- /package/lib/{processor.dynamicBug → processor.onscreenGraphic}/types.js +0 -0
- /package/lib/test/{dynamic-bug.d.ts → onscreen-graphic.d.ts} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.onscreenGraphic/info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4BA0EC;AA7ED,uEAA+E;AAC/E,kDAA0B;AAE1B,mBAAyB,EACvB,eAAe,EACf,KAAK,EACQ;IACb,MAAM,gBAAgB,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,mBAAmB,GAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,mDAAQ,gBAAgB,GAAC,CAAC,CAAC;IAErE,OAAO,eAAe,CAA4F;QAChH,UAAU,EAAE,2BAA2B;QACvC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAE;YAEZ,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,KAAK;aACb;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,KAAK;aACb;SACF;QACD,eAAe,EAAE,UAAU,GAAG;YAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM;aAC9C,CAAA;QACH,CAAC;QACD,OAAO,EAAE;YACP,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EACpB,CAAC;YACF,WAAW,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;gBACvB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,iBAAiB;wBACpB,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC/E;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;SACF;QACD,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAA,0BAAiB,GAAE;aAC9B;YACD,IAAI,EAAE;gBACJ,cAAc,EAAE;oBACd,IAAI,EAAE,qDAAqD;oBAC3D,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,IAAI;wBACd,SAAS,EAAE,gBAAgB;qBAC5B;iBACF;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,qDAAqD;oBAC3D,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE;4BACP,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;4BACzC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;4BAC3C,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;4BAC/C,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE;yBAClD;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { ComposePart, FileImageInputNode, Norsk, VideoComposeNode, VideoStreamMetadata } from '@norskvideo/norsk-sdk';
|
2
|
+
import { CreatedMediaNode, InstanceRouteInfo, OnCreated, RelatedMediaNodes, RuntimeUpdates, ServerComponentDefinition, StaticRouteInfo, StudioNodeSubscriptionSource, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
|
3
|
+
import { HardwareAccelerationType } from '@norskvideo/norsk-studio/lib/shared/config';
|
4
|
+
import { ContextPromiseControl } from '@norskvideo/norsk-studio/lib/runtime/util';
|
5
|
+
import { components } from './types';
|
6
|
+
export type OnscreenGraphicPosition = components['schemas']['position'];
|
7
|
+
export type OnscreenGraphicFile = components['schemas']['graphic'];
|
8
|
+
export type OnscreenGraphicApiConfig = components['schemas']['config'];
|
9
|
+
export type OnscreenGraphicConfig = {
|
10
|
+
__global: {
|
11
|
+
hardware?: HardwareAccelerationType;
|
12
|
+
dataDir?: string;
|
13
|
+
};
|
14
|
+
id: string;
|
15
|
+
displayName: string;
|
16
|
+
initialGraphic?: OnscreenGraphicFile;
|
17
|
+
initialPosition?: OnscreenGraphicPosition;
|
18
|
+
};
|
19
|
+
export type OnscreenGraphicState = {
|
20
|
+
activeGraphic?: {
|
21
|
+
file?: OnscreenGraphicFile;
|
22
|
+
position?: OnscreenGraphicPosition;
|
23
|
+
};
|
24
|
+
};
|
25
|
+
export type OnscreenGraphicCommand = {
|
26
|
+
type: 'change-graphic';
|
27
|
+
file?: OnscreenGraphicFile;
|
28
|
+
position?: OnscreenGraphicPosition;
|
29
|
+
};
|
30
|
+
export type OnscreenGraphicEvent = {
|
31
|
+
type: 'graphic-changed';
|
32
|
+
file?: OnscreenGraphicFile;
|
33
|
+
position?: OnscreenGraphicPosition;
|
34
|
+
};
|
35
|
+
export default class OnscreenGraphicDefinition implements ServerComponentDefinition<OnscreenGraphicConfig, OnscreenGraphic, OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent> {
|
36
|
+
create(norsk: Norsk, cfg: OnscreenGraphicConfig, cb: OnCreated<OnscreenGraphic>, runtime: StudioRuntime<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>): Promise<void>;
|
37
|
+
handleCommand(node: OnscreenGraphic, command: OnscreenGraphicCommand): Promise<void>;
|
38
|
+
staticRoutes(): Promise<StaticRouteInfo[]>;
|
39
|
+
instanceRoutes(): Promise<InstanceRouteInfo<OnscreenGraphicConfig, OnscreenGraphic, OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>[]>;
|
40
|
+
}
|
41
|
+
export declare class OnscreenGraphic implements CreatedMediaNode {
|
42
|
+
id: string;
|
43
|
+
relatedMediaNodes: RelatedMediaNodes;
|
44
|
+
contexts: ContextPromiseControl;
|
45
|
+
norsk: Norsk;
|
46
|
+
cfg: OnscreenGraphicConfig;
|
47
|
+
graphic?: string;
|
48
|
+
position?: OnscreenGraphicPosition;
|
49
|
+
videoSource?: StudioNodeSubscriptionSource;
|
50
|
+
composeNode?: VideoComposeNode<"video" | "graphic">;
|
51
|
+
imageSource?: FileImageInputNode;
|
52
|
+
oldImageSource?: FileImageInputNode;
|
53
|
+
activeImage: "a" | "b";
|
54
|
+
initialised: Promise<void>;
|
55
|
+
updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>;
|
56
|
+
currentVideo?: VideoStreamMetadata;
|
57
|
+
static create(norsk: Norsk, cfg: OnscreenGraphicConfig, updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>): Promise<OnscreenGraphic>;
|
58
|
+
constructor(norsk: Norsk, cfg: OnscreenGraphicConfig, updates: RuntimeUpdates<OnscreenGraphicState, OnscreenGraphicCommand, OnscreenGraphicEvent>);
|
59
|
+
handleContext(): Promise<void>;
|
60
|
+
doSubs(imageSource?: FileImageInputNode): void;
|
61
|
+
setupGraphic(graphic?: string, position?: OnscreenGraphicPosition): Promise<void>;
|
62
|
+
imagePart(position: OnscreenGraphicPosition): ComposePart<"graphic">;
|
63
|
+
videoPart(): ComposePart<"video">;
|
64
|
+
initialise(): Promise<void>;
|
65
|
+
subscribe(sources: StudioNodeSubscriptionSource[]): void;
|
66
|
+
setSources(): void;
|
67
|
+
}
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.
|
6
|
+
exports.OnscreenGraphic = void 0;
|
7
7
|
const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
|
8
8
|
const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
|
9
9
|
const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
|
@@ -16,27 +16,54 @@ const path_1 = __importDefault(require("path"));
|
|
16
16
|
const multer_1 = __importDefault(require("multer"));
|
17
17
|
const json_refs_1 = require("json-refs");
|
18
18
|
const yaml_1 = __importDefault(require("yaml"));
|
19
|
-
const
|
20
|
-
function
|
21
|
-
return
|
19
|
+
const onscreenGraphicPositions = ['topleft', 'topright', 'bottomleft', 'bottomright'];
|
20
|
+
function coreInfo(path, op) {
|
21
|
+
return {
|
22
|
+
url: path,
|
23
|
+
summary: op.summary,
|
24
|
+
description: op.description,
|
25
|
+
requestBody: op.requestBody,
|
26
|
+
responses: op.responses,
|
27
|
+
};
|
22
28
|
}
|
23
|
-
|
24
|
-
|
29
|
+
function get(path, paths) {
|
30
|
+
return {
|
31
|
+
...coreInfo(path, paths[path]['get']),
|
32
|
+
method: 'GET',
|
33
|
+
};
|
34
|
+
}
|
35
|
+
function post(path, paths) {
|
36
|
+
return {
|
37
|
+
...coreInfo(path, paths[path]['post']),
|
38
|
+
method: 'POST',
|
39
|
+
};
|
40
|
+
}
|
41
|
+
function delete_(path, paths) {
|
42
|
+
return {
|
43
|
+
...coreInfo(path, paths[path]['delete']),
|
44
|
+
method: 'DELETE',
|
45
|
+
};
|
46
|
+
}
|
47
|
+
function graphicsDir() {
|
48
|
+
return path_1.default.join(config_2.default.server.workingDir(), process.env.ONSCREENGRAPHIC_DIRECTORY ?? "graphics");
|
49
|
+
}
|
50
|
+
async function getGraphics() {
|
51
|
+
const files = await promises_1.default.readdir(graphicsDir());
|
25
52
|
const images = files.filter((f) => {
|
26
53
|
return f.endsWith(".png") || f.endsWith(".jpg");
|
27
54
|
});
|
28
55
|
return images;
|
29
56
|
}
|
30
|
-
class
|
57
|
+
class OnscreenGraphicDefinition {
|
31
58
|
async create(norsk, cfg, cb, runtime) {
|
32
|
-
const node = await
|
59
|
+
const node = await OnscreenGraphic.create(norsk, cfg, runtime.updates);
|
33
60
|
cb(node);
|
34
61
|
}
|
35
62
|
async handleCommand(node, command) {
|
36
63
|
const commandType = command.type;
|
37
64
|
switch (commandType) {
|
38
|
-
case 'change-
|
39
|
-
await node.
|
65
|
+
case 'change-graphic':
|
66
|
+
await node.setupGraphic(command.file, command.position);
|
40
67
|
break;
|
41
68
|
default:
|
42
69
|
(0, util_1.assertUnreachable)(commandType);
|
@@ -44,16 +71,16 @@ class DynamicBugDefinition {
|
|
44
71
|
}
|
45
72
|
async staticRoutes() {
|
46
73
|
const storage = multer_1.default.diskStorage({
|
47
|
-
destination:
|
74
|
+
destination: graphicsDir(),
|
48
75
|
filename: function (_req, file, cb) {
|
49
76
|
cb(null, path_1.default.basename(file.originalname));
|
50
77
|
}
|
51
78
|
});
|
52
79
|
const fileFilter = async function (req, file, cb) {
|
53
80
|
try {
|
54
|
-
const
|
55
|
-
if (
|
56
|
-
return cb(new Error('A
|
81
|
+
const existingGraphics = await getGraphics();
|
82
|
+
if (existingGraphics.includes(file.originalname)) {
|
83
|
+
return cb(new Error('A graphic with this name already exists'));
|
57
84
|
}
|
58
85
|
else {
|
59
86
|
cb(null, true);
|
@@ -64,15 +91,25 @@ class DynamicBugDefinition {
|
|
64
91
|
}
|
65
92
|
};
|
66
93
|
const upload = (0, multer_1.default)({ storage, fileFilter });
|
94
|
+
const types = await promises_1.default.readFile(path_1.default.join(__dirname, 'types.yaml'));
|
95
|
+
const root = yaml_1.default.parse(types.toString());
|
96
|
+
const resolved = await (0, json_refs_1.resolveRefs)(root, {}).then((r) => r.resolved);
|
97
|
+
const paths = resolved.paths;
|
67
98
|
return [
|
68
99
|
{
|
69
|
-
|
70
|
-
|
100
|
+
...get('/graphics', paths),
|
101
|
+
handler: (_) => (async (_req, res) => {
|
102
|
+
const images = await getGraphics();
|
103
|
+
res.json(images);
|
104
|
+
})
|
105
|
+
},
|
106
|
+
{
|
107
|
+
...post('/graphics', paths),
|
71
108
|
handler: () => async (req, res) => {
|
72
109
|
const uploader = upload.single('file');
|
73
110
|
uploader(req, res, (err) => {
|
74
111
|
if (err) {
|
75
|
-
if (err.message === 'A
|
112
|
+
if (err.message === 'A graphic with this name already exists') {
|
76
113
|
return res.status(409).json({ error: err.message });
|
77
114
|
}
|
78
115
|
(0, logging_1.warninglog)("An error occured during upload", err);
|
@@ -81,46 +118,12 @@ class DynamicBugDefinition {
|
|
81
118
|
res.status(204).send();
|
82
119
|
});
|
83
120
|
},
|
84
|
-
requestBody: {
|
85
|
-
description: "A multipart form containing the file to upload)",
|
86
|
-
content: {
|
87
|
-
'multipart/form-data': {
|
88
|
-
schema: {
|
89
|
-
type: "object",
|
90
|
-
properties: {
|
91
|
-
'file': {
|
92
|
-
type: "string",
|
93
|
-
format: "binary",
|
94
|
-
}
|
95
|
-
},
|
96
|
-
required: ['file'],
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
},
|
101
|
-
responses: {
|
102
|
-
'204': { description: "The file bug was uploaded successfully" },
|
103
|
-
'400': { description: "No file was uploaded" },
|
104
|
-
'404': { description: "Not Found" },
|
105
|
-
'409': { description: "A bug with the same name already exists" },
|
106
|
-
'500': { description: "File upload failed" },
|
107
|
-
}
|
108
121
|
},
|
109
122
|
{
|
110
|
-
|
111
|
-
method: 'GET',
|
112
|
-
handler: (_) => (async (_req, res) => {
|
113
|
-
const images = await getBugs();
|
114
|
-
res.json(images);
|
115
|
-
}),
|
116
|
-
responses: {},
|
117
|
-
},
|
118
|
-
{
|
119
|
-
url: '/bug',
|
120
|
-
method: 'DELETE',
|
123
|
+
...delete_('/graphic', paths),
|
121
124
|
handler: () => (async (req, res) => {
|
122
125
|
const filename = req.body.filename;
|
123
|
-
const filePath = path_1.default.join(
|
126
|
+
const filePath = path_1.default.join(graphicsDir(), filename);
|
124
127
|
try {
|
125
128
|
await promises_1.default.access(filePath);
|
126
129
|
await promises_1.default.unlink(filePath);
|
@@ -128,35 +131,14 @@ class DynamicBugDefinition {
|
|
128
131
|
}
|
129
132
|
catch (error) {
|
130
133
|
if (error.code === 'ENOENT') {
|
131
|
-
res.status(404).json({ error: '
|
134
|
+
res.status(404).json({ error: 'Graphic not found' });
|
132
135
|
}
|
133
136
|
else {
|
134
|
-
(0, logging_1.warninglog)("Error deleting
|
135
|
-
res.status(500).json({ error: 'Failed to delete
|
137
|
+
(0, logging_1.warninglog)("Error deleting graphic", error);
|
138
|
+
res.status(500).json({ error: 'Failed to delete graphic' });
|
136
139
|
}
|
137
140
|
}
|
138
141
|
}),
|
139
|
-
requestBody: {
|
140
|
-
content: {
|
141
|
-
'application/json': {
|
142
|
-
schema: {
|
143
|
-
type: 'object',
|
144
|
-
properties: {
|
145
|
-
filename: {
|
146
|
-
type: 'string',
|
147
|
-
description: 'The name of the bug file to delete'
|
148
|
-
}
|
149
|
-
},
|
150
|
-
required: ['filename']
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
154
|
-
},
|
155
|
-
responses: {
|
156
|
-
'204': { description: "The bug was successfully deleted" },
|
157
|
-
'404': { description: "The specified bug was not found" },
|
158
|
-
'500': { description: "Failed to delete the bug" }
|
159
|
-
}
|
160
142
|
}
|
161
143
|
];
|
162
144
|
}
|
@@ -164,105 +146,71 @@ class DynamicBugDefinition {
|
|
164
146
|
const types = await promises_1.default.readFile(path_1.default.join(__dirname, 'types.yaml'));
|
165
147
|
const root = yaml_1.default.parse(types.toString());
|
166
148
|
const resolved = await (0, json_refs_1.resolveRefs)(root, {}).then((r) => r.resolved);
|
149
|
+
const paths = resolved.paths;
|
167
150
|
return [
|
168
151
|
{
|
169
|
-
|
170
|
-
method: 'GET',
|
152
|
+
...get('/active-graphic', paths),
|
171
153
|
handler: ({ runtime }) => ((_req, res) => {
|
172
154
|
const latest = runtime.updates.latest();
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
}),
|
179
|
-
responses: {
|
180
|
-
'200': {
|
181
|
-
description: "Information about the currently overlaid bug (if any)",
|
182
|
-
content: {
|
183
|
-
"application/json": {
|
184
|
-
schema: resolved.components.schemas['config']
|
185
|
-
},
|
186
|
-
}
|
155
|
+
if (latest.activeGraphic?.file && latest.activeGraphic?.position) {
|
156
|
+
res.json({
|
157
|
+
graphic: latest.activeGraphic.file,
|
158
|
+
position: latest.activeGraphic.position
|
159
|
+
});
|
187
160
|
}
|
188
|
-
|
161
|
+
else {
|
162
|
+
res.status(204).send();
|
163
|
+
}
|
164
|
+
}),
|
189
165
|
},
|
190
166
|
{
|
191
|
-
|
192
|
-
method: 'POST',
|
167
|
+
...post('/active-graphic', paths),
|
193
168
|
handler: ({ runtime }) => (async (req, res) => {
|
194
|
-
if ((req.body.
|
195
|
-
if (!
|
169
|
+
if ((req.body.graphic || req.body.position)) {
|
170
|
+
if (!onscreenGraphicPositions.includes(req.body.position)) {
|
196
171
|
res.status(400).json({
|
197
|
-
error: "
|
172
|
+
error: "Bad position",
|
198
173
|
details: req.body.position
|
199
174
|
});
|
200
175
|
return;
|
201
176
|
}
|
202
|
-
const images = await
|
203
|
-
if (!images.includes(req.body.
|
177
|
+
const images = await getGraphics();
|
178
|
+
if (!images.includes(req.body.graphic)) {
|
204
179
|
res.status(400).json({
|
205
|
-
error: "Unknown
|
206
|
-
details: req.body.
|
180
|
+
error: "Unknown graphic",
|
181
|
+
details: req.body.graphic,
|
207
182
|
});
|
208
183
|
return;
|
209
184
|
}
|
210
185
|
}
|
211
186
|
runtime.updates.sendCommand({
|
212
|
-
type: 'change-
|
213
|
-
file: req.body.
|
187
|
+
type: 'change-graphic',
|
188
|
+
file: req.body.graphic,
|
214
189
|
position: req.body.position
|
215
190
|
});
|
216
191
|
res.status(204).send();
|
217
192
|
}),
|
218
|
-
requestBody: {
|
219
|
-
description: "The bug filename and location (sending an empty JSON object will delete the bug)",
|
220
|
-
content: {
|
221
|
-
'application/json': {
|
222
|
-
schema: resolved.components.schemas['config']
|
223
|
-
}
|
224
|
-
},
|
225
|
-
},
|
226
|
-
responses: {
|
227
|
-
'204': { description: "The active bug was successfully updated" },
|
228
|
-
'400': {
|
229
|
-
description: "Unknown bug",
|
230
|
-
content: {
|
231
|
-
"application/json": {
|
232
|
-
schema: {
|
233
|
-
type: 'object',
|
234
|
-
properties: {
|
235
|
-
error: { type: 'string', description: "A description of the error" },
|
236
|
-
details: { type: 'string', description: "The unacceptable data" }
|
237
|
-
}
|
238
|
-
},
|
239
|
-
}
|
240
|
-
}
|
241
|
-
}
|
242
|
-
}
|
243
193
|
},
|
244
194
|
{
|
245
|
-
|
246
|
-
method: 'DELETE',
|
195
|
+
...delete_('/active-graphic', paths),
|
247
196
|
handler: ({ runtime }) => (async (_req, res) => {
|
248
197
|
runtime.updates.sendCommand({
|
249
|
-
type: 'change-
|
198
|
+
type: 'change-graphic'
|
250
199
|
});
|
251
200
|
res.status(204).send();
|
252
201
|
}),
|
253
|
-
responses: { '204': { description: "The active bug was successfully deleted" } }
|
254
202
|
},
|
255
203
|
];
|
256
204
|
}
|
257
205
|
}
|
258
|
-
exports.default =
|
259
|
-
class
|
206
|
+
exports.default = OnscreenGraphicDefinition;
|
207
|
+
class OnscreenGraphic {
|
260
208
|
id;
|
261
209
|
relatedMediaNodes = new runtime_types_1.RelatedMediaNodes();
|
262
210
|
contexts = new util_2.ContextPromiseControl(this.handleContext.bind(this));
|
263
211
|
norsk;
|
264
212
|
cfg;
|
265
|
-
|
213
|
+
graphic;
|
266
214
|
position;
|
267
215
|
videoSource;
|
268
216
|
composeNode;
|
@@ -273,7 +221,7 @@ class DynamicBug {
|
|
273
221
|
updates;
|
274
222
|
currentVideo;
|
275
223
|
static async create(norsk, cfg, updates) {
|
276
|
-
const node = new
|
224
|
+
const node = new OnscreenGraphic(norsk, cfg, updates);
|
277
225
|
await node.initialised;
|
278
226
|
return node;
|
279
227
|
}
|
@@ -295,17 +243,17 @@ class DynamicBug {
|
|
295
243
|
}
|
296
244
|
else {
|
297
245
|
const nextVideo = video.message.value;
|
298
|
-
(0, logging_1.debuglog)("Creating compose for
|
246
|
+
(0, logging_1.debuglog)("Creating compose for onscreen graphic", { id: this.id, metadata: nextVideo });
|
299
247
|
if (this.currentVideo) {
|
300
248
|
if (nextVideo.height !== this.currentVideo.height || nextVideo.width !== this.currentVideo.width) {
|
301
|
-
(0, logging_1.debuglog)("Closing compose node in
|
249
|
+
(0, logging_1.debuglog)("Closing compose node in onscreen graphic because of metadata change", { id: this.id, old: this.currentVideo, new: nextVideo });
|
302
250
|
await this.composeNode?.close();
|
303
251
|
this.currentVideo = undefined;
|
304
252
|
}
|
305
253
|
}
|
306
254
|
this.currentVideo = nextVideo;
|
307
255
|
if (!this.composeNode) {
|
308
|
-
(0, logging_1.debuglog)("Creating compose node for
|
256
|
+
(0, logging_1.debuglog)("Creating compose node for onscreen graphic", { id: this.id, width: nextVideo.width, height: nextVideo.height });
|
309
257
|
const thisCompose = this.composeNode = await this.norsk.processor.transform.videoCompose({
|
310
258
|
onCreate: (n) => {
|
311
259
|
this.relatedMediaNodes.addOutput(n);
|
@@ -338,7 +286,7 @@ class DynamicBug {
|
|
338
286
|
this.videoPart(),
|
339
287
|
]
|
340
288
|
});
|
341
|
-
(0, logging_1.debuglog)("Closing old image source for
|
289
|
+
(0, logging_1.debuglog)("Closing old image source for graphic", { id: this.id, oldNode: this.oldImageSource?.id, newNode: this.imageSource?.id });
|
342
290
|
void this.oldImageSource?.close();
|
343
291
|
this.oldImageSource = undefined;
|
344
292
|
await this.handleContext();
|
@@ -372,51 +320,51 @@ class DynamicBug {
|
|
372
320
|
}
|
373
321
|
doSubs(imageSource) {
|
374
322
|
if (!imageSource) {
|
375
|
-
(0, logging_1.debuglog)("Doing subscriptions for
|
323
|
+
(0, logging_1.debuglog)("Doing subscriptions for onscreen graphic without image source");
|
376
324
|
this.composeNode?.subscribeToPins(this.videoSource?.selectVideoToPin("video") || []);
|
377
325
|
}
|
378
326
|
else {
|
379
|
-
(0, logging_1.debuglog)("Doing subscriptions for
|
327
|
+
(0, logging_1.debuglog)("Doing subscriptions for onscreen graphic with image source", { id: this.id, image: imageSource.id });
|
380
328
|
this.composeNode?.subscribeToPins((this.videoSource?.selectVideoToPin("video") ?? []).concat([
|
381
|
-
{ source: imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("
|
329
|
+
{ source: imageSource, sourceSelector: (0, norsk_sdk_1.videoToPin)("graphic") }
|
382
330
|
]));
|
383
331
|
}
|
384
332
|
}
|
385
|
-
async
|
333
|
+
async setupGraphic(graphic, position) {
|
386
334
|
this.position = position;
|
387
|
-
if (!
|
388
|
-
(0, logging_1.debuglog)("Clearing
|
335
|
+
if (!graphic || graphic === "") {
|
336
|
+
(0, logging_1.debuglog)("Clearing graphic", { id: this.id });
|
389
337
|
this.doSubs();
|
390
338
|
await this.imageSource?.close();
|
391
339
|
this.imageSource = undefined;
|
392
|
-
this.
|
340
|
+
this.graphic = undefined;
|
393
341
|
this.position = undefined;
|
394
|
-
this.updates.raiseEvent({ type: '
|
342
|
+
this.updates.raiseEvent({ type: 'graphic-changed' });
|
395
343
|
await this.contexts.schedule();
|
396
344
|
return;
|
397
345
|
}
|
398
|
-
else if (
|
399
|
-
(0, logging_1.debuglog)("Changing
|
400
|
-
this.
|
346
|
+
else if (graphic !== this.graphic) {
|
347
|
+
(0, logging_1.debuglog)("Changing graphic", { id: this.id, graphic, position });
|
348
|
+
this.graphic = graphic;
|
401
349
|
this.activeImage = this.activeImage == "a" ? "b" : "a";
|
402
350
|
this.oldImageSource = this.imageSource;
|
403
351
|
this.imageSource = await this.norsk.input.fileImage({
|
404
352
|
id: `${this.id}-${this.activeImage}`,
|
405
|
-
sourceName: `${this.id}-
|
406
|
-
fileName: path_1.default.join(
|
353
|
+
sourceName: `${this.id}-graphic-${this.activeImage}`,
|
354
|
+
fileName: path_1.default.join(graphicsDir(), graphic)
|
407
355
|
});
|
408
356
|
this.setSources();
|
409
357
|
}
|
410
358
|
else {
|
411
|
-
(0, logging_1.debuglog)("Changing
|
359
|
+
(0, logging_1.debuglog)("Changing graphic position", { id: this.id, graphic, position });
|
412
360
|
this.position = position;
|
413
361
|
await this.contexts.schedule();
|
414
362
|
}
|
415
|
-
this.updates.raiseEvent({ type: '
|
363
|
+
this.updates.raiseEvent({ type: 'graphic-changed', file: graphic, position });
|
416
364
|
}
|
417
365
|
imagePart(position) {
|
418
366
|
const foo = {
|
419
|
-
id: "
|
367
|
+
id: "graphic",
|
420
368
|
zIndex: 1,
|
421
369
|
compose: (metadata, cfg) => {
|
422
370
|
const videoWidth = cfg.outputResolution.width;
|
@@ -432,7 +380,7 @@ class DynamicBug {
|
|
432
380
|
};
|
433
381
|
},
|
434
382
|
opacity: 1.0,
|
435
|
-
pin: "
|
383
|
+
pin: "graphic"
|
436
384
|
};
|
437
385
|
return foo;
|
438
386
|
}
|
@@ -446,7 +394,7 @@ class DynamicBug {
|
|
446
394
|
};
|
447
395
|
}
|
448
396
|
async initialise() {
|
449
|
-
await this.
|
397
|
+
await this.setupGraphic(this.cfg.initialGraphic, this.cfg.initialPosition);
|
450
398
|
}
|
451
399
|
subscribe(sources) {
|
452
400
|
this.videoSource = sources[0];
|
@@ -461,5 +409,5 @@ class DynamicBug {
|
|
461
409
|
this.contexts.setSources(this.videoSource ? [this.videoSource] : [], imageSources);
|
462
410
|
}
|
463
411
|
}
|
464
|
-
exports.
|
412
|
+
exports.OnscreenGraphic = OnscreenGraphic;
|
465
413
|
//# sourceMappingURL=runtime.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.onscreenGraphic/runtime.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { OnscreenGraphicState, OnscreenGraphicConfig, OnscreenGraphicCommand } from "./runtime";
|
2
|
+
import { ViewProps } from "@norskvideo/norsk-studio/lib/extension/client-types";
|
3
|
+
declare function SummaryView({ state, sendCommand, urls }: ViewProps<OnscreenGraphicConfig, OnscreenGraphicState, OnscreenGraphicCommand>): import("react/jsx-runtime").JSX.Element;
|
4
|
+
export default SummaryView;
|