@norskvideo/norsk-studio-built-ins 1.27.0-2025-03-25-b3450d18 → 1.27.0-2025-03-27-419657f2
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/client/info.js +18075 -17001
- package/client/style.css +6 -10
- package/lib/info.js +6 -4
- package/lib/info.js.map +1 -1
- package/lib/input.rtmp/info.js +2 -0
- package/lib/input.rtmp/info.js.map +1 -1
- package/lib/input.silence/info.js +2 -0
- package/lib/input.silence/info.js.map +1 -1
- package/lib/input.srt-caller/info.d.ts +2 -2
- package/lib/input.srt-caller/info.js +39 -0
- package/lib/input.srt-caller/info.js.map +1 -1
- package/lib/input.srt-caller/inline-view.d.ts +6 -0
- package/lib/input.srt-caller/inline-view.js +10 -0
- package/lib/input.srt-caller/inline-view.js.map +1 -0
- package/lib/input.srt-caller/runtime.d.ts +25 -5
- package/lib/input.srt-caller/runtime.js +56 -24
- package/lib/input.srt-caller/runtime.js.map +1 -1
- package/lib/input.srt-listener/info.js +27 -1
- package/lib/input.srt-listener/info.js.map +1 -1
- package/lib/input.srt-listener/inline-view.js +1 -1
- package/lib/input.srt-listener/inline-view.js.map +1 -1
- package/lib/input.srt-listener/runtime.d.ts +8 -1
- package/lib/input.srt-listener/runtime.js +14 -3
- package/lib/input.srt-listener/runtime.js.map +1 -1
- package/lib/input.udp-ts/info.js +2 -0
- package/lib/input.udp-ts/info.js.map +1 -1
- package/lib/input.videoTestCard/info.js +2 -0
- package/lib/input.videoTestCard/info.js.map +1 -1
- package/lib/output.autoCmaf/info.js +2 -0
- package/lib/output.autoCmaf/info.js.map +1 -1
- package/lib/output.autoHls/info.js +2 -0
- package/lib/output.autoHls/info.js.map +1 -1
- package/lib/output.facebook/info.js +2 -0
- package/lib/output.facebook/info.js.map +1 -1
- package/lib/output.linkedin/info.js +2 -0
- package/lib/output.linkedin/info.js.map +1 -1
- package/lib/output.preview/info.js +2 -0
- package/lib/output.preview/info.js.map +1 -1
- package/lib/output.rtmp/info.d.ts +2 -0
- package/lib/output.rtmp/info.js +2 -0
- package/lib/output.rtmp/info.js.map +1 -1
- package/lib/output.srt-caller/info.js +6 -3
- package/lib/output.srt-caller/info.js.map +1 -1
- package/lib/output.srt-caller/inline-view.js +1 -1
- package/lib/output.srt-caller/inline-view.js.map +1 -1
- package/lib/output.srt-caller/runtime.d.ts +2 -7
- package/lib/output.srt-caller/runtime.js +2 -7
- package/lib/output.srt-caller/runtime.js.map +1 -1
- package/lib/output.srt-listener/info.js +4 -3
- package/lib/output.srt-listener/info.js.map +1 -1
- package/lib/output.srt-listener/runtime.d.ts +2 -7
- package/lib/output.srt-listener/runtime.js +2 -10
- package/lib/output.srt-listener/runtime.js.map +1 -1
- package/lib/output.statistics/info.js +2 -0
- package/lib/output.statistics/info.js.map +1 -1
- package/lib/output.twitch/info.js +2 -0
- package/lib/output.twitch/info.js.map +1 -1
- package/lib/output.udpTs/info.js +2 -0
- package/lib/output.udpTs/info.js.map +1 -1
- package/lib/output.whep/info.js +2 -0
- package/lib/output.whep/info.js.map +1 -1
- package/lib/output.youtube/info.js +2 -0
- package/lib/output.youtube/info.js.map +1 -1
- package/lib/processor.audioEncoder/info.js +2 -0
- package/lib/processor.audioEncoder/info.js.map +1 -1
- package/lib/processor.browserOverlay/info.js +2 -0
- package/lib/processor.browserOverlay/info.js.map +1 -1
- package/lib/processor.cascadingSwitch/info.js +2 -0
- package/lib/processor.cascadingSwitch/info.js.map +1 -1
- package/lib/processor.fixedLadder/info.js +2 -0
- package/lib/processor.fixedLadder/info.js.map +1 -1
- package/lib/processor.makeProgram/info.js +2 -0
- package/lib/processor.makeProgram/info.js.map +1 -1
- package/lib/processor.multiview/info.d.ts +21 -0
- package/lib/processor.multiview/info.js +130 -0
- package/lib/processor.multiview/info.js.map +1 -0
- package/lib/processor.multiview/runtime.d.ts +43 -0
- package/lib/processor.multiview/runtime.js +254 -0
- package/lib/processor.multiview/runtime.js.map +1 -0
- package/lib/processor.onscreenGraphic/info.js +2 -0
- package/lib/processor.onscreenGraphic/info.js.map +1 -1
- package/lib/processor.streamKeyOverride/info.js +2 -0
- package/lib/processor.streamKeyOverride/info.js.map +1 -1
- package/lib/processor.videoDecoder/info.js +2 -0
- package/lib/processor.videoDecoder/info.js.map +1 -1
- package/lib/shared/srt-caller-metrics.d.ts +8 -0
- package/lib/shared/srt-caller-metrics.js +13 -0
- package/lib/shared/srt-caller-metrics.js.map +1 -0
- package/lib/shared/srt-listener-metrics.d.ts +9 -0
- package/lib/shared/srt-listener-metrics.js +12 -0
- package/lib/shared/srt-listener-metrics.js.map +1 -0
- package/lib/shared/srt-types.d.ts +17 -0
- package/lib/shared/srt-types.js +25 -0
- package/lib/shared/srt-types.js.map +1 -1
- package/lib/shared/stream-statistics-view.d.ts +3 -0
- package/lib/shared/stream-statistics-view.js +164 -0
- package/lib/shared/stream-statistics-view.js.map +1 -0
- package/lib/test/multiview.d.ts +1 -0
- package/lib/test/multiview.js +237 -0
- package/lib/test/multiview.js.map +1 -0
- package/lib/util.stats.latency/info.js +2 -0
- package/lib/util.stats.latency/info.js.map +1 -1
- package/package.json +7 -5
- package/lib/output.srt-caller/srt-packet-metrics.d.ts +0 -4
- package/lib/output.srt-caller/srt-packet-metrics.js +0 -10
- package/lib/output.srt-caller/srt-packet-metrics.js.map +0 -1
- package/lib/output.srt-listener/srt-packet-metrics.d.ts +0 -4
- package/lib/output.srt-listener/srt-packet-metrics.js +0 -12
- package/lib/output.srt-listener/srt-packet-metrics.js.map +0 -1
package/client/style.css
CHANGED
@@ -629,7 +629,7 @@
|
|
629
629
|
|
630
630
|
.text-gray-900 {
|
631
631
|
--tw-text-opacity: 1;
|
632
|
-
color: rgb(
|
632
|
+
color: rgb(18 25 35 / var(--tw-text-opacity));
|
633
633
|
}
|
634
634
|
|
635
635
|
.text-green-300 {
|
@@ -677,10 +677,6 @@
|
|
677
677
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
678
678
|
}
|
679
679
|
|
680
|
-
.underline {
|
681
|
-
text-decoration-line: underline;
|
682
|
-
}
|
683
|
-
|
684
680
|
.opacity-50 {
|
685
681
|
opacity: 0.5;
|
686
682
|
}
|
@@ -718,7 +714,7 @@
|
|
718
714
|
line-height: 1.25rem;
|
719
715
|
font-weight: 500;
|
720
716
|
--tw-text-opacity: 1;
|
721
|
-
color: rgb(
|
717
|
+
color: rgb(18 25 35 / var(--tw-text-opacity));
|
722
718
|
}
|
723
719
|
|
724
720
|
.node-editor-label:is(.dark *) {
|
@@ -739,7 +735,7 @@
|
|
739
735
|
font-size: 0.875rem;
|
740
736
|
line-height: 1.25rem;
|
741
737
|
--tw-text-opacity: 1;
|
742
|
-
color: rgb(
|
738
|
+
color: rgb(18 25 35 / var(--tw-text-opacity));
|
743
739
|
}
|
744
740
|
|
745
741
|
.node-editor-text-input:focus {
|
@@ -790,7 +786,7 @@
|
|
790
786
|
font-size: 0.875rem;
|
791
787
|
line-height: 1.25rem;
|
792
788
|
--tw-text-opacity: 1;
|
793
|
-
color: rgb(
|
789
|
+
color: rgb(18 25 35 / var(--tw-text-opacity));
|
794
790
|
}
|
795
791
|
|
796
792
|
.node-editor-numeric-input:focus {
|
@@ -839,7 +835,7 @@
|
|
839
835
|
font-size: 0.875rem;
|
840
836
|
line-height: 1.25rem;
|
841
837
|
--tw-text-opacity: 1;
|
842
|
-
color: rgb(
|
838
|
+
color: rgb(18 25 35 / var(--tw-text-opacity));
|
843
839
|
}
|
844
840
|
|
845
841
|
.node-editor-select-input:focus {
|
@@ -1080,7 +1076,7 @@
|
|
1080
1076
|
|
1081
1077
|
.dark\:bg-gray-800:is(.dark *) {
|
1082
1078
|
--tw-bg-opacity: 1;
|
1083
|
-
background-color: rgb(
|
1079
|
+
background-color: rgb(30 37 48 / var(--tw-bg-opacity));
|
1084
1080
|
}
|
1085
1081
|
|
1086
1082
|
.dark\:bg-primary-600:is(.dark *) {
|
package/lib/info.js
CHANGED
@@ -65,12 +65,14 @@ const info_23 = __importDefault(require("./processor.fixedLadder/info"));
|
|
65
65
|
AllComponents.push((r) => (0, info_23.default)(r));
|
66
66
|
const info_24 = __importDefault(require("./processor.makeProgram/info"));
|
67
67
|
AllComponents.push((r) => (0, info_24.default)(r));
|
68
|
-
const info_25 = __importDefault(require("./processor.
|
68
|
+
const info_25 = __importDefault(require("./processor.multiview/info"));
|
69
69
|
AllComponents.push((r) => (0, info_25.default)(r));
|
70
|
-
const info_26 = __importDefault(require("./processor.
|
70
|
+
const info_26 = __importDefault(require("./processor.onscreenGraphic/info"));
|
71
71
|
AllComponents.push((r) => (0, info_26.default)(r));
|
72
|
-
const info_27 = __importDefault(require("./processor.
|
72
|
+
const info_27 = __importDefault(require("./processor.streamKeyOverride/info"));
|
73
73
|
AllComponents.push((r) => (0, info_27.default)(r));
|
74
|
-
const info_28 = __importDefault(require("./
|
74
|
+
const info_28 = __importDefault(require("./processor.videoDecoder/info"));
|
75
75
|
AllComponents.push((r) => (0, info_28.default)(r));
|
76
|
+
const info_29 = __importDefault(require("./util.stats.latency/info"));
|
77
|
+
AllComponents.push((r) => (0, info_29.default)(r));
|
76
78
|
//# sourceMappingURL=info.js.map
|
package/lib/info.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"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"}
|
package/lib/input.rtmp/info.js
CHANGED
@@ -7,6 +7,7 @@ exports.defaultStreamMapping = defaultStreamMapping;
|
|
7
7
|
exports.default = default_1;
|
8
8
|
const inline_view_1 = __importDefault(require("./inline-view"));
|
9
9
|
const summary_view_1 = __importDefault(require("./summary-view"));
|
10
|
+
const FaVideo_1 = require("@react-icons/all-files/fa/FaVideo");
|
10
11
|
const defaultPort = 1935;
|
11
12
|
function defaultStreamMapping(cfg) {
|
12
13
|
return {
|
@@ -37,6 +38,7 @@ function default_1({ defineComponent, mappingsToStreams, StreamMappingForm, vali
|
|
37
38
|
category: 'input',
|
38
39
|
name: "RTMP Ingest",
|
39
40
|
description: "A component that listens for RTMP input on the address specified.",
|
41
|
+
icon: FaVideo_1.FaVideo,
|
40
42
|
subscription: {
|
41
43
|
accepts: undefined,
|
42
44
|
produces: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.rtmp/info.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.rtmp/info.ts"],"names":[],"mappings":"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"}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.default = default_1;
|
4
|
+
const FaVolumeMute_1 = require("@react-icons/all-files/fa/FaVolumeMute");
|
4
5
|
function default_1({ defineComponent }) {
|
5
6
|
return defineComponent({
|
6
7
|
identifier: 'input.silence',
|
7
8
|
category: 'input',
|
8
9
|
name: "Silence Generator",
|
9
10
|
description: "A component that produces silent audio streams with configurable sample rate and channel layout.",
|
11
|
+
icon: FaVolumeMute_1.FaVolumeMute,
|
10
12
|
subscription: {
|
11
13
|
produces: {
|
12
14
|
type: "dynamic-streams",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.silence/info.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.silence/info.ts"],"names":[],"mappings":";;AAIA,4BAsDC;AAxDD,yEAAsE;AAEtE,mBAAwB,EAAE,eAAe,EAAgB;IACvD,OAAO,eAAe,CAAgB;QACpC,UAAU,EAAE,eAAe;QAC3B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kGAAkG;QAC/G,IAAI,EAAE,2BAAY;QAClB,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjB,UAAU,EAAE,GAAG,CAAC,EAAE;wBAClB,KAAK,EAAE,OAAO;qBACf,CAAC;aACH;SACF;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI;gBACpD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE;aACpD,CAAA;QACH,CAAC;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,IAAI,EAAE,yCAAyC;oBAC/C,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;4BACvB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;4BAClC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;yBACnC;wBACD,YAAY,EAAE,KAAK;qBACpB;iBACF;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;4BACvB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;4BAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;yBACvC;wBACD,YAAY,EAAE,QAAQ;qBACvB;iBACF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
|
2
|
-
import type { SrtInputSettings } from "./runtime";
|
3
|
-
export default function ({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation: validation }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<SrtInputSettings,
|
2
|
+
import type { SrtInputEvent, SrtInputSettings, SrtInputState } from "./runtime";
|
3
|
+
export default function ({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation: validation }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<SrtInputSettings, SrtInputState, object, SrtInputEvent>;
|
@@ -5,7 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.default = default_1;
|
7
7
|
const srt_socket_options_1 = __importDefault(require("../shared/srt-socket-options"));
|
8
|
+
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
8
9
|
const srt_form_views_1 = require("../shared/srt-form-views");
|
10
|
+
const FaPhone_1 = require("@react-icons/all-files/fa/FaPhone");
|
11
|
+
const srt_caller_metrics_1 = __importDefault(require("../shared/srt-caller-metrics"));
|
12
|
+
const stream_statistics_view_1 = __importDefault(require("../shared/stream-statistics-view"));
|
13
|
+
const inline_view_1 = __importDefault(require("./inline-view"));
|
9
14
|
function default_1({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation: validation }) {
|
10
15
|
const { Port, Hostname, SrtPassphrase, SrtStreamId } = validation;
|
11
16
|
return defineComponent({
|
@@ -13,6 +18,7 @@ function default_1({ defineComponent, singleAvStreamMapping, singleAvStreamMappi
|
|
13
18
|
category: 'input',
|
14
19
|
name: "SRT Ingest (Caller)",
|
15
20
|
description: "This component allows you to receive Secure Reliable Transport (SRT) streams by calling a remote SRT listener.",
|
21
|
+
icon: FaPhone_1.FaPhone,
|
16
22
|
subscription: {
|
17
23
|
accepts: undefined,
|
18
24
|
produces: {
|
@@ -20,6 +26,39 @@ function default_1({ defineComponent, singleAvStreamMapping, singleAvStreamMappi
|
|
20
26
|
streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? singleAvStreamMapping(cfg))
|
21
27
|
}
|
22
28
|
},
|
29
|
+
runtime: {
|
30
|
+
initialState: () => ({
|
31
|
+
metrics: {
|
32
|
+
connectionCount: 0,
|
33
|
+
packetsLost: 0,
|
34
|
+
packetsResent: 0,
|
35
|
+
packetsSent: 0,
|
36
|
+
packetsReceived: 0
|
37
|
+
}
|
38
|
+
}),
|
39
|
+
handleEvent(ev, state) {
|
40
|
+
const evType = ev.type;
|
41
|
+
switch (evType) {
|
42
|
+
case 'metrics-updated':
|
43
|
+
state.metrics = ev.metrics;
|
44
|
+
break;
|
45
|
+
default:
|
46
|
+
(0, util_1.assertUnreachable)(evType);
|
47
|
+
}
|
48
|
+
return { ...state };
|
49
|
+
},
|
50
|
+
inline: inline_view_1.default,
|
51
|
+
metrics: [
|
52
|
+
{
|
53
|
+
title: "SRT Transmission",
|
54
|
+
view: srt_caller_metrics_1.default
|
55
|
+
},
|
56
|
+
{
|
57
|
+
title: "Stream Statistics",
|
58
|
+
view: stream_statistics_view_1.default
|
59
|
+
}
|
60
|
+
]
|
61
|
+
},
|
23
62
|
display: (desc) => {
|
24
63
|
return {
|
25
64
|
port: desc.config.port.toString(),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.srt-caller/info.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.srt-caller/info.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
4
|
+
function InlineView({ state }) {
|
5
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "srt-output", children: (0, jsx_runtime_1.jsx)("div", { children: state.metrics.connectionCount == 0 ?
|
6
|
+
(0, jsx_runtime_1.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" })
|
7
|
+
: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected" }), (0, jsx_runtime_1.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }), (0, jsx_runtime_1.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] })] }) }) }));
|
8
|
+
}
|
9
|
+
exports.default = InlineView;
|
10
|
+
//# sourceMappingURL=inline-view.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../../src/input.srt-caller/inline-view.tsx"],"names":[],"mappings":";;;AAGA,SAAS,UAAU,CAAC,EAAE,KAAK,EAA4B;IACrD,OAAO,CACL,gCAAK,SAAS,EAAC,YAAY,YACzB,0CACG,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;gBACnC,gCAAK,SAAS,EAAC,uCAAuC,8BAEhD;gBACN,CAAC,CAAC,6DACA,gCAAK,SAAS,EAAC,2CAA2C,0BAEpD,EACN,sDAAY,KAAK,CAAC,OAAO,CAAC,WAAW,IAAO,EAC5C,6DAAmB,KAAK,CAAC,OAAO,CAAC,WAAW,OAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAO,IAChF,GACD,GACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,UAAU,CAAC"}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { Norsk, SrtInputSettings as SdkSettings } from '@norskvideo/norsk-sdk';
|
2
|
-
import { SocketOptions } from '../shared/srt-types';
|
3
|
-
import {
|
1
|
+
import { Norsk, SrtInputSettings as SdkSettings, SourceMediaNode } from '@norskvideo/norsk-sdk';
|
2
|
+
import { SocketOptions, SrtCallerMetrics } from '../shared/srt-types';
|
3
|
+
import { CustomSourceNode } from '@norskvideo/norsk-studio/lib/extension/base-nodes';
|
4
4
|
import { OnCreated, ServerComponentDefinition, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
|
5
5
|
import { StreamMappingConfiguration } from '@norskvideo/norsk-studio/lib/extension/client-types';
|
6
6
|
export type SrtInputSettings = Pick<SdkSettings, 'port' | 'host' | 'passphrase' | 'streamId'> & {
|
@@ -10,6 +10,26 @@ export type SrtInputSettings = Pick<SdkSettings, 'port' | 'host' | 'passphrase'
|
|
10
10
|
notes?: string;
|
11
11
|
streamMappings?: StreamMappingConfiguration;
|
12
12
|
};
|
13
|
-
export
|
14
|
-
|
13
|
+
export type SrtInputEvent = {
|
14
|
+
type: 'metrics-updated';
|
15
|
+
metrics: SrtCallerMetrics;
|
16
|
+
};
|
17
|
+
export type SrtInputState = {
|
18
|
+
metrics: SrtCallerMetrics;
|
19
|
+
};
|
20
|
+
export type SrtInputCommand = object;
|
21
|
+
export default class SrtInputDefinition implements ServerComponentDefinition<SrtInputSettings, SrtInput, SrtInputState, SrtInputCommand, SrtInputEvent> {
|
22
|
+
create(norsk: Norsk, cfg: SrtInputSettings, cb: OnCreated<SrtInput>, runtime: StudioRuntime<SrtInputState, SrtInputCommand, SrtInputEvent>): Promise<void>;
|
23
|
+
handleMetricsUpdate(node: SrtInput): Promise<void>;
|
24
|
+
}
|
25
|
+
declare class SrtInput extends CustomSourceNode {
|
26
|
+
norsk: Norsk;
|
27
|
+
cfg: SrtInputSettings;
|
28
|
+
initialised: Promise<void>;
|
29
|
+
runtime: StudioRuntime<SrtInputState, SrtInputCommand, SrtInputEvent>;
|
30
|
+
node?: SourceMediaNode;
|
31
|
+
static create(norsk: Norsk, cfg: SrtInputSettings, runtime: StudioRuntime<SrtInputState, SrtInputCommand, SrtInputEvent>): Promise<SrtInput>;
|
32
|
+
constructor(cfg: SrtInputSettings, norsk: Norsk, runtime: StudioRuntime<SrtInputState, SrtInputCommand, SrtInputEvent>);
|
33
|
+
initialise(): Promise<void>;
|
15
34
|
}
|
35
|
+
export {};
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const srt_types_1 = require("../shared/srt-types");
|
3
4
|
const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
|
4
5
|
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
5
6
|
class SrtInputDefinition {
|
@@ -8,32 +9,63 @@ class SrtInputDefinition {
|
|
8
9
|
message: 'SRT Caller is not connected',
|
9
10
|
level: 'error'
|
10
11
|
});
|
11
|
-
const
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
runtime.updates.setAlert('disconnected', {
|
23
|
-
message: 'SRT Caller got disconnected',
|
24
|
-
level: 'error'
|
25
|
-
});
|
26
|
-
break;
|
27
|
-
default:
|
28
|
-
(0, util_1.assertUnreachable)(status);
|
29
|
-
}
|
30
|
-
},
|
31
|
-
...cfg
|
32
|
-
});
|
12
|
+
const input = await SrtInput.create(norsk, cfg, runtime);
|
13
|
+
cb(input);
|
14
|
+
}
|
15
|
+
async handleMetricsUpdate(node) {
|
16
|
+
const latest = node.runtime.updates.latestMetrics();
|
17
|
+
const targetNodeId = node.node?.id;
|
18
|
+
if (!targetNodeId)
|
19
|
+
return;
|
20
|
+
node.runtime.updates.raiseEvent({
|
21
|
+
type: 'metrics-updated',
|
22
|
+
metrics: (0, srt_types_1.extractSrtCallerMetricsForNode)(targetNodeId, latest)
|
33
23
|
});
|
34
|
-
await wrapper.initialised;
|
35
|
-
cb(wrapper);
|
36
24
|
}
|
37
25
|
}
|
38
26
|
exports.default = SrtInputDefinition;
|
27
|
+
class SrtInput extends base_nodes_1.CustomSourceNode {
|
28
|
+
norsk;
|
29
|
+
cfg;
|
30
|
+
initialised;
|
31
|
+
runtime;
|
32
|
+
node;
|
33
|
+
static async create(norsk, cfg, runtime) {
|
34
|
+
const node = new SrtInput(cfg, norsk, runtime);
|
35
|
+
await node.initialised;
|
36
|
+
return node;
|
37
|
+
}
|
38
|
+
constructor(cfg, norsk, runtime) {
|
39
|
+
super(cfg.id);
|
40
|
+
this.cfg = cfg;
|
41
|
+
this.id = cfg.id;
|
42
|
+
this.norsk = norsk;
|
43
|
+
this.runtime = runtime;
|
44
|
+
this.initialised = this.initialise();
|
45
|
+
}
|
46
|
+
async initialise() {
|
47
|
+
this.node = await this.norsk.input.srt({
|
48
|
+
sourceName: this.cfg.id,
|
49
|
+
mode: 'caller',
|
50
|
+
onConnection: () => {
|
51
|
+
this.runtime.updates.clearAlert('disconnected');
|
52
|
+
return { accept: true, sourceName: this.cfg.id };
|
53
|
+
},
|
54
|
+
onConnectionStatusChange: (status, _sourceName) => {
|
55
|
+
switch (status) {
|
56
|
+
case 'disconnected':
|
57
|
+
this.runtime.updates.setAlert('disconnected', {
|
58
|
+
message: 'SRT Caller got disconnected',
|
59
|
+
level: 'error'
|
60
|
+
});
|
61
|
+
break;
|
62
|
+
default:
|
63
|
+
(0, util_1.assertUnreachable)(status);
|
64
|
+
}
|
65
|
+
},
|
66
|
+
...this.cfg
|
67
|
+
});
|
68
|
+
this.setup({ output: [this.node] });
|
69
|
+
}
|
70
|
+
}
|
39
71
|
//# sourceMappingURL=runtime.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/input.srt-caller/runtime.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/input.srt-caller/runtime.ts"],"names":[],"mappings":"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"}
|
@@ -8,7 +8,10 @@ exports.default = default_1;
|
|
8
8
|
const inline_view_1 = __importDefault(require("./inline-view"));
|
9
9
|
const summary_view_1 = __importDefault(require("./summary-view"));
|
10
10
|
const srt_socket_options_1 = __importDefault(require("../shared/srt-socket-options"));
|
11
|
+
const stream_statistics_view_1 = __importDefault(require("../shared/stream-statistics-view"));
|
11
12
|
const srt_form_views_1 = require("../shared/srt-form-views");
|
13
|
+
const FaHeadphones_1 = require("@react-icons/all-files/fa/FaHeadphones");
|
14
|
+
const srt_listener_metrics_1 = __importDefault(require("../shared/srt-listener-metrics"));
|
12
15
|
function defaultStreamMapping(cfg) {
|
13
16
|
return {
|
14
17
|
streams: cfg.streamIds?.flatMap((s) => [{
|
@@ -39,6 +42,7 @@ function default_1({ defineComponent, mappingsToStreams, StreamMappingForm, vali
|
|
39
42
|
category: 'input',
|
40
43
|
name: "SRT Ingest (Listener)",
|
41
44
|
description: "This component handles media ingest via the SRT(Secure Reliable Transport) protocol. It acts as a listener, receiving media streams from remote SRT sources and is highly configurable, allowing for custom IP addresses, ports, and stream handling behaviours.",
|
45
|
+
icon: FaHeadphones_1.FaHeadphones,
|
42
46
|
subscription: {
|
43
47
|
accepts: undefined,
|
44
48
|
produces: {
|
@@ -54,12 +58,24 @@ function default_1({ defineComponent, mappingsToStreams, StreamMappingForm, vali
|
|
54
58
|
};
|
55
59
|
},
|
56
60
|
runtime: {
|
57
|
-
initialState: () => ({
|
61
|
+
initialState: () => ({
|
62
|
+
connectedStreams: [],
|
63
|
+
disabledStreams: [],
|
64
|
+
names: [],
|
65
|
+
metrics: {
|
66
|
+
connectionCount: 0,
|
67
|
+
packetsLost: [],
|
68
|
+
packetsResent: [],
|
69
|
+
packetsSent: [],
|
70
|
+
packetsReceived: []
|
71
|
+
}
|
72
|
+
}),
|
58
73
|
handleEvent(ev, state) {
|
59
74
|
const evType = ev.type;
|
60
75
|
switch (evType) {
|
61
76
|
case "source-connected":
|
62
77
|
state.connectedStreams.push(ev.streamId);
|
78
|
+
state.names[ev.index] = ev.streamId;
|
63
79
|
break;
|
64
80
|
case "source-disconnected":
|
65
81
|
state.connectedStreams = state.connectedStreams.filter((streamId) => streamId !== ev.streamId);
|
@@ -70,6 +86,9 @@ function default_1({ defineComponent, mappingsToStreams, StreamMappingForm, vali
|
|
70
86
|
case "source-disabled":
|
71
87
|
state.disabledStreams.push(ev.streamId);
|
72
88
|
break;
|
89
|
+
case 'metrics-updated':
|
90
|
+
state.metrics = ev.metrics;
|
91
|
+
break;
|
73
92
|
default:
|
74
93
|
assertUnreachable(evType);
|
75
94
|
}
|
@@ -77,6 +96,13 @@ function default_1({ defineComponent, mappingsToStreams, StreamMappingForm, vali
|
|
77
96
|
},
|
78
97
|
inline: inline_view_1.default,
|
79
98
|
summary: summary_view_1.default,
|
99
|
+
metrics: [
|
100
|
+
{ title: "SRT Transmission", view: srt_listener_metrics_1.default },
|
101
|
+
{
|
102
|
+
title: "Stream Statistics",
|
103
|
+
view: stream_statistics_view_1.default
|
104
|
+
}
|
105
|
+
]
|
80
106
|
},
|
81
107
|
configForm: {
|
82
108
|
form: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.srt-listener/info.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/input.srt-listener/info.ts"],"names":[],"mappings":";;;;;AAYA,oDAsBC;AAED,4BAgJC;AAlLD,gEAAuC;AACvC,kEAAyC;AACzC,sFAA4D;AAE5D,8FAAmE;AACnE,6DAA8D;AAC9D,yEAAsE;AACtE,0FAAiE;AAGjE,SAAgB,oBAAoB,CAAC,GAA8B;IACjE,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE;oBACT,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,CAAC;oBAChB,QAAQ,EAAE,GAAG;oBACb,aAAa,EAAE,SAAS;iBACzB;gBACD,UAAU,EAAE,CAAC;aACd,EAAE;gBACD,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE;oBACT,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,CAAC;oBAChB,QAAQ,EAAE,GAAG;oBACb,aAAa,EAAE,SAAS;iBACzB;gBACD,UAAU,EAAE,CAAC;aACd,CAAC,CAAC,IAAI,EAAE;KACV,CAAA;AACH,CAAC;AAED,mBAAwB,EACtB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EAAgB;IAC1B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAE5E,OAAO,eAAe,CACpB;QACE,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,kQAAkQ;QAC/Q,IAAI,EAAE,2BAAY;QAClB,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;aACrF;SACF;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACjC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aACrB,CAAA;QACH,CAAC;QACD,OAAO,EAAE;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;gBACnB,gBAAgB,EAAE,EAAE;gBACpB,eAAe,EAAE,EAAE;gBACnB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE;oBACP,eAAe,EAAE,CAAC;oBAClB,WAAW,EAAE,EAAE;oBACf,aAAa,EAAE,EAAE;oBACjB,WAAW,EAAE,EAAE;oBACf,eAAe,EAAE,EAAE;iBACpB;aACF,CAAC;YACF,WAAW,CAAC,EAAE,EAAE,KAAK;gBACnB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;gBACvB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,kBAAkB;wBACrB,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACxC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAA;wBACnC,MAAM;oBACR,KAAK,qBAAqB;wBACxB,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;wBAC9F,MAAM;oBACR,KAAK,gBAAgB;wBACnB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;wBAC5F,MAAM;oBACR,KAAK,iBAAiB;wBACpB,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACvC,MAAM;oBACR,KAAK,iBAAiB;wBACpB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;wBAC3B,MAAM;oBACR;wBACE,iBAAiB,CAAC,MAAM,CAAC,CAAA;gBAC7B,CAAC;gBACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;YACtB,CAAC;YACD,MAAM,EAAE,qBAAU;YAClB,OAAO,EAAE,sBAAW;YACpB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,8BAAoB,EAAE;gBACzD;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,gCAAoB;iBAC3B;aACF;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,wCAAwC,EAAE,IAAI,EAAE;wBACpD,IAAI,EAAE,SAAS;wBACf,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;wBAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;wBACtB,WAAW,EAAE,IAAI;qBAClB;iBACF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,uDAAuD;oBAC7D,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,QAAQ;wBACpB,YAAY,EAAE,SAAS;wBACvB,WAAW,EAAE,IAAI;qBAClB;iBACF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,6CAA6C;oBACnD,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;wBACd,UAAU,EAAE,aAAa;wBACzB,WAAW,EAAE,IAAI;qBAClB;iBACF;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACJ,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,oCAAmB;wBACzB,IAAI,EAAE,IAAA,4BAAgB,EAAC,UAAU,CAAC;qBACnC;iBACF;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,8GAA8G,EAAE,IAAI,EAAE;wBAC1H,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE;4BACP,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;4BAC/C,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;yBACzC;wBACD,YAAY,EAAE,YAAY;qBAC3B;iBACF;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,sDAAsD;oBAC5D,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAE,CAAC,SAAS,CAAC;wBACzB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;wBAC/B,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;qBAC7B;iBACF;gBACD,cAAc,EAAE,iBAAiB,CAAC,oBAAoB,EAAE;oBACtD,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;iBAC1C,CAAC;gBACF,KAAK,EAAE;oBACL,IAAI,EAAE,uCAAuC;oBAC7C,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;SACF;KACF,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAQ;IACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
|
@@ -10,7 +10,7 @@ function InlineView({ state, config }) {
|
|
10
10
|
const connectedSources = (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [" ", state.connectedStreams.length > 0 ? (0, jsx_runtime_1.jsx)("span", { children: "Connected sources" }) : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), (0, jsx_runtime_1.jsx)("ul", { className: "srt-input-connected-sources", children: sourcesToRender.map((sourceName) => {
|
11
11
|
return (0, jsx_runtime_1.jsx)("li", { className: "text-green-300", children: sourceName }, sourceName);
|
12
12
|
}) })] });
|
13
|
-
return (0, jsx_runtime_1.
|
13
|
+
return (0, jsx_runtime_1.jsxs)("div", { className: "srt-input", id: `srt-input-${config.id}`, children: [connectedSources, (0, jsx_runtime_1.jsxs)("div", { children: ["Received: ", state.metrics.packetsReceived.reduce((a, i) => a + i, 0)] }), (0, jsx_runtime_1.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost.reduce((a, i) => a + i, 0), "/", state.metrics.packetsResent.reduce((a, i) => a + i, 0)] })] });
|
14
14
|
}
|
15
15
|
exports.default = InlineView;
|
16
16
|
//# sourceMappingURL=inline-view.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../../src/input.srt-listener/inline-view.tsx"],"names":[],"mappings":";;;AAEA,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAsD;IACvF,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACrE,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IACD,MAAM,gBAAgB,GACpB,iCAAK,SAAS,EAAC,MAAM,kBAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iEAA8B,CAAC,CAAC,CAAC,kDAAK,EAChG,+BAAI,SAAS,EAAC,6BAA6B,YACxC,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClC,OAAO,+BAAqB,SAAS,EAAC,gBAAgB,YAAE,UAAU,IAAlD,UAAU,CAA8C,CAAA;gBAC1E,CAAC,CAAC,GACC,IACD,CAAA;IACR,OAAO,
|
1
|
+
{"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../../src/input.srt-listener/inline-view.tsx"],"names":[],"mappings":";;;AAEA,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAsD;IACvF,MAAM,YAAY,GAAG,CAAC,CAAC;IACvB,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACrE,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IACD,MAAM,gBAAgB,GACpB,iCAAK,SAAS,EAAC,MAAM,kBAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iEAA8B,CAAC,CAAC,CAAC,kDAAK,EAChG,+BAAI,SAAS,EAAC,6BAA6B,YACxC,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClC,OAAO,+BAAqB,SAAS,EAAC,gBAAgB,YAAE,UAAU,IAAlD,UAAU,CAA8C,CAAA;gBAC1E,CAAC,CAAC,GACC,IACD,CAAA;IACR,OAAO,iCAAK,SAAS,EAAC,WAAW,EAAC,EAAE,EAAE,aAAa,MAAM,CAAC,EAAE,EAAE,aAC3D,gBAAgB,EACjB,0DAAgB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAO,EAC/E,6DAAmB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAO,IACnI,CAAA;AACR,CAAC;AAED,kBAAe,UAAU,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Norsk, SrtInputSettings as SdkSettings, SrtInputNode } from '@norskvideo/norsk-sdk';
|
2
|
-
import { SocketOptions } from '../shared/srt-types';
|
2
|
+
import { SocketOptions, SrtListenerMetrics } from '../shared/srt-types';
|
3
3
|
import { CreatedMediaNode, InstanceRouteArgs, OnCreated, RelatedMediaNodes, RuntimeUpdates, ServerComponentDefinition, StudioRuntime } from '@norskvideo/norsk-studio/lib/extension/runtime-types';
|
4
4
|
import { StreamMappingConfiguration } from '@norskvideo/norsk-studio/lib/extension/client-types';
|
5
5
|
export type SrtInputSettings = Pick<SdkSettings, 'port' | 'host' | 'passphrase'> & {
|
@@ -14,10 +14,13 @@ export type SrtInputSettings = Pick<SdkSettings, 'port' | 'host' | 'passphrase'>
|
|
14
14
|
export type SrtInputState = {
|
15
15
|
connectedStreams: string[];
|
16
16
|
disabledStreams: string[];
|
17
|
+
metrics: SrtListenerMetrics;
|
18
|
+
names: string[];
|
17
19
|
};
|
18
20
|
export type SrtInputEvent = {
|
19
21
|
type: "source-connected";
|
20
22
|
streamId: string;
|
23
|
+
index: number;
|
21
24
|
} | {
|
22
25
|
type: "source-disconnected";
|
23
26
|
streamId: string;
|
@@ -27,6 +30,9 @@ export type SrtInputEvent = {
|
|
27
30
|
} | {
|
28
31
|
type: "source-disabled";
|
29
32
|
streamId: string;
|
33
|
+
} | {
|
34
|
+
type: 'metrics-updated';
|
35
|
+
metrics: SrtListenerMetrics;
|
30
36
|
};
|
31
37
|
export type SrtInputCommand = {
|
32
38
|
type: "disable-source";
|
@@ -58,5 +64,6 @@ export declare class SrtInput implements CreatedMediaNode {
|
|
58
64
|
export default class SrtInputDefinition implements ServerComponentDefinition<SrtInputSettings, SrtInput, SrtInputState, SrtInputCommand> {
|
59
65
|
create(norsk: Norsk, cfg: SrtInputSettings, cb: OnCreated<SrtInput>, runtime: StudioRuntime<SrtInputState, SrtInputCommand, SrtInputEvent>): Promise<void>;
|
60
66
|
handleCommand(node: SrtInput, command: SrtInputCommand): Promise<void>;
|
67
|
+
handleMetricsUpdate(node: SrtInput): Promise<void>;
|
61
68
|
instanceRoutes(): Promise<import("@norskvideo/norsk-studio/lib/extension/runtime-types").RouteInfo<InstanceRouteArgs<SrtInputSettings, SrtInput, SrtInputState, SrtInputCommand>>[]>;
|
62
69
|
}
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.SrtInput = void 0;
|
7
|
+
const srt_types_1 = require("../shared/srt-types");
|
7
8
|
const runtime_types_1 = require("@norskvideo/norsk-studio/lib/extension/runtime-types");
|
8
9
|
const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
|
9
10
|
const util_1 = require("@norskvideo/norsk-studio/lib/shared/util");
|
@@ -65,7 +66,7 @@ class SrtInput {
|
|
65
66
|
if (this.cfg.streamIds.includes(streamId) && !this.activeStreams.has(streamId)) {
|
66
67
|
(0, logging_1.debuglog)("Accepting SRT connection", { streamId, remoteHost });
|
67
68
|
this.activeStreams.set(streamId, index);
|
68
|
-
this.updates.raiseEvent({ type: "source-connected", streamId });
|
69
|
+
this.updates.raiseEvent({ type: "source-connected", streamId, index });
|
69
70
|
return {
|
70
71
|
accept: true,
|
71
72
|
sourceName: streamId
|
@@ -79,7 +80,7 @@ class SrtInput {
|
|
79
80
|
};
|
80
81
|
}
|
81
82
|
(0, logging_1.debuglog)("Accepting SRT connection", { streamName, remoteHost });
|
82
|
-
this.updates.raiseEvent({ type: "source-connected", streamId: streamName });
|
83
|
+
this.updates.raiseEvent({ type: "source-connected", streamId: streamName, index });
|
83
84
|
this.activeStreams.set(streamName, index);
|
84
85
|
return {
|
85
86
|
accept: true,
|
@@ -95,7 +96,7 @@ class SrtInput {
|
|
95
96
|
}
|
96
97
|
if (this.cfg.streamIds.includes(streamId)) {
|
97
98
|
(0, logging_1.debuglog)("Accepting SRT connection", { streamId, remoteHost });
|
98
|
-
this.updates.raiseEvent({ type: "source-connected", streamId });
|
99
|
+
this.updates.raiseEvent({ type: "source-connected", streamId, index });
|
99
100
|
this.activeStreams.set(streamId, index);
|
100
101
|
return {
|
101
102
|
accept: true,
|
@@ -161,6 +162,16 @@ class SrtInputDefinition {
|
|
161
162
|
(0, util_1.assertUnreachable)(commandType);
|
162
163
|
}
|
163
164
|
}
|
165
|
+
async handleMetricsUpdate(node) {
|
166
|
+
const latest = node.updates.latestMetrics();
|
167
|
+
const targetNodeId = node.srtServer?.id;
|
168
|
+
if (!targetNodeId)
|
169
|
+
return;
|
170
|
+
node.updates.raiseEvent({
|
171
|
+
type: 'metrics-updated',
|
172
|
+
metrics: (0, srt_types_1.extractSrtListenerMetricsForNode)(targetNodeId, latest)
|
173
|
+
});
|
174
|
+
}
|
164
175
|
async instanceRoutes() {
|
165
176
|
return (0, api_1.defineApi)(path_1.default.join(__dirname, 'types.yaml'), {
|
166
177
|
'/disconnect': {
|