UNPKG

@byomakase/omakase-player

Version:

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

90 lines (89 loc) 4.4 kB
import { Destroyable, OmpAudioTrack, SidecarAudioLoadedEvent, SidecarAudioLoadingEvent, 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 { 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'; export declare abstract class BaseOmpSidecarAudio implements SidecarAudioApi, Destroyable { readonly onLoading$: Subject<SidecarAudioLoadingEvent>; readonly onLoaded$: BehaviorSubject<SidecarAudioLoadedEvent | undefined>; readonly onVideoCurrentTimeBuffering$: BehaviorSubject<boolean>; readonly onStateChange$: Subject<OmpSidecarAudioState>; readonly onInputSoloMute$: Subject<OmpSidecarAudioInputSoloMuteState>; readonly onVolumeChange$: Subject<VolumeChangeEvent>; 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 _destroyed$: Subject<void>; protected constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); abstract loadSource(): Observable<SidecarAudioLoadedEvent>; protected abstract audioPause(): void; protected emitStateChange(): void; protected emitInputSoloMute(): void; createAudioRouter(inputsNumber?: number, outputsNumber?: number): OmpAudioRouter; createAudioPeakProcessor(audioMeterStandard?: AudioMeterStandard): Observable<OmpAudioPeakProcessor>; 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; } export declare class OmpSidecarAudio extends BaseOmpSidecarAudio { static readonly audioDriftHistoryMaxLength = 15; static readonly audioDriftCorrectionThresholdInSeconds = 0.01; protected _mediaElementAudioSourceNode?: MediaElementAudioSourceNode; protected _ompAudioElement: OmpAudioElement; protected _audioDriftHistory: number[]; constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); protected initEventHandlers(): void; loadSource(): Observable<SidecarAudioLoadedEvent>; protected getCurrentTime(): number; protected getDuration(): number; protected isPlaying(): boolean; protected checkAudioDriftAndTrySync(): void; protected syncWithVideo(): 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; protected _isPlaying: boolean; constructor(videoController: VideoControllerApi, audioTrack: OmpAudioTrack); protected initEventHandlers(): void; loadSource(): Observable<SidecarAudioLoadedEvent>; protected createSourceNode(): void; protected stopSourceNode(): void; protected audioPlay(): void; protected audioPause(): void; }