nertc-sdk
Version:
nertc-electron-sdk
101 lines (88 loc) • 2.38 kB
text/typescript
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
};