libfishsound provides a simple programming interface for decoding and encoding audio data using the Xiph.org codecs (FLAC, Speex and Vorbis).
libfishsound by itself is designed to handle raw codec streams from a lower level layer such as UDP datagrams. When these codecs are used in files, they are commonly encapsulated in Ogg to produce Ogg FLAC, Speex and Ogg Vorbis files.
libfishsound is a wrapper around the existing codec libraries and provides a consistent, higher-level programming interface. It has been designed for use in a wide variety of applications; it has no direct dependencies on Ogg encapsulation, though it is most commonly used in conjunction with liboggz to decode or encode FLAC, Speex or Vorbis audio tracks in Ogg files, including Ogg Theora and Annodex.
FishSound has been developed and tested on GNU/Linux, Darwin/MacOSX and Win32. It probably also works on other Unix-like systems via GNU autoconf. For Win32: nmake Makefiles, Visual Studio .NET 2003 solution files and Visual C++ 6.0 workspace files are all provided in the source distribution.
Full documentation of the FishSound API, customization and installation, and complete examples of Ogg FLAC, Speex and Ogg Vorbis decoding and encoding are provided in the source tarball, and can be read online:
FishSound is Free Software, available under a BSD-style license.
Checking out the sources
This assumes that you begin with an empty working directory:
There is an up-to-date clone of this repo on github: http://github.com/kfish/libfishsound/tree/master.$ git init $ git clone git://git.xiph.org/libfishsound.git
However, libfishound may be customized to only provide support for a specific codec, or to only allow encoding or decoding, as described here.