import AudioVideoController from '../audiovideocontroller/AudioVideoController'; import DeviceChangeObserver from '../devicechangeobserver/DeviceChangeObserver'; import Logger from '../logger/Logger'; import DeviceControllerBasedMediaStreamBroker from '../mediastreambroker/DeviceControllerBasedMediaStreamBroker'; import Device from './Device'; import DevicePermission from './DevicePermission'; export default class DefaultDeviceController implements DeviceControllerBasedMediaStreamBroker { private logger; private static permissionGrantedOriginDetectionThresholdMs; private static permissionDeniedOriginDetectionThresholdMs; private static defaultVideoWidth; private static defaultVideoHeight; private static defaultVideoFrameRate; private static defaultVideoMaxBandwidthKbps; private static defaultSampleRate; private static defaultSampleSize; private static defaultChannelCount; private deviceInfoCache; private activeDevices; private audioOutputDeviceId; private deviceChangeObservers; private boundAudioVideoController; private deviceLabelTrigger; private audioInputContext; private audioInputDestinationNode; private audioInputSourceNode; private videoWidth; private videoHeight; private videoFrameRate; private videoMaxBandwidthKbps; private useWebAudio; constructor(logger: Logger); listAudioInputDevices(): Promise; listVideoInputDevices(): Promise; listAudioOutputDevices(): Promise; chooseAudioInputDevice(device: Device): Promise; chooseVideoInputDevice(device: Device): Promise; chooseAudioOutputDevice(deviceId: string | null): Promise; enableWebAudio(flag: boolean): void; addDeviceChangeObserver(observer: DeviceChangeObserver): void; removeDeviceChangeObserver(observer: DeviceChangeObserver): void; createAnalyserNodeForAudioInput(): AnalyserNode | null; startVideoPreviewForVideoInput(element: HTMLVideoElement): void; stopVideoPreviewForVideoInput(element: HTMLVideoElement): void; setDeviceLabelTrigger(trigger: () => Promise): void; mixIntoAudioInput(stream: MediaStream): MediaStreamAudioSourceNode; chooseVideoInputQuality(width: number, height: number, frameRate: number, maxBandwidthKbps: number): void; acquireAudioInputStream(): Promise; acquireVideoInputStream(): Promise; acquireDisplayInputStream(streamConstraints: MediaStreamConstraints): Promise; releaseMediaStream(mediaStreamToRelease: MediaStream | null): void; bindToAudioVideoController(audioVideoController: AudioVideoController): void; static createEmptyAudioDevice(): Device; static createEmptyVideoDevice(): Device; static synthesizeAudioDevice(toneHz: number): Device; static synthesizeVideoDevice(colorOrPattern: string): Device; private static fillSMPTEColorBars; private updateMaxBandwidthKbps; private listDevicesOfKind; private updateDeviceInfoCacheFromBrowser; private listCachedDevicesOfKind; private alreadyHandlingDeviceChange; private handleDeviceChange; private forEachObserver; private areDeviceListsEqual; private deviceAsMediaStream; private chooseInputDevice; private bindAudioOutput; private calculateMediaStreamConstraints; private getDeviceFromBrowser; private deviceInfoFromDeviceId; private acquireInputStream; private ensureAudioInputContext; private attachAudioInputStreamToAudioContext; static createAudioContext(): AudioContext; static supportSampleRateConstraint(): boolean; static supportSampleSizeConstraint(): boolean; static supportChannelCountConstraint(): boolean; private trace; }