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