react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
51 lines (42 loc) • 1.41 kB
text/typescript
import { IAudioBufferQueueSourceNode } from '../interfaces';
import AudioBufferBaseSourceNode from './AudioBufferBaseSourceNode';
import AudioBuffer from './AudioBuffer';
import { RangeError } from '../errors';
export default class AudioBufferQueueSourceNode extends AudioBufferBaseSourceNode {
public enqueueBuffer(buffer: AudioBuffer): string {
return (this.node as IAudioBufferQueueSourceNode).enqueueBuffer(
buffer.buffer
);
}
public dequeueBuffer(bufferId: string): void {
const id = parseInt(bufferId, 10);
if (isNaN(id) || id < 0) {
throw new RangeError(
`bufferId must be a non-negative integer: ${bufferId}`
);
}
(this.node as IAudioBufferQueueSourceNode).dequeueBuffer(id);
}
public clearBuffers(): void {
(this.node as IAudioBufferQueueSourceNode).clearBuffers();
}
public override start(when: number = 0): void {
if (when < 0) {
throw new RangeError(
`when must be a finite non-negative number: ${when}`
);
}
(this.node as IAudioBufferQueueSourceNode).start(when);
}
public override stop(when: number = 0): void {
if (when < 0) {
throw new RangeError(
`when must be a finite non-negative number: ${when}`
);
}
(this.node as IAudioBufferQueueSourceNode).stop(when);
}
public pause(): void {
(this.node as IAudioBufferQueueSourceNode).pause();
}
}