import { Destroyable, OmpAudioTrack, SidecarAudioLoadedEvent, SidecarAudioLoadingEvent, VideoTimeChangeEvent, VolumeChangeEvent } from '../types'; import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { OmpAudioRouter } from './audio-router'; import { SidecarAudioApi } from '../api/sidecar-audio-api'; import { AudioRouterApi } from '../api/audio-router-api'; import { OmpAudioPeakProcessor } from './audio-peak-processor'; import { AudioEffectBundle, AudioMeterStandard, OmpSidecarAudioInputSoloMuteState, OmpSidecarAudioState } from './model'; import { MediaElementPlayback } from './media-element-playback'; import { OmpAudioElement } from '../media-element/omp-media-element'; import { VideoControllerApi } from './video-controller-api'; import { OmpAudioEffectFilter, OmpAudioEffectsGraphDef, OmpAudioEffectParam, OmpAudioEffectsGraph } from '../audio'; import { OmpAudioEffectsGraphConnection, OmpAudioEffectsSlot } from '../audio/model'; export declare abstract class BaseOmpSidecarAudio implements SidecarAudioApi, Destroyable { readonly onLoading$: Subject; readonly onLoaded$: BehaviorSubject; readonly onVideoCurrentTimeBuffering$: BehaviorSubject; readonly onStateChange$: Subject; readonly onInputSoloMute$: Subject; readonly onVolumeChange$: Subject; protected _videoController: VideoControllerApi; protected _mediaElementPlayback: MediaElementPlayback; protected _channelsNumber: number | undefined; protected _loaded: boolean; protected _audioTrack: OmpAudioTrack; protected _audioInputIfNode: GainNode; protected _audioRouter?: OmpAudioRouter; protected _audioPeakProcessor?: OmpAudioPeakProcessor; protected _muted: boolean; protected _volume: number; protected _sourceSlot: OmpAudioEffectsSlot; protected _sourceSlotEffectsGraph?: OmpAudioEffectsGraph; protected _isSourceSlotEffectAttaching: boolean; protected _destinationSlot: OmpAudioEffectsSlot; protected _destinationSlotEffectsGraph?: OmpAudioEffectsGraph; protected _isDestinationSlotEffectAttaching: boolean; protected _destroyed$: Subject; protected constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); abstract loadSource(): Observable; protected abstract audioPlay(): void; protected abstract audioPause(): void; protected playOrPause(): void; protected emitStateChange(): void; protected emitInputSoloMute(): void; createAudioRouter(inputsNumber?: number, outputsNumber?: number): OmpAudioRouter; createAudioPeakProcessor(audioMeterStandard?: AudioMeterStandard): Observable; protected createInterleavedEffectsSlot(): void; setEffectsGraph(effectsGraphDef: OmpAudioEffectsGraphDef, effectsGraphConnection: OmpAudioEffectsGraphConnection): Observable; removeEffectsGraph(effectsGraphConnection: OmpAudioEffectsGraphConnection): void; setAudioEffectsParams(param: OmpAudioEffectParam, effectGraphConnection: OmpAudioEffectsGraphConnection, filter?: OmpAudioEffectFilter): void; protected validateLoaded(): void; get isActive(): boolean; activate(): void; deactivate(): void; getVolume(): number; setVolume(volume: number): void; mute(): void; unmute(): void; isMuted(): boolean; toggleMuteUnmute(): void; setMuted(muted?: boolean): void; protected updateAudioInputIfVolume(): void; protected setActiveInactive(value: boolean): void; protected getChannelsNumber(): number; getSidecarAudioState(): OmpSidecarAudioState; getSidecarAudioInputSoloMuteState(): OmpSidecarAudioInputSoloMuteState; get audioTrack(): OmpAudioTrack; get audioRouter(): AudioRouterApi | undefined; get audioPeakProcessor(): OmpAudioPeakProcessor | undefined; destroy(): void; protected _resolveRouterSourceNode(): AudioNode; protected getInterleavedAudioEffects(): AudioEffectBundle[]; } export declare class OmpSidecarAudio extends BaseOmpSidecarAudio { static readonly audioDriftHistoryMaxLength = 15; static readonly audioDriftCorrectionThresholdInSeconds = 0.01; protected _mediaElementAudioSourceNode?: MediaElementAudioSourceNode; protected _ompAudioElement: OmpAudioElement; protected _audioDriftHistory: number[]; protected _isBrowserFirefox: boolean; constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); protected initEventHandlers(): void; loadSource(): Observable; protected getCurrentTime(): number; protected getDuration(): number; protected checkAudioDriftAndTrySync(event: VideoTimeChangeEvent): void; protected syncWithVideo(): void; protected seekToTime(time: number): void; protected audioPlay(): void; protected audioPause(): void; destroy(): void; } export declare class OmpSidecarBufferedAudio extends BaseOmpSidecarAudio { protected _originalAudioBuffer?: AudioBuffer; protected _audioBuffer?: AudioBuffer; protected _audioBufferSourceNode?: AudioBufferSourceNode; protected _audioStartTime?: number; protected _audioOffset?: number; destroy(): void; constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); protected initEventHandlers(): void; loadSource(): Observable; protected createSourceNode(): void; protected stopSourceNode(): void; protected audioPlay(): void; protected audioPause(): void; }