UNPKG

@joergmittaglawo/dmvconfig

Version:

DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.

149 lines (148 loc) 5.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Enums = exports.All = exports.BSLKAsNamedTableRow = exports.BSLK = exports.AutoFader = exports.lower = exports.lift = void 0; const VScript = require("vscript"); const _Time = require("./Time"); const _Video = require("./Video"); exports.lift = { BSLK: (kwl, socket) => kwl ? (new BSLK(new VScript.Subtree(socket, kwl))) : null, BSLKMixer: (kwl, socket) => kwl ? (new BSLKMixer(new VScript.Subtree(socket, kwl))) : null, BSLKLumaKeyer: (kwl, socket) => kwl ? (new BSLKLumaKeyer(new VScript.Subtree(socket, kwl))) : null, AutoFader: (kwl, socket) => kwl ? (new AutoFader(new VScript.Subtree(socket, kwl))) : null, AutoFaderTransition: (x, _) => { return x ? { target: x[0], time: x[1] } : null; } }; exports.lower = { BSLK: (ref) => ref ? ref.raw.kwl : null, BSLKMixer: (ref) => ref ? ref.raw.kwl : null, BSLKLumaKeyer: (ref) => ref ? ref.raw.kwl : null, AutoFader: (ref) => ref ? ref.raw.kwl : null, AutoFaderTransition: (x) => x ? [x.target, x.time] : null }; class AutoFader { constructor(raw) { this.raw = raw; } get current() { return new VScript.rKeyword(this, "current"); } get transition() { return new VScript.rwKeyword(this, "transition", { lift: exports.lift.AutoFaderTransition, lower: exports.lower.AutoFaderTransition }); } } exports.AutoFader = AutoFader; class BSLKLumaKeyer { constructor(raw) { this.raw = raw; } get source() { return new VScript.duplexKeyword(this, "source", { lift: _Video.lift.Essence, lower: _Video.lower.Essence }); } /** Luminance level at and below which everything is transparent */ get clip() { return new VScript.rwKeyword(this, "clip"); } /** Luminance range above clip to reach full opacity */ get gain() { return new VScript.rwKeyword(this, "gain"); } /** Invert the transparent / opaque ends of the output range */ get invert() { return new VScript.rwKeyword(this, "invert"); } get opacity() { return new AutoFader(this.raw.find("opacity")); } } class BSLKMixer { constructor(raw) { this.raw = raw; } /** Color mixed in when the sum of fader0 and fader1 is below 1.0 in MIXER_INDEPENDENT mode */ get fade_via() { return new VScript.rwKeyword(this, "fade_via", { lift: _Video.lift.HSLCOLOUR, lower: _Video.lower.HSLCOLOUR }); } /** Which input is the ANC data and V sync source */ get anc_input() { return new VScript.rKeyword(this, "anc_input"); } /** Fader value for crossfade in MIXER mode, or for source0 in MIXER_INDEPENDENT mode */ get fader0() { return new AutoFader(this.raw.find("fader0")); } /** Fader value for for source1 in MIXER_INDEPENDENT mode, unused otherwise */ get fader1() { return new AutoFader(this.raw.find("fader1")); } } class BSLK { constructor(raw) { this.raw = raw; } get alert_level() { return new VScript.rKeyword(this, "alert_level"); } get source0() { return new VScript.duplexKeyword(this, "source0", { lift: _Video.lift.Essence, lower: _Video.lower.Essence }); } get source1() { return new VScript.duplexKeyword(this, "source1", { lift: _Video.lift.Essence, lower: _Video.lower.Essence }); } get t_src() { return new VScript.duplexKeyword(this, "t_src", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get phase_target() { return new VScript.duplexKeyword(this, "phase_target"); } get in_phase() { return new VScript.rKeyword(this, "in_phase"); } get phase_rst_counter() { return new VScript.rKeyword(this, "phase_rst_counter"); } get reserve_uhd_resources() { return new VScript.duplexKeyword(this, "reserve_uhd_resources"); } get hw_resources() { return new VScript.rKeyword(this, "hw_resources"); } get mode() { return new VScript.rwKeyword(this, "mode"); } get output() { return new _Video.Essence(this.raw.find("output")); } get luma_keyer() { return new BSLKLumaKeyer(this.raw.find("luma_keyer")); } get mixer() { return new BSLKMixer(this.raw.find("mixer")); } } exports.BSLK = BSLK; class BSLKAsNamedTableRow extends BSLK { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.BSLKAsNamedTableRow = BSLKAsNamedTableRow; class All { constructor(raw) { this.raw = raw; } get bslk() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("bslk")), (row, enclosing_table) => new BSLKAsNamedTableRow(row, enclosing_table)); } } exports.All = All; exports.Enums = { BSLKMode: ["MIXER", "MIXER_INDEPENDENT", "LUMA_KEYER", "LUMA_KEYER_ADDITIVE"] };