summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Moffitt <jack@xiph.org>2000-10-30 09:16:16 +0000
committerJack Moffitt <jack@xiph.org>2000-10-30 09:16:16 +0000
commit61b5bb7c067ece86078c2be85c32b5bc571e1931 (patch)
tree7e12462c82d01bc2c7d323b4e50f42850e07e49f
parentf7ccdfd1a26de4c0dddafabe7ba38406d6317bea (diff)
downloadlibvorbis-git-61b5bb7c067ece86078c2be85c32b5bc571e1931.tar.gz
kim's first pass at libvorbisfile docs
svn path=/branches/branch_beta3/vorbis/; revision=835
-rw-r--r--doc/Makefile.am12
-rw-r--r--doc/vorbisfile/Makefile.am19
-rw-r--r--doc/vorbisfile/OggVorbis_File.html102
-rw-r--r--doc/vorbisfile/chaining_example_c.html87
-rw-r--r--doc/vorbisfile/chainingexample.html158
-rw-r--r--doc/vorbisfile/datastructures.html61
-rw-r--r--doc/vorbisfile/decoding.html50
-rw-r--r--doc/vorbisfile/example.html204
-rw-r--r--doc/vorbisfile/exampleindex.html39
-rw-r--r--doc/vorbisfile/fileinfo.html96
-rw-r--r--doc/vorbisfile/index.html42
-rw-r--r--doc/vorbisfile/initialization.html56
-rw-r--r--doc/vorbisfile/ov_bitrate.html72
-rw-r--r--doc/vorbisfile/ov_bitrate_instant.html64
-rw-r--r--doc/vorbisfile/ov_callbacks.html66
-rw-r--r--doc/vorbisfile/ov_clear.html63
-rw-r--r--doc/vorbisfile/ov_comment.html65
-rw-r--r--doc/vorbisfile/ov_info.html65
-rw-r--r--doc/vorbisfile/ov_open.html106
-rw-r--r--doc/vorbisfile/ov_open_callbacks.html104
-rw-r--r--doc/vorbisfile/ov_pcm_seek.html70
-rw-r--r--doc/vorbisfile/ov_pcm_tell.html61
-rw-r--r--doc/vorbisfile/ov_pcm_total.html67
-rw-r--r--doc/vorbisfile/ov_raw_seek.html69
-rw-r--r--doc/vorbisfile/ov_raw_tell.html61
-rw-r--r--doc/vorbisfile/ov_raw_total.html67
-rw-r--r--doc/vorbisfile/ov_read.html94
-rw-r--r--doc/vorbisfile/ov_seekable.html65
-rw-r--r--doc/vorbisfile/ov_serialnumber.html67
-rw-r--r--doc/vorbisfile/ov_streams.html65
-rw-r--r--doc/vorbisfile/ov_time_seek.html71
-rw-r--r--doc/vorbisfile/ov_time_tell.html63
-rw-r--r--doc/vorbisfile/ov_time_total.html75
-rw-r--r--doc/vorbisfile/overview.html43
-rw-r--r--doc/vorbisfile/reference.html66
-rw-r--r--doc/vorbisfile/seekexample.html139
-rw-r--r--doc/vorbisfile/seeking.html56
-rw-r--r--doc/vorbisfile/seeking_test_c.html83
-rw-r--r--doc/vorbisfile/seekingexample.html204
-rw-r--r--doc/vorbisfile/style.css7
-rw-r--r--doc/vorbisfile/vorbis_comment.html67
-rw-r--r--doc/vorbisfile/vorbis_info.html102
-rw-r--r--doc/vorbisfile/vorbisfile_example_c.html106
43 files changed, 3299 insertions, 0 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 00000000..17e2677e
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,12 @@
+## Process this with automake to create Makefile.in
+
+AUTOMAKE_OPTIONS = foreign
+
+SUBDIRS = vorbisfile
+
+docdir = $(prefix)/doc/$(PACKAGE)-$(VERSION)
+
+doc_DATA = v-comment.html vorbisword2.png white-ogg.png programming.html\
+ vorbis.html wait.png white-xifish.png
+
+EXTRA_DIST = $(doc_DATA)
diff --git a/doc/vorbisfile/Makefile.am b/doc/vorbisfile/Makefile.am
new file mode 100644
index 00000000..bdf4b9c9
--- /dev/null
+++ b/doc/vorbisfile/Makefile.am
@@ -0,0 +1,19 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = foreign
+
+docdir = $(prefix)/doc/$(PACKAGE)-$(VERSION)
+
+doc_DATA = OggVorbis_File.html chaining_example_c.html chainingexample.html\
+ datastructures.html decoding.html example.html exampleindex.html\
+ fileinfo.html index.html initialization.html ov_bitrate.html\
+ ov_bitrate_instant.html ov_callbacks.html ov_clear.html\
+ ov_comment.html ov_info.html ov_open.html ov_open_callbacks.html\
+ ov_pcm_seek.html ov_pcm_tell.html ov_pcm_total.html ov_raw_seek.html\
+ ov_raw_tell.html ov_raw_total.html ov_read.html ov_seekable.html\
+ ov_serialnumber.html ov_streams.html ov_time_seek.html\
+ ov_time_tell.html ov_time_total.html overview.html reference.html\
+ seekexample.html seeking.html seeking_test_c.html seekingexample.html\
+ style.css vorbis_comment.html vorbis_info.html vorbisfile_example_c.html
+
+EXTRA_DIST = $(doc_DATA)
diff --git a/doc/vorbisfile/OggVorbis_File.html b/doc/vorbisfile/OggVorbis_File.html
new file mode 100644
index 00000000..84800cd8
--- /dev/null
+++ b/doc/vorbisfile/OggVorbis_File.html
@@ -0,0 +1,102 @@
+<html>
+
+<head>
+<title>vorbisfile - datatype - OggVorbis_File</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>OggVorbis_File</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h"</i></p>
+
+<p>
+The OggVorbis_File structure defines an Ogg Vorbis file.
+<p>
+This structure is used in all vorbisfile routines. Before it can be used, it must be initialized by <a href="ov_open.html">ov_open</a> or <a href="ov_open_callbacks.html">ov_open_callbacks</a>.
+<p>
+After use, the OggVorbis_File structure must be deallocated with a call to <a href="ov_clear.html">ov_clear()</a>.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>typedef struct {
+ void *datasource; /* Pointer to a FILE *, etc. */
+ int seekable;
+ int64_t offset;
+ int64_t end;
+ ogg_sync_state oy;
+
+ /* If the FILE handle isn't seekable (eg, a pipe), only the current
+ stream appears */
+ int links;
+ int64_t *offsets;
+ int64_t *dataoffsets;
+ long *serialnos;
+ int64_t *pcmlengths;
+ vorbis_info *vi;
+ vorbis_comment *vc;
+
+ /* Decoding working state local storage */
+ int64_t pcm_offset;
+ int decode_ready;
+ long current_serialno;
+ int current_link;
+
+ double bittrack;
+ double samptrack;
+
+ ogg_stream_state os; /* take physical pages, weld into a logical
+ stream of packets */
+ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+ vorbis_block vb; /* local working space for packet->PCM decode */
+
+ ov_callbacks callbacks;
+
+} OggVorbis_File;</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>datasource</i></dt>
+<dd>Pointer to file or other ogg source.</dd>
+<dt><i>seekable</i></dt>
+<dd>Read-only int indicating whether file is seekable, i.e., physical file is seekable, a pipe isn't.</dd>
+<dt><i>links</i></dt>
+<dd>Read-only int indicating the number of logical bitstreams within the physical bitstream.</dd>
+</dl>
+
+<h3>Notes</h3>
+
+<p>If your system's <tt>&lt;sys/types.h></tt> does not
+define <tt>int64_t,</tt> you will need to define this as a 64-bit type
+inside your system's project file/Makefile, etc. On win32, for example,
+this should be defined as <tt>__int64</tt>. On the Unix platform, these
+are usually defined properly in the system header files.
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/chaining_example_c.html b/doc/vorbisfile/chaining_example_c.html
new file mode 100644
index 00000000..ec0e1c21
--- /dev/null
+++ b/doc/vorbisfile/chaining_example_c.html
@@ -0,0 +1,87 @@
+<html>
+
+<head>
+<title>vorbisfile - chaining_example.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>chaining_example.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+#include "../lib/misc.h"
+
+int main(){
+ OggVorbis_File ov;
+ int i;
+
+ /* open the file/pipe on stdin */
+ if(ov_open(stdin,&ov,NULL,-1)==-1){
+ printf("Could not open input as an OggVorbis file.\n\n");
+ exit(1);
+ }
+
+ /* print details about each logical bitstream in the input */
+ if(ov_seekable(&ov)){
+ printf("Input bitstream contained %ld logical bitstream section(s).\n",
+ ov_streams(&ov));
+ printf("Total bitstream playing time: %ld seconds\n\n",
+ (long)ov_time_total(&ov,-1));
+
+ }else{
+ printf("Standard input was not seekable.\n"
+ "First logical bitstream information:\n\n");
+ }
+
+ for(i=0;i<ov_streams(&ov);i++){
+ vorbis_info *vi=ov_info(&ov,i);
+ printf("\tlogical bitstream section %d information:\n",i+1);
+ printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
+ vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
+ ov_serialnumber(&ov,i));
+ printf("\t\tcompressed length: %ld bytes ",(long)(ov_raw_total(&ov,i)));
+ printf(" play time: %lds\n",(long)ov_time_total(&ov,i));
+ }
+
+ ov_clear(&ov);
+ return 0;
+}
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/chainingexample.html b/doc/vorbisfile/chainingexample.html
new file mode 100644
index 00000000..cf7a99db
--- /dev/null
+++ b/doc/vorbisfile/chainingexample.html
@@ -0,0 +1,158 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Chaining Example Code</h1>
+
+<p>
+The following is a run-through of the chaining example program supplied
+with vorbisfile - <a href="chaining_example_c.html">chaining_example.c</a>.
+This program demonstrates how to work with a chained bitstream.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+#include "../lib/misc.h"
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a other helpful variables to track our progress within the file.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int main(){
+ OggVorbis_File ov;
+ int i;
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p><a href="ov_open.html">ov_open()</a> must be
+called to initialize the <a href="OggVorbis_File.html">OggVorbis_File</a> structure with default values.
+<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ if(ov_open(stdin,&ov,NULL,-1)==-1){
+ printf("Could not open input as an OggVorbis file.\n\n");
+ exit(1);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
+
+<p>Then we're going to find the number of logical bitstreams in the physical bitstream using <a href="ov_streams.html">ov_streams</a>.
+
+<p>We use <a href="ov_time_total.html">ov_time_total</a> to determine the total length of the physical bitstream. We specify that we want the entire bitstream by using the argument <tt>-1</tt>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ if(ov_seekable(&ov)){
+ printf("Input bitstream contained %ld logical bitstream section(s).\n",
+ ov_streams(&ov));
+ printf("Total bitstream playing time: %ld seconds\n\n",
+ (long)ov_time_total(&ov,-1));
+
+ }else{
+ printf("Standard input was not seekable.\n"
+ "First logical bitstream information:\n\n");
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>Now we're going to iterate through each logical bitstream and print information about that bitstream.
+
+<p>We use <a href="ov_info.html">ov_info</a> to pull out the <a href="vorbis_info.html">vorbis_info</a> struct for each logical bitstream. This struct contains bitstream-specific info.
+
+<p><a href="ov_serialnumber.html">ov_serialnumber</a> retrieves the unique serial number for the logical bistream. <a href="ov_raw_total.html">ov_raw_total</a> gives the total compressed bytes for the logical bitstream, and <a href="ov_time_total.html">ov_time_total</a> gives the total time in the logical bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ for(i=0;i<ov_streams(&ov);i++){
+ vorbis_info *vi=ov_info(&ov,i);
+ printf("\tlogical bitstream section %d information:\n",i+1);
+ printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
+ vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
+ ov_serialnumber(&ov,i));
+ printf("\t\tcompressed length: %ld bytes ",(long)(ov_raw_total(&ov,i)));
+ printf(" play time: %lds\n",(long)ov_time_total(&ov,i));
+ }
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+When we're done with the entire physical bitstream, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ ov_clear(&ov);
+ return 0;
+}
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The full source for chaining_example.c can be found with the vorbis
+distribution in <a href="chaining_example_c.html">chaining_example.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/datastructures.html b/doc/vorbisfile/datastructures.html
new file mode 100644
index 00000000..ab60a7cb
--- /dev/null
+++ b/doc/vorbisfile/datastructures.html
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>vorbisfile - Base Data Structures</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Base Data Structures</h1>
+<p>There are several data structures used to hold file and bitstream information during vorbisfile decoding.
+<p>
+All the <b>vorbisfile</b> specific data structures are declared in "vorbis/vorbisfile.h" or "vorbis/codec.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td><b>datatype</b></td>
+ <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+ <td><a href="OggVorbis_File.html">OggVorbis_File</a></td>
+ <td>This structure represents the basic file information. It contains
+ a pointer to the physical file or bitstream and various information about that bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_comment.html">vorbis_comment</a></td>
+ <td>This structure contains the file comments. It contains
+ a pointer to unlimited user comments, information about the number of comments, and a vendor description.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_info.html">vorbis_info</a></td>
+ <td>This structure contains encoder-related information about the bitstream. It includes encoder info, channel info, and bitrate limits.</td>
+</tr>
+<tr valign=top>
+<td><a href="ov_callbacks.html">ov_callbacks</a></td>
+ <td>This structure contains pointers to file manipulation routines. Can be user-specified for use with <a href="ov_open_callbacks.html">ov_open_callbacks()</a>.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/decoding.html b/doc/vorbisfile/decoding.html
new file mode 100644
index 00000000..bc35fd77
--- /dev/null
+++ b/doc/vorbisfile/decoding.html
@@ -0,0 +1,50 @@
+<html>
+
+<head>
+<title>vorbisfile - Decoding</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Decoding</h1>
+
+<p>
+All the <b>vorbisfile</b> decoding routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td><b>function</b></td>
+ <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_read.html">ov_read</a></td>
+ <td>This function makes up the main chunk of a decode loop. It takes an
+OggVorbis_File structure, which must have been initialized by a previous
+call to <a href="ov_open.html"><tt>ov_open()</tt></a>.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 Xiphophorus</p></td>
+<td align=right><p class=tiny><a href="http://www.vorbis.org/">www.vorbis.org</a><br><a href="mailto:team@icecast.org">team@icecast.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/example.html b/doc/vorbisfile/example.html
new file mode 100644
index 00000000..a137786b
--- /dev/null
+++ b/doc/vorbisfile/example.html
@@ -0,0 +1,204 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Example Code</h1>
+
+<p>
+The following is a run-through of the decoding example program supplied
+with vorbisfile - <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
+This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+We also have to make a concession to Windows users here. If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+Next, a buffer for the pcm audio output is declared.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+char pcmout[4096];
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a few other helpful variables to track out progress within the file.
+Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int main(int argc, char **argv){
+ OggVorbis_File vf;
+ int eof=0;
+ int current_section;
+
+#ifdef _WIN32
+ _setmode( _fileno( stdin ), _O_BINARY );
+ _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p><a href="ov_open.html">ov_open()</a> must be
+called to initialize the <b>OggVorbis_File</b> structure with default values.
+<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ if(ov_open(stdin, &vf, NULL, 0) < 0) {
+ fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+ exit(1);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
+We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ {
+ char **ptr=ov_comment(&vf,-1)->user_comments;
+ vorbis_info *vi=ov_info(&vf,-1);
+ while(*ptr){
+ fprintf(stderr,"%s\n",*ptr);
+ ++ptr;
+ }
+ fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+ fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+Here's the read loop:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+ while(!eof){
+ long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+ switch(ret){
+ case 0:
+ /* EOF */
+ eof=1;
+ break;
+ case -1:
+ break;
+ default:
+ fwrite(pcmout,1,ret,stdout);
+ break;
+ }
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
+Based on the value returned, we know if we're at the end of the file or have invalid data. If we have valid data, we write it to the pcm output.
+
+<p>
+Now that we've finished playing, we can pack up and go home. It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+ ov_clear(&vf);
+
+ fprintf(stderr,"Done.\n");
+ return(0);
+}
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The full source for vorbisfile_example.c can be found with the vorbis
+distribution in <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/exampleindex.html b/doc/vorbisfile/exampleindex.html
new file mode 100644
index 00000000..1575e273
--- /dev/null
+++ b/doc/vorbisfile/exampleindex.html
@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<title>vorbisfile - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>VorbisFile Example Code</h1>
+
+<p>
+Three sample programs are included with the vorbisfile distribution.
+<p>
+<a href="example.html">vorbisfile decoding</a><br>
+<a href="seekexample.html">vorbisfile seeking</a><br>
+<a href="chainingexample.html">vorbisfile bitstream chaining</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/fileinfo.html b/doc/vorbisfile/fileinfo.html
new file mode 100644
index 00000000..27f6370e
--- /dev/null
+++ b/doc/vorbisfile/fileinfo.html
@@ -0,0 +1,96 @@
+<html>
+
+<head>
+<title>vorbisfile - File Information</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>File Information</h1>
+<p>Vorbisfile contains many functions to get information about bitstream attributes and decoding status.
+<p>
+All the <b>vorbisfile</b> file information routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td><b>function</b></td>
+ <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_bitrate.html">ov_bitrate</a></td>
+ <td>Returns the average bitrate of the current logical bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_bitrate_instant.html">ov_bitrate_instant</a></td>
+ <td>Returns the exact bitrate since the last call of this function, or -1 if beginning of the bitream or no new info is available.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_streams.html">ov_streams</a></td>
+ <td>Gives the number of logical bitstreams within the current physical bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_seekable.html">ov_seekable</a></td>
+ <td>Indicates whether the bitstream is seekable.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_serialnumber.html">ov_serialnumber</a></td>
+ <td>Returns the unique serial number of the specified logical bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_raw_total.html">ov_raw_total</a></td>
+ <td>Returns the total (compressed) bytes in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_pcm_total.html">ov_pcm_total</a></td>
+ <td>Returns the total number of samples in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_time_total.html">ov_time_total</a></td>
+ <td>Returns the total time length in seconds of a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_raw_tell.html">ov_raw_tell</a></td>
+ <td>Returns the byte location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_pcm_tell.html">ov_pcm_tell</a></td>
+ <td>Returns the sample location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_time_tell.html">ov_time_tell</a></td>
+ <td>Returns the time location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_info.html">ov_info</a></td>
+ <td>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for a specific bitstream section.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_comment.html">ov_comment</a></td>
+ <td>Returns attached <a href="vorbis_comment.html">comments</a> for the current bitstream.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/index.html b/doc/vorbisfile/index.html
new file mode 100644
index 00000000..102636a4
--- /dev/null
+++ b/doc/vorbisfile/index.html
@@ -0,0 +1,42 @@
+<html>
+
+<head>
+<title>vorbisfile - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>VorbisFile Documentation</h1>
+
+<p>
+VorbisFile is a stdio-based convenience library for decoding vorbis bitstreams.
+It is the simplest and quickest way to go from file to raw PCM audio samples--if
+your decoder doesn't need to read from anything other than a file, use
+this. This document explains how to use the vorbisfile API in detail.
+<p>
+<a href="overview.html">vorbisfile api overview</a><br>
+<a href="exampleindex.html">vorbisfile example code</a><br>
+<a href="reference.html">vorbisfile api reference</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/initialization.html b/doc/vorbisfile/initialization.html
new file mode 100644
index 00000000..004972f8
--- /dev/null
+++ b/doc/vorbisfile/initialization.html
@@ -0,0 +1,56 @@
+<html>
+
+<head>
+<title>vorbisfile - Setup/Teardown</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Setup/Teardown</h1>
+<p>In order to decode audio using vorbisfile, a bitstream containing vorbis audio must be properly initialized and cleared when decoding is finished.
+<p>
+All the <b>vorbisfile</b> initialization and deallocation routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td><b>function</b></td>
+ <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_open.html">ov_open</a></td>
+ <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream and default values. This must be called before other functions in the library may be
+ used.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_open_callbacks.html">ov_open_callbacks</a></td>
+ <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream, default values, and custom file/bitstream manipulation routines. Used instead of <a href="ov_open.html">ov_open</a> when working with a data source other than a file.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_clear.html">ov_clear</a></td>
+ <td>Closes the bitstream and cleans up loose ends. Must be called when we're done with the bitstream.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_bitrate.html b/doc/vorbisfile/ov_bitrate.html
new file mode 100644
index 00000000..e48d9d37
--- /dev/null
+++ b/doc/vorbisfile/ov_bitrate.html
@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This function returns the average bitrate for the specified logical bitstream. This may be different from the <a href=ov_info.html>ov_info->nominal_bitrate</a> value, as it is based on the actual average for this bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_bitrate(OggVorbis_File *vf,int i);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the bitrate for the entire bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 indicates that the file is not seekable and the nominal, upper, and lower bounds are not set for the file.</li>
+<li><i>n</i> indicates the bitrate for the given logical bitstream or the entire
+ physical bitstream. If the file is open for random (seekable) access, it will
+ find the *actual* average bitrate. If the file is streaming (nonseekable), it
+ returns the nominal bitrate (if set) or else the average of the
+ upper/lower bounds (if set).</li>
+</blockquote>
+<p>
+
+<br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_bitrate_instant.html b/doc/vorbisfile/ov_bitrate_instant.html
new file mode 100644
index 00000000..046ceb45
--- /dev/null
+++ b/doc/vorbisfile/ov_bitrate_instant.html
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate_instant</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Used to find the most recent bitrate played back within the file. Will return 0 if the bitrate has not changed or it is the beginning of the file.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_bitrate_instant(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates the beginning of the file or unchanged bitrate info.</li>
+<li><i>n</i> indicates the actual bitrate since the last call.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_callbacks.html b/doc/vorbisfile/ov_callbacks.html
new file mode 100644
index 00000000..9d73c68e
--- /dev/null
+++ b/doc/vorbisfile/ov_callbacks.html
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>vorbisfile - datatype - ov_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_callbacks</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.
+<p>
+The ov_callbacks structure does not need to be user-defined if you are working with a standard file. The typical <a href="ov_open.html">ov_open()</a> call will fill ov_callbacks for you. However, ov_callbacks should be defined if you are using other data sources. In this situation, use <a href="ov_open_callbacks.html">ov_open_callbacks()</a> instead of <a href="ov_open.html">ov_open()</a>.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>typedef struct {
+ size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
+ int (*seek_func) (void *datasource, int64_t offset, int whence);
+ int (*close_func) (void *datasource);
+ long (*tell_func) (void *datasource);
+} ov_callbacks;</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>read_func</i></dt>
+<dd>Pointer to custom data reading function.</dd>
+<dt><i>seek_func</i></dt>
+<dd>Pointer to custom data seeking function.</dd>
+<dt><i>close_func</i></dt>
+<dd>Pointer to custom data source closure function.</dd>
+<dt><i>tell_func</i></dt>
+<dd>Pointer to custom data location function.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_clear.html b/doc/vorbisfile/ov_clear.html
new file mode 100644
index 00000000..81eb0ea0
--- /dev/null
+++ b/doc/vorbisfile/ov_clear.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_clear</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p> After a bitstream has been opened using <a href="ov_open.html">ov_open</a> and decoding is complete, you must call <tt>ov_clear()</tt> to clear
+the decoder's buffers and close the file for you.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_clear(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. After <tt>ov_clear</tt> has been called, the structure is deallocated and can no longer be used.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_comment.html b/doc/vorbisfile/ov_comment.html
new file mode 100644
index 00000000..654fa981
--- /dev/null
+++ b/doc/vorbisfile/ov_comment.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_comment</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns a pointer to the <a href="vorbis_comment.html">vorbis_comment</a> struct for the specified bitstream. For nonseekable streams, returns the struct for the current bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_comment.html">vorbis_comment</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_comment struct for the specified bitstream.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_info.html b/doc/vorbisfile/ov_info.html
new file mode 100644
index 00000000..e410274a
--- /dev/null
+++ b/doc/vorbisfile/ov_info.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_info</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for the specified bitstream. For nonseekable files, always returns the current vorbis_info struct.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+vorbis_info *ov_info(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,int link);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. <b></strong>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</b></dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_info struct for the specified bitstream. Returns vorbis_info for current bitstream if the file is nonseekable or i=-1.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_open.html b/doc/vorbisfile/ov_open.html
new file mode 100644
index 00000000..49135422
--- /dev/null
+++ b/doc/vorbisfile/ov_open.html
@@ -0,0 +1,106 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_open</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_open</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is the main function used to open and initialize an OggVorbis_File
+structure. It sets up all the related decoding structure.
+<p>The first argument must be a file pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream). <tt>vf</tt> should be a pointer to the
+OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.
+<p>
+It is often useful to call <tt>ov_open()</tt>
+simply to determine whether a given file is a vorbis bitstream. If the
+<tt>ov_open()</tt>
+call fails, then the file is not recognizable as such. When you use <tt>ov_open()
+</tt>for
+this, you should <tt>fclose()</tt> the file pointer if, and only if, the
+<tt>ov_open()</tt>
+call fails. If it succeeds, you must call <tt>ov_clear()</tt> to clear
+the decoder's buffers and close the file for you.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_open(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL. This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>. In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0. This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer. Used together with <tt>initial</tt></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+-1 for failure</li>
+</blockquote>
+If the function fails, this was not recognizable as an OggVorbis file.
+<p>
+
+<h3>Notes</h3>
+<p>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open()</tt>
+in the main control thread--instead, call <tt>ov_open()</tt> IN your decode/playback
+thread. This is important because <tt>ov_open()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_open_callbacks.html b/doc/vorbisfile/ov_open_callbacks.html
new file mode 100644
index 00000000..32f8efff
--- /dev/null
+++ b/doc/vorbisfile/ov_open_callbacks.html
@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_open_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_open_callbacks</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is an alternative function used to open and initialize an OggVorbis_File
+structure when using a data source other than a file. It allows you to specify custom file manipulation routines and sets up all the related decoding structure.
+<p>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.
+<p>
+It is often useful to call <tt>ov_open_callbacks()</tt>
+simply to determine whether a given file is a vorbis bitstream. If the
+<tt>ov_open_callbacks()</tt>
+call fails, then the file is not recognizable as such. When you use <tt>ov_open_callbacks()
+</tt>for
+this, you should <tt>fclose()</tt> the file pointer if, and only if, the
+<tt>ov_open_callbacks()</tt>
+call fails. If it succeeds, you must call <a href=ov_clear.html>ov_clear()</a> to clear
+the decoder's buffers and close the file for you.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_open_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL. This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>. In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0. This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer. Used together with <tt>initial</tt>.</dd>
+<dt><i>callbacks</i></dt>
+<dd>Pointer to a completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+-1 for failure</li>
+</blockquote>
+If the function fails, this was not recognizable as an OggVorbis file.
+<p>
+
+<h3>Notes</h3>
+<p>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open_callbacks()</tt>
+in the main control thread--instead, call <tt>ov_open_callbacks()</tt> IN your decode/playback
+thread. This is important because <tt>ov_open_callbacks()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_pcm_seek.html b/doc/vorbisfile/ov_pcm_seek.html
new file mode 100644
index 00000000..a39b4fbe
--- /dev/null
+++ b/doc/vorbisfile/ov_pcm_seek.html
@@ -0,0 +1,70 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in pcm samples) within the physical bitstream. This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_pcm_seek(OggVorbis_File *vf,int64_t pos);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+Nonzero for failure</li>
+</blockquote>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_pcm_tell.html b/doc/vorbisfile/ov_pcm_tell.html
new file mode 100644
index 00000000..f277a416
--- /dev/null
+++ b/doc/vorbisfile/ov_pcm_tell.html
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_pcm_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current offset in samples.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int64_t ov_pcm_tell(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in samples.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_pcm_total.html b/doc/vorbisfile/ov_pcm_total.html
new file mode 100644
index 00000000..5049e5ca
--- /dev/null
+++ b/doc/vorbisfile/ov_pcm_total.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_pcm_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the total pcm samples of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int64_t ov_pcm_total(OggVorbis_File *vf,int i);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the total pcm samples for the entire physical bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the bitstream is nonseekable.</li>
+<li>
+total length in pcm samples of content if i=-1.</li>
+<li>length in pcm samples of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_raw_seek.html b/doc/vorbisfile/ov_raw_seek.html
new file mode 100644
index 00000000..68fd97dc
--- /dev/null
+++ b/doc/vorbisfile/ov_raw_seek.html
@@ -0,0 +1,69 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_raw_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in compressed raw bytes) within the physical bitstream. This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_raw_seek(OggVorbis_File *vf,long pos);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in compressed bytes to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates success</li>
+<li>nonzero indicates failure.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_raw_tell.html b/doc/vorbisfile/ov_raw_tell.html
new file mode 100644
index 00000000..d2b649d3
--- /dev/null
+++ b/doc/vorbisfile/ov_raw_tell.html
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_raw_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current offset in raw compressed bytes.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int64_t ov_raw_tell(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in bytes.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_raw_total.html b/doc/vorbisfile/ov_raw_total.html
new file mode 100644
index 00000000..ff4362ee
--- /dev/null
+++ b/doc/vorbisfile/ov_raw_total.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_raw_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the total (compressed) bytes of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int64_t ov_raw_total(OggVorbis_File *vf,int i);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd><b>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the total bytes for the entire physical bitstream, this parameter should be set to -1.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the bitstream is nonseekable.</li>
+<li>
+total length in compressed bytes of content if i=-1.</li>
+<li>length in compressed bytes of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_read.html b/doc/vorbisfile/ov_read.html
new file mode 100644
index 00000000..083be1fa
--- /dev/null
+++ b/doc/vorbisfile/ov_read.html
@@ -0,0 +1,94 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_read</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_read</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is the main function used to decode a Vorbis file within a loop.
+<p>This function deals with more complicated bitstream chaining issues. Up to this point, everything could more or less hide the multiple
+ logical bitstream nature of chaining from the toplevel application
+ if the toplevel application didn't particularly care. However, when we actually read audio back, we must be aware that multiple bitstream sections do not necessarily
+ have to have the same number of channels or sampling rate.
+<p>
+ ov_read returns the sequential logical bitstream number currently
+ being decoded along with the PCM data in order that the toplevel
+ application can take action on channel/sample rate changes. This
+ number will be incremented even for streamed (non-seekable) streams
+ For seekable streams, it represents the actual logical bitstream
+ index within the physical bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_read(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *buffer, int length, int bigendianp, int word, int sgned, int *bitstream);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>buffer</i></dt>
+<dd>A pointer to an output buffer. The decoded output is inserted into this buffer.</dd>
+<dt><i>length</i></dt>
+<dd>Number of bytes to be read into the buffer. Should be the same size as the buffer. A typical value is 4096.</dd>
+<dt><i>bigendianp</i></dt>
+<dd>Specifies big or little endian byte packing. 0 for little endian, 1 for big endian. Typical value is 0.</dd>
+<dt><i>word</i></dt>
+<dd>Specifies word size. Possible arguments are 1 for 8-bit samples, or 2 or 16-bit samples. Typical value is 2.</dd>
+<dt><i>sgned</i></dt>
+<dd>Signed or unsigned data. 0 for unsigned, 1 for signed. Typically 1.</dd>
+<dt><i>bitstream</i></dt>
+<dd></dd>A pointer to the number of the current logical bitstream.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 indicates an error or hole in data.</li>
+<li>
+0 indicates EOF</li>
+<li><i>n</i> indicates actual number of bytes read. This may vary, but will be no longer than the parameter <tt>length</tt>.</li>
+</blockquote>
+<p>
+<h3>Notes</h3>
+<p><b>Typical usage:</b> <tt>bytes_read = ov_read(&amp;vf, buffer, 4096,0,2,1,&amp;current_section)</tt>
+<br>This reads up to 4096 bytes into a buffer, with signed 16-bit little-endian
+samples.
+<br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_seekable.html b/doc/vorbisfile/ov_seekable.html
new file mode 100644
index 00000000..e369ee9c
--- /dev/null
+++ b/doc/vorbisfile/ov_seekable.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_seekable</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_seekable</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This indicates whether or not the bitstream is seekable.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_seekable(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates that the file is not seekable.</li>
+<li>1 indicates that the file is seekable.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_serialnumber.html b/doc/vorbisfile/ov_serialnumber.html
new file mode 100644
index 00000000..0c2a733d
--- /dev/null
+++ b/doc/vorbisfile/ov_serialnumber.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_serialnumber</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_serialnumber</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the serialnumber of the specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_serialnumber(OggVorbis_File *vf,int i);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</dd>
+<dt><i>i</i></dt>
+<dd><b>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the specified logical bitstream <i>i</i> does not exist.</li>
+
+<li>Returns the serial number of the logical bitstream <i>i</i> or the serial number of the current bitstream if the file is nonseekable.</li>
+</blockquote>
+<p>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_streams.html b/doc/vorbisfile/ov_streams.html
new file mode 100644
index 00000000..a4162b61
--- /dev/null
+++ b/doc/vorbisfile/ov_streams.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_streams</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the number of logical bitstreams within our physical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+long ov_streams(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+1 indicates a single logical bitstream or an unseekable file.</li>
+<li><i>n</i> indicates the number of logical bitstreams.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_time_seek.html b/doc/vorbisfile/ov_time_seek.html
new file mode 100644
index 00000000..8e88e9c8
--- /dev/null
+++ b/doc/vorbisfile/ov_time_seek.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_time_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>For seekable
+streams, this seeks to the given time. For implementing seeking in a player,
+this is the only function generally needed. This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position. For obvious reasons, this doesn't work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ov_time_seek(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double seconds);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>seconds</i></dt>
+<dd>Location to seek to within the file, specified in seconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+Nonzero for failure</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_time_tell.html b/doc/vorbisfile/ov_time_tell.html
new file mode 100644
index 00000000..1377926c
--- /dev/null
+++ b/doc/vorbisfile/ov_time_tell.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_time_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current offset in seconds.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+double ov_time_tell(OggVorbis_File *vf);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in bytes.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/ov_time_total.html b/doc/vorbisfile/ov_time_total.html
new file mode 100644
index 00000000..16e1afa7
--- /dev/null
+++ b/doc/vorbisfile/ov_time_total.html
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>vorbisfile - function - ov_time_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>ov_time_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+
+<p>Returns the total time in seconds of the physical bitstream or a specified logical bitstream.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+double ov_time_total(OggVorbis_File *vf,int i);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the vorbisfile functions.</dd>
+<dt><i>i</i></dt>
+<dd><b>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the bitstream is nonseekable.</li>
+<li>
+total length in seconds of content if i=-1.</li>
+<li>length in seconds of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+<h3>Notes</h3>
+<p><b>Typical usage:</b> <tt>bytes_read = ov_read(&amp;vf, buffer, 4096,0,2,1,&amp;current_section)</tt>
+<br>This reads up to 4096 bytes into a buffer, with signed 16-bit little-endian
+samples.
+<br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/overview.html b/doc/vorbisfile/overview.html
new file mode 100644
index 00000000..778a58e3
--- /dev/null
+++ b/doc/vorbisfile/overview.html
@@ -0,0 +1,43 @@
+<html>
+
+<head>
+<title>libshout - API Overview</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>VorbisFile API Overview</h1>
+
+<p>
+The vorbisfile API consists of the following functional categories:
+<p>
+<ul>
+<li><p><a href="datastructures.html">Base data structures</a>
+<li><p><a href="initialization.html">Setup/Teardown</a>
+<li><p><a href="decoding.html">Decoding</a>
+<li><p><a href="seeking.html">Seeking</a>
+<li><p><a href="fileinfo.html">File Information</a>
+</ul>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/reference.html b/doc/vorbisfile/reference.html
new file mode 100644
index 00000000..0649e22f
--- /dev/null
+++ b/doc/vorbisfile/reference.html
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>Vorbisfile API Reference</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Vorbisfile API Reference</h1>
+
+<p>
+<b>Data Structures</b><br>
+<a href="OggVorbis_File.html">OggVorbis_File</a><br>
+<a href="vorbis_comment.html">vorbis_comment</a><br>
+<a href="vorbis_info.html">vorbis_info</a><br>
+<a href="ov_callbacks.html">ov_callbacks</a><br>
+<br>
+<b>Setup/Teardown</b><br>
+<a href="ov_open.html">ov_open()</a><br>
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a><br>
+<a href="ov_clear.html">ov_clear()</a><br>
+<br>
+<b>Decoding</b><br>
+<a href="ov_read.html">ov_read()</a><br>
+<br>
+<b>Seeking</b><br>
+<a href="ov_raw_seek.html">ov_raw_seek()</a><br>
+<a href="ov_pcm_seek.html">ov_pcm_seek()</a><br>
+<a href="ov_time_seek.html">ov_time_seek()</a><br>
+<br>
+<b>File Information</b><br>
+<a href="ov_bitrate.html">ov_bitrate()</a><br>
+<a href="ov_bitrate_instant.html">ov_bitrate_instant()</a><br>
+<a href="ov_streams.html">ov_streams()</a><br>
+<a href="ov_seekable.html">ov_seekable()</a><br>
+<a href="ov_serialnumber.html">ov_serialnumber()</a><br>
+<a href="ov_raw_total.html">ov_raw_total()</a><br>
+<a href="ov_pcm_total.html">ov_pcm_total()</a><br>
+<a href="ov_time_total.html">ov_time_total()</a><br>
+<a href="ov_raw_tell.html">ov_raw_tell()</a><br>
+<a href="ov_pcm_tell.html">ov_pcm_tell()</a><br>
+<a href="ov_time_tell.html">ov_time_tell()</a><br>
+<a href="ov_info.html">ov_info()</a><br>
+<a href="ov_comment.html">ov_comment()</a><br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/seekexample.html b/doc/vorbisfile/seekexample.html
new file mode 100644
index 00000000..c3f69da5
--- /dev/null
+++ b/doc/vorbisfile/seekexample.html
@@ -0,0 +1,139 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Example Code</h1>
+
+<p>
+The following is a run-through of the seeking example program supplied
+with vorbisfile - <a href="seeking_test_c.html">seeking_test.c</a>.
+This program tests the vorbisfile <a href="ov_time_seek.html">ov_time_seek</a> function by seeking to random points within the file.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#include &lt;stdlib.h>
+#include &lt;stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+#include "../lib/misc.h"
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a other helpful variables to track our progress within the file.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int main(){
+ OggVorbis_File ov;
+ int i;
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p><a href="ov_open.html">ov_open()</a> must be
+called to initialize the <a href="OggVorbis_File.html">OggVorbis_File</a> structure with default values.
+<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ if(ov_open(stdin,&ov,NULL,-1)==-1){
+ printf("Could not open input as an OggVorbis file.\n\n");
+ exit(1);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
+
+<p>Then we seek to 100 random spots in the bitstream using <a href="ov_time_seek.html">ov_time_seek</a> with randomly generated values.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+ /* print details about each logical bitstream in the input */
+ if(ov_seekable(&ov)){
+ double length=ov_time_total(&ov,-1);
+ printf("testing seeking to random places in %g seconds....\n",length);
+ for(i=0;i<100;i++){
+ double val=(double)rand()/RAND_MAX*length;
+ ov_time_seek(&ov,val);
+ printf("\r\t%d [%gs]... ",i,val);
+ fflush(stdout);
+ }
+
+ printf("\r \nOK.\n\n");
+ }else{
+ printf("Standard input was not seekable.\n");
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+When we're done seeking, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ ov_clear(&ov);
+ return 0;
+}
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The full source for seeking_test.c can be found with the vorbis
+distribution in <a href="seeking_test_c.html">seeking_test.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/seeking.html b/doc/vorbisfile/seeking.html
new file mode 100644
index 00000000..74a90583
--- /dev/null
+++ b/doc/vorbisfile/seeking.html
@@ -0,0 +1,56 @@
+<html>
+
+<head>
+<title>vorbisfile - Seeking</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Seeking</h1>
+<p>Seeking functions allow you to specify a specific point in the stream to begin or continue decoding.
+<p>
+All the <b>vorbisfile</b> seeking routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td><b>function</b></td>
+ <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_raw_seek.html">ov_raw_seek</a></td>
+ <td>This function seeks to a specific byte in the bitstream, specified in bytes.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_pcm_seek.html">ov_pcm_seek</a></td>
+ <td>This function seeks to a specific point in the bitstream, specified in pcm samples.</td>
+</tr>
+<tr valign=top>
+ <td><a href="ov_time_seek.html">ov_time_seek</a></td>
+ <td>This function seeks to a specific time in the bitstream, specified in seconds. The easiest and simplest seeking method.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/seeking_test_c.html b/doc/vorbisfile/seeking_test_c.html
new file mode 100644
index 00000000..0ffcf821
--- /dev/null
+++ b/doc/vorbisfile/seeking_test_c.html
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>vorbisfile - seeking_test.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>seeking_test.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+#include "../lib/misc.h"
+
+int main(){
+ OggVorbis_File ov;
+ int i;
+
+ /* open the file/pipe on stdin */
+ if(ov_open(stdin,&ov,NULL,-1)==-1){
+ printf("Could not open input as an OggVorbis file.\n\n");
+ exit(1);
+ }
+
+ /* print details about each logical bitstream in the input */
+ if(ov_seekable(&ov)){
+ double length=ov_time_total(&ov,-1);
+ printf("testing seeking to random places in %g seconds....\n",length);
+ for(i=0;i<100;i++){
+ double val=(double)rand()/RAND_MAX*length;
+ ov_time_seek(&ov,val);
+ printf("\r\t%d [%gs]... ",i,val);
+ fflush(stdout);
+ }
+
+ printf("\r \nOK.\n\n");
+ }else{
+ printf("Standard input was not seekable.\n");
+ }
+
+ ov_clear(&ov);
+ return 0;
+}
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/seekingexample.html b/doc/vorbisfile/seekingexample.html
new file mode 100644
index 00000000..a137786b
--- /dev/null
+++ b/doc/vorbisfile/seekingexample.html
@@ -0,0 +1,204 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Example Code</h1>
+
+<p>
+The following is a run-through of the decoding example program supplied
+with vorbisfile - <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
+This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+We also have to make a concession to Windows users here. If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+</b></pre>
+ </td>
+</tr>
+</table>
+<p>
+Next, a buffer for the pcm audio output is declared.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+char pcmout[4096];
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a few other helpful variables to track out progress within the file.
+Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int main(int argc, char **argv){
+ OggVorbis_File vf;
+ int eof=0;
+ int current_section;
+
+#ifdef _WIN32
+ _setmode( _fileno( stdin ), _O_BINARY );
+ _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p><a href="ov_open.html">ov_open()</a> must be
+called to initialize the <b>OggVorbis_File</b> structure with default values.
+<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ if(ov_open(stdin, &vf, NULL, 0) < 0) {
+ fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+ exit(1);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
+We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+ {
+ char **ptr=ov_comment(&vf,-1)->user_comments;
+ vorbis_info *vi=ov_info(&vf,-1);
+ while(*ptr){
+ fprintf(stderr,"%s\n",*ptr);
+ ++ptr;
+ }
+ fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+ fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+Here's the read loop:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+ while(!eof){
+ long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+ switch(ret){
+ case 0:
+ /* EOF */
+ eof=1;
+ break;
+ case -1:
+ break;
+ default:
+ fwrite(pcmout,1,ret,stdout);
+ break;
+ }
+ }
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
+Based on the value returned, we know if we're at the end of the file or have invalid data. If we have valid data, we write it to the pcm output.
+
+<p>
+Now that we've finished playing, we can pack up and go home. It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+
+ ov_clear(&vf);
+
+ fprintf(stderr,"Done.\n");
+ return(0);
+}
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<p>
+The full source for vorbisfile_example.c can be found with the vorbis
+distribution in <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/style.css b/doc/vorbisfile/style.css
new file mode 100644
index 00000000..332f809e
--- /dev/null
+++ b/doc/vorbisfile/style.css
@@ -0,0 +1,7 @@
+BODY { font-family: helvetica, sans-serif }
+TD { font-family: helvetica, sans-serif }
+P { font-family: helvetica, sans-serif }
+H1 { font-family: helvetica, sans-serif }
+H2 { font-family: helvetica, sans-serif }
+H4 { font-family: helvetica, sans-serif }
+P.tiny { font-size: 8pt }
diff --git a/doc/vorbisfile/vorbis_comment.html b/doc/vorbisfile/vorbis_comment.html
new file mode 100644
index 00000000..53f5b744
--- /dev/null
+++ b/doc/vorbisfile/vorbis_comment.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>vorbisfile - datatype - vorbis_comment</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>vorbis_comment</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The vorbis_comment structure defines an Ogg Vorbis comment.
+<p>
+Only the fields the program needs must be defined. If a field isn't
+defined by the application, it will either be blank (if it's a string value)
+or set to some reasonable default (usually 0).
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>typedef struct vorbis_comment{
+ /* unlimited user comment fields. */
+ char **user_comments;
+ int comments;
+ char *vendor;
+
+} vorbis_comment;</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>user_comments</i></dt>
+<dd>Unlimited user comment array. Comments stored in normal C 0-terminated strings.</dd>
+<dt><i>comments</i></dt>
+<dd>Int signifying number of user comments in user_comments field.</dd>
+<dt><i>vendor</i></dt>
+<dd>Information about the creator of the file. Stored in a standard C 0-terminated string.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/vorbis_info.html b/doc/vorbisfile/vorbis_info.html
new file mode 100644
index 00000000..b9ae7de5
--- /dev/null
+++ b/doc/vorbisfile/vorbis_info.html
@@ -0,0 +1,102 @@
+<html>
+
+<head>
+<title>vorbisfile - datatype - vorbis_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>vorbis_info</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The vorbis_info structure contains information about a vorbis bitstream. Most of the information in this struct is more complex and in-depth than we need for vorbisfile decoding. However, the info's there if we need or want it.
+
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>typedef struct vorbis_info{
+ int version;
+ int channels;
+ long rate;
+
+ long bitrate_upper;
+ long bitrate_nominal;
+ long bitrate_lower;
+
+ long blocksizes[2];
+
+ int modes;
+ int maps;
+ int times;
+ int floors;
+ int residues;
+ int books;
+ int psys; /* encode only */
+
+ vorbis_info_mode *mode_param[64];
+ int map_type[64];
+ vorbis_info_mapping *map_param[64];
+ int time_type[64];
+ vorbis_info_time *time_param[64];
+ int floor_type[64];
+ vorbis_info_floor *floor_param[64];
+ int residue_type[64];
+ vorbis_info_residue *residue_param[64];
+ static_codebook *book_param[256];
+ vorbis_info_psy *psy_param[64]; /* encode only */
+
+ /* for block long/sort tuning; encode only */
+ int envelopesa;
+ double preecho_thresh;
+ double preecho_clamp;
+
+} vorbis_info;</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>version</i></dt>
+<dd>Vorbis encoder version used to create this bitstream.</dd>
+<dt><i>channels</i></dt>
+<dd>Int signifying number of channels in bitstream.</dd>
+<dt><i>rate</i></dt>
+<dd>Sampling rate of the bitstream.</dd>
+<dt><i>bitrate_upper</i></dt>
+<dd>Specifies the upper limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
+<dt><i>bitrate_nominal</i></dt>
+<dd>Specifies the average bitrate for a VBR bitstream. May be unset. If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
+<dt><i>bitrate_lower</i></dt>
+<dd>Specifies the lower limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
+<dt><i>blocksizes[2]</i></dt>
+<dd>Contains the sizes of the long and short blocks for this particular bitstream. These are variable and can be set by the encoder. Vorbis only supports two sizes, long and short.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/vorbisfile/vorbisfile_example_c.html b/doc/vorbisfile/vorbisfile_example_c.html
new file mode 100644
index 00000000..6db7418a
--- /dev/null
+++ b/doc/vorbisfile/vorbisfile_example_c.html
@@ -0,0 +1,106 @@
+<html>
+
+<head>
+<title>vorbisfile - vorbisfile_example.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>vorbisfile_example.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+
+char pcmout[4096];
+
+int main(int argc, char **argv){
+ OggVorbis_File vf;
+ int eof=0;
+ int current_section;
+
+#ifdef _WIN32
+ _setmode( _fileno( stdin ), _O_BINARY );
+ _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+ if(ov_open(stdin, &vf, NULL, 0) < 0) {
+ fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+ exit(1);
+ }
+
+ {
+ char **ptr=ov_comment(&vf,-1)->user_comments;
+ vorbis_info *vi=ov_info(&vf,-1);
+ while(*ptr){
+ fprintf(stderr,"%s\n",*ptr);
+ ++ptr;
+ }
+ fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+ fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+ }
+
+ while(!eof){
+ long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+ switch(ret){
+ case 0:
+ /* EOF */
+ eof=1;
+ break;
+ case -1:
+ break;
+ default:
+ fwrite(pcmout,1,ret,stdout);
+ break;
+ }
+ }
+
+ ov_clear(&vf);
+
+ fprintf(stderr,"Done.\n");
+ return(0);
+}
+
+</b></pre>
+ </td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>