@atem-connection/camera-control
Version:
Library for ATEM Camera control using atem-connection.
76 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AtemCameraControlStateBuilder = void 0;
const changesTracker_1 = require("./changesTracker");
const video_1 = require("./video");
const lens_1 = require("./lens");
const display_1 = require("./display");
const colorCorrection_1 = require("./colorCorrection");
const emptyState_1 = require("../emptyState");
const ids_1 = require("../ids");
class AtemCameraControlStateBuilder {
#states = new Map();
constructor(inputCount) {
this.reset(inputCount);
}
reset(inputCount) {
this.#states.clear();
for (let i = 1; i <= inputCount; i++) {
this.#states.set(i, (0, emptyState_1.createEmptyState)(i));
}
}
get(cameraId) {
return this.#states.get(cameraId);
}
getAll() {
return Array.from(this.#states.values());
}
#getOrCreateCamera(cameraId) {
let state = this.#states.get(cameraId);
if (!state) {
state = (0, emptyState_1.createEmptyState)(cameraId);
this.#states.set(cameraId, state);
}
return state;
}
applyCommands(commands) {
if (commands.length === 0)
return [];
const changes = new changesTracker_1.ChangesTracker();
for (const command of commands) {
const state = this.#getOrCreateCamera(command.source);
const category = command.category;
switch (category) {
case ids_1.AtemCameraControlCategory.Lens:
(0, lens_1.applyLensCommand)(changes, command, state);
break;
case ids_1.AtemCameraControlCategory.Video:
(0, video_1.applyVideoCommand)(changes, command, state);
break;
case ids_1.AtemCameraControlCategory.Display:
(0, display_1.applyDisplayCommand)(changes, command, state);
break;
case ids_1.AtemCameraControlCategory.ColorCorrection:
(0, colorCorrection_1.applyColorCorrectionCommand)(changes, command, state);
break;
case ids_1.AtemCameraControlCategory.Audio:
case ids_1.AtemCameraControlCategory.Output:
case ids_1.AtemCameraControlCategory.Tally:
case ids_1.AtemCameraControlCategory.Reference:
case ids_1.AtemCameraControlCategory.Configuration:
case ids_1.AtemCameraControlCategory.Media:
case ids_1.AtemCameraControlCategory.PTZControl:
// Not implemented
changes.addUnhandledMessage(command);
break;
default:
(0, changesTracker_1.assertNever)(category);
changes.addUnhandledMessage(command);
break;
}
}
return changes.getResult();
}
}
exports.AtemCameraControlStateBuilder = AtemCameraControlStateBuilder;
//# sourceMappingURL=stateBuilder.js.map