UNPKG

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
"use strict"; 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