A "native" ogg vorbis decoder for Go (uses inline stb_vorbis)
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis.yml Create .travis.yml Nov 11, 2014
LICENSE Add license for stb_vorbis version Oct 16, 2015
README.md Sync to most recent stb_vorbis version May 3, 2015
vorbis.go Use the documented syntax for accessing a C type Oct 14, 2017



GoDoc Build Status

This Go package provides a "native" ogg vorbis decoder, but still requires cgo, as it uses inline code from stb_vorbis. Someday, it won't.

The package exports a single function:

var data []byte
samples, nchannels, sampleRate, err := vorbis.Decode(data)

This corresponds to stb_vorbis_decode_memory(), but is a little different. Samples is a []int16, corresponding to stb's dynamic array of shorts if you're on the right platforms. The samples seem to be stored native-endian, but I haven't tested many vorbis files. Nchannels is the number of channels, which are interleaved in the samples slice. Err is non-nil if the data is not an ogg vorbis stream according to stb.