UNPKG

@byomakase/omakase-player

Version:

## Omakase Player - Open source JavaScript framework for building frame accurate video experiences

75 lines (74 loc) 4.18 kB
import { Destroyable, OmpAudioRouterChangeEvent, OmpAudioRouterInputSoloMuteEvent } from '../types'; import { Observable, Subject } from 'rxjs'; import { OmpAudioRouterInputSoloMuteState, OmpAudioRouterState, OmpAudioRoutingConnection, OmpAudioRoutingInputType, OmpAudioRoutingPath } from './model'; import { AudioRouterApi } from '../api/audio-router-api'; import { OmpAudioEffect, OmpAudioEffectFilter, OmpAudioEffectParam, OmpAudioEffectsGraph, OmpAudioEffectsGraphDef } from '../audio'; export declare class OmpAudioRouter implements AudioRouterApi, Destroyable { readonly onChange$: Subject<OmpAudioRouterChangeEvent>; readonly onInputSoloMute$: Subject<OmpAudioRouterInputSoloMuteEvent>; protected _audioContext: AudioContext; protected _inputsNumber: number; protected _outputsNumber: number; protected _sourceAudioNode?: AudioNode; protected _channelSplitterNode: ChannelSplitterNode; protected _channelMergerNode: ChannelMergerNode; protected _initialRoutingConnections: OmpAudioRoutingConnection[]; /** * Mapped by routing path input, then by routing path output * @protected */ protected _connectionsByInputOutput: Map<number, Map<number, OmpAudioRoutingConnection>>; protected _effectsGraphsByInputOutput: Map<number, Map<number, OmpAudioEffectsGraph | undefined>>; protected _lastChangedSoloMuteStateInput: number | undefined; /** * Mapped input states, stores solo and mute flag/connections for each input * @protected */ protected _soloMuteStatesByInput: Map<number, OmpAudioRouterInputSoloMuteState>; protected _destroyed$: Subject<void>; protected static readonly defaultAudioOutputsResolver: (maxChannelCount: number) => number; constructor(audioContext: AudioContext, audioOutputNode: AudioNode, inputsNumber: number, outputsNumberResolver?: (maxChannelCount: number) => number); get isSourceConnected(): boolean; disconnectSource(): void; connectSource(audioNode: AudioNode): void; updateConnections(connections: OmpAudioRoutingConnection[]): void; getInitialRoutingConnections(): OmpAudioRoutingConnection[]; private getInputInitialRoutingConnections; private getRoutingConnections; get sourceAudioNode(): AudioNode | undefined; get inputsNumber(): number; get outputsNumber(): number; getAudioRouterState(): OmpAudioRouterState; getAudioRouterInputSoloMuteState(): OmpAudioRouterInputSoloMuteState; toggleSolo(routingPath: OmpAudioRoutingInputType): void; toggleMute(routingPath: OmpAudioRoutingInputType): void; setAudioEffectsGraphs(effectsGraphDef: OmpAudioEffectsGraphDef, routingPath?: Partial<OmpAudioRoutingPath>): Observable<void>; removeAudioEffectsGraphs(routingPath?: Partial<OmpAudioRoutingPath>): void; findAudioEffectsGraphs(routingPath?: Partial<OmpAudioRoutingPath>): OmpAudioEffectsGraph[]; findAudioEffects(filter?: { routingPath?: Partial<OmpAudioRoutingPath>; } & OmpAudioEffectFilter): OmpAudioEffect[]; setAudioEffectsParams(param: OmpAudioEffectParam, filter?: { routingPath?: Partial<OmpAudioRoutingPath>; } & OmpAudioEffectFilter): void; resetInputsSoloMuteState(): void; protected resetInputSoloMuteState(inputNumber: number): void; protected createInitialSoloMuteState(inputNumber: number): OmpAudioRouterInputSoloMuteState; setInitialRoutingConnections(connections: OmpAudioRoutingConnection[]): void; private getByRoutingPath; protected emitChange(): void; protected emitInputSoloMute(): void; protected _updateConnection(newConnection: OmpAudioRoutingConnection, emitEvent?: boolean): void; protected _solo(inputNumber: number): void; protected _unsolo(inputNumber: number, checkMute?: boolean): void; protected _mute(inputNumber: number): void; protected _unmute(inputNumber: number): void; protected _updateInputsSoloMuteState(): void; private setInputSoloMuteState; private connectEffectsGraph; private disconnectEffectsGraph; private _checkIfEffectsGraphsCanBeChanged; private _setEffectsGraphs; private _setEffectsGraph; destroy(): void; }