cloudhub-electron-sdk
Version:
cloudhub-electron-sdk
124 lines (123 loc) • 4.66 kB
JavaScript
;
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;