import AudioVideoController from '../audiovideocontroller/AudioVideoController'; import Logger from '../logger/Logger'; import VideoTile from '../videotile/VideoTile'; import VideoTileState from '../videotile/VideoTileState'; import VideoTileFactory from '../videotilefactory/VideoTileFactory'; import VideoTileController, { VideoTileResolutionObserver } from './VideoTileController'; export default class DefaultVideoTileController implements VideoTileController { private tileFactory; private audioVideoController; private logger; private tileMap; private nextTileId; private currentLocalTile; private devicePixelRatioMonitor; private currentPausedTilesByIds; private resolutionObservers; keepLastFrameWhenPaused: boolean | undefined; constructor(tileFactory: VideoTileFactory, audioVideoController: AudioVideoController, logger: Logger); private createDevicePixelRatioMonitorIfNeeded; private discardDevicePixelRatioMonitorIfNotNeeded; bindVideoElement(tileId: number, videoElement: HTMLVideoElement | null): void; unbindVideoElement(tileId: number, cleanUpVideoElement?: boolean): void; startLocalVideoTile(): number; stopLocalVideoTile(): void; hasStartedLocalVideoTile(): boolean; removeLocalVideoTile(): void; getLocalVideoTile(): VideoTile | null; pauseVideoTile(tileId: number): void; unpauseVideoTile(tileId: number): void; getVideoTile(tileId: number): VideoTile | null; getVideoTileArea(tile: VideoTile): number; getAllRemoteVideoTiles(): VideoTile[]; getAllVideoTiles(): VideoTile[]; addVideoTile(localTile?: boolean): VideoTile; removeVideoTile(tileId: number): void; removeVideoTilesByAttendeeId(attendeeId: string): number[]; removeAllVideoTiles(): void; sendTileStateUpdate(tileState: VideoTileState): void; haveVideoTilesWithStreams(): boolean; haveVideoTileForAttendeeId(attendeeId: string): boolean; getVideoTileForAttendeeId(attendeeId: string): VideoTile | undefined; captureVideoTile(tileId: number): ImageData | null; registerVideoTileResolutionObserver(observer: VideoTileResolutionObserver): void; removeVideoTileResolutionObserver(observer: VideoTileResolutionObserver): void; private createResolutionMonitor; private handleVideoElementResolutionChanged; private handleVideoFirstFrameDidRender; private handleVideoElementFrameMetrics; private findOrCreateLocalVideoTile; }