@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
75 lines (74 loc) • 4.18 kB
TypeScript
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;
}