UNPKG

nertc-sdk

Version:
101 lines (88 loc) 2.38 kB
import SoftwareRenderer from './SoftwareRenderer'; import createGlRenderer from './GlRenderer'; import { EventEmitter } from 'events'; interface IRenderer { event: EventEmitter; bind(element: Element): void; unbind(): void; equalsElement(element: Element): boolean; drawFrame(imageData: { header: any, yUint8Array: any, uUint8Array: any, vUint8Array: any }): void; setContentMode(mode: number): void; refreshCanvas(): void; captureImage(): string; } class GlRenderer implements IRenderer { self: any; event: EventEmitter; constructor() { this.self = createGlRenderer.apply(this); this.event = this.self.event; } bind(element: Element): void { return this.self.bind(element); } unbind(): void { return this.self.unbind(); } equalsElement(element: Element): boolean{ return this.self.view === element; } drawFrame(imageData: { header: any, yUint8Array: any, uUint8Array: any, vUint8Array: any }): void { return this.self.drawFrame(imageData); } setContentMode(mode: number): void { return this.self.setContentMode(mode); } refreshCanvas() { return this.self.refreshCanvas(); } captureImage(): string { return this.self.captureImage() } } class CustomRenderer implements IRenderer { constructor() { throw new Error('You have to declare your own custom render'); } event: EventEmitter; bind(element: Element) { throw new Error('You have to declare your own custom render'); } unbind() { throw new Error('You have to declare your own custom render'); } equalsElement(element: Element) { throw new Error('You have to declare your own custom render'); return false; } drawFrame(imageData: { header: any, yUint8Array: any, uUint8Array: any, vUint8Array: any }) { throw new Error('You have to declare your own custom render'); } setContentMode(mode: number) { throw new Error('You have to declare your own custom render'); } refreshCanvas() { throw new Error('You have to declare your own custom render'); } captureImage(): string { throw new Error('You have to declare your own custom render'); } } export { SoftwareRenderer, GlRenderer, IRenderer, CustomRenderer };