<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>libfishsound: About</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.2-20100208 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div> <div class="contents"> <h1>About</h1><table border="0" cellpadding="0" cellspacing="0"> </table> <h2><a class="anchor" id="design"> Design</a></h2> <p>libfishsound provides a simple programming interface for decoding and encoding audio data using codecs from <a href="http://www.xiph.org/">Xiph.Org</a>.</p> <p>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 <a href="http://www.xiph.org/ogg/">Ogg</a> to produce <em>Ogg FLAC</em>, <em>Speex</em> and <em>Ogg Vorbis</em> files. Example C programs using <a href="http://www.annodex.net/software/liboggz/">liboggz</a> to read and write these files are provided in the libfishsound sources.</p> <p>libfishsound is implemented as a wrapper around the existing codec libraries and provides a consistent, higher-level programming interface. The motivation for this is twofold: to simplify the task of developing application software that supports these codecs, and to ensure that valid codec streams are generated.</p> <h2><a class="anchor" id="history"> History</a></h2> <p>libfishsound was designed and developed by Conrad Parker on the weekend of October 18-19 2003. Previously the author had implemented Vorbis and Speex support in the following software:</p> <ul> <li><a href="http://www.metadecks.org/software/sweep/">Sweep</a>, a digital audio editor with decoding and GUI control of all encoding options of Vorbis and Speex</li> <li>Speex support in the <a href="http://www.xinehq.org/">xine</a> multimedia player</li> <li>Vorbis and Speex importers for <a href="http://www.annodex.net/software/libannodex/">libannodex</a>, the basic library for reading and writing <a href="http://www.annodex.net/">Annodex.net</a> media files.</li> </ul> <p>The implementation of libfishsound draws heavily on these sources, and in turn the original example sources of libvorbis and libvorbisenc by Monty, and libspeex by Jean-Marc Valin.</p> <p>The naming of libfishsound reflects both the Xiph.Org logo and the author's reputation as a dirty, smelly old fish.</p> <h2><a class="anchor" id="limitations"> Limitations</a></h2> <p>libfishsound has been designed to accomodate the various decoding and encoding styles required by a wide variety of software. However, as it is an abstraction of the underlying libvorbis, libvorbisenc and libspeex libraries, it may not be possible to implement some low-level techniques that these libraries enable, such as parallelization of Vorbis sub-block decoding. Nevertheless it is expected that libfishsound is a useful API for most software requiring Vorbis or Speex support, including most applications the author has encountered.</p> <h2><a class="anchor" id="acknowledgements"> Acknowledgements</a></h2> <p>Much of the API design follows the style of <a href="http://www.zip.com.au/~erikd/libsndfile/">libsndfile</a>. The author would like to thank Erik de Castro Lopo for feedback on the design of libfishsound. </p> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address> </body> </html>