@norskvideo/norsk-studio-built-ins 1.12.0-2025-02-18-b429e0e5 → 1.12.0-2025-02-18-c260e384

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.
@@ -3,6 +3,7 @@ import { SimpleProcessorWrapper } from "@norskvideo/norsk-studio/lib/extension/b
3
3
  import { HardwareAccelerationType } from '@norskvideo/norsk-studio/lib/shared/config';
4
4
  import { components } from './types';
5
5
  import { Norsk } from '@norskvideo/norsk-sdk';
6
+ import { OpenAPIV3 } from 'openapi-types';
6
7
  export type SoftwareLadderRung = components['schemas']['softwareLadderRung'];
7
8
  export type Ma35dLadderRung = components['schemas']['ma35dLadderRung'];
8
9
  export type LoganLadderRung = components['schemas']['loganLadderRung'];
@@ -17,5 +18,8 @@ export type FixedLadderConfig = Omit<components["schemas"]["fixedLadderConfig"],
17
18
  };
18
19
  export default class FixedLadderDefinition implements ServerComponentDefinition<FixedLadderConfig, SimpleProcessorWrapper> {
19
20
  create(norsk: Norsk, cfg: FixedLadderConfig, cb: OnCreated<SimpleProcessorWrapper>): Promise<void>;
21
+ schemas(): Promise<{
22
+ config: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject;
23
+ }>;
20
24
  }
21
25
  export {};
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const base_nodes_1 = require("@norskvideo/norsk-studio/lib/extension/base-nodes");
4
7
  const logging_1 = require("@norskvideo/norsk-studio/lib/server/logging");
