import { Api } from './api'; import { Destroyable, OmpAudioTrack, SidecarAudioLoadedEvent, SidecarAudioLoadingEvent, VolumeChangeEvent } from '../types'; import { AudioRouterApi } from './audio-router-api'; import { AudioPeakProcessorApi } from './audio-peak-processor-api'; import { AudioMeterStandard, OmpSidecarAudioState } from '../video'; import { Observable } from 'rxjs'; import { OmpSidecarAudioInputSoloMuteState } from '../video/model'; import { OmpAudioPeakProcessor } from '../video/audio-peak-processor'; import { OmpAudioRouter } from '../video/audio-router'; import { OmpAudioEffectsGraphDef, OmpAudioEffectsGraphConnection } from '../audio/model'; import { OmpAudioEffectFilter, OmpAudioEffectParam } from '../audio'; /** * For Sidecar audio operations */ export interface SidecarAudioApi extends Api, Destroyable { /** * Fires when sidecar audio starts loading * @readonly */ onLoading$: Observable; /** * Fires @{link SidecarAudioLoadedEvent} when sidecar audio is loaded * @readonly */ onLoaded$: Observable; /** * Fires when sidecar audio starts or stops buffering current video time. * Always emits the current value on subscription. * @readonly */ onVideoCurrentTimeBuffering$: Observable; /** * Fires on state change * @readonly */ onStateChange$: Observable; /** * Fires on audio router solo/mute action * @readonly */ onInputSoloMute$: Observable; /** * Fires on volume change * @readonly */ onVolumeChange$: Observable; /** * Starts loading sidecar audio track */ loadSource(): Observable; createAudioRouter(inputsNumber?: number, outputsNumber?: number): OmpAudioRouter; createAudioPeakProcessor(audioMeterStandard?: AudioMeterStandard): Observable; setEffectsGraph(effectsGraphDef: OmpAudioEffectsGraphDef, effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable; removeEffectsGraph(effectsGraphConnection: OmpAudioEffectsGraphConnection): void; setAudioEffectsParams(param: OmpAudioEffectParam, effectGraphConnection: OmpAudioEffectsGraphConnection, filter?: OmpAudioEffectFilter): void; /** * Sidecar audio track */ get audioTrack(): OmpAudioTrack; /** * Sidecar audio router */ get audioRouter(): AudioRouterApi | undefined; /** * Sidecar audio peak processor */ get audioPeakProcessor(): AudioPeakProcessorApi | undefined; /** * Sidecar audio track active status */ get isActive(): boolean; /** * Activates track */ activate(): void; /** * Deactivates track */ deactivate(): void; /** * @returns Volume level */ getVolume(): number; /** * Sets volume level. Unmutes audio. * @param volume Decimal value between [0, 1] */ setVolume(volume: number): void; /** * Mute */ mute(): void; /** * Unmute */ unmute(): void; /** * @returns Is audio muted */ isMuted(): boolean; /** * Toggles mute / unmute */ toggleMuteUnmute(): void; /** * Sets mute / unmute * @param muted */ setMuted(muted: boolean): void; /** * @returns Sidecar audio state */ getSidecarAudioState(): OmpSidecarAudioState; /** * @returns Sidecar audio input state */ getSidecarAudioInputSoloMuteState(): OmpSidecarAudioInputSoloMuteState; }