@readium/navigator
Version:
Next generation SDK for publications in Web Apps
142 lines (120 loc) • 3.6 kB
text/typescript
/**
* Initial state of the audio engine playback.
*/
export interface PlaybackState {
/**
* The current time of the audio resource.
*/
currentTime: number;
/**
* The duration of the audio resource.
*/
duration: number;
}
/**
* Playback interface for an audio engine state
* @state The initial [PlaybackState].
* @playWhenReady Indicates if the navigator should play as soon as the state is Ready.
* @index Index of the reading order item currently being played.
* @offset Position of the playback in the current item.
* @buffered Position in the current item until which the content is buffered.
*
*/
export interface Playback {
state: PlaybackState;
playWhenReady: boolean;
index: number;
offset?: number;
buffered?: number;
}
/**
* An audio engine that plays audio resources from a publication.
* @playback - The current [Playback] state.
*/
export interface AudioEngine {
/**
* The current playback state.
*/
playback: Playback;
/**
* Adds an event listener to the audio engine.
* @param event The event name to listen.
* @param callback Callback function to be called when the event is triggered.
*/
on(event: string, callback: (data: any) => void): void;
/**
* Removes an event listener from the audio engine.
* @param event The event name to remove the listener.
* @param callback Callback function to be removed.
*/
off(event: string, callback: (data: any) => void): void;
/**
* Changes the src of the primary media element without swapping it,
* preserving the RemotePlayback session and all attached event listeners.
* @param href The URL of the new audio resource.
*/
changeSrc(href: string): void;
/**
* Plays the current audio resource.
*/
play(): void;
/**
* Pauses the currently playing audio resource.
*/
pause(): void;
/**
* Stops the currently playing audio resource.
*/
stop(): void;
/**
* Skips [duration] either forward or backward if [duration] is negative.
*/
skip(duration: number): void;
/**
* Returns the duration of the audio resource.
*/
duration(): number;
/**
* Sets the volume of the audio resource.
* @param volume The volume to set, in the range [0, 1].
*/
setVolume(volume: number): void;
/**
* Sets the playback rate of the audio resource.
* @param rate The playback rate to set.
* @param preservePitch Whether to preserve pitch when changing playback rate.
*/
setPlaybackRate(rate: number, preservePitch: boolean): void;
/**
* Returns whether the audio resource is currently playing.
*/
isPlaying(): boolean;
/**
* Returns whether the audio resource is currently paused.
*/
isPaused(): boolean;
/**
* Returns the HTML media element used for playback.
*/
getMediaElement(): HTMLMediaElement;
/**
* Returns whether the audio resource is currently stopped.
*/
isStopped(): boolean;
/**
* Returns whether the audio resource is currently loading.
*/
isLoading(): boolean;
/**
* Returns whether the audio resource is currently loaded.
*/
isLoaded(): boolean;
/**
* Returns whether the audio resource is currently ended.
*/
isEnded(): boolean;
/**
* Returns whether the audio resource is currently muted.
*/
isMuted(): boolean;
}