| 2459 | * @param {Howl} self |
| 2460 | */ |
| 2461 | var decodeAudioData = function(arraybuffer, self) { |
| 2462 | // Fire a load error if something broke. |
| 2463 | var error = function() { |
| 2464 | self._emit('loaderror', null, 'Decoding audio data failed.'); |
| 2465 | }; |
| 2466 | |
| 2467 | // Load the sound on success. |
| 2468 | var success = function(buffer) { |
| 2469 | if (buffer && self._sounds.length > 0) { |
| 2470 | cache[self._src] = buffer; |
| 2471 | loadSound(self, buffer); |
| 2472 | } else { |
| 2473 | error(); |
| 2474 | } |
| 2475 | }; |
| 2476 | |
| 2477 | // Decode the buffer into an audio source. |
| 2478 | if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) { |
| 2479 | Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error); |
| 2480 | } else { |
| 2481 | Howler.ctx.decodeAudioData(arraybuffer, success, error); |
| 2482 | } |
| 2483 | } |
| 2484 | |
| 2485 | /** |
| 2486 | * Sound is now loaded, so finish setting everything up and fire the loaded event. |