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

61 lines (60 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _AudioBufferBaseSourceNode = _interopRequireDefault(require("./AudioBufferBaseSourceNode")); var _errors = require("../errors"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class AudioBufferQueueSourceNode extends _AudioBufferBaseSourceNode.default { 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 _errors.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 _errors.RangeError(`when must be a finite non-negative number: ${when}`); } if (offset && offset < 0) { throw new _errors.RangeError(`offset must be a finite non-negative number: ${offset}`); } this.node.start(when, offset); } stop(when = 0) { if (when < 0) { throw new _errors.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(); } } exports.default = AudioBufferQueueSourceNode; //# sourceMappingURL=AudioBufferQueueSourceNode.js.map