UNPKG

cloudhub-electron-sdk

Version:

cloudhub-electron-sdk

124 lines (123 loc) 4.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const log_1 = __importDefault(require("../helpers/log")); const utils_1 = __importDefault(require("../helpers/utils")); const event_1 = require("../helpers/event"); const Stream_1 = __importDefault(require("./Stream")); const Renderer_1 = require("../Renderer"); const rtcAddon = require('../../addon/Release/rtcaddon'); class BaseEngineController { constructor() { this.engine = new rtcAddon.NodeRtcEngine(); log_1.default.info('rtc-addon', this.engine); } _initialize(appId = '', config = {}) { log_1.default.info('rtc-version:', this._getVersion()); this.engine.initialize(appId, utils_1.default.jsonToStr(config)); this._registerDeliverFrame((info) => { event_1.EventOuter.trigger('register-deliver-frame', info); }); event_1.EventOuter.trigger('message-callback', this.engine); } _getVersion() { return this.engine.getVersion(); } _registerDeliverFrame(onCallback) { this.engine.registerDeliverFrame(onCallback); } _setupLocalVideo(view, playId, streamId, type = 'video', isLocal = true) { log_1.default.info('_setupLocalVideo', 'view:', view, 'playId:', playId, 'streamId:', streamId, 'type:', type, 'isLocal:', isLocal); let stream = Stream_1.default.getStream(streamId); if (!view || stream) return; let renderer = new Renderer_1.GlRenderer(); stream = { renderer, streamId, isLocal, viewId: view.id }; Stream_1.default.setStream(streamId, stream); this._initRender(stream.renderer, view); if (!(type === 'video' || type === 'device')) { stream.renderer.setContentMode(1); } return this.engine.setupLocalVideo(playId, streamId); } _setupRemoteVideo(uid, streamId, view) { if (!uid) return; const stream = Stream_1.default.getStream(streamId); if (stream) { const { renderer } = stream; if (renderer) { try { renderer.unbind(); } catch (e) { console.error(e); } } stream.viewId = view.id; this._initRender(stream.renderer, view); this.engine.setupRemoteVideo(uid, stream.streamId); } } _removeLocalVideo(deviceId, streamId) { log_1.default.info('_removeLocalVideo', 'deviceId:', deviceId, 'streamId:', streamId); this._destroyRender(streamId); this.engine.removeLocalVideo(deviceId, streamId); } _removeRemoteVideo(uid, streamId) { if (!uid) return; const stream = Stream_1.default.getStream(streamId); if (stream) { this._destroyRender(streamId); this.engine.removeRemoteVideo(uid, stream.streamId); } } _setVideoMode(viewId, mode = 0) { const stream = Stream_1.default.getStreamByViewId(viewId); if (stream) { stream.renderer.setContentMode(mode); } } _initRender(renderer, view) { log_1.default.info(renderer, view); if (!renderer) { return; } renderer.bind(view); } _destroyRender(streamId, onFailure) { if (!Stream_1.default.getStream(streamId)) { return; } const { renderer } = Stream_1.default.getStream(streamId); try { renderer.unbind(); Stream_1.default.delStream(streamId); } catch (e) { onFailure && onFailure(e); } } _startVideoDeviceTest(view, deviceId, onCallback) { if (!view) { return false; } let videoTest = document.getElementById("cloudhub-video-device-test"); if (!videoTest) { videoTest = document.createElement('div'); videoTest.id = "cloudhub-video-device-test"; videoTest.style.width = "100%"; videoTest.style.height = "100%"; view.appendChild(videoTest); } const type = 'device'; this._setupLocalVideo(videoTest, deviceId, videoTest.id, type); if (utils_1.default.isFunction(onCallback)) { onCallback(); } } } exports.default = BaseEngineController;