8
+ const path_1 = __importDefault(require("path"));
9
+ const promises_1 = __importDefault(require("fs/promises"));
10
+ const yaml_1 = __importDefault(require("yaml"));
11
+ const json_refs_1 = require("json-refs");
5
12
  class FixedLadderDefinition {
6
13
  async create(norsk, cfg, cb) {
7
14
  const wrapper = new base_nodes_1.SimpleProcessorWrapper(cfg.id, async () => {
@@ -15,6 +22,14 @@ class FixedLadderDefinition {
15
22
  await wrapper.initialised;
16
23
  cb(wrapper);
17
24
  }
25
+ async schemas() {
26
+ const types = await promises_1.default.readFile(path_1.default.join(__dirname, 'types.yaml'));
27
+ const root = yaml_1.default.parse(types.toString());
28
+ const resolved = await (0, json_refs_1.resolveRefs)(root, {}).then((r) => r.resolved);
29
+ return {
30
+ config: resolved.components.schemas['fixedLadderConfig']
31
+ };
32
+ }
18
33
  }
19
34
  exports.default = FixedLadderDefinition;
20
35
  function createRung(rung, hardware) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.fixedLadder/runtime.ts"],"names":[],"mappings":";;AACA,kFAA2F;AAE3F,yEAAyE;AAoBzE,MAAqB,qBAAqB;IACxC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAsB,EAAE,EAAqC;QACtF,MAAM,OAAO,GAAG,IAAI,mCAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC5D,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;gBACjD,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;qBAChD,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,WAAW,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,CAAC;IAEd,CAAC;CACF;AAdD,wCAcC;AAED,SAAS,UAAU,CAAC,IAA0B,EAAE,QAAuB;IACrE,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACJ,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA0B,EAAE,QAA2C;IACjG,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,IAAA,oBAAU,EAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACnF,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA0B;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAA,oBAAU,EAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/processor.fixedLadder/runtime.ts"],"names":[],"mappings":";;;;;AACA,kFAA2F;AAE3F,yEAAyE;AAGzE,gDAAwB;AACxB,2DAA6B;AAC7B,gDAAwB;AACxB,yCAAwC;AAmBxC,MAAqB,qBAAqB;IACxC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,GAAsB,EAAE,EAAqC;QACtF,MAAM,OAAO,GAAG,IAAI,mCAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC5D,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;gBACjD,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;qBAChD,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,WAAW,CAAC;QAC1B,EAAE,CAAC,OAAO,CAAC,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;QACnE,MAAM,IAAI,GAAG,cAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAW,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAA8B,CAAC,CAAC;QAC3F,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,UAAW,CAAC,OAAQ,CAAC,mBAAmB,CAAC;SAC3D,CAAA;IACH,CAAC;CACF;AAvBD,wCAuBC;AAED,SAAS,UAAU,CAAC,IAA0B,EAAE,QAAuB;IACrE,IAAI,QAAQ,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA0B,EAAE,QAA2C;IACjG,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAA,oBAAU,EAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACnF,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA0B;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAA,oBAAU,EAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AAC5C,CAAC"}
@@ -4,53 +4,179 @@ export interface components {
4
4
  schemas: {
5
5
  x264Codec: {
6
6
  type: "x264";
7
- bitrateMode: {
7
+ threads?: number;
8
+ bitrateMode?: {
8
9
  value: number;
9
10
  mode: "abr" | "cqp" | "crf";
10
11
  };
11
- keyFrameIntervalMax: number;
12
- keyFrameIntervalMin: number;
13
- sceneCut: number;
14
- preset: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
15
- tune: "film" | "animation" | "grain" | "stillimage" | "psnr" | "ssim" | "fastdecode" | "zerolatency";
16
- threads: number;
17
- bframes: number;
12
+ profile?: "baseline" | "main" | "high" | "high10" | "high422" | "high444";
13
+ level?: 1 | 1.1 | 1.2 | 1.3 | 2 | 2.1 | 2.2 | 3 | 3.1 | 3.2 | 4 | 4.1 | 4.2 | 5 | 5.1;
14
+ keyFrameIntervalMin?: number;
15
+ keyFrameIntervalMax?: number;
16
+ bframes?: number;
17
+ tune?: "film" | "animation" | "grain" | "stillimage" | "psnr" | "ssim" | "fastdecode" | "zerolatency";
18
+ preset?: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
19
+ frameReference?: number;
20
+ cabac?: boolean;
21
+ vbvMaxRate?: number;
22
+ vbvBufferSize?: number;
23
+ sceneCut?: number;
24
+ aud?: boolean;
25
+ noDeblock?: boolean;
26
+ nalHrd?: "none" | "vbr" | "cbr";
18
27
  };
19
28
  ma35dH264Codec: {
20
29
  type: "amdMA35D-h264";
21
- profile: "baseline" | "main" | "high" | "high10";
22
- rateControl: {
30
+ profile?: "baseline" | "main" | "high" | "high10";
31
+ level?: 1 | 2 | 2.1 | 3 | 3.1 | 4 | 4.1 | 5 | 5.1 | 5.2 | 6 | 6.1 | 6.2;
32
+ rateControl?: {
33
+ mode: "const-qp";
34
+ qp: number;
35
+ } | {
23
36
  mode: "cbr";
24
37
  bitrate: number;
38
+ } | {
39
+ mode: "vbr";
40
+ bitrate: number;
41
+ } | {
42
+ mode: "constrained-vbr";
43
+ bitrate: number;
44
+ maxBitrate: number;
45
+ bufSize: number;
46
+ } | {
47
+ mode: "content-adaptive";
48
+ bitrate: number;
49
+ maxBitrate: number;
50
+ bufSize: number;
25
51
  };
26
- gopSize: number;
52
+ lookaheadDepth?: number;
53
+ gopSize?: number;
54
+ tempAqGain?: number;
55
+ spatAqGain?: number;
56
+ minQp?: number;
57
+ maxQp?: number;
58
+ preset?: "fast" | "medium" | "slow";
59
+ crf?: number;
60
+ forcedIdr?: number;
61
+ bf?: number;
62
+ qpMode?: "relative-load" | "uniform";
63
+ spatialAq?: "auto" | "disable" | "enable";
64
+ temporalAq?: "auto" | "disable" | "enable";
65
+ dynamicGop?: "auto" | "disable" | "enable";
66
+ tuneMetrics?: "vq" | "psnr" | "ssim" | "vmaf";
67
+ latencyMs?: number;
68
+ delayInitialization?: number;
27
69
  };
28
70
  ma35dHevcCodec: {
29
71
  type: "amdMA35D-hevc";
30
- profile: "main" | "main10";
31
- rateControl: {
72
+ profile?: "main" | "main10";
73
+ level?: 1 | 2 | 2.1 | 3 | 3.1 | 4 | 4.1 | 5 | 5.1 | 5.2 | 6 | 6.1 | 6.2;
74
+ tier?: "main" | "high";
75
+ rateControl?: {
76
+ mode: "const-qp";
77
+ qp: number;
78
+ } | {
32
79
  mode: "cbr";
33
80
  bitrate: number;
81
+ } | {
82
+ mode: "vbr";
83
+ bitrate: number;
84
+ } | {
85
+ mode: "constrained-vbr";
86
+ bitrate: number;
87
+ maxBitrate: number;
88
+ bufSize: number;
89
+ } | {
90
+ mode: "content-adaptive";
91
+ bitrate: number;
92
+ maxBitrate: number;
93
+ bufSize: number;
34
94
  };
35
- gopSize: number;
95
+ lookaheadDepth?: number;
96
+ gopSize?: number;
97
+ tempAqGain?: number;
98
+ spatAqGain?: number;
99
+ minQp?: number;
100
+ maxQp?: number;
101
+ preset?: "fast" | "medium" | "slow";
102
+ crf?: number;
103
+ forcedIdr?: number;
104
+ bf?: number;
105
+ qpMode?: "relative-load" | "uniform";
106
+ spatialAq?: "auto" | "disable" | "enable";
107
+ temporalAq?: "auto" | "disable" | "enable";
108
+ dynamicGop?: "auto" | "disable" | "enable";
109
+ tuneMetrics?: "vq" | "psnr" | "ssim" | "vmaf";
110
+ latencyMs?: number;
111
+ delayInitialization?: number;
36
112
  };
37
113
  quadraH264Codec: {
38
114
  type: "quadra-h264";
39
- intraPeriod: number;
40
- bitrate: number;
115
+ extraOpts?: string;
116
+ enableAud?: boolean;
117
+ gpuIndex?: number;
118
+ bitrate?: number;
119
+ enableVfr?: boolean;
120
+ crf?: number;
121
+ gopPresetIndex?: number;
122
+ intraPeriod?: number;
123
+ rcEnable?: boolean;
124
+ intraQp?: number;
125
+ rcInitDelay?: number;
126
+ profile?: "baseline" | "main" | "extended" | "high" | "high10";
127
+ level?: 1 | 2 | 2.1 | 3 | 3.1 | 4 | 4.1 | 5 | 5.1 | 5.2 | 6 | 6.1 | 6.2;
128
+ fillerEnable?: boolean;
129
+ minQp?: number;
130
+ maxQp?: number;
131
+ maxDeltaQp?: number;
132
+ cuLevelRCEnable?: boolean;
133
+ lookAheadDepth?: number;
134
+ vbvBufferSize?: number;
135
+ vbvMaxRate?: number;
41
136
  };
42
137
  loganH264Codec: {
43
138
  type: "logan-h264";
44
- intraPeriod: number;
45
- bitrate: number;
139
+ extraOpts?: string;
140
+ enableAud?: boolean;
141
+ gpuIndex?: number;
142
+ bitrate?: number;
143
+ flushGop?: boolean;
144
+ enableVfr?: boolean;
145
+ crf?: number;
146
+ cbr?: boolean;
147
+ gopPresetIndex?: number;
148
+ intraPeriod?: number;
149
+ rcEnable?: boolean;
150
+ intraQp?: number;
151
+ rcInitDelay?: number;
152
+ profile?: "baseline" | "main" | "extended" | "high" | "high10";
153
+ level?: 1 | 2 | 2.1 | 3 | 3.1 | 4 | 4.1 | 5 | 5.1 | 5.2 | 6 | 6.1 | 6.2;
46
154
  };
47
155
  nvidiaH264Codec: {
48
156
  type: "nv-h264";
49
- idrPeriod: number;
50
- rateControl: {
157
+ preset?: "p1" | "p2" | "p3" | "p4" | "p5" | "p6" | "p7";
158
+ tuning?: "high_quality" | "low_latency" | "ultra_low_latency" | "lossless";
159
+ idrPeriod?: number;
160
+ gopInterval?: number;
161
+ frameIntervalP?: number;
162
+ maxNumRefFrames?: number;
163
+ level?: 1 | 2 | 2.1 | 3 | 3.1 | 4 | 4.1 | 5 | 5.1 | 5.2 | 6 | 6.1 | 6.2;
164
+ profile?: "baseline" | "main" | "high" | "high444";
165
+ outputAud?: boolean;
166
+ rateControl?: {
51
167
  mode: "con_stqp" | "vbr" | "cbr";
52
168
  averageBitrate: number;
169
+ maxBitrate?: number;
170
+ vbvBufferSize?: number;
171
+ vbvInitialDelay?: number;
172
+ enableLookahead?: boolean;
173
+ strictGopTarget?: boolean;
174
+ lookaheadDepth?: number;
175
+ enableTemporalAQ?: boolean;
176
+ enableSpatialAQ?: boolean;
177
+ aqStrength?: number;
53
178
  };
179
+ useBFramesAsRef?: "disabled" | "each" | "middle";
54
180
  };
55
181
  frameRate: {
56
182
  frames: number;
@@ -11,33 +11,54 @@ components:
11
11
  type:
12
12
  type: string
13
13
  enum: ["x264"]
14
+ threads:
15
+ type: number
14
16
  bitrateMode:
15
17
  type: object
16
- required: ['value', 'mode']
17
18
  properties:
18
19
  value:
19
20
  type: number
20
21
  mode:
21
22
  type: string
22
23
  enum: ["abr", "cqp", "crf"]
23
- keyFrameIntervalMax:
24
+ required: ['value', 'mode']
25
+ profile:
26
+ type: string
27
+ enum: ["baseline", "main", "high", "high10", "high422", "high444"]
28
+ level:
24
29
  type: number
30
+ enum: [1, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2, 5, 5.1]
25
31
  keyFrameIntervalMin:
26
32
  type: number
27
- sceneCut:
33
+ keyFrameIntervalMax:
34
+ type: number
35
+ bframes:
28
36
  type: number
29
- preset:
30
- type: string
31
- enum: ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"]
32
37
  tune:
33
38
  type: string
34
39
  enum: ["film", "animation", "grain", "stillimage", "psnr", "ssim", "fastdecode", "zerolatency"]
35
- threads:
40
+ preset:
41
+ type: string
42
+ enum: ["ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"]
43
+ frameReference:
36
44
  type: number
37
- bframes:
45
+ cabac:
46
+ type: boolean
47
+ vbvMaxRate:
48
+ type: number
49
+ vbvBufferSize:
50
+ type: number
51
+ sceneCut:
38
52
  type: number
39
- required: ['type', 'bitrateMode', 'keyFrameIntervalMax', 'keyFrameIntervalMin', 'sceneCut', 'preset', 'tune', 'threads', 'bframes' ]
40
-
53
+ aud:
54
+ type: boolean
55
+ noDeblock:
56
+ type: boolean
57
+ nalHrd:
58
+ type: string
59
+ enum: ["none", "vbr", "cbr"]
60
+ required: ['type']
61
+
41
62
  ma35dH264Codec:
42
63
  type: object
43
64
  properties:
@@ -47,18 +68,100 @@ components:
47
68
  profile:
48
69
  type: string
49
70
  enum: ['baseline', 'main', 'high', 'high10']
71
+ level:
72
+ type: number
73
+ enum: [1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2]
50
74
  rateControl:
51
- type: object
52
- properties:
53
- mode:
54
- type: string
55
- enum: ['cbr']
56
- bitrate:
57
- type: number
58
- required: ['mode', 'bitrate']
75
+ oneOf:
76
+ - type: object
77
+ properties:
78
+ mode:
79
+ type: string
80
+ enum: ['const-qp']
81
+ qp:
82
+ type: number
83
+ required: ['mode', 'qp']
84
+ - type: object
85
+ properties:
86
+ mode:
87
+ type: string
88
+ enum: ['cbr']
89
+ bitrate:
90
+ type: number
91
+ required: ['mode', 'bitrate']
92
+ - type: object
93
+ properties:
94
+ mode:
95
+ type: string
96
+ enum: ['vbr']
97
+ bitrate:
98
+ type: number
99
+ required: ['mode', 'bitrate']
100
+ - type: object
101
+ properties:
102
+ mode:
103
+ type: string
104
+ enum: ['constrained-vbr']
105
+ bitrate:
106
+ type: number
107
+ maxBitrate:
108
+ type: number
109
+ bufSize:
110
+ type: number
111
+ required: ['mode', 'bitrate', 'maxBitrate', 'bufSize']
112
+ - type: object
113
+ properties:
114
+ mode:
115
+ type: string
116
+ enum: ['content-adaptive']
117
+ bitrate:
118
+ type: number
119
+ maxBitrate:
120
+ type: number
121
+ bufSize:
122
+ type: number
123
+ required: ['mode', 'bitrate', 'maxBitrate', 'bufSize']
124
+ lookaheadDepth:
125
+ type: number
59
126
  gopSize:
60
127
  type: number
61
- required: ['type', 'profile', 'rateControl', 'gopSize']
128
+ tempAqGain:
129
+ type: number
130
+ spatAqGain:
131
+ type: number
132
+ minQp:
133
+ type: number
134
+ maxQp:
135
+ type: number
136
+ preset:
137
+ type: string
138
+ enum: ['fast', 'medium', 'slow']
139
+ crf:
140
+ type: number
141
+ forcedIdr:
142
+ type: number
143
+ bf:
144
+ type: number
145
+ qpMode:
146
+ type: string
147
+ enum: ['relative-load', 'uniform']
148
+ spatialAq:
149
+ type: string
150
+ enum: ['auto', 'disable', 'enable']
151
+ temporalAq:
152
+ type: string
153
+ enum: ['auto', 'disable', 'enable']
154
+ dynamicGop:
155
+ type: string
156
+ enum: ['auto', 'disable', 'enable']
157
+ tuneMetrics:
158
+ type: string
159
+ enum: ['vq', 'psnr', 'ssim', 'vmaf']
160
+ latencyMs:
161
+ type: number
162
+ delayInitialization:
163
+ type: number
164
+ required: ['type']
62
165
 
63
166
  ma35dHevcCodec:
64
167
  type: object
@@ -69,18 +172,103 @@ components:
69
172
  profile:
70
173
  type: string
71
174
  enum: ['main', 'main10']
175
+ level:
176
+ type: number
177
+ enum: [1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2]
178
+ tier:
179
+ type: string
180
+ enum: ['main', 'high']
72
181
  rateControl:
73
- type: object
74
- properties:
75
- mode:
76
- type: string
77
- enum: ['cbr']
78
- bitrate:
79
- type: number
80
- required: ['mode', 'bitrate']
182
+ oneOf:
183
+ - type: object
184
+ properties:
185
+ mode:
186
+ type: string
187
+ enum: ['const-qp']
188
+ qp:
189
+ type: number
190
+ required: ['mode', 'qp']
191
+ - type: object
192
+ properties:
193
+ mode:
194
+ type: string
195
+ enum: ['cbr']
196
+ bitrate:
197
+ type: number
198
+ required: ['mode', 'bitrate']
199
+ - type: object
200
+ properties:
201
+ mode:
202
+ type: string
203
+ enum: ['vbr']
204
+ bitrate:
205
+ type: number
206
+ required: ['mode', 'bitrate']
207
+ - type: object
208
+ properties:
209
+ mode:
210
+ type: string
211
+ enum: ['constrained-vbr']
212
+ bitrate:
213
+ type: number
214
+ maxBitrate:
215
+ type: number
216
+ bufSize:
217
+ type: number
218
+ required: ['mode', 'bitrate', 'maxBitrate', 'bufSize']
219
+ - type: object
220
+ properties:
221
+ mode:
222
+ type: string
223
+ enum: ['content-adaptive']
224
+ bitrate:
225
+ type: number
226
+ maxBitrate:
227
+ type: number
228
+ bufSize:
229
+ type: number
230
+ required: ['mode', 'bitrate', 'maxBitrate', 'bufSize']
231
+ lookaheadDepth:
232
+ type: number
81
233
  gopSize:
82
234
  type: number
83
- required: ['type', 'profile', 'rateControl', 'gopSize']
235
+ tempAqGain:
236
+ type: number
237
+ spatAqGain:
238
+ type: number
239
+ minQp:
240
+ type: number
241
+ maxQp:
242
+ type: number
243
+ preset:
244
+ type: string
245
+ enum: ['fast', 'medium', 'slow']
246
+ crf:
247
+ type: number
248
+ forcedIdr:
249
+ type: number
250
+ bf:
251
+ type: number
252
+ qpMode:
253
+ type: string
254
+ enum: ['relative-load', 'uniform']
255
+ spatialAq:
256
+ type: string
257
+ enum: ['auto', 'disable', 'enable']
258
+ temporalAq:
259
+ type: string
260
+ enum: ['auto', 'disable', 'enable']
261
+ dynamicGop:
262
+ type: string
263
+ enum: ['auto', 'disable', 'enable']
264
+ tuneMetrics:
265
+ type: string
266
+ enum: ['vq', 'psnr', 'ssim', 'vmaf']
267
+ latencyMs:
268
+ type: number
269
+ delayInitialization:
270
+ type: number
271
+ required: ['type']
84
272
 
85
273
  quadraH264Codec:
86
274
  type: object
@@ -88,11 +276,51 @@ components:
88
276
  type:
89
277
  type: string
90
278
  enum: ['quadra-h264']
91
- intraPeriod:
279
+ extraOpts:
280
+ type: string
281
+ enableAud:
282
+ type: boolean
283
+ gpuIndex:
92
284
  type: number
93
285
  bitrate:
94
286
  type: number
95
- required: ['type', 'intraPeriod', 'bitrate']
287
+ enableVfr:
288
+ type: boolean
289
+ crf:
290
+ type: number
291
+ gopPresetIndex:
292
+ type: number
293
+ intraPeriod:
294
+ type: number
295
+ rcEnable:
296
+ type: boolean
297
+ intraQp:
298
+ type: number
299
+ rcInitDelay:
300
+ type: number
301
+ profile:
302
+ type: string
303
+ enum: ['baseline', 'main', 'extended', 'high', 'high10']
304
+ level:
305
+ type: number
306
+ enum: [1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2]
307
+ fillerEnable:
308
+ type: boolean
309
+ minQp:
310
+ type: number
311
+ maxQp:
312
+ type: number
313
+ maxDeltaQp:
314
+ type: number
315
+ cuLevelRCEnable:
316
+ type: boolean
317
+ lookAheadDepth:
318
+ type: number
319
+ vbvBufferSize:
320
+ type: number
321
+ vbvMaxRate:
322
+ type: number
323
+ required: ['type']
96
324
 
97
325
  loganH264Codec:
98
326
  type: object
@@ -100,11 +328,39 @@ components:
100
328
  type:
101
329
  type: string
102
330
  enum: ['logan-h264']
103
- intraPeriod:
331
+ extraOpts:
332
+ type: string
333
+ enableAud:
334
+ type: boolean
335
+ gpuIndex:
104
336
  type: number
105
337
  bitrate:
106
338
  type: number
107
- required: ['type', 'intraPeriod', 'bitrate']
339
+ flushGop:
340
+ type: boolean
341
+ enableVfr:
342
+ type: boolean
343
+ crf:
344
+ type: number
345
+ cbr:
346
+ type: boolean
347
+ gopPresetIndex:
348
+ type: number
349
+ intraPeriod:
350
+ type: number
351
+ rcEnable:
352
+ type: boolean
353
+ intraQp:
354
+ type: number
355
+ rcInitDelay:
356
+ type: number
357
+ profile:
358
+ type: string
359
+ enum: ['baseline', 'main', 'extended', 'high', 'high10']
360
+ level:
361
+ type: number
362
+ enum: [1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2]
363
+ required: ['type']
108
364
 
109
365
  nvidiaH264Codec:
110
366
  type: object
@@ -112,8 +368,28 @@ components:
112
368
  type:
113
369
  type: string
114
370
  enum: ['nv-h264']
371
+ preset:
372
+ type: string
373
+ enum: ['p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7']
374
+ tuning:
375
+ type: string
376
+ enum: ['high_quality', 'low_latency', 'ultra_low_latency', 'lossless']
115
377
  idrPeriod:
116
378
  type: number
379
+ gopInterval:
380
+ type: number
381
+ frameIntervalP:
382
+ type: number
383
+ maxNumRefFrames:
384
+ type: number
385
+ level:
386
+ type: number
387
+ enum: [1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2]
388
+ profile:
389
+ type: string
390
+ enum: ['baseline', 'main', 'high', 'high444']
391
+ outputAud:
392
+ type: boolean
117
393
  rateControl:
118
394
  type: object
119
395
  properties:
@@ -122,8 +398,29 @@ components:
122
398
  enum: ['con_stqp', 'vbr', 'cbr']
123
399
  averageBitrate:
124
400
  type: number
401
+ maxBitrate:
402
+ type: number
403
+ vbvBufferSize:
404
+ type: number
405
+ vbvInitialDelay:
406
+ type: number
407
+ enableLookahead:
408
+ type: boolean
409
+ strictGopTarget:
410
+ type: boolean
411
+ lookaheadDepth:
412
+ type: number
413
+ enableTemporalAQ:
414
+ type: boolean
415
+ enableSpatialAQ:
416
+ type: boolean
417
+ aqStrength:
418
+ type: number
125
419
  required: ['mode', 'averageBitrate']
126
- required: ['type', 'idrPeriod', 'rateControl']
420
+ useBFramesAsRef:
421
+ type: string
422
+ enum: ['disabled', 'each', 'middle']
423
+ required: ['type']
127
424
 
128
425
  frameRate:
129
426
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/norsk-studio-built-ins",
3
- "version": "1.12.0-2025-02-18-b429e0e5",
3
+ "version": "1.12.0-2025-02-18-c260e384",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib",
@@ -22,7 +22,7 @@
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
24
  "@norskvideo/norsk-sdk": "^1.0.401-2025-02-18-45fcabf9",
25
- "@norskvideo/norsk-studio": "^1.21.0-2025-02-18-2940d608",
25
+ "@norskvideo/norsk-studio": "^1.21.0-2025-02-18-cfd5eeb3",
26
26
  "@norskvideo/webrtc-client": "^0.1.2",
27
27
  "body-parser": "^1.20.2",
28
28
  "cors": "^2.8.5",