UNPKG

ts-onvif

Version:

Client to ONVIF devices

191 lines 6.74 kB
"use strict"; /** * Display ver10 module * @author Andrew D.Laptev <a.d.laptev@gmail.com> * @see https://www.onvif.org/ver10/display.wsdl */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const service_1 = __importDefault(require("./service")); const toOnvifXMLSchemaObject_1 = require("./utils/toOnvifXMLSchemaObject"); /** * Display service */ class Display extends service_1.default { constructor(onvif) { super(onvif, 'display'); } static paneLayoutToBuild(paneLayout) { return { Pane: paneLayout.pane, Area: { $: { bottom: paneLayout.area.bottom, top: paneLayout.area.top, right: paneLayout.area.right, left: paneLayout.area.left, }, }, }; } static layoutToBuild(layout) { const paneLayout = layout.paneLayout ? layout.paneLayout.map((item) => Display.paneLayoutToBuild(item)) : undefined; return { ...(paneLayout && { PaneLayout: paneLayout.length === 1 ? paneLayout[0] : paneLayout }), ...(layout.extension && { Extension: layout.extension }), }; } static audioEncoderConfigurationToBuild(configuration) { return { $: { token: configuration.token }, Name: configuration.name, UseCount: configuration.useCount, Encoding: configuration.encoding, Bitrate: configuration.bitrate, SampleRate: configuration.sampleRate, Multicast: (0, toOnvifXMLSchemaObject_1.multicastConfiguration)(configuration.multicast), SessionTimeout: configuration.sessionTimeout, }; } static paneConfigurationToBuild(paneConfiguration) { return { $: { token: paneConfiguration.token }, ...(paneConfiguration.paneName && { PaneName: paneConfiguration.paneName }), ...(paneConfiguration.audioOutputToken && { AudioOutputToken: paneConfiguration.audioOutputToken }), ...(paneConfiguration.audioSourceToken && { AudioSourceToken: paneConfiguration.audioSourceToken }), ...(paneConfiguration.receiverToken && { ReceiverToken: paneConfiguration.receiverToken }), ...(paneConfiguration.audioEncoderConfiguration && { AudioEncoderConfiguration: Display.audioEncoderConfigurationToBuild(paneConfiguration.audioEncoderConfiguration), }), }; } static paneConfigurationsToBuild(paneConfigurations) { if (!paneConfigurations?.length) { return undefined; } return paneConfigurations.map((paneConfiguration) => Display.paneConfigurationToBuild(paneConfiguration)); } /** * Returns the capabilities of the display service. */ async getServiceCapabilities() { const response = await this.request({ GetServiceCapabilities: {}, }); return response.getServiceCapabilitiesResponse?.capabilities ?? {}; } /** * Returns the current layout of a video output. * @param options */ async getLayout({ videoOutput }) { const response = await this.request({ GetLayout: { VideoOutput: videoOutput, }, }, { array: ['paneLayout'] }); return response.getLayoutResponse.layout; } /** * Sets the layout of a video output. * @param options */ async setLayout({ videoOutput, layout }) { await this.request({ SetLayout: { VideoOutput: videoOutput, Layout: Display.layoutToBuild(layout), }, }); } /** * Returns display options for a video output. * @param options */ async getDisplayOptions({ videoOutput }) { const response = await this.request({ GetDisplayOptions: { VideoOutput: videoOutput, }, }, { array: ['paneLayoutOptions', 'area'] }); return response.getDisplayOptionsResponse; } /** * Returns pane configurations for a video output. * @param options */ async getPaneConfigurations({ videoOutput }) { const response = await this.request({ GetPaneConfigurations: { VideoOutput: videoOutput, }, }, { array: ['paneConfiguration'] }); return response.getPaneConfigurationsResponse?.paneConfiguration ?? []; } /** * Returns a pane configuration for a video output. * @param options */ async getPaneConfiguration({ videoOutput, pane }) { const response = await this.request({ GetPaneConfiguration: { VideoOutput: videoOutput, Pane: pane, }, }); return response.getPaneConfigurationResponse.paneConfiguration; } /** * Sets pane configurations for a video output. * @param options */ async setPaneConfigurations({ videoOutput, paneConfiguration }) { await this.request({ SetPaneConfigurations: { VideoOutput: videoOutput, PaneConfiguration: Display.paneConfigurationsToBuild(paneConfiguration), }, }); } /** * Sets a pane configuration for a video output. * @param options */ async setPaneConfiguration({ videoOutput, paneConfiguration }) { await this.request({ SetPaneConfiguration: { VideoOutput: videoOutput, PaneConfiguration: Display.paneConfigurationToBuild(paneConfiguration), }, }); } /** * Creates a pane configuration on a video output. * @param options */ async createPaneConfiguration({ videoOutput, paneConfiguration }) { const response = await this.request({ CreatePaneConfiguration: { VideoOutput: videoOutput, PaneConfiguration: Display.paneConfigurationToBuild(paneConfiguration), }, }); return response.createPaneConfigurationResponse.paneToken; } /** * Deletes a pane configuration from a video output. * @param options */ async deletePaneConfiguration({ videoOutput, paneToken }) { await this.request({ DeletePaneConfiguration: { VideoOutput: videoOutput, PaneToken: paneToken, }, }); } } exports.default = Display; //# sourceMappingURL=display.js.map