Skip to content
This repository has been archived by the owner on Jun 15, 2024. It is now read-only.

hajimehoshi/stbvorbis.js

Repository files navigation

stbvorbis.js

A JavaScript port of stb_vorbis.c.

Usage

Download files from Releases. Copy stbvorbis.js and stbvorbis_asm.js to your file server and load stbvorbis.js via a script tag.

This library basically uses WebAssembly. stbvorbis.js also has asm.js implementation for environments where WebAssembly is not available. On iOS, stbvorbis.js always uses asm.js instead due to instability of iOS WebAssembly implementation. If stbvorbis_asm.js is in the same directory as stbvorbis.js, asm.js version works as fallback.

API

decode

stbvorbis.decode(buf: ArrayBuffer|Uint8Array, callback: function(event: Object))

decode decodes the given Ogg/Vorbis data.

The given callback is called when decoding proceeded or error happens. The argument is an object that has these keys:

name description
data An array of Float32Array that represents decoded stream for each channel.
sampleRate The sample rate like 44100.
eof True if the stream ends, otherwise false. If this is true, data is null.
error An error string if exists, otherwise null.

decodeStream

stbvorbis.decodeStream(callback: function(event: Object)): function(event: Object)

decodeStream decodes the given Ogg/Vorbis stream.

The given callback is called when decoding proceeded or error happens. The argument is an object that has these keys:

name description
data An array of Float32Array that represents decoded stream for each channel. The length can be more than or equal to 0.
sampleRate The sample rate like 44100.
eof True if the stream ends, otherwise false. If this is true, data is null.
error An error string if exists, otherwise null.

The returned function is used to push input strem. The argument is an object that has these keys:

name description
data ArrayBuffer or Uint8Array that represents encoded stream.
eof True if the stream ends, otherwise false. If this is true, data is ignored.

Compile

Install Docker and run build.sh on Posix or build.ps1 on Windows.