react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
55 lines (54 loc) • 1.68 kB
JavaScript
;
import AudioBufferBaseSourceNode from "./AudioBufferBaseSourceNode.js";
import { RangeError } from "../errors/index.js";
export default class AudioBufferQueueSourceNode extends AudioBufferBaseSourceNode {
constructor(context, options) {
const node = context.context.createBufferQueueSource(options || {});
super(context, node);
}
enqueueBuffer(buffer) {
return this.node.enqueueBuffer(buffer.buffer);
}
dequeueBuffer(bufferId) {
const id = parseInt(bufferId, 10);
if (isNaN(id) || id < 0) {
throw new RangeError(`bufferId must be a non-negative integer: ${bufferId}`);
}
this.node.dequeueBuffer(id);
}
clearBuffers() {
this.node.clearBuffers();
}
start(when = 0, offset = -1) {
if (when < 0) {
throw new RangeError(`when must be a finite non-negative number: ${when}`);
}
if (offset && offset < 0) {
throw new RangeError(`offset must be a finite non-negative number: ${offset}`);
}
this.node.start(when, offset);
}
stop(when = 0) {
if (when < 0) {
throw new RangeError(`when must be a finite non-negative number: ${when}`);
}
this.node.stop(when);
}
get onBufferEnded() {
return this.onBufferEndedCallback;
}
set onBufferEnded(callback) {
if (!callback) {
this.node.onBufferEnded = '0';
this.onBufferEndedCallback = undefined;
return;
}
this.onBufferEndedCallback = callback;
const sub = this.audioEventEmitter.addAudioEventListener('bufferEnded', callback);
this.node.onBufferEnded = sub.subscriptionId;
}
pause() {
this.node.pause();
}
}
//# sourceMappingURL=AudioBufferQueueSourceNode.js.map