@atem-connection/camera-control
Version:
Library for ATEM Camera control using atem-connection.
78 lines • 4.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyVideoCommand = void 0;
const atem_connection_1 = require("atem-connection");
const changesTracker_1 = require("./changesTracker");
const ids_1 = require("../ids");
const changes_1 = require("../changes");
function applyVideoCommand(changes, command, state) {
const parameter = command.parameter;
switch (parameter) {
case ids_1.AtemCameraControlVideoParameter.GainCamera4_9: {
// Gain (up to Camera 4.9)
return;
}
case ids_1.AtemCameraControlVideoParameter.ManualWhiteBalance: {
if (!changes.checkMessageParameters(command, atem_connection_1.Commands.CameraControlDataType.SINT16, 2))
return;
state.video.whiteBalance = [command.properties.numberData[0], command.properties.numberData[1]];
changes.addChange(command.source, 'video.whiteBalance');
return;
}
case ids_1.AtemCameraControlVideoParameter.SetAutoWhiteBalance: {
changes.addEvent(command.source, changes_1.AtemCameraControlEvents.VideoAutoWhiteBalance);
return;
}
case ids_1.AtemCameraControlVideoParameter.ExposureUs: {
if (!changes.checkMessageParameters(command, atem_connection_1.Commands.CameraControlDataType.SINT32, 1))
return;
const shutterSpeedRaw = 1000000 / command.properties.numberData[0];
const shutterSpeedRounded = shutterSpeedRaw > 1000 ? 10 * Math.round(shutterSpeedRaw / 10) : Math.round(shutterSpeedRaw);
state.video.exposure = command.properties.numberData[0];
state.video.shutterSpeed = shutterSpeedRounded;
changes.addChange(command.source, 'video.exposure');
changes.addChange(command.source, 'video.shutterSpeed');
return;
}
case ids_1.AtemCameraControlVideoParameter.VideoSharpeningLevel: {
if (!changes.checkMessageParameters(command, atem_connection_1.Commands.CameraControlDataType.SINT8, 1))
return;
state.video.videoSharpeningLevel = command.properties.numberData[0];
changes.addChange(command.source, 'video.videoSharpeningLevel');
return;
}
case ids_1.AtemCameraControlVideoParameter.Gain: {
if (!changes.checkMessageParameters(command, atem_connection_1.Commands.CameraControlDataType.SINT8, 1))
return;
state.video.gain = command.properties.numberData[0];
changes.addChange(command.source, 'video.gain');
return;
}
case ids_1.AtemCameraControlVideoParameter.NDFilterStop: {
if (!changes.checkMessageParameters(command, atem_connection_1.Commands.CameraControlDataType.FLOAT, 1))
return;
state.video.ndFilterStop = command.properties.numberData[0];
changes.addChange(command.source, 'video.ndFilterStop');
return;
}
case ids_1.AtemCameraControlVideoParameter.VideoMode:
case ids_1.AtemCameraControlVideoParameter.RestoreAutoWhiteBalance:
case ids_1.AtemCameraControlVideoParameter.ExposureOrdinal:
case ids_1.AtemCameraControlVideoParameter.DynamicRangeMode:
case ids_1.AtemCameraControlVideoParameter.RecordingFormat:
case ids_1.AtemCameraControlVideoParameter.SetAutoExpsureMode:
case ids_1.AtemCameraControlVideoParameter.ShutterAngle:
case ids_1.AtemCameraControlVideoParameter.ShutterSpeed:
case ids_1.AtemCameraControlVideoParameter.ISO:
case ids_1.AtemCameraControlVideoParameter.DisplayLUT:
// Not implemented
changes.addUnhandledMessage(command);
return;
default:
(0, changesTracker_1.assertNever)(parameter);
changes.addUnhandledMessage(command);
return;
}
}
exports.applyVideoCommand = applyVideoCommand;
//# sourceMappingURL=video.js.map