diff --git a/build_speex.sh b/build_speex.sh
new file mode 100755
index 0000000..48a3338
--- /dev/null
+++ b/build_speex.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+set -e
+
+LIBOGG=libogg-1.3.1
+LIBOGG_SOURCE=$LIBOGG.tar.gz
+
+SPEEX=speex-1.2rc1
+SPEEX_SOURCE=$SPEEX.tar.gz
+
+source ../../a5s_linux_sdk/ambarella/build/env/CodeSourcery.env
+PATH=$PATH:$ARM_LINUX_TOOLCHAIN_DIR/bin
+
+TOP=`pwd`
+
+rm -rf dist
+mkdir dist
+rm -rf build
+mkdir build
+cd build
+tar zxfv ../$LIBOGG_SOURCE
+cd $LIBOGG
+
+./configure --host=arm-none-linux-gnueabi -prefix=$TOP/dist
+make V=1
+make install-strip
+cd ../..
+
+cd build
+tar zxfv ../$SPEEX_SOURCE 
+cd $SPEEX
+./configure --enable-fixed-point --enable-arm5e-asm --disable-float-api --host=arm-none-linux-gnueabi -prefix=$TOP/dist --with-ogg=$TOP/dist
+make V=1
+make install-strip
+
+cd ../..
+
+rm -rf fakeroot
+mkdir -p fakeroot/usr/lib
+cp -d dist/lib/libspeex.so.1.5.0 fakeroot/usr/lib/
+cp -d dist/lib/libspeexdsp.so.1 fakeroot/usr/lib/
+cp -d dist/lib/libspeexdsp.so.1.5.0 fakeroot/usr/lib/
+cp -d dist/lib/libspeex.so fakeroot/usr/lib/
+cp -d dist/lib/libspeex.so.1 fakeroot/usr/lib/
+cp -d dist/lib/libspeexdsp.so fakeroot/usr/lib/
+tar cjfv speex.tar.bz2 fakeroot
+cp speex.tar.bz2 ../../a5s_linux_sdk/ambarella/boards/dropcam/rootfs
+
+rm -rf build_dist
+mkdir build_dist
+cp -d -r dist/include build_dist/
+cp -d -r dist/lib build_dist/
+tar cjfv speex-build-dist.tar.bz2 build_dist/*
diff --git a/dist/bin/speexdec b/dist/bin/speexdec
new file mode 100755
index 0000000..b82121e
--- /dev/null
+++ b/dist/bin/speexdec
Binary files differ
diff --git a/dist/bin/speexenc b/dist/bin/speexenc
new file mode 100755
index 0000000..d10511b
--- /dev/null
+++ b/dist/bin/speexenc
Binary files differ
diff --git a/dist/include/ogg/config_types.h b/dist/include/ogg/config_types.h
new file mode 100644
index 0000000..4b00047
--- /dev/null
+++ b/dist/include/ogg/config_types.h
@@ -0,0 +1,25 @@
+#ifndef __CONFIG_TYPES_H__
+#define __CONFIG_TYPES_H__
+
+/* these are filled in by configure */
+#define INCLUDE_INTTYPES_H 1
+#define INCLUDE_STDINT_H 1
+#define INCLUDE_SYS_TYPES_H 1
+
+#if INCLUDE_INTTYPES_H
+#  include <inttypes.h>
+#endif
+#if INCLUDE_STDINT_H
+#  include <stdint.h>
+#endif
+#if INCLUDE_SYS_TYPES_H
+#  include <sys/types.h>
+#endif
+
+typedef int16_t ogg_int16_t;
+typedef uint16_t ogg_uint16_t;
+typedef int32_t ogg_int32_t;
+typedef uint32_t ogg_uint32_t;
+typedef int64_t ogg_int64_t;
+
+#endif
diff --git a/dist/include/ogg/ogg.h b/dist/include/ogg/ogg.h
new file mode 100644
index 0000000..cea4ebe
--- /dev/null
+++ b/dist/include/ogg/ogg.h
@@ -0,0 +1,210 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel libogg include
+ last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
+
+ ********************************************************************/
+#ifndef _OGG_H
+#define _OGG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+#include <ogg/os_types.h>
+
+typedef struct {
+  void *iov_base;
+  size_t iov_len;
+} ogg_iovec_t;
+
+typedef struct {
+  long endbyte;
+  int  endbit;
+
+  unsigned char *buffer;
+  unsigned char *ptr;
+  long storage;
+} oggpack_buffer;
+
+/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
+
+typedef struct {
+  unsigned char *header;
+  long header_len;
+  unsigned char *body;
+  long body_len;
+} ogg_page;
+
+/* ogg_stream_state contains the current encode/decode state of a logical
+   Ogg bitstream **********************************************************/
+
+typedef struct {
+  unsigned char   *body_data;    /* bytes from packet bodies */
+  long    body_storage;          /* storage elements allocated */
+  long    body_fill;             /* elements stored; fill mark */
+  long    body_returned;         /* elements of fill returned */
+
+
+  int     *lacing_vals;      /* The values that will go to the segment table */
+  ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
+                                this way, but it is simple coupled to the
+                                lacing fifo */
+  long    lacing_storage;
+  long    lacing_fill;
+  long    lacing_packet;
+  long    lacing_returned;
+
+  unsigned char    header[282];      /* working space for header encode */
+  int              header_fill;
+
+  int     e_o_s;          /* set when we have buffered the last packet in the
+                             logical bitstream */
+  int     b_o_s;          /* set after we've written the initial page
+                             of a logical bitstream */
+  long    serialno;
+  long    pageno;
+  ogg_int64_t  packetno;  /* sequence number for decode; the framing
+                             knows where there's a hole in the data,
+                             but we need coupling so that the codec
+                             (which is in a separate abstraction
+                             layer) also knows about the gap */
+  ogg_int64_t   granulepos;
+
+} ogg_stream_state;
+
+/* ogg_packet is used to encapsulate the data and metadata belonging
+   to a single raw Ogg/Vorbis packet *************************************/
+
+typedef struct {
+  unsigned char *packet;
+  long  bytes;
+  long  b_o_s;
+  long  e_o_s;
+
+  ogg_int64_t  granulepos;
+
+  ogg_int64_t  packetno;     /* sequence number for decode; the framing
+                                knows where there's a hole in the data,
+                                but we need coupling so that the codec
+                                (which is in a separate abstraction
+                                layer) also knows about the gap */
+} ogg_packet;
+
+typedef struct {
+  unsigned char *data;
+  int storage;
+  int fill;
+  int returned;
+
+  int unsynced;
+  int headerbytes;
+  int bodybytes;
+} ogg_sync_state;
+
+/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
+
+extern void  oggpack_writeinit(oggpack_buffer *b);
+extern int   oggpack_writecheck(oggpack_buffer *b);
+extern void  oggpack_writetrunc(oggpack_buffer *b,long bits);
+extern void  oggpack_writealign(oggpack_buffer *b);
+extern void  oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
+extern void  oggpack_reset(oggpack_buffer *b);
+extern void  oggpack_writeclear(oggpack_buffer *b);
+extern void  oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
+extern void  oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
+extern long  oggpack_look(oggpack_buffer *b,int bits);
+extern long  oggpack_look1(oggpack_buffer *b);
+extern void  oggpack_adv(oggpack_buffer *b,int bits);
+extern void  oggpack_adv1(oggpack_buffer *b);
+extern long  oggpack_read(oggpack_buffer *b,int bits);
+extern long  oggpack_read1(oggpack_buffer *b);
+extern long  oggpack_bytes(oggpack_buffer *b);
+extern long  oggpack_bits(oggpack_buffer *b);
+extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
+
+extern void  oggpackB_writeinit(oggpack_buffer *b);
+extern int   oggpackB_writecheck(oggpack_buffer *b);
+extern void  oggpackB_writetrunc(oggpack_buffer *b,long bits);
+extern void  oggpackB_writealign(oggpack_buffer *b);
+extern void  oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
+extern void  oggpackB_reset(oggpack_buffer *b);
+extern void  oggpackB_writeclear(oggpack_buffer *b);
+extern void  oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
+extern void  oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
+extern long  oggpackB_look(oggpack_buffer *b,int bits);
+extern long  oggpackB_look1(oggpack_buffer *b);
+extern void  oggpackB_adv(oggpack_buffer *b,int bits);
+extern void  oggpackB_adv1(oggpack_buffer *b);
+extern long  oggpackB_read(oggpack_buffer *b,int bits);
+extern long  oggpackB_read1(oggpack_buffer *b);
+extern long  oggpackB_bytes(oggpack_buffer *b);
+extern long  oggpackB_bits(oggpack_buffer *b);
+extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
+
+/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
+
+extern int      ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
+extern int      ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
+                                   int count, long e_o_s, ogg_int64_t granulepos);
+extern int      ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
+extern int      ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
+extern int      ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
+extern int      ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
+
+/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
+
+extern int      ogg_sync_init(ogg_sync_state *oy);
+extern int      ogg_sync_clear(ogg_sync_state *oy);
+extern int      ogg_sync_reset(ogg_sync_state *oy);
+extern int      ogg_sync_destroy(ogg_sync_state *oy);
+extern int      ogg_sync_check(ogg_sync_state *oy);
+
+extern char    *ogg_sync_buffer(ogg_sync_state *oy, long size);
+extern int      ogg_sync_wrote(ogg_sync_state *oy, long bytes);
+extern long     ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
+extern int      ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
+extern int      ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
+extern int      ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
+extern int      ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
+
+/* Ogg BITSTREAM PRIMITIVES: general ***************************/
+
+extern int      ogg_stream_init(ogg_stream_state *os,int serialno);
+extern int      ogg_stream_clear(ogg_stream_state *os);
+extern int      ogg_stream_reset(ogg_stream_state *os);
+extern int      ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
+extern int      ogg_stream_destroy(ogg_stream_state *os);
+extern int      ogg_stream_check(ogg_stream_state *os);
+extern int      ogg_stream_eos(ogg_stream_state *os);
+
+extern void     ogg_page_checksum_set(ogg_page *og);
+
+extern int      ogg_page_version(const ogg_page *og);
+extern int      ogg_page_continued(const ogg_page *og);
+extern int      ogg_page_bos(const ogg_page *og);
+extern int      ogg_page_eos(const ogg_page *og);
+extern ogg_int64_t  ogg_page_granulepos(const ogg_page *og);
+extern int      ogg_page_serialno(const ogg_page *og);
+extern long     ogg_page_pageno(const ogg_page *og);
+extern int      ogg_page_packets(const ogg_page *og);
+
+extern void     ogg_packet_clear(ogg_packet *op);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* _OGG_H */
diff --git a/dist/include/ogg/os_types.h b/dist/include/ogg/os_types.h
new file mode 100644
index 0000000..d6691b7
--- /dev/null
+++ b/dist/include/ogg/os_types.h
@@ -0,0 +1,147 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $
+
+ ********************************************************************/
+#ifndef _OS_TYPES_H
+#define _OS_TYPES_H
+
+/* make it easy on the folks that want to compile the libs with a
+   different malloc than stdlib */
+#define _ogg_malloc  malloc
+#define _ogg_calloc  calloc
+#define _ogg_realloc realloc
+#define _ogg_free    free
+
+#if defined(_WIN32) 
+
+#  if defined(__CYGWIN__)
+#    include <stdint.h>
+     typedef int16_t ogg_int16_t;
+     typedef uint16_t ogg_uint16_t;
+     typedef int32_t ogg_int32_t;
+     typedef uint32_t ogg_uint32_t;
+     typedef int64_t ogg_int64_t;
+     typedef uint64_t ogg_uint64_t;
+#  elif defined(__MINGW32__)
+#    include <sys/types.h>
+     typedef short ogg_int16_t;
+     typedef unsigned short ogg_uint16_t;
+     typedef int ogg_int32_t;
+     typedef unsigned int ogg_uint32_t;
+     typedef long long ogg_int64_t;
+     typedef unsigned long long ogg_uint64_t;
+#  elif defined(__MWERKS__)
+     typedef long long ogg_int64_t;
+     typedef int ogg_int32_t;
+     typedef unsigned int ogg_uint32_t;
+     typedef short ogg_int16_t;
+     typedef unsigned short ogg_uint16_t;
+#  else
+     /* MSVC/Borland */
+     typedef __int64 ogg_int64_t;
+     typedef __int32 ogg_int32_t;
+     typedef unsigned __int32 ogg_uint32_t;
+     typedef __int16 ogg_int16_t;
+     typedef unsigned __int16 ogg_uint16_t;
+#  endif
+
+#elif defined(__MACOS__)
+
+#  include <sys/types.h>
+   typedef SInt16 ogg_int16_t;
+   typedef UInt16 ogg_uint16_t;
+   typedef SInt32 ogg_int32_t;
+   typedef UInt32 ogg_uint32_t;
+   typedef SInt64 ogg_int64_t;
+
+#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+#  include <inttypes.h>
+   typedef int16_t ogg_int16_t;
+   typedef uint16_t ogg_uint16_t;
+   typedef int32_t ogg_int32_t;
+   typedef uint32_t ogg_uint32_t;
+   typedef int64_t ogg_int64_t;
+
+#elif defined(__HAIKU__)
+
+  /* Haiku */
+#  include <sys/types.h>
+   typedef short ogg_int16_t;
+   typedef unsigned short ogg_uint16_t;
+   typedef int ogg_int32_t;
+   typedef unsigned int ogg_uint32_t;
+   typedef long long ogg_int64_t;
+
+#elif defined(__BEOS__)
+
+   /* Be */
+#  include <inttypes.h>
+   typedef int16_t ogg_int16_t;
+   typedef uint16_t ogg_uint16_t;
+   typedef int32_t ogg_int32_t;
+   typedef uint32_t ogg_uint32_t;
+   typedef int64_t ogg_int64_t;
+
+#elif defined (__EMX__)
+
+   /* OS/2 GCC */
+   typedef short ogg_int16_t;
+   typedef unsigned short ogg_uint16_t;
+   typedef int ogg_int32_t;
+   typedef unsigned int ogg_uint32_t;
+   typedef long long ogg_int64_t;
+
+#elif defined (DJGPP)
+
+   /* DJGPP */
+   typedef short ogg_int16_t;
+   typedef int ogg_int32_t;
+   typedef unsigned int ogg_uint32_t;
+   typedef long long ogg_int64_t;
+
+#elif defined(R5900)
+
+   /* PS2 EE */
+   typedef long ogg_int64_t;
+   typedef int ogg_int32_t;
+   typedef unsigned ogg_uint32_t;
+   typedef short ogg_int16_t;
+
+#elif defined(__SYMBIAN32__)
+
+   /* Symbian GCC */
+   typedef signed short ogg_int16_t;
+   typedef unsigned short ogg_uint16_t;
+   typedef signed int ogg_int32_t;
+   typedef unsigned int ogg_uint32_t;
+   typedef long long int ogg_int64_t;
+
+#elif defined(__TMS320C6X__)
+
+   /* TI C64x compiler */
+   typedef signed short ogg_int16_t;
+   typedef unsigned short ogg_uint16_t;
+   typedef signed int ogg_int32_t;
+   typedef unsigned int ogg_uint32_t;
+   typedef long long int ogg_int64_t;
+
+#else
+
+#  include <ogg/config_types.h>
+
+#endif
+
+#endif  /* _OS_TYPES_H */
diff --git a/dist/include/speex/speex.h b/dist/include/speex/speex.h
new file mode 100644
index 0000000..82ba016
--- /dev/null
+++ b/dist/include/speex/speex.h
@@ -0,0 +1,424 @@
+/* Copyright (C) 2002-2006 Jean-Marc Valin*/
+/**
+  @file speex.h
+  @brief Describes the different modes of the codec
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef SPEEX_H
+#define SPEEX_H
+/** @defgroup Codec Speex encoder and decoder
+ *  This is the Speex codec itself.
+ *  @{
+ */
+
+#include "speex/speex_bits.h"
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Values allowed for *ctl() requests */
+
+/** Set enhancement on/off (decoder only) */
+#define SPEEX_SET_ENH 0
+/** Get enhancement state (decoder only) */
+#define SPEEX_GET_ENH 1
+
+/*Would be SPEEX_SET_FRAME_SIZE, but it's (currently) invalid*/
+/** Obtain frame size used by encoder/decoder */
+#define SPEEX_GET_FRAME_SIZE 3
+
+/** Set quality value */
+#define SPEEX_SET_QUALITY 4
+/** Get current quality setting */
+/* #define SPEEX_GET_QUALITY 5 -- Doesn't make much sense, does it? */
+
+/** Set sub-mode to use */
+#define SPEEX_SET_MODE 6
+/** Get current sub-mode in use */
+#define SPEEX_GET_MODE 7
+
+/** Set low-band sub-mode to use (wideband only)*/
+#define SPEEX_SET_LOW_MODE 8
+/** Get current low-band mode in use (wideband only)*/
+#define SPEEX_GET_LOW_MODE 9
+
+/** Set high-band sub-mode to use (wideband only)*/
+#define SPEEX_SET_HIGH_MODE 10
+/** Get current high-band mode in use (wideband only)*/
+#define SPEEX_GET_HIGH_MODE 11
+
+/** Set VBR on (1) or off (0) */
+#define SPEEX_SET_VBR 12
+/** Get VBR status (1 for on, 0 for off) */
+#define SPEEX_GET_VBR 13
+
+/** Set quality value for VBR encoding (0-10) */
+#define SPEEX_SET_VBR_QUALITY 14
+/** Get current quality value for VBR encoding (0-10) */
+#define SPEEX_GET_VBR_QUALITY 15
+
+/** Set complexity of the encoder (0-10) */
+#define SPEEX_SET_COMPLEXITY 16
+/** Get current complexity of the encoder (0-10) */
+#define SPEEX_GET_COMPLEXITY 17
+
+/** Set bit-rate used by the encoder (or lower) */
+#define SPEEX_SET_BITRATE 18
+/** Get current bit-rate used by the encoder or decoder */
+#define SPEEX_GET_BITRATE 19
+
+/** Define a handler function for in-band Speex request*/
+#define SPEEX_SET_HANDLER 20
+
+/** Define a handler function for in-band user-defined request*/
+#define SPEEX_SET_USER_HANDLER 22
+
+/** Set sampling rate used in bit-rate computation */
+#define SPEEX_SET_SAMPLING_RATE 24
+/** Get sampling rate used in bit-rate computation */
+#define SPEEX_GET_SAMPLING_RATE 25
+
+/** Reset the encoder/decoder memories to zero*/
+#define SPEEX_RESET_STATE 26
+
+/** Get VBR info (mostly used internally) */
+#define SPEEX_GET_RELATIVE_QUALITY 29
+
+/** Set VAD status (1 for on, 0 for off) */
+#define SPEEX_SET_VAD 30
+
+/** Get VAD status (1 for on, 0 for off) */
+#define SPEEX_GET_VAD 31
+
+/** Set Average Bit-Rate (ABR) to n bits per seconds */
+#define SPEEX_SET_ABR 32
+/** Get Average Bit-Rate (ABR) setting (in bps) */
+#define SPEEX_GET_ABR 33
+
+/** Set DTX status (1 for on, 0 for off) */
+#define SPEEX_SET_DTX 34
+/** Get DTX status (1 for on, 0 for off) */
+#define SPEEX_GET_DTX 35
+
+/** Set submode encoding in each frame (1 for yes, 0 for no, setting to no breaks the standard) */
+#define SPEEX_SET_SUBMODE_ENCODING 36
+/** Get submode encoding in each frame */
+#define SPEEX_GET_SUBMODE_ENCODING 37
+
+/*#define SPEEX_SET_LOOKAHEAD 38*/
+/** Returns the lookahead used by Speex */
+#define SPEEX_GET_LOOKAHEAD 39
+
+/** Sets tuning for packet-loss concealment (expected loss rate) */
+#define SPEEX_SET_PLC_TUNING 40
+/** Gets tuning for PLC */
+#define SPEEX_GET_PLC_TUNING 41
+
+/** Sets the max bit-rate allowed in VBR mode */
+#define SPEEX_SET_VBR_MAX_BITRATE 42
+/** Gets the max bit-rate allowed in VBR mode */
+#define SPEEX_GET_VBR_MAX_BITRATE 43
+
+/** Turn on/off input/output high-pass filtering */
+#define SPEEX_SET_HIGHPASS 44
+/** Get status of input/output high-pass filtering */
+#define SPEEX_GET_HIGHPASS 45
+
+/** Get "activity level" of the last decoded frame, i.e.
+    how much damage we cause if we remove the frame */
+#define SPEEX_GET_ACTIVITY 47
+
+
+/* Preserving compatibility:*/
+/** Equivalent to SPEEX_SET_ENH */
+#define SPEEX_SET_PF 0
+/** Equivalent to SPEEX_GET_ENH */
+#define SPEEX_GET_PF 1
+
+
+
+
+/* Values allowed for mode queries */
+/** Query the frame size of a mode */
+#define SPEEX_MODE_FRAME_SIZE 0
+
+/** Query the size of an encoded frame for a particular sub-mode */
+#define SPEEX_SUBMODE_BITS_PER_FRAME 1
+
+
+
+/** Get major Speex version */
+#define SPEEX_LIB_GET_MAJOR_VERSION 1
+/** Get minor Speex version */
+#define SPEEX_LIB_GET_MINOR_VERSION 3
+/** Get micro Speex version */
+#define SPEEX_LIB_GET_MICRO_VERSION 5
+/** Get extra Speex version */
+#define SPEEX_LIB_GET_EXTRA_VERSION 7
+/** Get Speex version string */
+#define SPEEX_LIB_GET_VERSION_STRING 9
+
+/*#define SPEEX_LIB_SET_ALLOC_FUNC 10
+#define SPEEX_LIB_GET_ALLOC_FUNC 11
+#define SPEEX_LIB_SET_FREE_FUNC 12
+#define SPEEX_LIB_GET_FREE_FUNC 13
+
+#define SPEEX_LIB_SET_WARNING_FUNC 14
+#define SPEEX_LIB_GET_WARNING_FUNC 15
+#define SPEEX_LIB_SET_ERROR_FUNC 16
+#define SPEEX_LIB_GET_ERROR_FUNC 17
+*/
+
+/** Number of defined modes in Speex */
+#define SPEEX_NB_MODES 3
+
+/** modeID for the defined narrowband mode */
+#define SPEEX_MODEID_NB 0
+
+/** modeID for the defined wideband mode */
+#define SPEEX_MODEID_WB 1
+
+/** modeID for the defined ultra-wideband mode */
+#define SPEEX_MODEID_UWB 2
+
+struct SpeexMode;
+
+
+/* Prototypes for mode function pointers */
+
+/** Encoder state initialization function */
+typedef void *(*encoder_init_func)(const struct SpeexMode *mode);
+
+/** Encoder state destruction function */
+typedef void (*encoder_destroy_func)(void *st);
+
+/** Main encoding function */
+typedef int (*encode_func)(void *state, void *in, SpeexBits *bits);
+
+/** Function for controlling the encoder options */
+typedef int (*encoder_ctl_func)(void *state, int request, void *ptr);
+
+/** Decoder state initialization function */
+typedef void *(*decoder_init_func)(const struct SpeexMode *mode);
+
+/** Decoder state destruction function */
+typedef void (*decoder_destroy_func)(void *st);
+
+/** Main decoding function */
+typedef int  (*decode_func)(void *state, SpeexBits *bits, void *out);
+
+/** Function for controlling the decoder options */
+typedef int (*decoder_ctl_func)(void *state, int request, void *ptr);
+
+
+/** Query function for a mode */
+typedef int (*mode_query_func)(const void *mode, int request, void *ptr);
+
+/** Struct defining a Speex mode */ 
+typedef struct SpeexMode {
+   /** Pointer to the low-level mode data */
+   const void *mode;
+
+   /** Pointer to the mode query function */
+   mode_query_func query;
+   
+   /** The name of the mode (you should not rely on this to identify the mode)*/
+   const char *modeName;
+
+   /**ID of the mode*/
+   int modeID;
+
+   /**Version number of the bitstream (incremented every time we break
+    bitstream compatibility*/
+   int bitstream_version;
+
+   /** Pointer to encoder initialization function */
+   encoder_init_func enc_init;
+
+   /** Pointer to encoder destruction function */
+   encoder_destroy_func enc_destroy;
+
+   /** Pointer to frame encoding function */
+   encode_func enc;
+
+   /** Pointer to decoder initialization function */
+   decoder_init_func dec_init;
+
+   /** Pointer to decoder destruction function */
+   decoder_destroy_func dec_destroy;
+
+   /** Pointer to frame decoding function */
+   decode_func dec;
+
+   /** ioctl-like requests for encoder */
+   encoder_ctl_func enc_ctl;
+
+   /** ioctl-like requests for decoder */
+   decoder_ctl_func dec_ctl;
+
+} SpeexMode;
+
+/**
+ * Returns a handle to a newly created Speex encoder state structure. For now, 
+ * the "mode" argument can be &nb_mode or &wb_mode . In the future, more modes 
+ * may be added. Note that for now if you have more than one channels to 
+ * encode, you need one state per channel.
+ *
+ * @param mode The mode to use (either speex_nb_mode or speex_wb.mode) 
+ * @return A newly created encoder state or NULL if state allocation fails
+ */
+void *speex_encoder_init(const SpeexMode *mode);
+
+/** Frees all resources associated to an existing Speex encoder state. 
+ * @param state Encoder state to be destroyed */
+void speex_encoder_destroy(void *state);
+
+/** Uses an existing encoder state to encode one frame of speech pointed to by
+    "in". The encoded bit-stream is saved in "bits".
+ @param state Encoder state
+ @param in Frame that will be encoded with a +-2^15 range. This data MAY be 
+        overwritten by the encoder and should be considered uninitialised 
+        after the call.
+ @param bits Bit-stream where the data will be written
+ @return 0 if frame needs not be transmitted (DTX only), 1 otherwise
+ */
+int speex_encode(void *state, float *in, SpeexBits *bits);
+
+/** Uses an existing encoder state to encode one frame of speech pointed to by
+    "in". The encoded bit-stream is saved in "bits".
+ @param state Encoder state
+ @param in Frame that will be encoded with a +-2^15 range
+ @param bits Bit-stream where the data will be written
+ @return 0 if frame needs not be transmitted (DTX only), 1 otherwise
+ */
+int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits);
+
+/** Used like the ioctl function to control the encoder parameters
+ *
+ * @param state Encoder state
+ * @param request ioctl-type request (one of the SPEEX_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
+ */
+int speex_encoder_ctl(void *state, int request, void *ptr);
+
+
+/** Returns a handle to a newly created decoder state structure. For now, 
+ * the mode argument can be &nb_mode or &wb_mode . In the future, more modes
+ * may be added.  Note that for now if you have more than one channels to
+ * decode, you need one state per channel.
+ *
+ * @param mode Speex mode (one of speex_nb_mode or speex_wb_mode)
+ * @return A newly created decoder state or NULL if state allocation fails
+ */ 
+void *speex_decoder_init(const SpeexMode *mode);
+
+/** Frees all resources associated to an existing decoder state.
+ *
+ * @param state State to be destroyed
+ */
+void speex_decoder_destroy(void *state);
+
+/** Uses an existing decoder state to decode one frame of speech from
+ * bit-stream bits. The output speech is saved written to out.
+ *
+ * @param state Decoder state
+ * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost)
+ * @param out Where to write the decoded frame
+ * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream)
+ */
+int speex_decode(void *state, SpeexBits *bits, float *out);
+
+/** Uses an existing decoder state to decode one frame of speech from
+ * bit-stream bits. The output speech is saved written to out.
+ *
+ * @param state Decoder state
+ * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost)
+ * @param out Where to write the decoded frame
+ * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream)
+ */
+int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out);
+
+/** Used like the ioctl function to control the encoder parameters
+ *
+ * @param state Decoder state
+ * @param request ioctl-type request (one of the SPEEX_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
+ */
+int speex_decoder_ctl(void *state, int request, void *ptr);
+
+
+/** Query function for mode information
+ *
+ * @param mode Speex mode
+ * @param request ioctl-type request (one of the SPEEX_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
+ */
+int speex_mode_query(const SpeexMode *mode, int request, void *ptr);
+
+/** Functions for controlling the behavior of libspeex
+ * @param request ioctl-type request (one of the SPEEX_LIB_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
+ */
+int speex_lib_ctl(int request, void *ptr);
+
+/** Default narrowband mode */
+extern const SpeexMode speex_nb_mode;
+
+/** Default wideband mode */
+extern const SpeexMode speex_wb_mode;
+
+/** Default "ultra-wideband" mode */
+extern const SpeexMode speex_uwb_mode;
+
+/** List of all modes available */
+extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES];
+
+/** Obtain one of the modes available */
+const SpeexMode * speex_lib_get_mode (int mode);
+
+#ifndef WIN32
+/* We actually override the function in the narrowband case so that we can avoid linking in the wideband stuff */
+#define speex_lib_get_mode(mode) ((mode)==SPEEX_MODEID_NB ? &speex_nb_mode : speex_lib_get_mode (mode))
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/
+#endif
diff --git a/dist/include/speex/speex_bits.h b/dist/include/speex/speex_bits.h
new file mode 100644
index 0000000..a26fb4c
--- /dev/null
+++ b/dist/include/speex/speex_bits.h
@@ -0,0 +1,174 @@
+/* Copyright (C) 2002 Jean-Marc Valin */
+/**
+   @file speex_bits.h
+   @brief Handles bit packing/unpacking
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef BITS_H
+#define BITS_H
+/** @defgroup SpeexBits SpeexBits: Bit-stream manipulations
+ *  This is the structure that holds the bit-stream when encoding or decoding
+ * with Speex. It allows some manipulations as well.
+ *  @{
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Bit-packing data structure representing (part of) a bit-stream. */
+typedef struct SpeexBits {
+   char *chars;   /**< "raw" data */
+   int   nbBits;  /**< Total number of bits stored in the stream*/
+   int   charPtr; /**< Position of the byte "cursor" */
+   int   bitPtr;  /**< Position of the bit "cursor" within the current char */
+   int   owner;   /**< Does the struct "own" the "raw" buffer (member "chars") */
+   int   overflow;/**< Set to one if we try to read past the valid data */
+   int   buf_size;/**< Allocated size for buffer */
+   int   reserved1; /**< Reserved for future use */
+   void *reserved2; /**< Reserved for future use */
+} SpeexBits;
+
+/** Initializes and allocates resources for a SpeexBits struct */
+void speex_bits_init(SpeexBits *bits);
+
+/** Initializes SpeexBits struct using a pre-allocated buffer*/
+void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size);
+
+/** Sets the bits in a SpeexBits struct to use data from an existing buffer (for decoding without copying data) */
+void speex_bits_set_bit_buffer(SpeexBits *bits, void *buff, int buf_size);
+
+/** Frees all resources associated to a SpeexBits struct. Right now this does nothing since no resources are allocated, but this could change in the future.*/
+void speex_bits_destroy(SpeexBits *bits);
+
+/** Resets bits to initial value (just after initialization, erasing content)*/
+void speex_bits_reset(SpeexBits *bits);
+
+/** Rewind the bit-stream to the beginning (ready for read) without erasing the content */
+void speex_bits_rewind(SpeexBits *bits);
+
+/** Initializes the bit-stream from the data in an area of memory */
+void speex_bits_read_from(SpeexBits *bits, char *bytes, int len);
+
+/** Append bytes to the bit-stream
+ * 
+ * @param bits Bit-stream to operate on
+ * @param bytes pointer to the bytes what will be appended
+ * @param len Number of bytes of append
+ */
+void speex_bits_read_whole_bytes(SpeexBits *bits, char *bytes, int len);
+
+/** Write the content of a bit-stream to an area of memory
+ * 
+ * @param bits Bit-stream to operate on
+ * @param bytes Memory location where to write the bits
+ * @param max_len Maximum number of bytes to write (i.e. size of the "bytes" buffer)
+ * @return Number of bytes written to the "bytes" buffer
+*/
+int speex_bits_write(SpeexBits *bits, char *bytes, int max_len);
+
+/** Like speex_bits_write, but writes only the complete bytes in the stream. Also removes the written bytes from the stream */
+int speex_bits_write_whole_bytes(SpeexBits *bits, char *bytes, int max_len);
+
+/** Append bits to the bit-stream
+ * @param bits Bit-stream to operate on
+ * @param data Value to append as integer
+ * @param nbBits number of bits to consider in "data"
+ */
+void speex_bits_pack(SpeexBits *bits, int data, int nbBits);
+
+/** Interpret the next bits in the bit-stream as a signed integer
+ *
+ * @param bits Bit-stream to operate on
+ * @param nbBits Number of bits to interpret
+ * @return A signed integer represented by the bits read
+ */
+int speex_bits_unpack_signed(SpeexBits *bits, int nbBits);
+
+/** Interpret the next bits in the bit-stream as an unsigned integer
+ *
+ * @param bits Bit-stream to operate on
+ * @param nbBits Number of bits to interpret
+ * @return An unsigned integer represented by the bits read
+ */
+unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits);
+
+/** Returns the number of bytes in the bit-stream, including the last one even if it is not "full"
+ *
+ * @param bits Bit-stream to operate on
+ * @return Number of bytes in the stream
+ */
+int speex_bits_nbytes(SpeexBits *bits);
+
+/** Same as speex_bits_unpack_unsigned, but without modifying the cursor position 
+ * 
+ * @param bits Bit-stream to operate on
+ * @param nbBits Number of bits to look for
+ * @return Value of the bits peeked, interpreted as unsigned
+ */
+unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits);
+
+/** Get the value of the next bit in the stream, without modifying the
+ * "cursor" position 
+ * 
+ * @param bits Bit-stream to operate on
+ * @return Value of the bit peeked (one bit only)
+ */
+int speex_bits_peek(SpeexBits *bits);
+
+/** Advances the position of the "bit cursor" in the stream 
+ *
+ * @param bits Bit-stream to operate on
+ * @param n Number of bits to advance
+ */
+void speex_bits_advance(SpeexBits *bits, int n);
+
+/** Returns the number of bits remaining to be read in a stream
+ *
+ * @param bits Bit-stream to operate on
+ * @return Number of bits that can still be read from the stream
+ */
+int speex_bits_remaining(SpeexBits *bits);
+
+/** Insert a terminator so that the data can be sent as a packet while auto-detecting 
+ * the number of frames in each packet 
+ *
+ * @param bits Bit-stream to operate on
+ */
+void speex_bits_insert_terminator(SpeexBits *bits);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* @} */
+#endif
diff --git a/dist/include/speex/speex_buffer.h b/dist/include/speex/speex_buffer.h
new file mode 100644
index 0000000..df56f5f
--- /dev/null
+++ b/dist/include/speex/speex_buffer.h
@@ -0,0 +1,68 @@
+/* Copyright (C) 2007 Jean-Marc Valin
+      
+   File: speex_buffer.h
+   This is a very simple ring buffer implementation. It is not thread-safe
+   so you need to do your own locking.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are
+   met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef SPEEX_BUFFER_H
+#define SPEEX_BUFFER_H
+
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct SpeexBuffer_;
+typedef struct SpeexBuffer_ SpeexBuffer;
+
+SpeexBuffer *speex_buffer_init(int size);
+
+void speex_buffer_destroy(SpeexBuffer *st);
+
+int speex_buffer_write(SpeexBuffer *st, void *data, int len);
+
+int speex_buffer_writezeros(SpeexBuffer *st, int len);
+
+int speex_buffer_read(SpeexBuffer *st, void *data, int len);
+
+int speex_buffer_get_available(SpeexBuffer *st);
+
+int speex_buffer_resize(SpeexBuffer *st, int len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
+
+
diff --git a/dist/include/speex/speex_callbacks.h b/dist/include/speex/speex_callbacks.h
new file mode 100644
index 0000000..6f450b3
--- /dev/null
+++ b/dist/include/speex/speex_callbacks.h
@@ -0,0 +1,134 @@
+/* Copyright (C) 2002 Jean-Marc Valin*/
+/**
+  @file speex_callbacks.h
+  @brief Describes callback handling and in-band signalling
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef SPEEX_CALLBACKS_H
+#define SPEEX_CALLBACKS_H
+/** @defgroup SpeexCallbacks Various definitions for Speex callbacks supported by the decoder.
+ *  @{
+ */
+
+#include "speex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Total number of callbacks */
+#define SPEEX_MAX_CALLBACKS 16
+
+/* Describes all the in-band requests */
+
+/*These are 1-bit requests*/
+/** Request for perceptual enhancement (1 for on, 0 for off) */
+#define SPEEX_INBAND_ENH_REQUEST         0
+/** Reserved */
+#define SPEEX_INBAND_RESERVED1           1
+
+/*These are 4-bit requests*/
+/** Request for a mode change */
+#define SPEEX_INBAND_MODE_REQUEST        2
+/** Request for a low mode change */
+#define SPEEX_INBAND_LOW_MODE_REQUEST    3
+/** Request for a high mode change */
+#define SPEEX_INBAND_HIGH_MODE_REQUEST   4
+/** Request for VBR (1 on, 0 off) */
+#define SPEEX_INBAND_VBR_QUALITY_REQUEST 5
+/** Request to be sent acknowledge */
+#define SPEEX_INBAND_ACKNOWLEDGE_REQUEST 6
+/** Request for VBR (1 for on, 0 for off) */
+#define SPEEX_INBAND_VBR_REQUEST         7
+
+/*These are 8-bit requests*/
+/** Send a character in-band */
+#define SPEEX_INBAND_CHAR                8
+/** Intensity stereo information */
+#define SPEEX_INBAND_STEREO              9
+
+/*These are 16-bit requests*/
+/** Transmit max bit-rate allowed */
+#define SPEEX_INBAND_MAX_BITRATE         10
+
+/*These are 32-bit requests*/
+/** Acknowledge packet reception */
+#define SPEEX_INBAND_ACKNOWLEDGE         12
+
+/** Callback function type */
+typedef int (*speex_callback_func)(SpeexBits *bits, void *state, void *data);
+
+/** Callback information */
+typedef struct SpeexCallback {
+   int callback_id;             /**< ID associated to the callback */
+   speex_callback_func func;    /**< Callback handler function */
+   void *data;                  /**< Data that will be sent to the handler */
+   void *reserved1;             /**< Reserved for future use */
+   int   reserved2;             /**< Reserved for future use */
+} SpeexCallback;
+
+/** Handle in-band request */
+int speex_inband_handler(SpeexBits *bits, SpeexCallback *callback_list, void *state);
+
+/** Standard handler for mode request (change mode, no questions asked) */
+int speex_std_mode_request_handler(SpeexBits *bits, void *state, void *data);
+
+/** Standard handler for high mode request (change high mode, no questions asked) */
+int speex_std_high_mode_request_handler(SpeexBits *bits, void *state, void *data);
+
+/** Standard handler for in-band characters (write to stderr) */
+int speex_std_char_handler(SpeexBits *bits, void *state, void *data);
+
+/** Default handler for user-defined requests: in this case, just ignore */
+int speex_default_user_handler(SpeexBits *bits, void *state, void *data);
+
+
+
+/** Standard handler for low mode request (change low mode, no questions asked) */
+int speex_std_low_mode_request_handler(SpeexBits *bits, void *state, void *data);
+
+/** Standard handler for VBR request (Set VBR, no questions asked) */
+int speex_std_vbr_request_handler(SpeexBits *bits, void *state, void *data);
+
+/** Standard handler for enhancer request (Turn enhancer on/off, no questions asked) */
+int speex_std_enh_request_handler(SpeexBits *bits, void *state, void *data);
+
+/** Standard handler for VBR quality request (Set VBR quality, no questions asked) */
+int speex_std_vbr_quality_request_handler(SpeexBits *bits, void *state, void *data);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+#endif
diff --git a/dist/include/speex/speex_config_types.h b/dist/include/speex/speex_config_types.h
new file mode 100644
index 0000000..bd54854
--- /dev/null
+++ b/dist/include/speex/speex_config_types.h
@@ -0,0 +1,11 @@
+#ifndef __SPEEX_TYPES_H__
+#define __SPEEX_TYPES_H__
+
+/* these are filled in by configure */
+typedef short spx_int16_t;
+typedef unsigned short spx_uint16_t;
+typedef int spx_int32_t;
+typedef unsigned int spx_uint32_t;
+
+#endif
+
diff --git a/dist/include/speex/speex_echo.h b/dist/include/speex/speex_echo.h
new file mode 100644
index 0000000..53bcd28
--- /dev/null
+++ b/dist/include/speex/speex_echo.h
@@ -0,0 +1,170 @@
+/* Copyright (C) Jean-Marc Valin */
+/**
+   @file speex_echo.h
+   @brief Echo cancellation
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are
+   met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef SPEEX_ECHO_H
+#define SPEEX_ECHO_H
+/** @defgroup SpeexEchoState SpeexEchoState: Acoustic echo canceller
+ *  This is the acoustic echo canceller module.
+ *  @{
+ */
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Obtain frame size used by the AEC */
+#define SPEEX_ECHO_GET_FRAME_SIZE 3
+
+/** Set sampling rate */
+#define SPEEX_ECHO_SET_SAMPLING_RATE 24
+/** Get sampling rate */
+#define SPEEX_ECHO_GET_SAMPLING_RATE 25
+
+/* Can't set window sizes */
+/** Get size of impulse response (int32) */
+#define SPEEX_ECHO_GET_IMPULSE_RESPONSE_SIZE 27
+
+/* Can't set window content */
+/** Get impulse response (int32[]) */
+#define SPEEX_ECHO_GET_IMPULSE_RESPONSE 29
+
+/** Internal echo canceller state. Should never be accessed directly. */
+struct SpeexEchoState_;
+
+/** @class SpeexEchoState
+ * This holds the state of the echo canceller. You need one per channel. 
+*/
+
+/** Internal echo canceller state. Should never be accessed directly. */
+typedef struct SpeexEchoState_ SpeexEchoState;
+
+/** Creates a new echo canceller state
+ * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms)
+ * @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms)
+ * @return Newly-created echo canceller state
+ */
+SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length);
+
+/** Creates a new multi-channel echo canceller state
+ * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms)
+ * @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms)
+ * @param nb_mic Number of microphone channels
+ * @param nb_speakers Number of speaker channels
+ * @return Newly-created echo canceller state
+ */
+SpeexEchoState *speex_echo_state_init_mc(int frame_size, int filter_length, int nb_mic, int nb_speakers);
+
+/** Destroys an echo canceller state 
+ * @param st Echo canceller state
+*/
+void speex_echo_state_destroy(SpeexEchoState *st);
+
+/** Performs echo cancellation a frame, based on the audio sent to the speaker (no delay is added
+ * to playback in this form)
+ *
+ * @param st Echo canceller state
+ * @param rec Signal from the microphone (near end + far end echo)
+ * @param play Signal played to the speaker (received from far end)
+ * @param out Returns near-end signal with echo removed
+ */
+void speex_echo_cancellation(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out);
+
+/** Performs echo cancellation a frame (deprecated) */
+void speex_echo_cancel(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out, spx_int32_t *Yout);
+
+/** Perform echo cancellation using internal playback buffer, which is delayed by two frames
+ * to account for the delay introduced by most soundcards (but it could be off!)
+ * @param st Echo canceller state
+ * @param rec Signal from the microphone (near end + far end echo)
+ * @param out Returns near-end signal with echo removed
+*/
+void speex_echo_capture(SpeexEchoState *st, const spx_int16_t *rec, spx_int16_t *out);
+
+/** Let the echo canceller know that a frame was just queued to the soundcard
+ * @param st Echo canceller state
+ * @param play Signal played to the speaker (received from far end)
+*/
+void speex_echo_playback(SpeexEchoState *st, const spx_int16_t *play);
+
+/** Reset the echo canceller to its original state 
+ * @param st Echo canceller state
+ */
+void speex_echo_state_reset(SpeexEchoState *st);
+
+/** Used like the ioctl function to control the echo canceller parameters
+ *
+ * @param st Echo canceller state
+ * @param request ioctl-type request (one of the SPEEX_ECHO_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown
+ */
+int speex_echo_ctl(SpeexEchoState *st, int request, void *ptr);
+
+
+
+struct SpeexDecorrState_;
+
+typedef struct SpeexDecorrState_ SpeexDecorrState;
+
+
+/** Create a state for the channel decorrelation algorithm
+    This is useful for multi-channel echo cancellation only 
+ * @param rate Sampling rate
+ * @param channels Number of channels (it's a bit pointless if you don't have at least 2)
+ * @param frame_size Size of the frame to process at ones (counting samples *per* channel)
+*/
+SpeexDecorrState *speex_decorrelate_new(int rate, int channels, int frame_size);
+
+/** Remove correlation between the channels by modifying the phase and possibly
+    adding noise in a way that is not (or little) perceptible.
+ * @param st Decorrelator state
+ * @param in Input audio in interleaved format
+ * @param out Result of the decorrelation (out *may* alias in)
+ * @param strength How much alteration of the audio to apply from 0 to 100.
+*/
+void speex_decorrelate(SpeexDecorrState *st, const spx_int16_t *in, spx_int16_t *out, int strength);
+
+/** Destroy a Decorrelation state 
+ * @param st State to destroy
+*/
+void speex_decorrelate_destroy(SpeexDecorrState *st);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/** @}*/
+#endif
diff --git a/dist/include/speex/speex_header.h b/dist/include/speex/speex_header.h
new file mode 100644
index 0000000..f85b249
--- /dev/null
+++ b/dist/include/speex/speex_header.h
@@ -0,0 +1,94 @@
+/* Copyright (C) 2002 Jean-Marc Valin */
+/**
+   @file speex_header.h
+   @brief Describes the Speex header
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+
+#ifndef SPEEX_HEADER_H
+#define SPEEX_HEADER_H
+/** @defgroup SpeexHeader SpeexHeader: Makes it easy to write/parse an Ogg/Speex header
+ *  This is the Speex header for the Ogg encapsulation. You don't need that if you just use RTP.
+ *  @{
+ */
+
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct SpeexMode;
+
+/** Length of the Speex header identifier */
+#define SPEEX_HEADER_STRING_LENGTH 8
+
+/** Maximum number of characters for encoding the Speex version number in the header */
+#define SPEEX_HEADER_VERSION_LENGTH 20
+
+/** Speex header info for file-based formats */
+typedef struct SpeexHeader {
+   char speex_string[SPEEX_HEADER_STRING_LENGTH];   /**< Identifies a Speex bit-stream, always set to "Speex   " */
+   char speex_version[SPEEX_HEADER_VERSION_LENGTH]; /**< Speex version */ 
+   spx_int32_t speex_version_id;       /**< Version for Speex (for checking compatibility) */
+   spx_int32_t header_size;            /**< Total size of the header ( sizeof(SpeexHeader) ) */
+   spx_int32_t rate;                   /**< Sampling rate used */
+   spx_int32_t mode;                   /**< Mode used (0 for narrowband, 1 for wideband) */
+   spx_int32_t mode_bitstream_version; /**< Version ID of the bit-stream */
+   spx_int32_t nb_channels;            /**< Number of channels encoded */
+   spx_int32_t bitrate;                /**< Bit-rate used */
+   spx_int32_t frame_size;             /**< Size of frames */
+   spx_int32_t vbr;                    /**< 1 for a VBR encoding, 0 otherwise */
+   spx_int32_t frames_per_packet;      /**< Number of frames stored per Ogg packet */
+   spx_int32_t extra_headers;          /**< Number of additional headers after the comments */
+   spx_int32_t reserved1;              /**< Reserved for future use, must be zero */
+   spx_int32_t reserved2;              /**< Reserved for future use, must be zero */
+} SpeexHeader;
+
+/** Initializes a SpeexHeader using basic information */
+void speex_init_header(SpeexHeader *header, int rate, int nb_channels, const struct SpeexMode *m);
+
+/** Creates the header packet from the header itself (mostly involves endianness conversion) */
+char *speex_header_to_packet(SpeexHeader *header, int *size);
+
+/** Creates a SpeexHeader from a packet */
+SpeexHeader *speex_packet_to_header(char *packet, int size);
+
+/** Frees the memory allocated by either speex_header_to_packet() or speex_packet_to_header() */
+void speex_header_free(void *ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+#endif
diff --git a/dist/include/speex/speex_jitter.h b/dist/include/speex/speex_jitter.h
new file mode 100644
index 0000000..d68674b
--- /dev/null
+++ b/dist/include/speex/speex_jitter.h
@@ -0,0 +1,197 @@
+/* Copyright (C) 2002 Jean-Marc Valin */
+/**
+   @file speex_jitter.h
+   @brief Adaptive jitter buffer for Speex
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef SPEEX_JITTER_H
+#define SPEEX_JITTER_H
+/** @defgroup JitterBuffer JitterBuffer: Adaptive jitter buffer
+ *  This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size
+ * to maintain good quality and low latency.
+ *  @{
+ */
+
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Generic adaptive jitter buffer state */
+struct JitterBuffer_;
+
+/** Generic adaptive jitter buffer state */
+typedef struct JitterBuffer_ JitterBuffer;
+
+/** Definition of an incoming packet */
+typedef struct _JitterBufferPacket JitterBufferPacket;
+
+/** Definition of an incoming packet */
+struct _JitterBufferPacket {
+   char        *data;       /**< Data bytes contained in the packet */
+   spx_uint32_t len;        /**< Length of the packet in bytes */
+   spx_uint32_t timestamp;  /**< Timestamp for the packet */
+   spx_uint32_t span;       /**< Time covered by the packet (same units as timestamp) */
+   spx_uint16_t sequence;   /**< RTP Sequence number if available (0 otherwise) */
+   spx_uint32_t user_data;  /**< Put whatever data you like here (it's ignored by the jitter buffer) */
+};
+
+/** Packet has been retrieved */
+#define JITTER_BUFFER_OK 0
+/** Packet is lost or is late */
+#define JITTER_BUFFER_MISSING 1
+/** A "fake" packet is meant to be inserted here to increase buffering */
+#define JITTER_BUFFER_INSERTION 2
+/** There was an error in the jitter buffer */
+#define JITTER_BUFFER_INTERNAL_ERROR -1
+/** Invalid argument */
+#define JITTER_BUFFER_BAD_ARGUMENT -2
+
+
+/** Set minimum amount of extra buffering required (margin) */
+#define JITTER_BUFFER_SET_MARGIN 0
+/** Get minimum amount of extra buffering required (margin) */
+#define JITTER_BUFFER_GET_MARGIN 1
+/* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */
+
+/** Get the amount of available packets currently buffered */
+#define JITTER_BUFFER_GET_AVAILABLE_COUNT 3
+/** Included because of an early misspelling (will remove in next release) */
+#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3
+
+/** Assign a function to destroy unused packet. When setting that, the jitter 
+    buffer no longer copies packet data. */
+#define JITTER_BUFFER_SET_DESTROY_CALLBACK 4
+/**  */
+#define JITTER_BUFFER_GET_DESTROY_CALLBACK 5
+
+/** Tell the jitter buffer to only adjust the delay in multiples of the step parameter provided */
+#define JITTER_BUFFER_SET_DELAY_STEP 6
+/**  */
+#define JITTER_BUFFER_GET_DELAY_STEP 7
+
+/** Tell the jitter buffer to only do concealment in multiples of the size parameter provided */
+#define JITTER_BUFFER_SET_CONCEALMENT_SIZE 8
+#define JITTER_BUFFER_GET_CONCEALMENT_SIZE 9
+
+/** Absolute max amount of loss that can be tolerated regardless of the delay. Typical loss 
+    should be half of that or less. */
+#define JITTER_BUFFER_SET_MAX_LATE_RATE 10
+#define JITTER_BUFFER_GET_MAX_LATE_RATE 11
+
+/** Equivalent cost of one percent late packet in timestamp units */
+#define JITTER_BUFFER_SET_LATE_COST 12
+#define JITTER_BUFFER_GET_LATE_COST 13
+
+
+/** Initialises jitter buffer 
+ * 
+ * @param step_size Starting value for the size of concleanment packets and delay 
+       adjustment steps. Can be changed at any time using JITTER_BUFFER_SET_DELAY_STEP
+       and JITTER_BUFFER_GET_CONCEALMENT_SIZE.
+ * @return Newly created jitter buffer state
+ */
+JitterBuffer *jitter_buffer_init(int step_size);
+
+/** Restores jitter buffer to its original state 
+ * 
+ * @param jitter Jitter buffer state
+ */
+void jitter_buffer_reset(JitterBuffer *jitter);
+
+/** Destroys jitter buffer 
+ * 
+ * @param jitter Jitter buffer state
+ */
+void jitter_buffer_destroy(JitterBuffer *jitter);
+
+/** Put one packet into the jitter buffer
+ * 
+ * @param jitter Jitter buffer state
+ * @param packet Incoming packet
+*/
+void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet);
+
+/** Get one packet from the jitter buffer
+ * 
+ * @param jitter Jitter buffer state
+ * @param packet Returned packet
+ * @param desired_span Number of samples (or units) we wish to get from the buffer (no guarantee)
+ * @param current_timestamp Timestamp for the returned packet 
+*/
+int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t desired_span, spx_int32_t *start_offset);
+
+/** Used right after jitter_buffer_get() to obtain another packet that would have the same timestamp.
+ * This is mainly useful for media where a single "frame" can be split into several packets.
+ * 
+ * @param jitter Jitter buffer state
+ * @param packet Returned packet
+ */
+int jitter_buffer_get_another(JitterBuffer *jitter, JitterBufferPacket *packet);
+
+/** Get pointer timestamp of jitter buffer
+ * 
+ * @param jitter Jitter buffer state
+*/
+int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter);
+
+/** Advance by one tick
+ * 
+ * @param jitter Jitter buffer state
+*/
+void jitter_buffer_tick(JitterBuffer *jitter);
+
+/** Telling the jitter buffer about the remaining data in the application buffer
+ * @param jitter Jitter buffer state
+ * @param rem Amount of data buffered by the application (timestamp units)
+ */
+void jitter_buffer_remaining_span(JitterBuffer *jitter, spx_uint32_t rem);
+
+/** Used like the ioctl function to control the jitter buffer parameters
+ * 
+ * @param jitter Jitter buffer state
+ * @param request ioctl-type request (one of the JITTER_BUFFER_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown
+*/
+int jitter_buffer_ctl(JitterBuffer *jitter, int request, void *ptr);
+
+int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset);
+
+/* @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dist/include/speex/speex_preprocess.h b/dist/include/speex/speex_preprocess.h
new file mode 100644
index 0000000..f8eef2c
--- /dev/null
+++ b/dist/include/speex/speex_preprocess.h
@@ -0,0 +1,219 @@
+/* Copyright (C) 2003 Epic Games
+   Written by Jean-Marc Valin */
+/**
+ *  @file speex_preprocess.h
+ *  @brief Speex preprocessor. The preprocess can do noise suppression, 
+ * residual echo suppression (after using the echo canceller), automatic
+ * gain control (AGC) and voice activity detection (VAD).
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are
+   met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef SPEEX_PREPROCESS_H
+#define SPEEX_PREPROCESS_H
+/** @defgroup SpeexPreprocessState SpeexPreprocessState: The Speex preprocessor
+ *  This is the Speex preprocessor. The preprocess can do noise suppression, 
+ * residual echo suppression (after using the echo canceller), automatic
+ * gain control (AGC) and voice activity detection (VAD).
+ *  @{
+ */
+
+#include "speex/speex_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+   
+/** State of the preprocessor (one per channel). Should never be accessed directly. */
+struct SpeexPreprocessState_;
+
+/** State of the preprocessor (one per channel). Should never be accessed directly. */
+typedef struct SpeexPreprocessState_ SpeexPreprocessState;
+
+
+/** Creates a new preprocessing state. You MUST create one state per channel processed.
+ * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms). Must be
+ * the same value as that used for the echo canceller for residual echo cancellation to work.
+ * @param sampling_rate Sampling rate used for the input.
+ * @return Newly created preprocessor state
+*/
+SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate);
+
+/** Destroys a preprocessor state 
+ * @param st Preprocessor state to destroy
+*/
+void speex_preprocess_state_destroy(SpeexPreprocessState *st);
+
+/** Preprocess a frame 
+ * @param st Preprocessor state
+ * @param x Audio sample vector (in and out). Must be same size as specified in speex_preprocess_state_init().
+ * @return Bool value for voice activity (1 for speech, 0 for noise/silence), ONLY if VAD turned on.
+*/
+int speex_preprocess_run(SpeexPreprocessState *st, spx_int16_t *x);
+
+/** Preprocess a frame (deprecated, use speex_preprocess_run() instead)*/
+int speex_preprocess(SpeexPreprocessState *st, spx_int16_t *x, spx_int32_t *echo);
+
+/** Update preprocessor state, but do not compute the output
+ * @param st Preprocessor state
+ * @param x Audio sample vector (in only). Must be same size as specified in speex_preprocess_state_init().
+*/
+void speex_preprocess_estimate_update(SpeexPreprocessState *st, spx_int16_t *x);
+
+/** Used like the ioctl function to control the preprocessor parameters 
+ * @param st Preprocessor state
+ * @param request ioctl-type request (one of the SPEEX_PREPROCESS_* macros)
+ * @param ptr Data exchanged to-from function
+ * @return 0 if no error, -1 if request in unknown
+*/
+int speex_preprocess_ctl(SpeexPreprocessState *st, int request, void *ptr);
+
+
+
+/** Set preprocessor denoiser state */
+#define SPEEX_PREPROCESS_SET_DENOISE 0
+/** Get preprocessor denoiser state */
+#define SPEEX_PREPROCESS_GET_DENOISE 1
+
+/** Set preprocessor Automatic Gain Control state */
+#define SPEEX_PREPROCESS_SET_AGC 2
+/** Get preprocessor Automatic Gain Control state */
+#define SPEEX_PREPROCESS_GET_AGC 3
+
+/** Set preprocessor Voice Activity Detection state */
+#define SPEEX_PREPROCESS_SET_VAD 4
+/** Get preprocessor Voice Activity Detection state */
+#define SPEEX_PREPROCESS_GET_VAD 5
+
+/** Set preprocessor Automatic Gain Control level (float) */
+#define SPEEX_PREPROCESS_SET_AGC_LEVEL 6
+/** Get preprocessor Automatic Gain Control level (float) */
+#define SPEEX_PREPROCESS_GET_AGC_LEVEL 7
+
+/** Set preprocessor dereverb state */
+#define SPEEX_PREPROCESS_SET_DEREVERB 8
+/** Get preprocessor dereverb state */
+#define SPEEX_PREPROCESS_GET_DEREVERB 9
+
+/** Set preprocessor dereverb level */
+#define SPEEX_PREPROCESS_SET_DEREVERB_LEVEL 10
+/** Get preprocessor dereverb level */
+#define SPEEX_PREPROCESS_GET_DEREVERB_LEVEL 11
+
+/** Set preprocessor dereverb decay */
+#define SPEEX_PREPROCESS_SET_DEREVERB_DECAY 12
+/** Get preprocessor dereverb decay */
+#define SPEEX_PREPROCESS_GET_DEREVERB_DECAY 13
+
+/** Set probability required for the VAD to go from silence to voice */
+#define SPEEX_PREPROCESS_SET_PROB_START 14
+/** Get probability required for the VAD to go from silence to voice */
+#define SPEEX_PREPROCESS_GET_PROB_START 15
+
+/** Set probability required for the VAD to stay in the voice state (integer percent) */
+#define SPEEX_PREPROCESS_SET_PROB_CONTINUE 16
+/** Get probability required for the VAD to stay in the voice state (integer percent) */
+#define SPEEX_PREPROCESS_GET_PROB_CONTINUE 17
+
+/** Set maximum attenuation of the noise in dB (negative number) */
+#define SPEEX_PREPROCESS_SET_NOISE_SUPPRESS 18
+/** Get maximum attenuation of the noise in dB (negative number) */
+#define SPEEX_PREPROCESS_GET_NOISE_SUPPRESS 19
+
+/** Set maximum attenuation of the residual echo in dB (negative number) */
+#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS 20
+/** Get maximum attenuation of the residual echo in dB (negative number) */
+#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS 21
+
+/** Set maximum attenuation of the residual echo in dB when near end is active (negative number) */
+#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE 22
+/** Get maximum attenuation of the residual echo in dB when near end is active (negative number) */
+#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE 23
+
+/** Set the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression) */
+#define SPEEX_PREPROCESS_SET_ECHO_STATE 24
+/** Get the corresponding echo canceller state */
+#define SPEEX_PREPROCESS_GET_ECHO_STATE 25
+
+/** Set maximal gain increase in dB/second (int32) */
+#define SPEEX_PREPROCESS_SET_AGC_INCREMENT 26
+
+/** Get maximal gain increase in dB/second (int32) */
+#define SPEEX_PREPROCESS_GET_AGC_INCREMENT 27
+
+/** Set maximal gain decrease in dB/second (int32) */
+#define SPEEX_PREPROCESS_SET_AGC_DECREMENT 28
+
+/** Get maximal gain decrease in dB/second (int32) */
+#define SPEEX_PREPROCESS_GET_AGC_DECREMENT 29
+
+/** Set maximal gain in dB (int32) */
+#define SPEEX_PREPROCESS_SET_AGC_MAX_GAIN 30
+
+/** Get maximal gain in dB (int32) */
+#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31
+
+/*  Can't set loudness */
+/** Get loudness */
+#define SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33
+
+/*  Can't set gain */
+/** Get current gain (int32 percent) */
+#define SPEEX_PREPROCESS_GET_AGC_GAIN 35
+
+/*  Can't set spectrum size */
+/** Get spectrum size for power spectrum (int32) */
+#define SPEEX_PREPROCESS_GET_PSD_SIZE 37
+
+/*  Can't set power spectrum */
+/** Get power spectrum (int32[] of squared values) */
+#define SPEEX_PREPROCESS_GET_PSD 39
+
+/*  Can't set noise size */
+/** Get spectrum size for noise estimate (int32)  */
+#define SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE 41
+
+/*  Can't set noise estimate */
+/** Get noise estimate (int32[] of squared values) */
+#define SPEEX_PREPROCESS_GET_NOISE_PSD 43
+
+/* Can't set speech probability */
+/** Get speech probability in last frame (int32).  */
+#define SPEEX_PREPROCESS_GET_PROB 45
+
+/** Set preprocessor Automatic Gain Control level (int32) */
+#define SPEEX_PREPROCESS_SET_AGC_TARGET 46
+/** Get preprocessor Automatic Gain Control level (int32) */
+#define SPEEX_PREPROCESS_GET_AGC_TARGET 47
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/
+#endif
diff --git a/dist/include/speex/speex_resampler.h b/dist/include/speex/speex_resampler.h
new file mode 100644
index 0000000..54eef8d
--- /dev/null
+++ b/dist/include/speex/speex_resampler.h
@@ -0,0 +1,340 @@
+/* Copyright (C) 2007 Jean-Marc Valin
+      
+   File: speex_resampler.h
+   Resampling code
+      
+   The design goals of this code are:
+      - Very fast algorithm
+      - Low memory requirement
+      - Good *perceptual* quality (and not best SNR)
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are
+   met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#ifndef SPEEX_RESAMPLER_H
+#define SPEEX_RESAMPLER_H
+
+#ifdef OUTSIDE_SPEEX
+
+/********* WARNING: MENTAL SANITY ENDS HERE *************/
+
+/* If the resampler is defined outside of Speex, we change the symbol names so that 
+   there won't be any clash if linking with Speex later on. */
+
+/* #define RANDOM_PREFIX your software name here */
+#ifndef RANDOM_PREFIX
+#error "Please define RANDOM_PREFIX (above) to something specific to your project to prevent symbol name clashes"
+#endif
+
+#define CAT_PREFIX2(a,b) a ## b
+#define CAT_PREFIX(a,b) CAT_PREFIX2(a, b)
+      
+#define speex_resampler_init CAT_PREFIX(RANDOM_PREFIX,_resampler_init)
+#define speex_resampler_init_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_init_frac)
+#define speex_resampler_destroy CAT_PREFIX(RANDOM_PREFIX,_resampler_destroy)
+#define speex_resampler_process_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_float)
+#define speex_resampler_process_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_int)
+#define speex_resampler_process_interleaved_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_float)
+#define speex_resampler_process_interleaved_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_int)
+#define speex_resampler_set_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate)
+#define speex_resampler_get_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_get_rate)
+#define speex_resampler_set_rate_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate_frac)
+#define speex_resampler_get_ratio CAT_PREFIX(RANDOM_PREFIX,_resampler_get_ratio)
+#define speex_resampler_set_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_set_quality)
+#define speex_resampler_get_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_get_quality)
+#define speex_resampler_set_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_input_stride)
+#define speex_resampler_get_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_stride)
+#define speex_resampler_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_output_stride)
+#define speex_resampler_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_stride)
+#define speex_resampler_get_input_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_latency)
+#define speex_resampler_get_output_latency CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_latency)
+#define speex_resampler_skip_zeros CAT_PREFIX(RANDOM_PREFIX,_resampler_skip_zeros)
+#define speex_resampler_reset_mem CAT_PREFIX(RANDOM_PREFIX,_resampler_reset_mem)
+#define speex_resampler_strerror CAT_PREFIX(RANDOM_PREFIX,_resampler_strerror)
+
+#define spx_int16_t short
+#define spx_int32_t int
+#define spx_uint16_t unsigned short
+#define spx_uint32_t unsigned int
+      
+#else /* OUTSIDE_SPEEX */
+
+#include "speex/speex_types.h"
+
+#endif /* OUTSIDE_SPEEX */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SPEEX_RESAMPLER_QUALITY_MAX 10
+#define SPEEX_RESAMPLER_QUALITY_MIN 0
+#define SPEEX_RESAMPLER_QUALITY_DEFAULT 4
+#define SPEEX_RESAMPLER_QUALITY_VOIP 3
+#define SPEEX_RESAMPLER_QUALITY_DESKTOP 5
+
+enum {
+   RESAMPLER_ERR_SUCCESS         = 0,
+   RESAMPLER_ERR_ALLOC_FAILED    = 1,
+   RESAMPLER_ERR_BAD_STATE       = 2,
+   RESAMPLER_ERR_INVALID_ARG     = 3,
+   RESAMPLER_ERR_PTR_OVERLAP     = 4,
+   
+   RESAMPLER_ERR_MAX_ERROR
+};
+
+struct SpeexResamplerState_;
+typedef struct SpeexResamplerState_ SpeexResamplerState;
+
+/** Create a new resampler with integer input and output rates.
+ * @param nb_channels Number of channels to be processed
+ * @param in_rate Input sampling rate (integer number of Hz).
+ * @param out_rate Output sampling rate (integer number of Hz).
+ * @param quality Resampling quality between 0 and 10, where 0 has poor quality
+ * and 10 has very high quality.
+ * @return Newly created resampler state
+ * @retval NULL Error: not enough memory
+ */
+SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels, 
+                                          spx_uint32_t in_rate, 
+                                          spx_uint32_t out_rate, 
+                                          int quality,
+                                          int *err);
+
+/** Create a new resampler with fractional input/output rates. The sampling 
+ * rate ratio is an arbitrary rational number with both the numerator and 
+ * denominator being 32-bit integers.
+ * @param nb_channels Number of channels to be processed
+ * @param ratio_num Numerator of the sampling rate ratio
+ * @param ratio_den Denominator of the sampling rate ratio
+ * @param in_rate Input sampling rate rounded to the nearest integer (in Hz).
+ * @param out_rate Output sampling rate rounded to the nearest integer (in Hz).
+ * @param quality Resampling quality between 0 and 10, where 0 has poor quality
+ * and 10 has very high quality.
+ * @return Newly created resampler state
+ * @retval NULL Error: not enough memory
+ */
+SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels, 
+                                               spx_uint32_t ratio_num, 
+                                               spx_uint32_t ratio_den, 
+                                               spx_uint32_t in_rate, 
+                                               spx_uint32_t out_rate, 
+                                               int quality,
+                                               int *err);
+
+/** Destroy a resampler state.
+ * @param st Resampler state
+ */
+void speex_resampler_destroy(SpeexResamplerState *st);
+
+/** Resample a float array. The input and output buffers must *not* overlap.
+ * @param st Resampler state
+ * @param channel_index Index of the channel to process for the multi-channel 
+ * base (0 otherwise)
+ * @param in Input buffer
+ * @param in_len Number of input samples in the input buffer. Returns the 
+ * number of samples processed
+ * @param out Output buffer
+ * @param out_len Size of the output buffer. Returns the number of samples written
+ */
+int speex_resampler_process_float(SpeexResamplerState *st, 
+                                   spx_uint32_t channel_index, 
+                                   const float *in, 
+                                   spx_uint32_t *in_len, 
+                                   float *out, 
+                                   spx_uint32_t *out_len);
+
+/** Resample an int array. The input and output buffers must *not* overlap.
+ * @param st Resampler state
+ * @param channel_index Index of the channel to process for the multi-channel 
+ * base (0 otherwise)
+ * @param in Input buffer
+ * @param in_len Number of input samples in the input buffer. Returns the number
+ * of samples processed
+ * @param out Output buffer
+ * @param out_len Size of the output buffer. Returns the number of samples written
+ */
+int speex_resampler_process_int(SpeexResamplerState *st, 
+                                 spx_uint32_t channel_index, 
+                                 const spx_int16_t *in, 
+                                 spx_uint32_t *in_len, 
+                                 spx_int16_t *out, 
+                                 spx_uint32_t *out_len);
+
+/** Resample an interleaved float array. The input and output buffers must *not* overlap.
+ * @param st Resampler state
+ * @param in Input buffer
+ * @param in_len Number of input samples in the input buffer. Returns the number
+ * of samples processed. This is all per-channel.
+ * @param out Output buffer
+ * @param out_len Size of the output buffer. Returns the number of samples written.
+ * This is all per-channel.
+ */
+int speex_resampler_process_interleaved_float(SpeexResamplerState *st, 
+                                               const float *in, 
+                                               spx_uint32_t *in_len, 
+                                               float *out, 
+                                               spx_uint32_t *out_len);
+
+/** Resample an interleaved int array. The input and output buffers must *not* overlap.
+ * @param st Resampler state
+ * @param in Input buffer
+ * @param in_len Number of input samples in the input buffer. Returns the number
+ * of samples processed. This is all per-channel.
+ * @param out Output buffer
+ * @param out_len Size of the output buffer. Returns the number of samples written.
+ * This is all per-channel.
+ */
+int speex_resampler_process_interleaved_int(SpeexResamplerState *st, 
+                                             const spx_int16_t *in, 
+                                             spx_uint32_t *in_len, 
+                                             spx_int16_t *out, 
+                                             spx_uint32_t *out_len);
+
+/** Set (change) the input/output sampling rates (integer value).
+ * @param st Resampler state
+ * @param in_rate Input sampling rate (integer number of Hz).
+ * @param out_rate Output sampling rate (integer number of Hz).
+ */
+int speex_resampler_set_rate(SpeexResamplerState *st, 
+                              spx_uint32_t in_rate, 
+                              spx_uint32_t out_rate);
+
+/** Get the current input/output sampling rates (integer value).
+ * @param st Resampler state
+ * @param in_rate Input sampling rate (integer number of Hz) copied.
+ * @param out_rate Output sampling rate (integer number of Hz) copied.
+ */
+void speex_resampler_get_rate(SpeexResamplerState *st, 
+                              spx_uint32_t *in_rate, 
+                              spx_uint32_t *out_rate);
+
+/** Set (change) the input/output sampling rates and resampling ratio 
+ * (fractional values in Hz supported).
+ * @param st Resampler state
+ * @param ratio_num Numerator of the sampling rate ratio
+ * @param ratio_den Denominator of the sampling rate ratio
+ * @param in_rate Input sampling rate rounded to the nearest integer (in Hz).
+ * @param out_rate Output sampling rate rounded to the nearest integer (in Hz).
+ */
+int speex_resampler_set_rate_frac(SpeexResamplerState *st, 
+                                   spx_uint32_t ratio_num, 
+                                   spx_uint32_t ratio_den, 
+                                   spx_uint32_t in_rate, 
+                                   spx_uint32_t out_rate);
+
+/** Get the current resampling ratio. This will be reduced to the least
+ * common denominator.
+ * @param st Resampler state
+ * @param ratio_num Numerator of the sampling rate ratio copied
+ * @param ratio_den Denominator of the sampling rate ratio copied
+ */
+void speex_resampler_get_ratio(SpeexResamplerState *st, 
+                               spx_uint32_t *ratio_num, 
+                               spx_uint32_t *ratio_den);
+
+/** Set (change) the conversion quality.
+ * @param st Resampler state
+ * @param quality Resampling quality between 0 and 10, where 0 has poor 
+ * quality and 10 has very high quality.
+ */
+int speex_resampler_set_quality(SpeexResamplerState *st, 
+                                 int quality);
+
+/** Get the conversion quality.
+ * @param st Resampler state
+ * @param quality Resampling quality between 0 and 10, where 0 has poor 
+ * quality and 10 has very high quality.
+ */
+void speex_resampler_get_quality(SpeexResamplerState *st, 
+                                 int *quality);
+
+/** Set (change) the input stride.
+ * @param st Resampler state
+ * @param stride Input stride
+ */
+void speex_resampler_set_input_stride(SpeexResamplerState *st, 
+                                      spx_uint32_t stride);
+
+/** Get the input stride.
+ * @param st Resampler state
+ * @param stride Input stride copied
+ */
+void speex_resampler_get_input_stride(SpeexResamplerState *st, 
+                                      spx_uint32_t *stride);
+
+/** Set (change) the output stride.
+ * @param st Resampler state
+ * @param stride Output stride
+ */
+void speex_resampler_set_output_stride(SpeexResamplerState *st, 
+                                      spx_uint32_t stride);
+
+/** Get the output stride.
+ * @param st Resampler state copied
+ * @param stride Output stride
+ */
+void speex_resampler_get_output_stride(SpeexResamplerState *st, 
+                                      spx_uint32_t *stride);
+
+/** Get the latency in input samples introduced by the resampler.
+ * @param st Resampler state
+ */
+int speex_resampler_get_input_latency(SpeexResamplerState *st);
+
+/** Get the latency in output samples introduced by the resampler.
+ * @param st Resampler state
+ */
+int speex_resampler_get_output_latency(SpeexResamplerState *st);
+
+/** Make sure that the first samples to go out of the resamplers don't have 
+ * leading zeros. This is only useful before starting to use a newly created 
+ * resampler. It is recommended to use that when resampling an audio file, as
+ * it will generate a file with the same length. For real-time processing,
+ * it is probably easier not to use this call (so that the output duration
+ * is the same for the first frame).
+ * @param st Resampler state
+ */
+int speex_resampler_skip_zeros(SpeexResamplerState *st);
+
+/** Reset a resampler so a new (unrelated) stream can be processed.
+ * @param st Resampler state
+ */
+int speex_resampler_reset_mem(SpeexResamplerState *st);
+
+/** Returns the English meaning for an error code
+ * @param err Error code
+ * @return English string
+ */
+const char *speex_resampler_strerror(int err);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/dist/include/speex/speex_stereo.h b/dist/include/speex/speex_stereo.h
new file mode 100644
index 0000000..a259713
--- /dev/null
+++ b/dist/include/speex/speex_stereo.h
@@ -0,0 +1,91 @@
+/* Copyright (C) 2002 Jean-Marc Valin*/
+/**
+   @file speex_stereo.h
+   @brief Describes the handling for intensity stereo
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef STEREO_H
+#define STEREO_H
+/** @defgroup SpeexStereoState SpeexStereoState: Handling Speex stereo files
+ *  This describes the Speex intensity stereo encoding/decoding
+ *  @{
+ */
+
+#include "speex/speex_types.h"
+#include "speex/speex_bits.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** If you access any of these fields directly, I'll personally come and bite you */
+typedef struct SpeexStereoState {
+   float balance;      /**< Left/right balance info */
+   float e_ratio;      /**< Ratio of energies: E(left+right)/[E(left)+E(right)]  */
+   float smooth_left;  /**< Smoothed left channel gain */
+   float smooth_right; /**< Smoothed right channel gain */
+   float reserved1;    /**< Reserved for future use */
+   float reserved2;    /**< Reserved for future use */
+} SpeexStereoState;
+
+/** Deprecated. Use speex_stereo_state_init() instead. */
+#define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0}
+
+/** Initialise/create a stereo stereo state */
+SpeexStereoState *speex_stereo_state_init();
+
+/** Reset/re-initialise an already allocated stereo state */
+void speex_stereo_state_reset(SpeexStereoState *stereo);
+
+/** Destroy a stereo stereo state */
+void speex_stereo_state_destroy(SpeexStereoState *stereo);
+
+/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */
+void speex_encode_stereo(float *data, int frame_size, SpeexBits *bits);
+
+/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */
+void speex_encode_stereo_int(spx_int16_t *data, int frame_size, SpeexBits *bits);
+
+/** Transforms a mono frame into a stereo frame using intensity stereo info */
+void speex_decode_stereo(float *data, int frame_size, SpeexStereoState *stereo);
+
+/** Transforms a mono frame into a stereo frame using intensity stereo info */
+void speex_decode_stereo_int(spx_int16_t *data, int frame_size, SpeexStereoState *stereo);
+
+/** Callback handler for intensity stereo info */
+int speex_std_stereo_request_handler(SpeexBits *bits, void *state, void *data);
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+#endif
diff --git a/dist/include/speex/speex_types.h b/dist/include/speex/speex_types.h
new file mode 100644
index 0000000..852fed8
--- /dev/null
+++ b/dist/include/speex/speex_types.h
@@ -0,0 +1,126 @@
+/* speex_types.h taken from libogg */
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $
+
+ ********************************************************************/
+/**
+   @file speex_types.h
+   @brief Speex types
+*/
+#ifndef _SPEEX_TYPES_H
+#define _SPEEX_TYPES_H
+
+#if defined(_WIN32) 
+
+#  if defined(__CYGWIN__)
+#    include <_G_config.h>
+     typedef _G_int32_t spx_int32_t;
+     typedef _G_uint32_t spx_uint32_t;
+     typedef _G_int16_t spx_int16_t;
+     typedef _G_uint16_t spx_uint16_t;
+#  elif defined(__MINGW32__)
+     typedef short spx_int16_t;
+     typedef unsigned short spx_uint16_t;
+     typedef int spx_int32_t;
+     typedef unsigned int spx_uint32_t;
+#  elif defined(__MWERKS__)
+     typedef int spx_int32_t;
+     typedef unsigned int spx_uint32_t;
+     typedef short spx_int16_t;
+     typedef unsigned short spx_uint16_t;
+#  else
+     /* MSVC/Borland */
+     typedef __int32 spx_int32_t;
+     typedef unsigned __int32 spx_uint32_t;
+     typedef __int16 spx_int16_t;
+     typedef unsigned __int16 spx_uint16_t;
+#  endif
+
+#elif defined(__MACOS__)
+
+#  include <sys/types.h>
+   typedef SInt16 spx_int16_t;
+   typedef UInt16 spx_uint16_t;
+   typedef SInt32 spx_int32_t;
+   typedef UInt32 spx_uint32_t;
+
+#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+#  include <sys/types.h>
+   typedef int16_t spx_int16_t;
+   typedef u_int16_t spx_uint16_t;
+   typedef int32_t spx_int32_t;
+   typedef u_int32_t spx_uint32_t;
+
+#elif defined(__BEOS__)
+
+   /* Be */
+#  include <inttypes.h>
+   typedef int16_t spx_int16_t;
+   typedef u_int16_t spx_uint16_t;
+   typedef int32_t spx_int32_t;
+   typedef u_int32_t spx_uint32_t;
+
+#elif defined (__EMX__)
+
+   /* OS/2 GCC */
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined (DJGPP)
+
+   /* DJGPP */
+   typedef short spx_int16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined(R5900)
+
+   /* PS2 EE */
+   typedef int spx_int32_t;
+   typedef unsigned spx_uint32_t;
+   typedef short spx_int16_t;
+
+#elif defined(__SYMBIAN32__)
+
+   /* Symbian GCC */
+   typedef signed short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef signed int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
+
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef long spx_int32_t;
+   typedef unsigned long spx_uint32_t;
+
+#elif defined(CONFIG_TI_C6X)
+
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#else
+
+#  include <speex/speex_config_types.h>
+
+#endif
+
+#endif  /* _SPEEX_TYPES_H */
diff --git a/dist/lib/libogg.la b/dist/lib/libogg.la
new file mode 100755
index 0000000..9d54bac
--- /dev/null
+++ b/dist/lib/libogg.la
@@ -0,0 +1,41 @@
+# libogg.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libogg.so.0'
+
+# Names of this library.
+library_names='libogg.so.0.8.1 libogg.so.0 libogg.so'
+
+# The name of the static archive.
+old_library='libogg.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=''
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libogg.
+current=8
+age=8
+revision=1
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist/lib'
diff --git a/dist/lib/libogg.so b/dist/lib/libogg.so
new file mode 120000
index 0000000..c0774cc
--- /dev/null
+++ b/dist/lib/libogg.so
@@ -0,0 +1 @@
+libogg.so.0.8.1
\ No newline at end of file
diff --git a/dist/lib/libogg.so.0 b/dist/lib/libogg.so.0
new file mode 120000
index 0000000..c0774cc
--- /dev/null
+++ b/dist/lib/libogg.so.0
@@ -0,0 +1 @@
+libogg.so.0.8.1
\ No newline at end of file
diff --git a/dist/lib/libogg.so.0.8.1 b/dist/lib/libogg.so.0.8.1
new file mode 100755
index 0000000..f740499
--- /dev/null
+++ b/dist/lib/libogg.so.0.8.1
Binary files differ
diff --git a/dist/lib/libspeex.la b/dist/lib/libspeex.la
new file mode 100755
index 0000000..4151041
--- /dev/null
+++ b/dist/lib/libspeex.la
@@ -0,0 +1,35 @@
+# libspeex.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.5.22 Debian 1.5.22-4 (1.1220.2.365 2005/12/18 22:14:06)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libspeex.so.1'
+
+# Names of this library.
+library_names='libspeex.so.1.5.0 libspeex.so.1 libspeex.so'
+
+# The name of the static archive.
+old_library='libspeex.a'
+
+# Libraries that this one depends upon.
+dependency_libs=' -lm'
+
+# Version information for libspeex.
+current=6
+age=5
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist/lib'
diff --git a/dist/lib/libspeex.so b/dist/lib/libspeex.so
new file mode 120000
index 0000000..2896393
--- /dev/null
+++ b/dist/lib/libspeex.so
@@ -0,0 +1 @@
+libspeex.so.1.5.0
\ No newline at end of file
diff --git a/dist/lib/libspeex.so.1 b/dist/lib/libspeex.so.1
new file mode 120000
index 0000000..2896393
--- /dev/null
+++ b/dist/lib/libspeex.so.1
@@ -0,0 +1 @@
+libspeex.so.1.5.0
\ No newline at end of file
diff --git a/dist/lib/libspeex.so.1.5.0 b/dist/lib/libspeex.so.1.5.0
new file mode 100755
index 0000000..69819d1
--- /dev/null
+++ b/dist/lib/libspeex.so.1.5.0
Binary files differ
diff --git a/dist/lib/libspeexdsp.la b/dist/lib/libspeexdsp.la
new file mode 100755
index 0000000..749d5dd
--- /dev/null
+++ b/dist/lib/libspeexdsp.la
@@ -0,0 +1,35 @@
+# libspeexdsp.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.5.22 Debian 1.5.22-4 (1.1220.2.365 2005/12/18 22:14:06)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libspeexdsp.so.1'
+
+# Names of this library.
+library_names='libspeexdsp.so.1.5.0 libspeexdsp.so.1 libspeexdsp.so'
+
+# The name of the static archive.
+old_library='libspeexdsp.a'
+
+# Libraries that this one depends upon.
+dependency_libs=' -lm'
+
+# Version information for libspeexdsp.
+current=6
+age=5
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist/lib'
diff --git a/dist/lib/libspeexdsp.so b/dist/lib/libspeexdsp.so
new file mode 120000
index 0000000..a197d4c
--- /dev/null
+++ b/dist/lib/libspeexdsp.so
@@ -0,0 +1 @@
+libspeexdsp.so.1.5.0
\ No newline at end of file
diff --git a/dist/lib/libspeexdsp.so.1 b/dist/lib/libspeexdsp.so.1
new file mode 120000
index 0000000..a197d4c
--- /dev/null
+++ b/dist/lib/libspeexdsp.so.1
@@ -0,0 +1 @@
+libspeexdsp.so.1.5.0
\ No newline at end of file
diff --git a/dist/lib/libspeexdsp.so.1.5.0 b/dist/lib/libspeexdsp.so.1.5.0
new file mode 100755
index 0000000..2f6cc51
--- /dev/null
+++ b/dist/lib/libspeexdsp.so.1.5.0
Binary files differ
diff --git a/dist/lib/pkgconfig/ogg.pc b/dist/lib/pkgconfig/ogg.pc
new file mode 100644
index 0000000..eccbd23
--- /dev/null
+++ b/dist/lib/pkgconfig/ogg.pc
@@ -0,0 +1,14 @@
+# ogg pkg-config file
+
+prefix=/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: ogg
+Description: ogg is a library for manipulating ogg bitstreams
+Version: 1.3.1
+Requires:
+Conflicts:
+Libs: -L${libdir} -logg
+Cflags: -I${includedir}
diff --git a/dist/lib/pkgconfig/speex.pc b/dist/lib/pkgconfig/speex.pc
new file mode 100644
index 0000000..d7780c2
--- /dev/null
+++ b/dist/lib/pkgconfig/speex.pc
@@ -0,0 +1,15 @@
+# libspeex pkg-config source file
+
+prefix=/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: speex
+Description: Speex is an audio codec tuned for speech
+Version: 1.2rc1
+Requires:
+Conflicts:
+Libs: -L${libdir} -lspeex
+Libs.private: -lm
+Cflags: -I${includedir}
diff --git a/dist/lib/pkgconfig/speexdsp.pc b/dist/lib/pkgconfig/speexdsp.pc
new file mode 100644
index 0000000..78d2cda
--- /dev/null
+++ b/dist/lib/pkgconfig/speexdsp.pc
@@ -0,0 +1,15 @@
+# libspeexdsp pkg-config source file
+
+prefix=/home/loren/dev/ambarella-a5s-sdk/packages/speex/dist
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: speexdsp
+Description: Speexdsp is a speech processing library that goes along with the Speex codec
+Version: 1.2rc1
+Requires: 
+Conflicts:
+Libs: -L${libdir} -lspeexdsp
+Libs.private: -lm
+Cflags: -I${includedir}
diff --git a/dist/share/aclocal/ogg.m4 b/dist/share/aclocal/ogg.m4
new file mode 100644
index 0000000..77d663b
--- /dev/null
+++ b/dist/share/aclocal/ogg.m4
@@ -0,0 +1,116 @@
+# Configure paths for libogg
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
+dnl
+AC_DEFUN([XIPH_PATH_OGG],
+[dnl
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(ogg,AC_HELP_STRING([--with-ogg=PFX],[Prefix where libogg is installed (optional)]), ogg_prefix="$withval", ogg_prefix="")
+AC_ARG_WITH(ogg-libraries,AC_HELP_STRING([--with-ogg-libraries=DIR],[Directory where libogg library is installed (optional)]), ogg_libraries="$withval", ogg_libraries="")
+AC_ARG_WITH(ogg-includes,AC_HELP_STRING([--with-ogg-includes=DIR],[Directory where libogg header files are installed (optional)]), ogg_includes="$withval", ogg_includes="")
+AC_ARG_ENABLE(oggtest,AC_HELP_STRING([--disable-oggtest],[Do not try to compile and run a test Ogg program]),, enable_oggtest=yes)
+
+  if test "x$ogg_libraries" != "x" ; then
+    OGG_LIBS="-L$ogg_libraries"
+  elif test "x$ogg_prefix" = "xno" || test "x$ogg_prefix" = "xyes" ; then
+    OGG_LIBS=""
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_LIBS="-L$ogg_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    OGG_LIBS="-L$prefix/lib"
+  fi
+
+  if test "x$ogg_prefix" != "xno" ; then
+    OGG_LIBS="$OGG_LIBS -logg"
+  fi
+
+  if test "x$ogg_includes" != "x" ; then
+    OGG_CFLAGS="-I$ogg_includes"
+  elif test "x$ogg_prefix" = "xno" || test "x$ogg_prefix" = "xyes" ; then
+    OGG_CFLAGS=""
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_CFLAGS="-I$ogg_prefix/include"
+  elif test "x$prefix" != "xNONE"; then
+    OGG_CFLAGS="-I$prefix/include"
+  fi
+
+  AC_MSG_CHECKING(for Ogg)
+  if test "x$ogg_prefix" = "xno" ; then
+    no_ogg="disabled"
+    enable_oggtest="no"
+  else
+    no_ogg=""
+  fi
+
+
+  if test "x$enable_oggtest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $OGG_CFLAGS"
+    LIBS="$LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Ogg is sufficiently new.
+dnl
+      rm -f conf.oggtest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+
+int main ()
+{
+  system("touch conf.oggtest");
+  return 0;
+}
+
+],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_ogg" = "xdisabled" ; then
+     AC_MSG_RESULT(no)
+     ifelse([$2], , :, [$2])
+  elif test "x$no_ogg" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.oggtest ; then
+       :
+     else
+       echo "*** Could not run Ogg test program, checking why..."
+       CFLAGS="$CFLAGS $OGG_CFLAGS"
+       LIBS="$LIBS $OGG_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <ogg/ogg.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Ogg or finding the wrong"
+       echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
+       echo "*** or that you have moved Ogg since it was installed." ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     OGG_CFLAGS=""
+     OGG_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(OGG_CFLAGS)
+  AC_SUBST(OGG_LIBS)
+  rm -f conf.oggtest
+])
diff --git a/dist/share/aclocal/speex.m4 b/dist/share/aclocal/speex.m4
new file mode 100644
index 0000000..be144e1
--- /dev/null
+++ b/dist/share/aclocal/speex.m4
@@ -0,0 +1,104 @@
+# Configure paths for libspeex
+# Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
+# Shamelessly stolen from:
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl XIPH_PATH_SPEEX([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libspeex, and define SPEEX_CFLAGS and SPEEX_LIBS
+dnl
+AC_DEFUN([XIPH_PATH_SPEEX],
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(speex,[  --with-speex=PFX   Prefix where libspeex is installed (optional)], speex_prefix="$withval", speex_prefix="")
+AC_ARG_WITH(speex-libraries,[  --with-speex-libraries=DIR   Directory where libspeex library is installed (optional)], speex_libraries="$withval", speex_libraries="")
+AC_ARG_WITH(speex-includes,[  --with-speex-includes=DIR   Directory where libspeex header files are installed (optional)], speex_includes="$withval", speex_includes="")
+AC_ARG_ENABLE(speextest, [  --disable-speextest       Do not try to compile and run a test Speex program],, enable_speextest=yes)
+
+  if test "x$speex_libraries" != "x" ; then
+    SPEEX_LIBS="-L$speex_libraries"
+  elif test "x$speex_prefix" != "x" ; then
+    SPEEX_LIBS="-L$speex_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    SPEEX_LIBS="-L$prefix/lib"
+  fi
+
+  SPEEX_LIBS="$SPEEX_LIBS -lspeex"
+
+  if test "x$speex_includes" != "x" ; then
+    SPEEX_CFLAGS="-I$speex_includes"
+  elif test "x$speex_prefix" != "x" ; then
+    SPEEX_CFLAGS="-I$speex_prefix/include"
+  elif test "x$prefix" != "xNONE"; then
+    SPEEX_CFLAGS="-I$prefix/include"
+  fi
+
+  AC_MSG_CHECKING(for Speex)
+  no_speex=""
+
+
+  if test "x$enable_speextest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $SPEEX_CFLAGS"
+    LIBS="$LIBS $SPEEX_LIBS"
+dnl
+dnl Now check if the installed Speex is sufficiently new.
+dnl
+      rm -f conf.speextest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <speex/speex.h>
+
+int main ()
+{
+  system("touch conf.speextest");
+  return 0;
+}
+
+],, no_speex=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_speex" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.speextest ; then
+       :
+     else
+       echo "*** Could not run Speex test program, checking why..."
+       CFLAGS="$CFLAGS $SPEEX_CFLAGS"
+       LIBS="$LIBS $SPEEX_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <speex/speex.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Speex or finding the wrong"
+       echo "*** version of Speex. If it is not finding Speex, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Speex was incorrectly installed"
+       echo "*** or that you have moved Speex since it was installed." ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     SPEEX_CFLAGS=""
+     SPEEX_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(SPEEX_CFLAGS)
+  AC_SUBST(SPEEX_LIBS)
+  rm -f conf.speextest
+])
diff --git a/dist/share/doc/libogg/fish_xiph_org.png b/dist/share/doc/libogg/fish_xiph_org.png
new file mode 100644
index 0000000..b398c06
--- /dev/null
+++ b/dist/share/doc/libogg/fish_xiph_org.png
Binary files differ
diff --git a/dist/share/doc/libogg/framing.html b/dist/share/doc/libogg/framing.html
new file mode 100644
index 0000000..b5ac6ac
--- /dev/null
+++ b/dist/share/doc/libogg/framing.html
@@ -0,0 +1,429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg logical bitstream framing</h1>
+
+<h2>Ogg bitstreams</h2>
+
+<p>The Ogg transport bitstream is designed to provide framing, error
+protection and seeking structure for higher-level codec streams that
+consist of raw, unencapsulated data packets, such as the Vorbis audio
+codec or Theora video codec.</p>
+
+<h2>Application example: Vorbis</h2>
+
+<p>Vorbis encodes short-time blocks of PCM data into raw packets of
+bit-packed data. These raw packets may be used directly by transport
+mechanisms that provide their own framing and packet-separation
+mechanisms (such as UDP datagrams). For stream based storage (such as
+files) and transport (such as TCP streams or pipes), Vorbis uses the
+Ogg bitstream format to provide framing/sync, sync recapture
+after error, landmarks during seeking, and enough information to
+properly separate data back into packets at the original packet
+boundaries without relying on decoding to find packet boundaries.</p>
+
+<h2>Design constraints for Ogg bitstreams</h2>
+
+<ol>
+<li>True streaming; we must not need to seek to build a 100%
+  complete bitstream.</li>
+<li>Use no more than approximately 1-2% of bitstream bandwidth for
+  packet boundary marking, high-level framing, sync and seeking.</li>
+<li>Specification of absolute position within the original sample
+  stream.</li>
+<li>Simple mechanism to ease limited editing, such as a simplified
+  concatenation mechanism.</li>
+<li>Detection of corruption, recapture after error and direct, random
+  access to data at arbitrary positions in the bitstream.</li>
+</ol>
+
+<h2>Logical and Physical Bitstreams</h2>
+
+<p>A <em>logical</em> Ogg bitstream is a contiguous stream of
+sequential pages belonging only to the logical bitstream. A
+<em>physical</em> Ogg bitstream is constructed from one or more
+than one logical Ogg bitstream (the simplest physical bitstream
+is simply a single logical bitstream). We describe below the exact
+formatting of an Ogg logical bitstream. Combining logical
+bitstreams into more complex physical bitstreams is described in the
+<a href="oggstream.html">Ogg bitstream overview</a>. The exact
+mapping of raw Vorbis packets into a valid Ogg Vorbis physical
+bitstream is described in the Vorbis I Specification.</p>
+
+<h2>Bitstream structure</h2>
+
+<p>An Ogg stream is structured by dividing incoming packets into
+segments of up to 255 bytes and then wrapping a group of contiguous
+packet segments into a variable length page preceded by a page
+header. Both the header size and page size are variable; the page
+header contains sizing information and checksum data to determine
+header/page size and data integrity.</p>
+
+<p>The bitstream is captured (or recaptured) by looking for the beginning
+of a page, specifically the capture pattern. Once the capture pattern
+is found, the decoder verifies page sync and integrity by computing
+and comparing the checksum. At that point, the decoder can extract the
+packets themselves.</p>
+
+<h3>Packet segmentation</h3>
+
+<p>Packets are logically divided into multiple segments before encoding
+into a page. Note that the segmentation and fragmentation process is a
+logical one; it's used to compute page header values and the original
+page data need not be disturbed, even when a packet spans page
+boundaries.</p>
+
+<p>The raw packet is logically divided into [n] 255 byte segments and a
+last fractional segment of &lt; 255 bytes. A packet size may well
+consist only of the trailing fractional segment, and a fractional
+segment may be zero length. These values, called "lacing values" are
+then saved and placed into the header segment table.</p>
+
+<p>An example should make the basic concept clear:</p>
+
+<pre>
+<tt>
+raw packet:
+  ___________________________________________
+ |______________packet data__________________| 753 bytes
+
+lacing values for page header segment table: 255,255,243
+</tt>
+</pre>
+
+<p>We simply add the lacing values for the total size; the last lacing
+value for a packet is always the value that is less than 255. Note
+that this encoding both avoids imposing a maximum packet size as well
+as imposing minimum overhead on small packets (as opposed to, eg,
+simply using two bytes at the head of every packet and having a max
+packet size of 32k. Small packets (&lt;255, the typical case) are
+penalized with twice the segmentation overhead). Using the lacing
+values as suggested, small packets see the minimum possible
+byte-aligned overhead (1 byte) and large packets, over 512 bytes or
+so, see a fairly constant ~.5% overhead on encoding space.</p>
+
+<p>Note that a lacing value of 255 implies that a second lacing value
+follows in the packet, and a value of &lt; 255 marks the end of the
+packet after that many additional bytes. A packet of 255 bytes (or a
+multiple of 255 bytes) is terminated by a lacing value of 0:</p>
+
+<pre><tt>
+raw packet:
+  _______________________________
+ |________packet data____________|          255 bytes
+
+lacing values: 255, 0
+</tt></pre>
+
+<p>Note also that a 'nil' (zero length) packet is not an error; it
+consists of nothing more than a lacing value of zero in the header.</p>
+
+<h3>Packets spanning pages</h3>
+
+<p>Packets are not restricted to beginning and ending within a page,
+although individual segments are, by definition, required to do so.
+Packets are not restricted to a maximum size, although excessively
+large packets in the data stream are discouraged.</p>
+
+<p>After segmenting a packet, the encoder may decide not to place all the
+resulting segments into the current page; to do so, the encoder places
+the lacing values of the segments it wishes to belong to the current
+page into the current segment table, then finishes the page. The next
+page is begun with the first value in the segment table belonging to
+the next packet segment, thus continuing the packet (data in the
+packet body must also correspond properly to the lacing values in the
+spanned pages. The segment data in the first packet corresponding to
+the lacing values of the first page belong in that page; packet
+segments listed in the segment table of the following page must begin
+the page body of the subsequent page).</p>
+
+<p>The last mechanic to spanning a page boundary is to set the header
+flag in the new page to indicate that the first lacing value in the
+segment table continues rather than begins a packet; a header flag of
+0x01 is set to indicate a continued packet. Although mandatory, it
+is not actually algorithmically necessary; one could inspect the
+preceding segment table to determine if the packet is new or
+continued. Adding the information to the packet_header flag allows a
+simpler design (with no overhead) that needs only inspect the current
+page header after frame capture. This also allows faster error
+recovery in the event that the packet originates in a corrupt
+preceding page, implying that the previous page's segment table
+cannot be trusted.</p>
+
+<p>Note that a packet can span an arbitrary number of pages; the above
+spanning process is repeated for each spanned page boundary. Also a
+'zero termination' on a packet size that is an even multiple of 255
+must appear even if the lacing value appears in the next page as a
+zero-length continuation of the current packet. The header flag
+should be set to 0x01 to indicate that the packet spanned, even though
+the span is a nil case as far as data is concerned.</p>
+
+<p>The encoding looks odd, but is properly optimized for speed and the
+expected case of the majority of packets being between 50 and 200
+bytes (note that it is designed such that packets of wildly different
+sizes can be handled within the model; placing packet size
+restrictions on the encoder would have only slightly simplified design
+in page generation and increased overall encoder complexity).</p>
+
+<p>The main point behind tracking individual packets (and packet
+segments) is to allow more flexible encoding tricks that requiring
+explicit knowledge of packet size. An example is simple bandwidth
+limiting, implemented by simply truncating packets in the nominal case
+if the packet is arranged so that the least sensitive portion of the
+data comes last.</p>
+
+<a name="page_header"></a>
+<h3>Page header</h3>
+
+<p>The headering mechanism is designed to avoid copying and re-assembly
+of the packet data (ie, making the packet segmentation process a
+logical one); the header can be generated directly from incoming
+packet data. The encoder buffers packet data until it finishes a
+complete page at which point it writes the header followed by the
+buffered packet segments.</p>
+
+<h4>capture_pattern</h4>
+
+<p>A header begins with a capture pattern that simplifies identifying
+pages; once the decoder has found the capture pattern it can do a more
+intensive job of verifying that it has in fact found a page boundary
+(as opposed to an inadvertent coincidence in the byte stream).</p>
+
+<pre><tt>
+ byte value
+
+  0  0x4f 'O'
+  1  0x67 'g'
+  2  0x67 'g'
+  3  0x53 'S'  
+</tt></pre>
+
+<h4>stream_structure_version</h4>
+
+<p>The capture pattern is followed by the stream structure revision:</p>
+
+<pre><tt>
+ byte value
+
+  4  0x00
+</tt></pre>
+ 
+<h4>header_type_flag</h4>
+  
+<p>The header type flag identifies this page's context in the bitstream:</p>
+
+<pre><tt>
+ byte value
+
+  5  bitflags: 0x01: unset = fresh packet
+	               set = continued packet
+	       0x02: unset = not first page of logical bitstream
+                       set = first page of logical bitstream (bos)
+	       0x04: unset = not last page of logical bitstream
+                       set = last page of logical bitstream (eos)
+</tt></pre>
+
+<h4>absolute granule position</h4>
+
+<p>(This is packed in the same way the rest of Ogg data is packed; LSb
+of LSB first. Note that the 'position' data specifies a 'sample'
+number (eg, in a CD quality sample is four octets, 16 bits for left
+and 16 bits for right; in video it would likely be the frame number.
+It is up to the specific codec in use to define the semantic meaning
+of the granule position value). The position specified is the total
+samples encoded after including all packets finished on this page
+(packets begun on this page but continuing on to the next page do not
+count). The rationale here is that the position specified in the
+frame header of the last page tells how long the data coded by the
+bitstream is. A truncated stream will still return the proper number
+of samples that can be decoded fully.</p>
+
+<p>A special value of '-1' (in two's complement) indicates that no packets
+finish on this page.</p>
+
+<pre><tt>
+ byte value
+
+  6  0xXX LSB
+  7  0xXX
+  8  0xXX
+  9  0xXX
+ 10  0xXX
+ 11  0xXX
+ 12  0xXX
+ 13  0xXX MSB
+</tt></pre>
+
+<h4>stream serial number</h4>
+ 
+<p>Ogg allows for separate logical bitstreams to be mixed at page
+granularity in a physical bitstream. The most common case would be
+sequential arrangement, but it is possible to interleave pages for
+two separate bitstreams to be decoded concurrently. The serial
+number is the means by which pages physical pages are associated with
+a particular logical stream. Each logical stream must have a unique
+serial number within a physical stream:</p>
+
+<pre><tt>
+ byte value
+
+ 14  0xXX LSB
+ 15  0xXX
+ 16  0xXX
+ 17  0xXX MSB
+</tt></pre>
+
+<h4>page sequence no</h4>
+
+<p>Page counter; lets us know if a page is lost (useful where packets
+span page boundaries).</p>
+
+<pre><tt>
+ byte value
+
+ 18  0xXX LSB
+ 19  0xXX
+ 20  0xXX
+ 21  0xXX MSB
+</tt></pre>
+
+<h4>page checksum</h4>
+     
+<p>32 bit CRC value (direct algorithm, initial val and final XOR = 0,
+generator polynomial=0x04c11db7). The value is computed over the
+entire header (with the CRC field in the header set to zero) and then
+continued over the page. The CRC field is then filled with the
+computed value.</p>
+
+<p>(A thorough discussion of CRC algorithms can be found in <a
+href="http://www.ross.net/crc/download/crc_v3.txt">"A
+Painless Guide to CRC Error Detection Algorithms"</a> by Ross
+Williams <a href="mailto:ross@ross.net">ross@ross.net</a>.)</p>
+
+<pre><tt>
+ byte value
+
+ 22  0xXX LSB
+ 23  0xXX
+ 24  0xXX
+ 25  0xXX MSB
+</tt></pre>
+
+<h4>page_segments</h4>
+
+<p>The number of segment entries to appear in the segment table. The
+maximum number of 255 segments (255 bytes each) sets the maximum
+possible physical page size at 65307 bytes or just under 64kB (thus
+we know that a header corrupted so as destroy sizing/alignment
+information will not cause a runaway bitstream. We'll read in the
+page according to the corrupted size information that's guaranteed to
+be a reasonable size regardless, notice the checksum mismatch, drop
+sync and then look for recapture).</p>
+
+<pre><tt>
+ byte value
+
+ 26 0x00-0xff (0-255)
+</tt></pre>
+
+<h4>segment_table (containing packet lacing values)</h4>
+
+<p>The lacing values for each packet segment physically appearing in
+this page are listed in contiguous order.</p>
+
+<pre><tt>
+ byte value
+
+ 27 0x00-0xff (0-255)
+ [...]
+ n  0x00-0xff (0-255, n=page_segments+26)
+</tt></pre>
+
+<p>Total page size is calculated directly from the known header size and
+lacing values in the segment table. Packet data segments follow
+immediately after the header.</p>
+
+<p>Page headers typically impose a flat .25-.5% space overhead assuming
+nominal ~8k page sizes. The segmentation table needed for exact
+packet recovery in the streaming layer adds approximately .5-1%
+nominal assuming expected encoder behavior in the 44.1kHz, 128kbps
+stereo encodings.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
diff --git a/dist/share/doc/libogg/index.html b/dist/share/doc/libogg/index.html
new file mode 100644
index 0000000..6e02f79
--- /dev/null
+++ b/dist/share/doc/libogg/index.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Documentation</h1>
+
+<h2>Ogg programming documentation</h2>
+
+<ul>
+<li><a href="libogg/index.html">Programming with ogg</a></li>
+</ul>
+
+<h2>Ogg bitstream documentation</h2>
+
+<ul>
+<li><a href="oggstream.html">Ogg bitstream overview</a></li>
+<li><a href="framing.html">Ogg bitstream framing</a></li>
+<li><a href="ogg-multiplex.html">Ogg multi-stream multiplexing</a></li>
+<li><a href="skeleton.html">The Ogg Skeleton Metadata Bitstream</a></li>
+</ul>
+
+<h2>RFC documentation</h2>
+
+<ul>
+<li><a href="rfc3533.txt">rfc3533: The Ogg Encapsulation Format Version 0</a></li>
+<li><a href="rfc5334.txt">rfc5334: Ogg Media Types</a></li>
+</ul>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2010 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
diff --git a/dist/share/doc/libogg/libogg/bitpacking.html b/dist/share/doc/libogg/libogg/bitpacking.html
new file mode 100644
index 0000000..f2e8465
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/bitpacking.html
@@ -0,0 +1,103 @@
+<html>
+
+<head>
+<title>libogg - Bitpacking Functions</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Bitpacking Functions</h1>
+<p>Libogg contains a basic bitpacking library that is useful for manipulating data within a buffer.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.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="oggpack_writeinit.html">oggpack_writeinit</a></td>
+	<td>Initializes a buffer for writing using this bitpacking library.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_writecheck.html">oggpack_writecheck</a></td>
+	<td>Asynchronously checks error status of bitpacker write buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_reset.html">oggpack_reset</a></td>
+	<td>Clears and resets the buffer to the initial position.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_writeclear.html">oggpack_writeclear</a></td>
+	<td>Frees the memory used by the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_readinit.html">oggpack_readinit</a></td>
+	<td>Initializes a buffer for reading using this bitpacking library.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_write.html">oggpack_write</a></td>
+	<td>Writes bytes to the specified location within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_look.html">oggpack_look</a></td>
+	<td>Look at a specified number of bits, <=32, without advancing the location pointer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_look1.html">oggpack_look1</a></td>
+	<td>Looks at one bit without advancing the location pointer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_adv.html">oggpack_adv</a></td>
+	<td>Advances the location pointer by a specified number of bits.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_adv1.html">oggpack_adv1</a></td>
+	<td>Advances the location pointer by one bit.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_read.html">oggpack_read</a></td>
+	<td>Reads a specified number of bits from the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_read1.html">oggpack_read1</a></td>
+	<td>Reads one bit from the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_bytes.html">oggpack_bytes</a></td>
+	<td>Returns the total number of bytes contained within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_bits.html">oggpack_bits</a></td>
+	<td>Returns the total number of bits contained within the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="oggpack_get_buffer.html">oggpack_get_buffer</a></td>
+	<td>Returns a pointer to the buffer encapsulated within the <a href="oggpack_buffer.html">oggpack_buffer</a> struct.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/datastructures.html b/dist/share/doc/libogg/libogg/datastructures.html
new file mode 100644
index 0000000..b46e724
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/datastructures.html
@@ -0,0 +1,59 @@
+<html>
+
+<head>
+<title>libogg - 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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Base Data Structures</h1>
+<p>Libogg uses several data structures to hold data and state information.
+<p>
+All the <b>libogg</b> specific data structures are declared in "ogg/ogg.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="ogg_page.html">ogg_page</a></td>
+	<td>This structure encapsulates data into one ogg bitstream page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_state.html">ogg_stream_state</a></td>
+	<td>This structure contains current encode/decode data for a logical bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_packet.html">ogg_packet</a></td>
+	<td>This structure encapsulates the data and metadata for a single Ogg packet.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_state.html">ogg_sync_state</a></td>
+	<td>Contains bitstream synchronization information.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/decoding.html b/dist/share/doc/libogg/libogg/decoding.html
new file mode 100644
index 0000000..b483ce0
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/decoding.html
@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<title>libogg - 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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Decoding</h1>
+<p>Libogg contains a set of functions used in the decoding process.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>Decoding is based around the ogg synchronization layer.  The <a href="ogg_sync_state.html">ogg_sync_state</a> struct coordinates between incoming data and the decoder.  We read data into the synchronization layer, submit the data to the stream, and output raw packets to the decoder.
+<p>Decoding through the Ogg layer follows a specific logical sequence.  A read loop follows these logical steps:
+<ul>
+<li>Expose a buffer using <a href="ogg_sync_buffer.html">ogg_sync_buffer()</a>.
+<li>Read data into the buffer, using fread() or a similar function.
+<li>Call <a href="ogg_sync_wrote.html">ogg_sync_wrote()</a> to tell the synchronization layer how many bytes you wrote into the buffer.
+<li>Write out the data using <a href="ogg_sync_pageout.html">ogg_sync_pageout</a>.
+<li>Submit the completed page to the streaming layer with <a href="ogg_stream_pagein.html">ogg_stream_pagein</a>.
+<li>Output a packet of data to the codec-specific decoding layer using <a href="ogg_stream_packetout.html">ogg_stream_packetout</a>.
+</ul>
+<p>In practice, streams are more complex, and Ogg also must handle headers, incomplete or dropped pages, and other errors in input.
+<br><br>
+
+<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="ogg_sync_init.html">ogg_sync_init</a></td>
+	<td>Initializes an Ogg bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_clear.html">ogg_sync_clear</a></td>
+	<td>Clears the status information from the synchronization struct.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_reset.html">ogg_sync_reset</a></td>
+	<td>Resets the synchronization status to initial values.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_destroy.html">ogg_sync_destroy</a></td>
+	<td>Frees the synchronization struct.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_check.html">ogg_sync_check</a></td>
+	<td>Check for asynchronous errors.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_buffer.html">ogg_sync_buffer</a></td>
+	<td>Exposes a buffer from the synchronization layer in order to read data.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_wrote.html">ogg_sync_wrote</a></td>
+	<td>Tells the synchronization layer how many bytes were written into the buffer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_pageseek.html">ogg_sync_pageseek</a></td>
+	<td>Finds the borders of pages and resynchronizes the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_sync_pageout.html">ogg_sync_pageout</a></td>
+	<td>Outputs a page from the synchronization layer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pagein.html">ogg_stream_pagein</a></td>
+	<td>Submits a complete page to the stream layer.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_packetout.html">ogg_stream_packetout</a></td>
+	<td>Outputs a packet to the codec-specific decoding engine.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_packetpeek.html">ogg_stream_packetpeek</a></td>
+	<td>Provides access to the next packet in the bitstream without
+advancing decoding.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/encoding.html b/dist/share/doc/libogg/libogg/encoding.html
new file mode 100644
index 0000000..3959cff
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/encoding.html
@@ -0,0 +1,76 @@
+<html>
+
+<head>
+<title>libogg - Encoding</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Encoding</h1>
+<p>Libogg contains a set of functions used in the encoding process.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>When encoding, the encoding engine will output raw packets which must be placed into an Ogg bitstream.
+<p>Raw packets are inserted into the stream, and an <a href="ogg_page.html">ogg_page</a> is output when enough packets have been written to create a full page.  The pages output are pointers to buffered packet segments, and can then be written out and saved as an ogg stream.
+<p>There are a couple of basic steps:
+<ul>
+<li>Use the encoding engine to produce a raw packet of data.
+<li>Call <a href="ogg_stream_packetin.html">ogg_stream_packetin</a> to submit a raw packet to the stream.
+<li>Use <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> to output a page, if enough data has been submitted.  Otherwise, continue submitting data.
+</ul>
+<br><br>
+
+<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="ogg_stream_packetin.html">ogg_stream_packetin</a></td>
+	<td>Submits a raw packet to the streaming layer, so that it can be formed into a page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_iovecin.html">ogg_stream_iovecin</a></td>
+	<td>iovec version of ogg_stream_packetin() above.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pageout.html">ogg_stream_pageout</a></td>
+	<td>Outputs a completed page if the stream contains enough packets to form a full page.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a></td>
+	<td>Similar to ogg_stream_pageout(), but specifies a page spill threshold in bytes.
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_flush.html">ogg_stream_flush</a></td>
+	<td>Forces any remaining packets in the stream to be returned as a page of any size.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill</a></td>
+	<td>Similar to ogg_stream_flush(), but specifies a page spill threshold in bytes.<td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/general.html b/dist/share/doc/libogg/libogg/general.html
new file mode 100644
index 0000000..b73207a
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/general.html
@@ -0,0 +1,109 @@
+<html>
+
+<head>
+<title>libogg - General Functions</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>General Functions</h1>
+<p>Libogg contains several functions which are generally useful when using Ogg streaming, whether encoding or decoding.
+<p>
+All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
+<p>
+<p>These functions can be used to manipulate some of the basic elements of Ogg - streams and pages.  Streams and pages are important during both the encode and decode process.
+<br>
+
+<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="ogg_stream_init.html">ogg_stream_init</a></td>
+	<td>Initializes an Ogg bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_clear.html">ogg_stream_clear</a></td>
+	<td>Clears the storage within the Ogg stream, but does not free the stream itself.<td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_reset.html">ogg_stream_reset</a></td>
+	<td>Resets the stream status to its initial position.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_destroy.html">ogg_stream_destroy</a></td>
+	<td>Frees the entire Ogg stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_check.html">ogg_stream_check</a></td>
+	<td>Check for asyncronous errors.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_stream_eos.html">ogg_stream_eos</a></td>
+	<td>Indicates whether we are at the end of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_version.html">ogg_page_version</a></td>
+	<td>Returns the version of ogg_page that this stream/page uses</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_continued.html">ogg_page_continued</a></td>
+	<td>Indicates if the current page contains a continued packet from the last page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_packets.html">ogg_page_packets</a></td>
+        <td>Indicates the number of packets contained in a page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_bos.html">ogg_page_bos</a></td>
+	<td>Indicates if the current page is the beginning of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_eos.html">ogg_page_eos</a></td>
+	<td>Indicates if the current page is the end of the stream.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_granulepos.html">ogg_page_granulepos</a></td>
+	<td>Returns the precise playback location of this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_serialno.html">ogg_page_serialno</a></td>
+	<td>Returns the unique serial number of the logical bitstream associated with this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_pageno.html">ogg_page_pageno</a></td>
+	<td>Returns the sequential page number for this page.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_packet_clear.html">ogg_packet_clear</a></td>
+        <td>Clears the ogg_packet structure.</td>
+</tr>
+<tr valign=top>
+<td><a href="ogg_page_checksum_set.html">ogg_page_checksum_set</a></td>
+        <td>Checksums an ogg_page.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/index.html b/dist/share/doc/libogg/libogg/index.html
new file mode 100644
index 0000000..7f410f8
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/index.html
@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<title>libogg - 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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Libogg Documentation</h1>
+
+<p>
+Libogg contains necessary functionality to create, decode, and work with Ogg bitstreams.
+<p>This document explains how to use the libogg API in detail.
+<p>
+<a href="overview.html">libogg api overview</a><br>
+<a href="reference.html">libogg api reference</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_iovec_t.html b/dist/share/doc/libogg/libogg/ogg_iovec_t.html
new file mode 100644
index 0000000..3098d96
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_iovec_t.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_iovec_t</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_iovec_t</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_iovec_t struct encapsulates a length-encoded buffer.  An array
+of ogg_iovec_t is used to pass a list of buffers to functions that
+accept data in ogg_iovec_t* form.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  void *iov_base;
+  size_t iov_len;
+} ogg_iovec_t;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>iov_base</i></dt>
+<dd>Pointer to the buffer data.</dd>
+<dt><i>iov_len</i></dt>
+<dd>Length of buffer data in bytes.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_packet.html b/dist/share/doc/libogg/libogg/ogg_packet.html
new file mode 100644
index 0000000..c8b1b35
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_packet.html
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_packet</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_packet</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_packet struct encapsulates the data for a single raw packet of data
+and is used to transfer data between the ogg framing layer and the handling codec.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *packet;
+  long  bytes;
+  long  b_o_s;
+  long  e_o_s;
+
+  ogg_int64_t  granulepos;
+  ogg_int64_t  packetno; 
+
+} ogg_packet;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>packet</i></dt>
+<dd>Pointer to the packet's data. This is treated as an opaque type by the ogg layer.</dd>
+<dt><i>bytes</i></dt>
+<dd>Indicates the size of the packet data in bytes.  Packets can be of arbitrary size.</dd>
+<dt><i>b_o_s</i></dt>
+<dd>Flag indicating whether this packet begins a logical bitstream.  <tt>1</tt> indicates this is the first packet, <tt>0</tt> indicates any other position in the stream.</dd>
+<dt><i>e_o_s</i></dt>
+<dd>Flag indicating whether this packet ends a bitstream.  <tt>1</tt> indicates the last packet, <tt>0</tt> indicates any other position in the stream.</dd>
+<dt><i>granulepos</i></dt>
+<dd>A number indicating the position of this packet in the decoded data. This is the last sample, frame or other unit of information ('granule') that can be completely decoded from this packet.</dd>
+<dt><i>packetno</i></dt>
+<dd>Sequential number of this packet in the ogg bitstream.<dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_packet_clear.html b/dist/share/doc/libogg/libogg/ogg_packet_clear.html
new file mode 100644
index 0000000..334769e
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_packet_clear.html
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_packet_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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_packet_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function clears the memory used by the <a href="ogg_packet.html">ogg_packet</a> struct,
+but does not free the structure itself.
+It unconditionally frees the <i>packet</i> data buffer,
+then it zeros all structure members.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void ogg_packet_clear(ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>op</i></dt>
+<dd>Pointer to the ogg_packet struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+None.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page.html b/dist/share/doc/libogg/libogg/ogg_page.html
new file mode 100644
index 0000000..9cd4c62
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page.html
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_page</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_page struct encapsulates the data for an Ogg page.
+<p>
+Ogg pages are the fundamental unit of framing and interleave in an ogg bitstream.
+They are made up of packet segments of 255 bytes each. There can be as many as
+255 packet segments per page, for a maximum page size of a little under 64 kB.
+This is not a practical limitation as the segments can be joined across
+page boundaries allowing packets of arbitrary size. In practice many
+applications will not completely fill all pages because they flush the
+accumulated packets periodically order to bound latency more tightly. 
+<p>
+<p>For a complete description of ogg pages and headers, please refer to the <a href="../framing.html">framing document</a>.
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *header;
+  long           header_len;
+  unsigned char *body;
+  long           body_len;
+} ogg_page;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>header</i></dt>
+<dd>Pointer to the page header for this page.  The exact contents of this header are defined in the framing spec document.</dd>
+<dt><i>header_len</i></dt>
+<dd>Length of the page header in bytes.</a>
+<dt><i>body</i></dt>
+<dd>Pointer to the data for this page.</dd>
+<dt><i>body_len</i></dt>
+<dd>Length of the body data in bytes.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_bos.html b/dist/share/doc/libogg/libogg/ogg_page_bos.html
new file mode 100644
index 0000000..b09cd01
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_bos.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_bos</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_bos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page is at the beginning of the logical bitstream.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_bos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+greater than 0 if this page is the beginning of a bitstream.</li>
+<li>
+0 if this page is from any other location in the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_checksum_set.html b/dist/share/doc/libogg/libogg/ogg_page_checksum_set.html
new file mode 100644
index 0000000..7668eb0
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_checksum_set.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_checksum_set</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_checksum_set</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Checksums an ogg_page.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_checksum_set(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to an ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+None.
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_continued.html b/dist/share/doc/libogg/libogg/ogg_page_continued.html
new file mode 100644
index 0000000..9445e3c
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_continued.html
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_version</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_continued</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page contains packet data which has been continued from the previous page.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_continued(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+1 if this page contains packet data continued from the last page.</li>
+<li>
+0 if this page does not contain continued data.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_eos.html b/dist/share/doc/libogg/libogg/ogg_page_eos.html
new file mode 100644
index 0000000..b3d0c76
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_eos.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_eos</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_eos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Indicates whether this page is at the end of the logical bitstream.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_eos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+greater than zero if this page contains the end of a bitstream.</li>
+<li>
+0 if this page is from any other location in the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_granulepos.html b/dist/share/doc/libogg/libogg/ogg_page_granulepos.html
new file mode 100644
index 0000000..22fef0c
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_granulepos.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_granulepos</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_granulepos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the exact granular position of the packet data contained at the end of this page.
+<p>This is useful for tracking location when seeking or decoding.
+<p>For example, in audio codecs this position is the pcm sample number and in video this is the frame number.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_in64_t ogg_page_granulepos(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the specific last granular position of the decoded data contained in the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_packets.html b/dist/share/doc/libogg/libogg/ogg_page_packets.html
new file mode 100644
index 0000000..a266557
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_packets.html
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_packets</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_packets</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the number of packets that are completed on this page.  If the
+leading packet is begun on a previous page, but ends on this page, it's 
+counted.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_packets(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+If a page consists of a packet begun on a previous page, and a new packet
+begun (but not completed) on this page, the return will be:<br>
+<br>
+ogg_page_packets(page) will return 1,<br>
+ogg_page_continued(paged) will return non-zero.<br>
+<br><br>
+If a page happens to be a single packet that was begun on a previous page, and
+spans to the next page (in the case of a three or more page packet), the
+return will be:<br>
+<br>
+ogg_page_packets(page) will return 0,<br>
+ogg_page_continued(page) will return non-zero.<br>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_pageno.html b/dist/share/doc/libogg/libogg/ogg_page_pageno.html
new file mode 100644
index 0000000..8da2517
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_pageno.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_pageno</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_pageno</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the sequential page number.
+<p>This is useful for ordering pages or determining when pages have been lost.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ogg_page_pageno(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the page number for this page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_serialno.html b/dist/share/doc/libogg/libogg/ogg_page_serialno.html
new file mode 100644
index 0000000..b06cf40
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_serialno.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_serialno</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_serialno</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>Returns the unique serial number for the logical bitstream of this page.  Each page contains the serial number for the logical bitstream that it belongs to.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_serialno(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the serial number for this page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_page_version.html b/dist/share/doc/libogg/libogg/ogg_page_version.html
new file mode 100644
index 0000000..d17f763
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_page_version.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_page_version</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_page_version</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the version of ogg_page used in this page.
+<p>In current versions of libogg, all ogg_page structs have the same version, so 0 should always be returned.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_page_version(ogg_page *og);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>og</i></dt>
+<dd>Pointer to the current ogg_page struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the version number.  In the current version of Ogg, the version number is always 0.  Nonzero return values indicate an error in page encoding.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_check.html b/dist/share/doc/libogg/libogg/ogg_stream_check.html
new file mode 100644
index 0000000..400a8e5
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_check.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_check</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_stream_state.html">ogg_stream_state</a> structure.  
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_stream_state.html">ogg_stream_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_stream_clear.html">ogg_stream_clear</a>) and subsequent calls
+using this <a href="ogg_stream_state.html">ogg_stream_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_stream_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_check(<a href="ogg_stream_state.html">ogg_stream_state</a> *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_stream_state.html">ogg_stream_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_clear.html b/dist/share/doc/libogg/libogg/ogg_stream_clear.html
new file mode 100644
index 0000000..27c7b07
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_clear.html
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function clears and frees the internal memory used by the <a href="ogg_sync_state.html">ogg_stream_state</a> struct, but does not free the structure itself. It is safe to call ogg_stream_clear on the same structure more than once.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_clear(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_destroy.html b/dist/share/doc/libogg/libogg/ogg_stream_destroy.html
new file mode 100644
index 0000000..3f69823
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_destroy.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_destroy</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_destroy</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function frees the internal memory used by
+the <a href="ogg_stream_state.html">ogg_stream_state</a> struct as
+well as the structure itself.
+
+<p>This should be called when you are done working with an ogg stream.
+It can also be called to make sure that the struct does not exist.</p>
+
+<p>It calls free() on its argument, so if the ogg_stream_state 
+is not malloc()'d or will otherwise be freed by your own code, use 
+<a href="ogg_stream_clear.html">ogg_stream_clear</a> instead.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_destroy(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be destroyed.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_eos.html b/dist/share/doc/libogg/libogg/ogg_stream_eos.html
new file mode 100644
index 0000000..cd398ea
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_eos.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_eos</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_eos</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function indicates whether we have reached the end of the stream or not.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_eos(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the current ogg_stream_state struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>1 if we are at the end of the stream or an internal error occurred.</li>
+<li>
+0 if we have not yet reached the end of the stream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_flush.html b/dist/share/doc/libogg/libogg/ogg_stream_flush.html
new file mode 100644
index 0000000..6bee4fd
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_flush.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_flush</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_flush</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function checks for remaining packets inside the stream and forces remaining packets into a page, regardless of the size of the page.
+<p>This should only be used when you want to flush an undersized page from the middle of the stream.  Otherwise, <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> or <a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a> should always be used.
+<p>This function can also be used to verify that all packets have been flushed.  If the return value is 0, all packets have been placed into a page. Like <a href="ogg_stream_pageout.html">ogg_stream_pageout</a>, it should generally be called in a loop until available packet data has been flushes, since even a single packet may span multiple pages.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_flush(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The remaining packets in the stream will be placed into this page, if any remain.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 means that all packet data has already been flushed into pages, and there are no packets to put into the page.  0 is also returned in the case of an <a href="ogg_stream_state.html">ogg_stream_state</a> that has been cleared explicitly or implicitly due to an internal error.</li>
+<li>
+Nonzero means that remaining packets have successfully been flushed into the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_flush_fill.html b/dist/share/doc/libogg/libogg/ogg_stream_flush_fill.html
new file mode 100644
index 0000000..583c815
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_flush_fill.html
@@ -0,0 +1,74 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_flush_fill</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_flush_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function flushes available packets into pages, similar to
+<a href="ogg_stream_flush.html">ogg_stream_flush()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>This function checks for remaining packets inside the stream and forces remaining packets into pages of approximately the requested size.
+This should be used when you want to flush all remaining data from a stream. <a href="ogg_stream_flush.html">ogg_stream_flush</a> may be used instead if a particular page size isn't important. 
+<p>This function can be used to verify that all packets have been flushed.  If the return value is 0, all packets have been placed into a page. Generally speaking, it should be called in a loop until all packets are flushed, since even a single packet may span multiple pages.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_flush_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The remaining packets in the stream will be placed into this page, if any remain.
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 means that all packet data has already been flushed into pages, and there are no packets to put into the page.  0 is also returned in the case of an <a href="ogg_stream_state.html">ogg_stream_state</a> that has been cleared explicitly or implicitly due to an internal error.</li>
+<li>
+Nonzero means that remaining packets have successfully been flushed into the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_init.html b/dist/share/doc/libogg/libogg/ogg_stream_init.html
new file mode 100644
index 0000000..aa53ed2
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_init.html
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_init</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_init</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to initialize an <a href="ogg_sync_state.html">ogg_stream_state</a> struct and allocates appropriate memory in preparation for encoding or decoding.
+<p>It also assigns the stream a given serial number.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_init(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,int serialno);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct that we will be initializing.</dd>
+<dt><i>serialno</i></dt>
+<dd>Serial number that we will attach to this stream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 if successful</li>
+<li>
+-1 if unsuccessful.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_iovecin.html b/dist/share/doc/libogg/libogg/ogg_stream_iovecin.html
new file mode 100644
index 0000000..c0f2327
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_iovecin.html
@@ -0,0 +1,80 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_iovecin</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_iovecin</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function submits packet data (in the form of
+an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>, rather than using
+an <a href="ogg_packet.html">ogg_packet</a> structure) to the
+bitstream for page encapsulation. After this is called, more packets
+can be submitted, or pages can be written out.</p>
+
+<p>In a typical encoding situation, this should be used after filling a 
+packet with data.
+The data in the packet is copied into the internal storage managed by 
+the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
+is free to alter the contents of <i>os</i> after this call has returned.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count, long e_o_s, ogg_int64_t granulepos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+<dt><i>iov</i></dt>
+<dd>Length-encoded buffers held in an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>.
+<dt><i>count</i></dt>
+<dd>Length of the iov array.
+<dt><i>e_o_s</i></dt>
+<dd>End of stream flag, analagous to the e_o_s field in an <a href="ogg_packet.html">ogg_packet</a>.
+<dt><i>granulepos</i></dt>
+<dd>Granule position value, analagous to the granpos field in an <a href="ogg_packet.html">ogg_packet</a>.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 returned on success.  -1 returned in the event of internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_packetin.html b/dist/share/doc/libogg/libogg/ogg_stream_packetin.html
new file mode 100644
index 0000000..fec413e
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_packetin.html
@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetin</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetin</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function submits a packet to the bitstream for page 
+encapsulation. After this is called, more packets can be submitted,
+or pages can be written out.</p>
+
+<p>In a typical encoding situation, this should be used after filling a 
+packet with data.
+The data in the packet is copied into the internal storage managed by 
+the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
+is free to alter the contents of <i>op</i> after this call has returned.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the packet we are putting into the bitstream.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 returned on success.  -1 returned in the event of internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_packetout.html b/dist/share/doc/libogg/libogg/ogg_stream_packetout.html
new file mode 100644
index 0000000..66c0805
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_packetout.html
@@ -0,0 +1,85 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetout</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function assembles a data packet for output to the codec 
+decoding engine. The data has already been submitted to the
+<a href="ogg_stream_state.html">ogg_stream_state</a> and broken
+into segments. Each successive call returns the next complete packet 
+built from those segments.</p>
+
+<p>In a typical decoding situation, this should be used after calling 
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to submit a 
+page of data to the bitstream. If the function returns 0, more data is 
+needed and another page should be submitted. A non-zero return value 
+indicates successful return of a packet.</p>
+
+<p>The <i>op</i> is filled in with pointers to memory managed by
+the stream state and is only valid until the next call. The client
+must copy the packet data if a longer lifetime is required.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a
+href="ogg_stream_state.html">ogg_stream_state</a> struct.  Before this function is called, an <a href="ogg_page.html">ogg_page</a> should be submitted to the stream using <a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the packet to be filled in with pointers to the new data. 
+This will typically be submitted to a codec for decode after this 
+function is called. The pointers are only valid until the next call
+on this stream state.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>-1 if we are out of sync and there is a gap in the data. This is usually a recoverable error and subsequent calls to ogg_stream_packetout are likely to succeed. <i>op</i> has not been updated.</li>
+<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred. <i>op</i> has not been updated.
+<li>1 if a packet was assembled normally. <i>op</i> contains the next packet from the stream.</li>
+</ul>
+</blockquote>
+
+<br><br>
+
+<hr noshade>
+
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_packetpeek.html b/dist/share/doc/libogg/libogg/ogg_stream_packetpeek.html
new file mode 100644
index 0000000..6a361a6
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_packetpeek.html
@@ -0,0 +1,85 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_packetpeek</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_packetpeek</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function attempts to assemble a raw data packet and returns
+it without advancing decoding.</p>
+
+<p>In a typical situation, this would be called
+speculatively after <a
+href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to check
+the packet contents before handing it off to a codec for 
+decompression. To advance page decoding and remove
+the packet from the sync structure, call 
+<a href="ogg_stream_packetout.html">ogg_stream_packetout()</a>.</p>
+
+<br><br>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared 
+<a href="ogg_stream_state.html">ogg_stream_state</a> struct.  Before this
+function is called, an <a href="ogg_page.html">ogg_page</a> should be
+submitted to the stream using 
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
+<dt><i>op</i></dt>
+<dd>Pointer to the next packet available in the bitstream, if
+any. A NULL value may be passed in the case of a simple "is there a 
+packet?" check.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>-1 if there's no packet available due to lost sync or a hole in the data.</li>
+<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred.</li>
+<li>1 if a packet is available.</li>
+</ul>
+</blockquote>
+
+
+<br><br>
+
+<hr noshade>
+
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_pagein.html b/dist/share/doc/libogg/libogg/ogg_stream_pagein.html
new file mode 100644
index 0000000..f32c7fd
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_pagein.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pagein</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pagein</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function adds a complete page to the bitstream.  
+ <p>In a typical decoding situation, this function would be called after using <a href="ogg_sync_pageout.html">ogg_sync_pageout</a> to create a valid <a href="ogg_page.html">ogg_page</a> struct.
+<p>Internally, this function breaks the page into packet segments in preparation for outputting a valid packet to the codec decoding layer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pagein(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data.  The data inside this page is being submitted to the streaming layer in order to be allocated into packets.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 indicates failure.  This means that the serial number of the page did not match the serial number of the bitstream, the page version was incorrect, or an internal error accurred.</li>
+<li>
+0 means that the page was successfully submitted to the bitstream.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_pageout.html b/dist/share/doc/libogg/libogg/ogg_stream_pageout.html
new file mode 100644
index 0000000..a4e165c
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_pageout.html
@@ -0,0 +1,84 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pageout</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pageout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function forms packets into pages.</p>
+
+<p>In a typical encoding situation, this would be called after using <a 
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit 
+data packets to the bitstream. Internally, this function assembles 
+the accumulated packet bodies into an Ogg page suitable for writing 
+to a stream. The function is typically called in a loop until there
+are no more pages ready for output.</p>
+
+<p>This function will only return a page when a "reasonable" amount of 
+packet data is available. Normally this is appropriate since it 
+limits the overhead of the Ogg page headers in the bitstream, and so
+calling ogg_stream_pageout() after ogg_stream_packetin() should be the 
+common case. Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a> 
+if immediate page generation is desired. This may be occasionally 
+necessary, for example, to limit the temporal latency of a variable 
+bitrate stream.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pageout(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
+in. Data pointed to is owned by libogg. The structure is valid until the 
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or 
+ogg_stream_flush().</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In 
+this case <i>og</i> is not modified.</li>
+<li>Non-zero means that a page has been completed and returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_pageout_fill.html b/dist/share/doc/libogg/libogg/ogg_stream_pageout_fill.html
new file mode 100644
index 0000000..7ea945d
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_pageout_fill.html
@@ -0,0 +1,89 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pageout_fill</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pageout_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function forms packets into pages, similar
+to <a href="ogg_stream_pageout.html">ogg_stream_pageout()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>In a typical encoding situation, this would be called after using <a 
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit 
+data packets to the bitstream. Internally, this function assembles 
+the accumulated packet bodies into an Ogg page suitable for writing 
+to a stream. The function is typically called in a loop until there
+are no more pages ready for output.</p>
+
+<p>This function will return a page when at least four packets have
+been accumulated and accumulated packet data meets or exceeds the
+specified number of bytes, <b>and/or</b> when the accumulated packet
+data meets/exceeds the maximum page size regardless of accumulated
+packet count.
+Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a> or
+<a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill()</a> if
+immediate page generation is desired regardless of accumulated data.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_pageout_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
+in. Data pointed to is owned by libogg. The structure is valid until the 
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or 
+ogg_stream_flush().</dd>
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In 
+this case <i>og</i> is not modified.</li>
+<li>Non-zero means that a page has been completed and returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_reset.html b/dist/share/doc/libogg/libogg/ogg_stream_reset.html
new file mode 100644
index 0000000..f312368
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_reset.html
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_reset</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function sets values in the <a href="ogg_stream_state.html">ogg_stream_state</a> struct back to initial values.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_reset(ogg_stream_state *os);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates success. nonzero is returned on internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_reset_serialno.html b/dist/share/doc/libogg/libogg/ogg_stream_reset_serialno.html
new file mode 100644
index 0000000..274bce9
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_reset_serialno.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_reset_serialno</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function reinitializes the values in the 
+<a href="ogg_stream_state.html">ogg_stream_state</a>,
+just like <a href="ogg_stream_reset.html">ogg_stream_reset()</a>.
+Additionally, it sets the stream serial number to the given value.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+<dt><i>serialno</i></dt>
+<dd>New stream serial number to use</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 indicates success. nonzero is returned on internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_stream_state.html b/dist/share/doc/libogg/libogg/ogg_stream_state.html
new file mode 100644
index 0000000..6f4c622
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_stream_state.html
@@ -0,0 +1,121 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_stream_state</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_state</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_stream_state struct tracks the current encode/decode state of the current logical bitstream.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char   *body_data;    /* bytes from packet bodies */
+  long    body_storage;          /* storage elements allocated */
+  long    body_fill;             /* elements stored; fill mark */
+  long    body_returned;         /* elements of fill returned */
+
+
+  int     *lacing_vals;    /* The values that will go to the segment table */
+  ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact
+                             this way, but it is simple coupled to the
+                             lacing fifo */
+  long    lacing_storage;
+  long    lacing_fill;
+  long    lacing_packet;
+  long    lacing_returned;
+
+  unsigned char    header[282];      /* working space for header encode */
+  int              header_fill;
+
+  int     e_o_s;          /* set when we have buffered the last packet in the
+                             logical bitstream */
+  int     b_o_s;          /* set after we've written the initial page
+                             of a logical bitstream */
+  long     serialno;
+  int      pageno;
+  ogg_int64_t  packetno;      /* sequence number for decode; the framing
+                             knows where there's a hole in the data,
+                             but we need coupling so that the codec
+                             (which is in a seperate abstraction
+                             layer) also knows about the gap */
+  ogg_int64_t   granulepos;
+
+} ogg_stream_state;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>body_data</i></dt>
+<dd>Pointer to data from packet bodies.</dd>
+<dt><i>body_storage</i></dt>
+<dd>Storage allocated for bodies in bytes (filled or unfilled).</dd>
+<dt><i>body_fill</i></dt>
+<dd>Amount of storage filled with stored packet bodies.</dd>
+<dt><i>body_returned</i></dt>
+<dd>Number of elements returned from storage.</dd>
+<dt><i>lacing_vals</i></dt>
+<dd>String of lacing values for the packet segments within the current page.  Each value is a byte, indicating packet segment length.</dd>
+<dt><i>granule_vals</i></dt>
+<dd>Pointer to the lacing values for the packet segments within the current page.</dd>
+<dt><i>lacing_storage</i></dt>
+<dd>Total amount of storage (in bytes) allocated for storing lacing values.</dd>
+<dt><i>lacing_fill</i></dt>
+<dd>Fill marker for the current vs. total allocated storage of lacing values for the page.</dd>
+<dt><i>lacing_packet</i></dt>
+<dd>Lacing value for current packet segment.</dd>
+<dt><i>lacing_returned</i></dt>
+<dd>Number of lacing values returned from lacing_storage.</dd>
+<dt><i>header</i></dt>
+<dd>Temporary storage for page header during encode process, while the header is being created.</dd>
+<dt><i>header_fill</i></dt>
+<dd>Fill marker for header storage allocation.  Used during the header creation process.</dd>
+<dt><i>e_o_s</i></dt>
+<dd>Marker set when the last packet of the logical bitstream has been buffered.</dd>
+<dt><i>b_o_s</i></dt>
+<dd>Marker set after we have written the first page in the logical bitstream.</dd>
+<dt><i>serialno</i></dt>
+<dd>Serial number of this logical bitstream.</dd>
+<dt><i>pageno</i></dt>
+<dd>Number of the current page within the stream.</dd>
+<dt><i>packetno</i></dt>
+<dd>Number of the current packet.</dd>
+<dt><i>granulepos</i></dt>
+<dd>Exact position of decoding/encoding process.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_buffer.html b/dist/share/doc/libogg/libogg/ogg_sync_buffer.html
new file mode 100644
index 0000000..46ab6ba
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_buffer.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_buffer</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to provide a properly-sized buffer for writing.
+<p>Buffer space which has already been returned is cleared, and the buffer is extended as necessary by the size plus some additional bytes.  Within the current implementation, an extra 4096 bytes are allocated, but applications should not rely on this additional buffer space.
+<p>The buffer exposed by this function is empty internal storage from the <a href="ogg_sync_state.html">ogg_sync_state</a> struct, beginning at the fill mark within the struct.
+<p>A pointer to this buffer is returned to be used by the calling application.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+char *ogg_sync_buffer(ogg_sync_state *oy, long size);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>size</i></dt>
+<dd>Size of the desired buffer.  The actual size of the buffer returned will be this size plus some extra bytes (currently 4096).
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+Returns a pointer to the newly allocated buffer or NULL on error</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_check.html b/dist/share/doc/libogg/libogg/ogg_sync_check.html
new file mode 100644
index 0000000..5914875
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_check.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_check</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_sync_state.html">ogg_sync_state</a> structure.  
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_sync_state.html">ogg_sync_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_sync_clear.html">ogg_sync_clear</a>) and subsequent calls
+using this <a href="ogg_sync_state.html">ogg_sync_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_sync_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_check(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_sync_state.html">ogg_sync_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_clear.html b/dist/share/doc/libogg/libogg/ogg_sync_clear.html
new file mode 100644
index 0000000..b1afbf1
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_clear.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_clear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to free the internal storage of an <a href="ogg_sync_state.html">ogg_sync_state</a> struct and resets the struct to the initial state.  To free the entire struct, <a href="ogg_sync_destroy.html">ogg_sync_destroy</a> should be used instead.  In situations where the struct needs to be reset but the internal storage does not need to be freed, <a href="ogg_sync_reset.html">ogg_sync_reset</a> should be used.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_clear(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_destroy.html b/dist/share/doc/libogg/libogg/ogg_sync_destroy.html
new file mode 100644
index 0000000..03c9f91
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_destroy.html
@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_destroy</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_destroy</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to destroy an <a href="ogg_sync_state.html">ogg_sync_state</a> struct and free all memory used.</p>
+
+<p>Note this calls free() on its argument so you should only use this 
+function if you've allocated the ogg_sync_state on the heap. If it is 
+allocated on the stack, or it will otherwise be freed by your 
+own code, use <a href="ogg_sync_clear.html">ogg_sync_clear</a> instead
+to release just the internal memory.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_destroy(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_init.html b/dist/share/doc/libogg/libogg/ogg_sync_init.html
new file mode 100644
index 0000000..6cbcd3f
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_init.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_init</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_init</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to initialize an <a href="ogg_sync_state.html">ogg_sync_state</a> struct to a known initial value in preparation for manipulation of an Ogg bitstream.
+<p>The ogg_sync struct is important when decoding, as it synchronizes retrieval and return of data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_init(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.  After this function call, this struct has been initialized.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_pageout.html b/dist/share/doc/libogg/libogg/ogg_sync_pageout.html
new file mode 100644
index 0000000..615d105
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_pageout.html
@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_pageout</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_pageout</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function takes the data stored in the buffer of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct and inserts them into an <a href="ogg_page.html">ogg_page</a>.
+
+<p>In an actual decoding loop, this function should be called first to ensure that the buffer is cleared.  The example code below illustrates a clean reading loop which will fill and output pages.
+<p><b>Caution:</b>This function should be called before reading into the buffer to ensure that data does not remain in the ogg_sync_state struct.  Failing to do so may result in a memory leak.  See the example code below for details.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_pageout(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.  Normally, the internal storage of this struct should be filled with newly read data and verified using <a href="ogg_sync_wrote.html">ogg_sync_wrote</a>.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to page struct filled by this function.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 returned if stream has not yet captured sync (bytes were skipped).</li>
+<li>0 returned if more data needed or an internal error occurred.</li>
+<li>1 indicated a page was synced and returned.</li>
+</blockquote>
+<p>
+
+<h3>Example Usage</h3>
+<pre>
+if (ogg_sync_pageout(&oy, &og) != 1) {
+	buffer = ogg_sync_buffer(&oy, 8192);
+	bytes = fread(buffer, 1, 8192, stdin);
+	ogg_sync_wrote(&oy, bytes);
+}
+</pre>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_pageseek.html b/dist/share/doc/libogg/libogg/ogg_sync_pageseek.html
new file mode 100644
index 0000000..ee8bbb0
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_pageseek.html
@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_pageseek</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_pageseek</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function synchronizes the ogg_sync_state struct to the next ogg_page.  
+ <p>This is useful when seeking within a bitstream.  ogg_sync_pageseek will synchronize to the next page in the bitstream and return information about how many bytes we advanced or skipped in order to do so.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_pageseek(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a href="ogg_page.html">ogg_page</a> *og);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page (or an incomplete page) of data.  This is the page we are attempting to sync.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-n means that we skipped n bytes within the bitstream.</li>
+<li>
+0 means that the page isn't ready and we need more data, or than an internal error occurred.  No bytes have been skipped.</li>
+<li>
+n means that the page was synced at the current location, with a page length of n bytes.
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_reset.html b/dist/share/doc/libogg/libogg/ogg_sync_reset.html
new file mode 100644
index 0000000..f3c2c3f
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_reset.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_reset</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to reset the internal counters of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct to initial values.
+<p>It is a good idea to call this before seeking within a bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_reset(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is always returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_state.html b/dist/share/doc/libogg/libogg/ogg_sync_state.html
new file mode 100644
index 0000000..32e62bf
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_state.html
@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_sync_state</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_state</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_sync_state struct tracks the synchronization of the current page.
+<p>It is used during decoding to track the status of data as it is read in, synchronized, verified, and parsed into pages belonging to the various logical bistreams in the current physical bitstream link. 
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  unsigned char *data;
+  int storage;
+  int fill;
+  int returned;
+
+  int unsynced;
+  int headerbytes;
+  int bodybytes;
+} ogg_sync_state;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>data</i></dt>
+<dd>Pointer to buffered stream data.</dd>
+<dt><i>storage</i></dt>
+<dd>Current allocated size of the stream buffer held in <tt>*data</tt>.</dd>
+<dt><i>fill</i></dt>
+<dd>The number of valid bytes currently held in <tt>*data</tt>; functions as the buffer head pointer.</dd>
+<dt><i>returned</i></dt>
+<dd>The number of bytes at the head of <tt>*data</tt> that have already been returned as pages; functions as the buffer tail pointer.</dd>
+<dt><i>unsynced</i></dt>
+<dd>Synchronization state flag; nonzero if sync has not yet been attained or has been lost.</dd>
+<dt><i>headerbytes</i></dt>
+<dd>If synced, the number of bytes used by the synced page's header.</dd>
+<dt><i>bodybytes</i></dt>
+<dd>If synced, the number of bytes used by the synced page's body.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/ogg_sync_wrote.html b/dist/share/doc/libogg/libogg/ogg_sync_wrote.html
new file mode 100644
index 0000000..3b53e9c
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/ogg_sync_wrote.html
@@ -0,0 +1,73 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_wrote</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_wrote</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to tell the <a href="ogg_sync_state.html">ogg_sync_state</a> struct how many bytes we wrote into the buffer. 
+
+<p>
+The general proceedure is to request a pointer into an internal 
+<a href="ogg_sync_state.html">ogg_sync_state</a> buffer by calling 
+<a href="ogg_sync_buffer.html">ogg_sync_buffer()</a>. The buffer
+is then filled up to the requested size with new input, and 
+ogg_sync_wrote() is called to advance the fill pointer by however
+much data was actually available.</p>
+
+<br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ogg_sync_wrote(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, long bytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+<dt><i>bytes</i></dt>
+<dd>Number of bytes of new data written.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>-1 if the number of bytes written overflows the internal storage of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct or an internal error occurred.
+<li>
+0 in all other cases.</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_adv.html b/dist/share/doc/libogg/libogg/oggpack_adv.html
new file mode 100644
index 0000000..08e2c77
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_adv.html
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_adv</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_adv</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function advances the location pointer by the specified number of bits without reading any data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_adv(oggpack_buffer *b,int bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current oggpack_buffer.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to advance.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_adv1.html b/dist/share/doc/libogg/libogg/oggpack_adv1.html
new file mode 100644
index 0000000..3f9d741
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_adv1.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_adv1</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_adv1</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function advances the location pointer by one bit without reading any data.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_adv1(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current oggpack_buffer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>No values are returned.
+</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_bits.html b/dist/share/doc/libogg/libogg/oggpack_bits.html
new file mode 100644
index 0000000..519f6a1
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_bits.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_bits</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_bits</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the total number of bits currently in the <a href="oggpack_buffer.html">oggpack_buffer</a>'s internal buffer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long oggpack_bits(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd><a href="oggpack_buffer.html">oggpack_buffer</a> struct to be .</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the total number of bits within the current buffer.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_buffer.html b/dist/share/doc/libogg/libogg/oggpack_buffer.html
new file mode 100644
index 0000000..021d9a9
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_buffer.html
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - datatype - oggpack_buffer</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The oggpack_buffer struct is used with libogg's bitpacking functions.  You should never need to directly access anything in this structure.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+typedef struct {
+  long endbyte;
+  int  endbit;
+
+  unsigned char *buffer;
+  unsigned char *ptr;
+  long storage;
+} oggpack_buffer;
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>buffer</i></dt>
+<dd>Pointer to data being manipulated.</dd>
+<dt><i>ptr</i></dt>
+<dd>Location pointer to mark which data has been read.</dd>
+<dt><i>storage</i></dt>
+<dd>Size of buffer.</i></dt>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_bytes.html b/dist/share/doc/libogg/libogg/oggpack_bytes.html
new file mode 100644
index 0000000..8400d90
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_bytes.html
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_bytes</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_bytes</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns the total number of bytes behind the current 
+access point in the <a href="oggpack_buffer.html">oggpack_buffer</a>. 
+For write-initialized buffers, this is the number of complete bytes 
+written so far. For read-initialized buffers, it is the number of 
+complete bytes that have been read so far.
+<p>The return value is the number of <b>complete</b> bytes in the buffer.
+There may be extra (<8) bits.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long oggpack_bytes(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd><a href="oggpack_buffer.html">oggpack_buffer</a> struct to be checked.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the total number of bytes within the current buffer.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_get_buffer.html b/dist/share/doc/libogg/libogg/oggpack_get_buffer.html
new file mode 100644
index 0000000..b88559b
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_get_buffer.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_get_buffer</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_get_buffer</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function returns a pointer to the data buffer within the given <a href="oggpack_buffer.html">oggpack_buffer</a> struct.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+unsigned char *oggpack_get_buffer(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to the current <a href="oggpack_buffer.html">oggpack_buffer</a>.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_look.html b/dist/share/doc/libogg/libogg/oggpack_look.html
new file mode 100644
index 0000000..0fbbb4f
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_look.html
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_look</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_look</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function looks at a specified number of bits inside the buffer without advancing the location pointer.
+<p>The specified number of bits are read, starting from the location pointer.
+<p>This function can be used to read 32 or fewer bits.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long  oggpack_look(<a href="oggpack_buffer.html">oggpack_buffer</a> *b,int bits);
+</b></pre>
+</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to <a href="oggpack_buffer.html">oggpack_buffer</a> to be read.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to look at.  For this function, must be 32 or fewer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> represents the requested bits.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_look1.html b/dist/share/doc/libogg/libogg/oggpack_look1.html
new file mode 100644
index 0000000..c4792ec
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_look1.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_look1</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_look1</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function looks at the next bit without advancing the location pointer.
+<p>The next bit is read starting from the location pointer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long  oggpack_look1(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to an <a href="oggpack_buffer.html">oggpack_buffer</a> struct containing our buffer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> represents the value of the next bit after the location pointer.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_read.html b/dist/share/doc/libogg/libogg/oggpack_read.html
new file mode 100644
index 0000000..a20d54d
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_read.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_read</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function reads the requested number of bits from the buffer and advances the location pointer.
+<p>Before reading, the buffer should be initialized using <a href="oggpack_readinit.html">oggpack_readinit</a>.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long oggpack_read(oggpack_buffer *b,int bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to an <a href="oggpack_buffer.html">oggpack_buffer</a> struct containing buffered data to be read.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to read.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> represents the requested bits.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_read1.html b/dist/share/doc/libogg/libogg/oggpack_read1.html
new file mode 100644
index 0000000..f28f676
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_read1.html
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_read1</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_read1</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function reads one bit from the <a href="oggpack_buffer.html">oggpack_buffer</a> data buffer and advances the location pointer.
+<p>Before reading, the buffer should be initialized using <a href="oggpack_readinit.html">oggpack_readinit</a>.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long  oggpack_read1(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to an <a href="oggpack_buffer.html">oggpack_buffer</a> struct containing buffered data to be read.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+<i>n</i> is the bit read by this function.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_readinit.html b/dist/share/doc/libogg/libogg/oggpack_readinit.html
new file mode 100644
index 0000000..5eb0495
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_readinit.html
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_readinit</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_readinit</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function takes an ordinary buffer and prepares an <a href="oggpack_buffer.html">oggpack_buffer</a> for reading using the Ogg <a href="bitpacking.html">bitpacking</a> functions.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Pointer to <a href=oggpack_buffer.html">oggpack_buffer</a> to be initialized with some extra markers to ease bit navigation and manipulation.</dd>
+<dt><i>buf</i></dt>
+<dd>Original data buffer, to be inserted into the <a href="oggpack_buffer.html">oggpack_buffer</a> so that it can be read using bitpacking functions.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_reset.html b/dist/share/doc/libogg/libogg/oggpack_reset.html
new file mode 100644
index 0000000..24a27af
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_reset.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_reset</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_reset</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function resets the contents of an <a href="oggpack_buffer">oggpack_buffer</a> to their original state but does not free the memory used.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_reset(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd><a href="oggpack_buffer.html">oggpack_buffer</a> to be reset.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_write.html b/dist/share/doc/libogg/libogg/oggpack_write.html
new file mode 100644
index 0000000..8ecee79
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_write.html
@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_write</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_write</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function writes bits into an <a href="oggpack_buffer.html">oggpack_buffer</a>.
+<p>The oggpack_buffer must already be initialized for writing using <a href="oggpack_writeinit.html">oggpack_writeinit</a>.
+<p>Only 32 bits can be written at a time.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Buffer to be used for writing.</dd>
+<dt><i>value</i></dt>
+<dd>The data to be written into the buffer.  This must be 32 bits or fewer.</dd>
+<dt><i>bits</i></dt>
+<dd>The number of bits being written into the buffer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writealign.html b/dist/share/doc/libogg/libogg/oggpack_writealign.html
new file mode 100644
index 0000000..487a8e2
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writealign.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writealign</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writealign</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function pads the <a href="oggpack_buffer.html">oggpack_buffer</a> with zeros out to the
+next byte boundary.</p>
+<p>The oggpack_buffer must already be initialized for writing using <a href="oggpack_writeinit.html">oggpack_writeinit</a>.
+<p>Only 32 bits can be written at a time.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_writetrunc(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Buffer to be used for writing.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writecheck.html b/dist/share/doc/libogg/libogg/oggpack_writecheck.html
new file mode 100644
index 0000000..def4802
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writecheck.html
@@ -0,0 +1,81 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writecheck</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writecheck</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function checks the readiness status of
+an <a href="oggpack_buffer.html">oggpack_buffer</a> previously
+initialized for writing using the
+Ogg <a href="bitpacking.html">bitpacking</a> functions.  A write
+buffer that encounters an error (such as a failed malloc) will clear
+its internal state and release any in-use memory, flagging itself as
+'not ready'.  Subsequent attempts to write using the buffer will
+silently fail. This error state may be detected at any later time by
+using oggpack_writecheck().  It is safe but not necessary to
+call <a href="oggpack_writeclear.html">oggpack_writeclear()</a> on a buffer that
+has flagged an error and released its resources. 
+
+<p><em>Important note to developers: Although libogg checks the
+results of memory allocations, these checks are only useful on a
+narrow range of embedded platforms. Allocation checks perform no
+useful service on a general purpose desktop OS where pages are
+routinely overallocated and all allocations succeed whether memory is
+available or not.  The only way to detect an out of memory condition
+on the vast majority of OSes is to watch for and capture segmentation
+faults.  This function is useful only to embedded developers.</em>
+ 
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int  oggpack_writecheck(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>An <a href="oggpack_buffer.html">oggpack_buffer</a> previously initialized for writing.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>zero</i>: buffer is ready for writing</li>
+<li><i>nonzero</i>: buffer is not ready or encountered an error</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writeclear.html b/dist/share/doc/libogg/libogg/oggpack_writeclear.html
new file mode 100644
index 0000000..6e2031f
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writeclear.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_reset</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writeclear</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function clears the buffer after writing and frees the memory used by the oggpack_buffer.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void oggpack_writeclear(oggpack_buffer *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Our oggpack_buffer.  This is an ordinary data buffer with some extra markers to ease bit navigation and manipulation.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writecopy.html b/dist/share/doc/libogg/libogg/oggpack_writecopy.html
new file mode 100644
index 0000000..592a78f
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writecopy.html
@@ -0,0 +1,69 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writecopy</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writecopy</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function copies a sequence of bits from a source buffer into an
+<a href="oggpack_buffer.html">oggpack_buffer</a>.</p>
+<p>The oggpack_buffer must already be initialized for writing using <a href="oggpack_writeinit.html">oggpack_writeinit</a>.</p>
+<p>Only 32 bits can be written at a time.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_writecopy(oggpack_buffer *b, void *source, long bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Buffer to be used for writing.</dd>
+<dt><i>source</i></dt>
+<dd>A pointer to the data to be written into the buffer.</dd>
+<dt><i>bits</i></dt>
+<dd>The number of bits to be copied into the buffer.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writeinit.html b/dist/share/doc/libogg/libogg/oggpack_writeinit.html
new file mode 100644
index 0000000..b1f6597
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writeinit.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writeinit</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writeinit</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function initializes an <a href="oggpack_buffer.html">oggpack_buffer</a> for writing using the Ogg <a href="bitpacking.html">bitpacking</a> functions.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_writeinit(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Buffer to be used for writing.  This is an ordinary data buffer with some extra markers to ease bit navigation and manipulation.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/oggpack_writetrunc.html b/dist/share/doc/libogg/libogg/oggpack_writetrunc.html
new file mode 100644
index 0000000..bac4ccb
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/oggpack_writetrunc.html
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writetrunc</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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writetrunc</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function truncates an already written-to <a href="oggpack_buffer.html">oggpack_buffer</a>.</p>
+<p>The oggpack_buffer must already be initialized for writing using <a href="oggpack_writeinit.html">oggpack_writeinit</a>.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+void  oggpack_writetrunc(oggpack_buffer *b, long bits);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>Buffer to be truncated.</dd>
+<dt><i>bits</i></dt>
+<dd>Number of bits to keep in the buffer (size after truncation)</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+No values are returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/overview.html b/dist/share/doc/libogg/libogg/overview.html
new file mode 100644
index 0000000..e0895cd
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/overview.html
@@ -0,0 +1,44 @@
+<html>
+
+<head>
+<title>libogg - 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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Libogg API Overview</h1>
+
+<p>
+The libogg API consists of the following functional categories:
+<p>
+<ul>
+<li><p><a href="datastructures.html">Base data structures</a>
+<li><p><a href="bitpacking.html">Bitpacking</a>
+<li><p><a href="general.html">General</a>
+<li><p><a href="encoding.html">Encoding-Related</a>
+<li><p><a href="decoding.html">Decoding-Related</a>
+
+</ul>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/reference.html b/dist/share/doc/libogg/libogg/reference.html
new file mode 100644
index 0000000..c6015b0
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/reference.html
@@ -0,0 +1,98 @@
+<html>
+
+<head>
+<title>Libogg 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>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+<h1>Libogg API Reference</h1>
+
+<p>
+<b>Data Structures</b><br>
+<a href="oggpack_buffer.html">oggpack_buffer</a><br>
+<a href="ogg_page.html">ogg_page</a><br>
+<a href="ogg_stream_state.html">ogg_stream_state</a><br>
+<a href="ogg_packet.html">ogg_packet</a><br>
+<a href="ogg_sync_state.html">ogg_sync_state</a><br>
+<br>
+<b>Bitpacking</b><br>
+<a href="oggpack_writeinit.html">oggpack_writeinit()</a><br>
+<a href="oggpack_writecheck.html">oggpack_writecheck()</a><br>
+<a href="oggpack_reset.html">oggpack_reset()</a><br>
+<a href="oggpack_writetrunc.html">oggpack_writetrunc()</a><br>
+<a href="oggpack_writealign.html">oggpack_writealign()</a><br>
+<a href="oggpack_writecopy.html">oggpack_writecopy()</a><br>
+<a href="oggpack_writeclear.html">oggpack_writeclear()</a><br>
+<a href="oggpack_readinit.html">oggpack_readinit()</a><br>
+<a href="oggpack_write.html">oggpack_write()</a><br>
+<a href="oggpack_look.html">oggpack_look()</a><br>
+<a href="oggpack_look1.html">oggpack_look1()</a><br>
+<a href="oggpack_adv.html">oggpack_adv()</a><br>
+<a href="oggpack_adv1.html">oggpack_adv1()</a><br>
+<a href="oggpack_read.html">oggpack_read()</a><br>
+<a href="oggpack_read1.html">oggpack_read1()</a><br>
+<a href="oggpack_bytes.html">oggpack_bytes()</a><br>
+<a href="oggpack_bits.html">oggpack_bits()</a><br>
+<a href="oggpack_get_buffer.html">oggpack_get_buffer()</a><br>
+<br>
+<b>Decoding-Related</b><br>
+<a href="ogg_sync_init.html">ogg_sync_init()</a><br>
+<a href="ogg_sync_check.html">ogg_sync_check()</a><br>
+<a href="ogg_sync_clear.html">ogg_sync_clear()</a><br>
+<a href="ogg_sync_destroy.html">ogg_sync_destroy()</a><br>
+<a href="ogg_sync_reset.html">ogg_sync_reset()</a><br>
+<a href="ogg_sync_buffer.html">ogg_sync_buffer()</a><br>
+<a href="ogg_sync_wrote.html">ogg_sync_wrote()</a><br>
+<a href="ogg_sync_pageseek.html">ogg_sync_pageseek()</a><br>
+<a href="ogg_sync_pageout.html">ogg_sync_pageout()</a><br>
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a><br>
+<a href="ogg_stream_packetout.html">ogg_stream_packetout()</a><br>
+<a href="ogg_stream_packetpeek.html">ogg_stream_packetpeek()</a><br>
+<br>
+<b>Encoding-Related</b><br>
+<a href="ogg_stream_packetin.html">ogg_stream_packetin()</a><br>
+<a href="ogg_stream_pageout.html">ogg_stream_pageout()</a><br>
+<a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill()</a><br>
+<a href="ogg_stream_flush.html">ogg_stream_flush()</a><br>
+<a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill()</a><br>
+<br>
+<b>General</b><br>
+<a href="ogg_stream_init.html">ogg_stream_init()</a><br>
+<a href="ogg_stream_check.html">ogg_stream_check()</a><br>
+<a href="ogg_stream_clear.html">ogg_stream_clear()</a><br>
+<a href="ogg_stream_reset.html">ogg_stream_reset()</a><br>
+<a href="ogg_stream_reset_serialno.html">ogg_stream_reset_serialno()</a><br>
+<a href="ogg_stream_destroy.html">ogg_stream_destroy()</a><br>
+<a href="ogg_page_version.html">ogg_page_version()</a><br>
+<a href="ogg_page_continued.html">ogg_page_continued()</a><br>
+<a href="ogg_page_packets.html">ogg_page_packets()</a></br>
+<a href="ogg_page_bos.html">ogg_page_bos()</a><br>
+<a href="ogg_page_eos.html">ogg_page_eos()</a><br>
+<a href="ogg_page_granulepos.html">ogg_page_granulepos()</a><br>
+<a href="ogg_page_serialno.html">ogg_page_serialno()</a><br>
+<a href="ogg_page_pageno.html">ogg_page_pageno()</a><br>
+<a href="ogg_packet_clear.html">ogg_packet_clear()</a><br>
+<a href="ogg_page_checksum_set.html">ogg_page_checksum_set()</a><br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2013 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.1 - 20130512</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/dist/share/doc/libogg/libogg/style.css b/dist/share/doc/libogg/libogg/style.css
new file mode 100644
index 0000000..81cf417
--- /dev/null
+++ b/dist/share/doc/libogg/libogg/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/dist/share/doc/libogg/multiplex1.png b/dist/share/doc/libogg/multiplex1.png
new file mode 100644
index 0000000..e48d1dd
--- /dev/null
+++ b/dist/share/doc/libogg/multiplex1.png
Binary files differ
diff --git a/dist/share/doc/libogg/ogg-multiplex.html b/dist/share/doc/libogg/ogg-multiplex.html
new file mode 100644
index 0000000..bd08e25
--- /dev/null
+++ b/dist/share/doc/libogg/ogg-multiplex.html
@@ -0,0 +1,446 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a, h4, h4 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Page Multiplexing and Ordering in a Physical Ogg Stream</h1>
+
+<p>The low-level mechanisms of an Ogg stream (as described in the Ogg
+Bitstream Overview) provide means for mixing multiple logical streams
+and media types into a single linear-chronological stream. This
+document specifies the high-level arrangement and use of page
+structure to multiplex multiple streams of mixed media type within a
+physical Ogg stream.</p>
+
+<h2>Design Elements</h2>
+
+<p>The design and arrangement of the Ogg container format is governed by
+several high-level design decisions that form the reasoning behind
+specific low-level design decisions.</p>
+
+<h3>Linear media</h3> 
+
+<p>The Ogg bitstream is intended to encapsulate chronological,
+time-linear mixed media into a single delivery stream or file. The
+design is such that an application can always encode and/or decode a
+full-featured bitstream in one pass with no seeking and minimal
+buffering. Seeking to provide optimized encoding (such as two-pass
+encoding) or interactive decoding (such as scrubbing or instant
+replay) is not disallowed or discouraged, however no bitstream feature
+must require nonlinear operation on the bitstream.</p>
+
+<h3>Multiplexing</h3>
+
+<p>Ogg bitstreams multiplex multiple logical streams into a single
+physical stream at the page level. Each page contains an abstract
+time stamp (the Granule Position) that represents an absolute time
+landmark within the stream. After the pages representing stream
+headers (all logical stream headers occur at the beginning of a
+physical bitstream section before any logical stream data), logical
+stream data pages are arranged in a physical bitstream in strict 
+non-decreasing order by chronological absolute time as 
+specified by the granule position.</p>
+
+<p>The only exception to arranging pages in strictly ascending time order
+by granule position is those pages that do not set the granule
+position value. This is a special case when exceptionally large
+packets span multiple pages; the specifics of handling this special
+case are described later under 'Continuous and Discontinuous
+Streams'.</p>
+
+<h3>Seeking</h3> 
+
+<p>Ogg is designed to use an interpolated bisection search to
+implement exact positional seeking.  Interpolated bisection search is
+a spec-mandated mechanism.</p>
+
+<p><i>An index may improve objective performance, but it seldom
+improves subjective performance outside of a few high-latency use
+cases and adds no additional functionality as bisection search
+delivers the same functionality for both one- and two-pass stream
+types.  For these reasons, use of indexes is discouraged, except in
+cases where an index provides demonstrable and noticable performance
+improvement.</i></p>
+
+<p>Seek operations are by absolute time; a direct bisection search must
+find the exact time position requested. Information in the Ogg
+bitstream is arranged such that all information to be presented for
+playback from the desired seek point will occur at or after the
+desired seek point. Seek operations are neither 'fuzzy' nor
+heuristic.</p>
+
+<p><i>Although key frame handling in video appears to be an exception to
+"all needed playback information lies ahead of a given seek",
+key frames can still be handled directly within this indexless
+framework. Seeking to a key frame in video (as well as seeking in other
+media types with analogous restraints) is handled as two seeks; first
+a seek to the desired time which extracts state information that
+decodes to the time of the last key frame, followed by a second seek
+directly to the key frame. The location of the previous key frame is
+embedded as state information in the granulepos; this mechanism is
+described in more detail later.</i></p>
+
+<h3>Continuous and Discontinuous Streams</h3>
+
+<p>Logical streams within a physical Ogg stream belong to one of two
+categories, "Continuous" streams and "Discontinuous" streams.
+Although these are discussed in more detail later, the distinction is
+important to a high-level understanding of how to buffer an Ogg
+stream.</p>
+
+<p>A stream that provides a gapless, time-continuous media type with a
+fine-grained timebase is considered to be 'Continuous'. A continuous
+stream should never be starved of data. Clear examples of continuous
+data types include broadcast audio and video.</p>
+
+<p>A stream that delivers data in a potentially irregular pattern or with
+widely spaced timing gaps is considered to be 'Discontinuous'. A
+discontinuous stream may be best thought of as data representing
+scattered events; although they happen in order, they are typically
+unconnected data often located far apart. One possible example of a
+discontinuous stream types would be captioning. Although it's
+possible to design captions as a continuous stream type, it's most
+natural to think of captions as widely spaced pieces of text with
+little happening between.</p>
+
+<p>The fundamental design distinction between continuous and
+discontinuous streams concerns buffering.</p>
+
+<h3>Buffering</h3>
+
+<p>Because a continuous stream is, by definition, gapless, Ogg buffering
+is based on the simple premise of never allowing any active continuous
+stream to starve for data during decode; buffering proceeds ahead
+until all continuous streams in a physical stream have data ready to
+decode on demand.</p>
+
+<p>Discontinuous stream data may occur on a fairly regular basis, but the
+timing of, for example, a specific caption is impossible to predict
+with certainty in most captioning systems. Thus the buffering system
+should take discontinuous data 'as it comes' rather than working ahead
+(for a potentially unbounded period) to look for future discontinuous
+data. As such, discontinuous streams are ignored when managing
+buffering; their pages simply 'fall out' of the stream when continuous
+streams are handled properly.</p>
+
+<p>Buffering requirements need not be explicitly declared or managed for
+the encoded stream; the decoder simply reads as much data as is
+necessary to keep all continuous stream types gapless (also ensuring
+discontinuous data arrives in time) and no more, resulting in optimum
+implicit buffer usage for a given stream. Because all pages of all
+data types are stamped with absolute timing information within the
+stream, inter-stream synchronization timing is always explicitly
+maintained without the need for explicitly declared buffer-ahead
+hinting.</p>
+
+<p>Further details, mechanisms and reasons for the differing arrangement
+and behavior of continuous and discontinuous streams is discussed
+later.</p>
+
+<h3>Whole-stream navigation</h3>
+
+<p>Ogg is designed so that the simplest navigation operations treat the
+physical Ogg stream as a whole summary of its streams, rather than
+navigating each interleaved stream as a separate entity.</p>
+
+<p>First Example: seeking to a desired time position in a multiplexed (or
+unmultiplexed) Ogg stream can be accomplished through a bisection
+search on time position of all pages in the stream (as encoded in the
+granule position). More powerful searches (such as a key frame-aware
+seek within video) are also possible with additional search
+complexity, but similar computational complexity.</p>
+
+<p>Second Example: A bitstream section may consist of three multiplexed
+streams of differing lengths. The result of multiplexing these
+streams should be thought of as a single mixed stream with a length
+equal to the longest of the three component streams. Although it is
+also possible to think of the multiplexed results as three concurrent
+streams of different lengths and it is possible to recover the three
+original streams, it will also become obvious that once multiplexed,
+it isn't possible to find the internal lengths of the component
+streams without a linear search of the whole bitstream section.
+However, it is possible to find the length of the whole bitstream
+section easily (in near-constant time per section) just as it is for a
+single-media unmultiplexed stream.</p>
+
+<h2>Granule Position</h2>
+
+<h3>Description</h3>
+
+<p>The Granule Position is a signed 64 bit field appearing in the header
+of every Ogg page. Although the granule position represents absolute
+time within a logical stream, its value does not necessarily directly
+encode a simple timestamp. It may represent frames elapsed (as in
+Vorbis), a simple timestamp, or a more complex bit-division encoding
+(such as in Theora). The exact encoding of the granule position is up
+to a specific codec.</p>
+
+<p>The granule position is governed by the following rules:</p>
+
+<ul>
+
+<li>Granule Position must always increase forward or remain equal from
+page to page, be unset, or be zero for a header page. The absolute
+time to which any correct sequence of granule position maps must
+similarly always increase forward or remain equal. <i>(A codec may
+make use of data, such as a control sequence, that only affects codec
+working state without producing data and thus advancing granule
+position and time. Although the packet sequence number increases in
+this case, the granule position, and thus the time position, do
+not.)</i></li>
+
+<li>Granule position may only be unset if there no packet defining a
+time boundary on the page (that is, if no packet in a continuous
+stream ends on the page, or no packet in a discontinuous stream begins
+on the page. This will be discussed in more detail under Continuous
+and Discontinuous streams).</li>
+
+<li>A codec must be able to translate a given granule position value
+to a unique, deterministic absolute time value through direct
+calculation. A codec is not required to be able to translate an
+absolute time value into a unique granule position value.</li>
+
+<li>Codecs shall choose a granule position definition that allows that
+codec means to seek as directly as possible to an immediately
+decodable point, such as the bit-divided granule position encoding of
+Theora allows the codec to seek efficiently to key frame without using
+an index. That is, additional information other than absolute time
+may be encoded into a granule position value so long as the granule
+position obeys the above points.</li>
+
+</ul>
+
+<h4>Example: timestamp</h4>
+
+<p>In general, a codec/stream type should choose the simplest granule
+position encoding that addresses its requirements. The examples here
+are by no means exhaustive of the possibilities within Ogg.</p>
+
+<p>A simple granule position could encode a timestamp directly. For
+example, a granule position that encoded milliseconds from beginning
+of stream would allow a logical stream length of over 100,000,000,000
+days before beginning a new logical stream (to avoid the granule
+position wrapping).</p>
+
+<h4>Example: framestamp</h4>
+
+<p>A simple millisecond timestamp granule encoding might suit many stream
+types, but a millisecond resolution is inappropriate to, eg, most
+audio encodings where exact single-sample resolution is generally a
+requirement. A millisecond is both too large a granule and often does
+not represent an integer number of samples.</p>
+
+<p>In the event that audio frames are always encoded as the same number of
+samples, the granule position could simply be a linear count of frames
+since beginning of stream. This has the advantages of being exact and
+efficient. Position in time would simply be <tt>[granule_position] *
+[samples_per_frame] / [samples_per_second]</tt>.</p>
+
+<h4>Example: samplestamp (Vorbis)</h4>
+
+<p>Frame counting is insufficient in codecs such as Vorbis where an audio
+frame [packet] encodes a variable number of samples. In Vorbis's
+case, the granule position is a count of the number of raw samples
+from the beginning of stream; the absolute time of
+a granule position is <tt>[granule_position] /
+[samples_per_second]</tt>.</p>
+ 
+<h4>Example: bit-divided framestamp (Theora)</h4>
+
+<p>Some video codecs may be able to use the simple framestamp scheme for
+granule position. However, most modern video codecs introduce at
+least the following complications:</p>
+
+<ul>
+
+<li>video frames are relatively far apart compared to audio samples;
+for this reason, the point at which a video frame changes to the next
+frame is usually a strictly defined offset within the frame 'period'.
+That is, video at 50fps could just as easily define frame transitions
+&lt;.015, .035, .055...&gt; as at &lt;.00, .02, .04...&gt;.</li>
+
+<li>frame rates often include drop-frames, leap-frames or other
+rational-but-non-integer timings.</li>
+
+<li>Decode must begin at a 'key frame' or 'I frame'. Keyframes usually
+occur relatively seldom.</li>
+
+</ul>
+
+<p>The first two points can be handled straightforwardly via the fact
+that the codec has complete control mapping granule position to
+absolute time; non-integer frame rates and offsets can be set in the
+codec's initial header, and the rest is just arithmetic.</p>
+
+<p>The third point appears trickier at first glance, but it too can be
+handled through the granule position mapping mechanism. Here we
+arrange the granule position in such a way that granule positions of
+key frames are easy to find. Divide the granule position into two
+fields; the most-significant bits are an absolute frame counter, but
+it's only updated at each key frame. The least significant bits encode
+the number of frames since the last key frame. In this way, each
+granule position both encodes the absolute time of the current frame
+as well as the absolute time of the last key frame.</p>
+
+<p>Seeking to a most recent preceding key frame is then accomplished by
+first seeking to the original desired point, inspecting the granulepos
+of the resulting video page, extracting from that granulepos the
+absolute time of the desired key frame, and then seeking directly to
+that key frame's page. Of course, it's still possible for an
+application to ignore key frames and use a simpler seeking algorithm
+(decode would be unable to present decoded video until the next
+key frame). Surprisingly many player applications do choose the
+simpler approach.</p>
+
+<h3>granule position, packets and pages</h3>
+
+<p>Although each packet of data in a logical stream theoretically has a
+specific granule position, only one granule position is encoded
+per page. It is possible to encode a logical stream such that each
+page contains only a single packet (so that granule positions are
+preserved for each packet), however a one-to-one packet/page mapping
+is not intended to be the general case.</p>
+
+<p>Because Ogg functions at the page, not packet, level, this
+once-per-page time information provides Ogg with the finest-grained
+time information is can use. Ogg passes this granule positioning data
+to the codec (along with the packets extracted from a page); it is the
+responsibility of codecs to track timing information at granularities
+finer than a single page.</p>
+
+<h3>start-time and end-time positioning</h3>
+
+<p>A granule position represents the <em>instantaneous time location
+between two pages</em>. However, continuous streams and discontinuous
+streams differ on whether the granulepos represents the end-time of
+the data on a page or the start-time. Continuous streams are
+'end-time' encoded; the granulepos represents the point in time
+immediately after the last data decoded from a page. Discontinuous
+streams are 'start-time' encoded; the granulepos represents the point
+in time of the first data decoded from the page.</p>
+
+<p>An Ogg stream type is declared continuous or discontinuous by its
+codec. A given codec may support both continuous and discontinuous
+operation so long as any given logical stream is continuous or
+discontinuous for its entirety and the codec is able to ascertain (and
+inform the Ogg layer) as to which after decoding the initial stream
+header. The majority of codecs will always be continuous (such as
+Vorbis) or discontinuous (such as Writ).</p>
+
+<p>Start- and end-time encoding do not affect multiplexing sort-order;
+pages are still sorted by the absolute time a given granulepos maps to
+regardless of whether that granulepos represents start- or
+end-time.</p>
+
+<h2>Multiplex/Demultiplex Division of Labor</h2>
+
+<p>The Ogg multiplex/demultiplex layer provides mechanisms for encoding
+raw packets into Ogg pages, decoding Ogg pages back into the original
+codec packets, determining the logical structure of an Ogg stream, and
+navigating through and synchronizing with an Ogg stream at a desired
+stream location. Strict multiplex/demultiplex operations are entirely
+in the Ogg domain and require no intervention from codecs.</p>
+
+<p>Implementation of more complex operations does require codec
+knowledge, however. Unlike other framing systems, Ogg maintains
+strict separation between framing and the framed bitstream data; Ogg
+does not replicate codec-specific information in the page/framing
+data, nor does Ogg blur the line between framing and stream
+data/metadata. Because Ogg is fully data-agnostic toward the data it
+frames, operations which require specifics of bitstream data (such as
+'seek to key frame') also require interaction with the codec layer
+(because, in this example, the Ogg layer is not aware of the concept
+of key frames). This is different from systems that blur the
+separation between framing and stream data in order to simplify the
+separation of code. The Ogg system purposely keeps the distinction in
+data simple so that later codec innovations are not constrained by
+framing design.</p>
+
+<p>For this reason, however, complex seeking operations require
+interaction with the codecs in order to decode the granule position of
+a given stream type back to absolute time or in order to find
+'decodable points' such as key frames in video.</p>
+
+<h2>Unsorted Discussion Points</h2>
+
+<p>flushes around key frames? RFC suggestion: repaginating or building a
+stream this way is nice but not required</p>
+
+<h2>Appendix A: multiplexing examples</h2>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
diff --git a/dist/share/doc/libogg/oggstream.html b/dist/share/doc/libogg/oggstream.html
new file mode 100644
index 0000000..71bbce7
--- /dev/null
+++ b/dist/share/doc/libogg/oggstream.html
@@ -0,0 +1,594 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+
+.caption {
+  color: #000000;
+  background-color: #aabbff;
+  margin: 1em;
+  margin-left: 2em;
+  margin-right: 2em;
+  padding: 1em;
+  padding-bottom: 0em;
+  overflow: hidden;
+}
+
+.caption p {
+  clear: none;
+}
+
+.caption img {
+  display: block;
+  margin: 0px;
+  margin-left: auto;
+  margin-right: auto;
+  margin-bottom: 1.5em;
+  background-color: #ffffff;
+  padding: 10px;
+}
+   
+#thepage {
+  margin-left: auto;
+  margin-right: auto;
+  width: 840px;
+}
+
+</style>
+
+</head>
+
+<body>
+<div id="thepage">
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg bitstream overview</h1>
+
+<p>This document serves as starting point for understanding the design
+and implementation of the Ogg container format.  If you're new to Ogg
+or merely want a high-level technical overview, start reading here.
+Other documents linked from the <a href="index.html">index page</a>
+give distilled technical descriptions and references of the container
+mechanisms.  This document is intended to aid understanding.
+
+<h2>Container format design points</h2>
+
+<p>Ogg is intended to be a simplest-possible container, concerned only
+with framing, ordering, and interleave. It can be used as a stream delivery
+mechanism, for media file storage, or as a building block toward
+implementing a more complex, non-linear container (for example, see
+the <a href="skeleton.html">Skeleton</a> or <a
+href="http://en.wikipedia.org/wiki/Annodex">Annodex/CMML</a>).
+
+<p>The Ogg container is not intended to be a monolithic
+'kitchen-sink'.  It exists only to frame and deliver in-order stream
+data and as such is vastly simpler than most other containers.
+Elementary and multiplexed streams are both constructed entirely from a
+single building block (an Ogg page) comprised of eight fields
+totalling twenty-eight bytes (the page header) a list of packet lengths
+(up to 255 bytes) and payload data (up to 65025 bytes).  The structure
+of every page is the same.  There are no optional fields or alternate
+encodings.
+
+<p>Stream and media metadata is contained in Ogg and not built into
+the Ogg container itself.  Metadata is thus compartmentalized and
+layered rather than part of a monolithic design, an especially good
+idea as no two groups seem able to agree on what a complete or
+complete-enough metadata set should be. In this way, the container and
+container implementation are isolated from unnecessary metadata design
+flux.
+
+<h3>Streaming</h3> 
+
+<p>The Ogg container is primarily a streaming format,
+encapsulating chronological, time-linear mixed media into a single
+delivery stream or file. The design is such that an application can
+always encode and/or decode all features of a bitstream in one pass
+with no seeking and minimal buffering.  Seeking to provide optimized
+encoding (such as two-pass encoding) or interactive decoding (such as
+scrubbing or instant replay) is not disallowed or discouraged, however
+no container feature requires nonlinear access of the bitstream.
+
+<h3>Variable Bit Rate, Variable Payload Size</h3>
+
+<p>Ogg is designed to contain any size data payload with bounded,
+predictable efficiency.  Ogg packets have no maximum size and a
+zero-byte minimum size.  There is no restriction on size changes from
+packet to packet. Variable size packets do not require the use of any
+optional or additional container features.  There is no optimal
+suggested packet size, though special consideration was paid to make
+sure 50-200 byte packets were no less efficient than larger packet
+sizes.  The original design criteria was a 2% overhead at 50 byte
+packets, dropping to a maximum working overhead of 1% with larger
+packets, and a typical working overhead of .5-.7% for most practical
+uses. 
+
+<h3>Simple pagination</h3>
+
+<p>Ogg is a byte-aligned container with no context-dependent, optional
+or variable-length fields.  Ogg requires no repacking of codec data.
+The page structure is written out in-line as packet data is submitted
+to the streaming abstraction.  In addition, it is possible to
+implement both Ogg mux and demux as MT-hot zero-copy abstractions (as
+is done in the Tremor sourcebase).
+
+<h3>Capture</h3>
+
+<p>Ogg is designed for efficient and immediate stream capture with
+high confidence.  Although packets have no size limit in Ogg, pages
+are a maximum of just under 64kB meaning that any Ogg stream can be
+captured with confidence after seeing 128kB of data or less [worst
+case; typical figure is 6kB] from any random starting point in the
+stream.
+
+<h3>Seeking</h3>
+
+<p>Ogg implements simple coarse- and fine-grained seeking by design.
+
+<p>Coarse seeking may be performed by simply 'moving the tone arm' to a
+new position and 'dropping the needle'.  Rapid capture with
+accompanying timecode from any location in an Ogg file is guaranteed
+by the stream design.  From the acquisition of the first timecode,
+all data needed to play back from that time code forward is ahead of
+the stream cursor.
+
+<p>Ogg implements full sample-granularity seeking using an
+interpolated bisection search built on the capture and timecode
+mechanisms used by coarse seeking.  As above, once a search finds
+the desired timecode, all data needed to play back from that time code
+forward is ahead of the stream cursor.
+
+<p>Both coarse and fine seeking use the page structure and sequencing
+inherent to the Ogg format.  All Ogg streams are fully seekable from
+creation; seekability is unaffected by truncation or missing data, and
+is tolerant of gross corruption.  Seek operations are neither 'fuzzy' nor
+heuristic.
+
+<p>Seeking without use of an index is a major point of the Ogg
+design. There two primary reasons why Ogg transport forgoes an index:
+			  
+<ol>
+
+<li>An index is only marginally useful in Ogg for the complexity
+added; it adds no new functionality and seldom improves performance
+noticeably.  Empirical testing shows that indexless interpolation
+search does not require many more seeks in practice than using an
+index would.
+
+<li>'Optional' indexes encourage lazy implementations that can seek
+only when indexes are present, or that implement indexless seeking
+only by building an internal index after reading the entire file
+beginning to end.  This has been the fate of other containers that
+specify optional indexing.
+
+</ol>
+
+<p>In addition, it must be possible to create an Ogg stream in a
+single pass. Although an optional index can simply be tacked on the
+end of the created stream, some software groups object to
+end-positioned indexes and claim to be unwilling to support indexes
+not located at the stream beginning.
+
+<p><i>All this said, it's become clear that an optional index is a
+demanded feature.  For this reason, the <a
+href="http://wiki.xiph.org/Ogg_Index">OggSkeleton now defines a
+proposed index.</a></i>
+
+<h3>Simple multiplexing</h3>
+
+<p>Ogg multiplexes streams by interleaving pages from multiple elementary streams into a
+multiplexed stream in time order.  The multiplexed pages are not
+altered.  Muxing an Ogg AV stream out of separate audio,
+video and data streams is akin to shuffling several decks of cards
+together into a single deck; the cards themselves remain unchanged.
+Demultiplexing is similarly simple (as the cards are marked).
+
+<p>The goal of this design is to make the mux/demux operation as
+trivial as possible to allow live streaming systems to build and
+rebuild streams on the fly with minimal CPU usage and no additional
+storage or latency requirements.
+
+<h3>Continuous and Discontinuous Media</h3>
+
+<p>Ogg streams belong to one of two categories, "Continuous" streams and
+"Discontinuous" streams.
+
+<p>A stream that provides a gapless, time-continuous media type with a
+fine-grained timebase is considered to be 'Continuous'. A continuous
+stream should never be starved of data. Examples of continuous data
+types include broadcast audio and video.
+
+<p>A stream that delivers data in a potentially irregular pattern or
+with widely spaced timing gaps is considered to be 'Discontinuous'. A
+discontinuous stream may be best thought of as data representing
+scattered events; although they happen in order, they are typically
+unconnected data often located far apart. One example of a
+discontinuous stream types would be captioning such as <a
+href="http://wiki.xiph.org/OggKate">Ogg Kate</a>. Although it's
+possible to design captions as a continuous stream type, it's most
+natural to think of captions as widely spaced pieces of text with
+little happening between.
+
+<p>The fundamental reason for distinction between continuous and
+discontinuous streams concerns buffering.
+
+<h3>Buffering</h3>
+
+<p>A continuous stream is, by definition, gapless. Ogg buffering is based
+on the simple premise of never allowing an active continuous stream
+to starve for data during decode; buffering works ahead until all
+continuous streams in a physical stream have data ready and no further.
+
+<p>Discontinuous stream data is not assumed to be predictable. The
+buffering design takes discontinuous data 'as it comes' rather than
+working ahead to look for future discontinuous data for a potentially
+unbounded period. Thus, the buffering process makes no attempt to fill
+discontinuous stream buffers; their pages simply 'fall out' of the
+stream when continuous streams are handled properly.
+
+<p>Buffering requirements in this design need not be explicitly
+declared or managed in the encoded stream. The decoder simply reads as
+much data as is necessary to keep all continuous stream types gapless
+and no more, with discontinuous data processed as it arrives in the
+continuous data. Buffering is implicitly optimal for the given
+stream. Because all pages of all data types are stamped with absolute
+timing information within the stream, inter-stream synchronization
+timing is always maintained without the need for explicitly declared
+buffer-ahead hinting.
+
+<h3>Codec metadata</h3>
+
+<p>Ogg does not replicate codec-specific metadata into the mux layer
+in an attempt to make the mux and codec layer implementations 'fully
+separable'.  Things like specific timebase, keyframing strategy, frame
+duration, etc, do not appear in the Ogg container.  The mux layer is,
+instead, expected to query a codec through a centralized interface,
+left to the implementation, for this data when it is needed.
+
+<p>Though modern design wisdom usually prefers to predict all possible
+needs of current and future codecs then embed these dependencies and
+the required metadata into the container itself, this strategy
+increases container specification complexity, fragility, and rigidity.
+The mux and codec code becomes more independent, but the
+specifications become logically less independent. A codec can't do
+what a container hasn't already provided for.  Novel codecs are harder
+to support, and you can do fewer useful things with the ones you've
+already got (eg, try to make a good splitter without using any codecs.
+Such a splitter is limited to splitting at keyframes only, or building
+yet another new mechanism into the container layer to mark what frames
+to skip displaying).
+
+<p>Ogg's design goes the opposite direction, where the specification
+is to be as simple, easy to understand, and 'proofed' against novel
+codecs as possible.  When an Ogg mux layer requires codec-specific
+information, it queries the codec (or a codec stub).  This trades a
+more complex implementation for a simpler, more flexible
+specification.
+
+<h3>Stream structure metadata</h3>
+
+<p>The Ogg container itself does not define a metadata system for
+declaring the structure and interrelations between multiple media
+types in a muxed stream.  That is, the Ogg container itself does not
+specify data like 'which steam is the subtitle stream?' or 'which
+video stream is the primary angle?'.  This metadata still exists, but
+is stored by the Ogg container rather than being built into the Ogg
+container itself.  Xiph specifies the 'Skeleton' metadata format for Ogg
+streams, but this decoupling of container and stream structure
+metadata means it is possible to use Ogg with any metadata
+specification without altering the container itself, or without stream
+structure metadata at all.
+
+<h3>Frame accurate absolute position</h3>
+
+<p>Every Ogg page is stamped with a 64 bit 'granule position' that
+serves as an absolute timestamp for mux and seeking.  A few nifty
+little tricks are usually also embedded in the granpos state, but
+we'll leave those aside for the moment (strictly speaking, they're
+part of each codec's mapping, not Ogg).
+
+<p>As previously mentioned above, granule positions are mapped into
+absolute timestamps by the codec, rather than being a hard timestamp.
+This allows maximally efficient use of the available 64 bits to
+address every sample/frame position without approximation while
+supporting new and previously unknown timebase encodings without
+needing to extend or update the mux layer.  When a codec needs a novel
+timebase, it simply brings the code for that mapping along with it.
+This is not a theoretical curiosity; new, wholly novel timebases were
+deployed with the adoption of both Theora and Dirac.  "Rolling INTRA"
+(keyframeless video) also benefits from novel use of the granule
+position.
+
+<h2>Ogg stream arrangement</h2>
+
+<h3>Packets, pages, and bitstreams</h3>
+
+<p>Ogg codecs place raw compressed data into <em>packets</em>.
+Packets are octet payloads containing the data needed for a single
+decompressed unit, eg, one video frame. Packets have no maximum size
+and may be zero length. They do not generally have any framing
+information; strung together, the unframed packets form a <em>logical
+bitstream</em> of codec data with no internal landmarks.
+
+<div class="caption">
+  <img src="packets.png"> 
+
+  <p> Packets of raw codec data are not typically internally framed.
+  When they are strung together into a stream without any container to
+  provide framing, they lose their individual boundaries. Seek and
+  capture are not possible within an unframed stream, and for many
+  codecs with variable length payloads and/or early-packet termination
+  (such as Vorbis), it may become impossible to recover the original
+  frame boundaries even if the stream is scanned linearly from
+  beginning to end.
+
+</div>
+
+<p>Logical bitstream packets are grouped and framed into Ogg pages
+along with a unique stream <em>serial number</em> to produce a
+<em>physical bitstream</em>.  An <em>elementary stream</em> is a
+physical bitstream containing only a single logical bitstream. Each
+page is a self contained entity, although a packet may be split and
+encoded across one or more pages. The page decode mechanism is
+designed to recognize, verify and handle single pages at a time from
+the overall bitstream.
+
+<div class="caption">
+  <img src="pages.png"> 
+
+  <p> The primary purpose of a container is to provide framing for raw
+  packets, marking the packet boundaries so the exact packets can be
+  retrieved for decode later.  The container also provides secondary
+  functions such as capture, timestamping, sequencing, stream
+  identification and so on.  Not all of these functions are represented in the diagram.
+
+  <p>In the Ogg container, pages do not necessarily contain
+  integer numbers of packets. Packets may span across page boundaries
+  or even multiple pages.  This is necessary as pages have a maximum
+  possible size in order to provide capture guarantees, but packet
+  size is unbounded.
+</div>
+
+
+<p><a href="framing.html">Ogg Bitstream Framing</a> specifies
+the page format of an Ogg bitstream, the packet coding process
+and elementary bitstreams in detail.
+
+<h3>Multiplexed bitstreams</h3>
+
+<p>Multiple logical/elementary bitstreams can be combined into a single
+<em>multiplexed bitstream</em> by interleaving whole pages from each
+contributing elementary stream in time order. The result is a single
+physical stream that multiplexes and frames multiple logical streams.
+Each logical stream is identified by the unique stream serial number
+stamped in its pages.  A physical stream may include a 'meta-header'
+(such as the <a href="skeleton.html">Ogg Skeleton</a>) comprising its
+own Ogg page at the beginning of the physical stream. A decoder
+recovers the original logical/elementary bitstreams out of the
+physical bitstream by taking the pages in order from the physical
+bitstream and redirecting them into the appropriate logical decoding
+entity.
+
+<div class="caption">
+  <img src="multiplex1.png"> 
+
+<p>Multiple media types are mutliplexed into a single Ogg stream by
+interleaving the pages from each elementary physical stream.  
+
+</div>
+
+<p><a href="ogg-multiplex.html">Ogg Bitstream Multiplexing</a> specifies
+proper multiplexing of an Ogg bitstream in detail.
+
+<h3>Chaining</h3>
+
+<p>Multiple Ogg physical bitstreams may be concatenated into a single new
+stream; this is <em>chaining</em>. The bitstreams do not overlap; the
+final page of a given logical bitstream is immediately followed by the
+initial page of the next.</p>
+
+<p>Each logical bitstream in a chain must have a unique serial number
+within the scope of the full physical bitstream, not only within a
+particular <em>link</em> or <em>segment</em> of the chain.</p>
+
+<h3>Continuous and discontinuous streams</h3>
+
+<p>Within Ogg, each stream must be declared (by the codec) to be
+continuous- or discontinuous-time.  Most codecs treat all streams they
+use as either inherently continuous- or discontinuous-time, although
+this is not a requirement. A codec may, as part of its mapping, choose
+according to data in the initial header.
+
+<p>Continuous-time pages are stamped by end-time, discontinuous pages
+are stamped by begin-time.  Pages in a multiplexed stream are
+interleaved in order of the time stamp regardless of stream type.
+Both continuous and discontinuous logical streams are used to seek
+within a physical stream, however only continuous streams are used to
+determine buffering depth; because discontinuous streams are stamped
+by start time, they will always 'fall out' at the proper time when
+buffering the continuous streams.  See 'Examples' for an illustration
+of the buffering mechanism.
+
+<h2>Multiplexing Requirements</h2>
+
+<p>Multiplexing requirements within Ogg are straightforward. When
+constructing a single-link (unchained) physical bitstream consisting
+of multiple elementary streams:
+
+<ol>
+
+<li><p> The initial header for each stream appears in sequence, each
+header on a single page.  All initial headers must appear with no
+intervening data (no auxiliary header pages or packets, no data pages
+or packets).  Order of the initial headers is unspecified. The
+'beginning of stream' flag is set on each initial header.
+
+<li><p> All auxiliary headers for all streams must follow.  Order
+is unspecified.  The final auxiliary header of each stream must flush
+its page.
+
+<li><p>Data pages for each stream follow, interleaved in time order. 
+
+<li><p>The final page of each stream sets the 'end of stream' flag.
+Unlike initial pages, terminal pages for the logical bitstreams need
+not occur contiguously; indeed it may not be possible for them to do so.
+</oL>
+
+<p><p>Each grouped bitstream must have a unique serial number within the
+scope of the physical bitstream.</p>
+
+<h3>chaining and multiplexing</h3>
+
+<p>Multiplexed and/or unmultiplexed bitstreams may be chained
+consecutively. Such a physical bitstream obeys all the rules of both
+chained and multiplexed streams.  Each link, when unchained, must
+stand on its own as a valid physical bitstream.  Chained streams do
+not mix or interleave; a new segment may not begin until all streams
+in the preceding segment have terminated. </p>
+
+<h2>Codec Mapping Requirements</h2>
+
+<p>Each codec is allowed some freedom in deciding how its logical
+bitstream is encapsulated into an Ogg bitstream (even if it is a
+trivial mapping, eg, 'plop the packets in and go'). This is the
+codec's <em>mapping</em>. Ogg imposes a few mapping requirements
+on any codec.
+
+<ol>
+
+<li><p>The <a href="framing.html">framing specification</a> defines
+'beginning of stream' and 'end of stream' page markers via a header
+flag (it is possible for a stream to consist of a single page). A
+correct stream always consists of an integer number of pages, an easy
+requirement given the variable size nature of pages.</p>
+
+<li><p>The first page of an elementary Ogg bitstream consists of a single,
+small 'initial header' packet that must include sufficient information
+to identify the exact CODEC type. From this initial header, the codec
+must also be able to determine its timebase and whether or not it is a
+continuous- or discontinuous-time stream.  The initial header must fit
+on a single page. If a codec makes use of auxiliary headers (for
+example, Vorbis uses two auxiliary headers), these headers must follow
+the initial header immediately.  The last header finishes its page;
+data begins on a fresh page.
+
+<p><p>As an example, Ogg Vorbis places the name and revision of the
+Vorbis CODEC, the audio rate and the audio quality into this initial
+header.  Vorbis comments and detailed codec setup appears in the larger
+auxiliary headers.</p>
+
+<li><p>Granule positions must be translatable to an exact absolute
+time value.  As described above, the mux layer is permitted to query a
+codec or codec stub plugin to perform this mapping. It is not
+necessary for an absolute time to be mappable into a single unique
+granule position value.
+
+<li><p>Codecs are not required to use a fixed duration-per-packet (for
+example, Vorbis does not).  the mux layer is permitted to query a
+codec or codec stub plugin for the time duration of a packet.
+
+<li><p>Although an absolute time need not be translatable to a unique
+granule position, a codec must be able to determine the unique granule
+position of the current packet using the granule position of a
+preceeding packet.
+
+<li><p>Packets and pages must be arranged in ascending
+granule-position and time order.
+
+</ol>
+
+<h2>Examples</h2>
+
+<em>[More to come shortly; this section is currently being revised and expanded]</em>
+
+<p>Below, we present an example of a multiplexed and chained bitstream:</p>
+
+<p><img src="stream.png" alt="stream"/></p>
+
+<p>In this example, we see pages from five total logical bitstreams
+multiplexed into a physical bitstream. Note the following
+characteristics:</p>
+
+<ol>
+<li>Multiplexed bitstreams in a given link begin together; all of the
+initial pages must appear before any data pages. When concurrently
+multiplexed groups are chained, the new group does not begin until all
+the bitstreams in the previous group have terminated.</li>
+
+<li>The ordering of pages of concurrently multiplexed bitstreams is
+goverened by timestamp (not shown here); there is no regular
+interleaving order.  Pages within a logical bitstream appear in
+sequence order.</li>
+</ol>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2010 Xiph.Org. All rights reserved.
+</div>
+
+</div>
+</body>
+</html>
diff --git a/dist/share/doc/libogg/packets.png b/dist/share/doc/libogg/packets.png
new file mode 100644
index 0000000..917b6c1
--- /dev/null
+++ b/dist/share/doc/libogg/packets.png
Binary files differ
diff --git a/dist/share/doc/libogg/pages.png b/dist/share/doc/libogg/pages.png
new file mode 100644
index 0000000..b4b431e
--- /dev/null
+++ b/dist/share/doc/libogg/pages.png
Binary files differ
diff --git a/dist/share/doc/libogg/rfc3533.txt b/dist/share/doc/libogg/rfc3533.txt
new file mode 100644
index 0000000..f2fcd1a
--- /dev/null
+++ b/dist/share/doc/libogg/rfc3533.txt
@@ -0,0 +1,843 @@
+
+
+
+
+
+
+Network Working Group                                        S. Pfeiffer
+Request for Comments: 3533                                         CSIRO
+Category: Informational                                         May 2003
+
+
+                 The Ogg Encapsulation Format Version 0
+
+Status of this Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   This document describes the Ogg bitstream format version 0, which is
+   a general, freely-available encapsulation format for media streams.
+   It is able to encapsulate any kind and number of video and audio
+   encoding formats as well as other data streams in a single bitstream.
+
+Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14, RFC 2119 [2].
+
+Table of Contents
+
+   1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . .   2
+   2. Definitions  . . . . . . . . . . . . . . . . . . . . . . . . .   2
+   3. Requirements for a generic encapsulation format  . . . . . . .   3
+   4. The Ogg bitstream format . . . . . . . . . . . . . . . . . . .   3
+   5. The encapsulation process  . . . . . . . . . . . . . . . . . .   6
+   6. The Ogg page format  . . . . . . . . . . . . . . . . . . . . .   9
+   7. Security Considerations  . . . . . . . . . . . . . . . . . . .  11
+   8. References . . . . . . . . . . . . . . . . . . . . . . . . . .  12
+   A. Glossary of terms and abbreviations  . . . . . . . . . . . . .  13
+   B. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  14
+      Author's Address . . . . . . . . . . . . . . . . . . . . . . .  14
+      Full Copyright Statement . . . . . . . . . . . . . . . . . . .  15
+
+
+
+
+
+
+
+Pfeiffer                     Informational                      [Page 1]
+
+RFC 3533                          OGG                           May 2003
+
+
+1. Introduction
+
+   The Ogg bitstream format has been developed as a part of a larger
+   project aimed at creating a set of components for the coding and
+   decoding of multimedia content (codecs) which are to be freely
+   available and freely re-implementable, both in software and in
+   hardware for the computing community at large, including the Internet
+   community.  It is the intention of the Ogg developers represented by
+   Xiph.Org that it be usable without intellectual property concerns.
+
+   This document describes the Ogg bitstream format and how to use it to
+   encapsulate one or several media bitstreams created by one or several
+   encoders.  The Ogg transport bitstream is designed to provide
+   framing, error protection and seeking structure for higher-level
+   codec streams that consist of raw, unencapsulated data packets, such
+   as the Vorbis audio codec or the upcoming Tarkin and Theora video
+   codecs.  It is capable of interleaving different binary media and
+   other time-continuous data streams that are prepared by an encoder as
+   a sequence of data packets.  Ogg provides enough information to
+   properly separate data back into such encoder created data packets at
+   the original packet boundaries without relying on decoding to find
+   packet boundaries.
+
+   Please note that the MIME type application/ogg has been registered
+   with the IANA [1].
+
+2. Definitions
+
+   For describing the Ogg encapsulation process, a set of terms will be
+   used whose meaning needs to be well understood.  Therefore, some of
+   the most fundamental terms are defined now before we start with the
+   description of the requirements for a generic media stream
+   encapsulation format, the process of encapsulation, and the concrete
+   format of the Ogg bitstream.  See the Appendix for a more complete
+   glossary.
+
+   The result of an Ogg encapsulation is called the "Physical (Ogg)
+   Bitstream".  It encapsulates one or several encoder-created
+   bitstreams, which are called "Logical Bitstreams".  A logical
+   bitstream, provided to the Ogg encapsulation process, has a
+   structure, i.e., it is split up into a sequence of so-called
+   "Packets".  The packets are created by the encoder of that logical
+   bitstream and represent meaningful entities for that encoder only
+   (e.g., an uncompressed stream may use video frames as packets).  They
+   do not contain boundary information - strung together they appear to
+   be streams of random bytes with no landmarks.
+
+
+
+
+
+Pfeiffer                     Informational                      [Page 2]
+
+RFC 3533                          OGG                           May 2003
+
+
+   Please note that the term "packet" is not used in this document to
+   signify entities for transport over a network.
+
+3. Requirements for a generic encapsulation format
+
+   The design idea behind Ogg was to provide a generic, linear media
+   transport format to enable both file-based storage and stream-based
+   transmission of one or several interleaved media streams independent
+   of the encoding format of the media data.  Such an encapsulation
+   format needs to provide:
+
+   o  framing for logical bitstreams.
+
+   o  interleaving of different logical bitstreams.
+
+   o  detection of corruption.
+
+   o  recapture after a parsing error.
+
+   o  position landmarks for direct random access of arbitrary positions
+      in the bitstream.
+
+   o  streaming capability (i.e., no seeking is needed to build a 100%
+      complete bitstream).
+
+   o  small overhead (i.e., use no more than approximately 1-2% of
+      bitstream bandwidth for packet boundary marking, high-level
+      framing, sync and seeking).
+
+   o  simplicity to enable fast parsing.
+
+   o  simple concatenation mechanism of several physical bitstreams.
+
+   All of these design considerations have been taken into consideration
+   for Ogg.  Ogg supports framing and interleaving of logical
+   bitstreams, seeking landmarks, detection of corruption, and stream
+   resynchronisation after a parsing error with no more than
+   approximately 1-2% overhead.  It is a generic framework to perform
+   encapsulation of time-continuous bitstreams.  It does not know any
+   specifics about the codec data that it encapsulates and is thus
+   independent of any media codec.
+
+4. The Ogg bitstream format
+
+   A physical Ogg bitstream consists of multiple logical bitstreams
+   interleaved in so-called "Pages".  Whole pages are taken in order
+   from multiple logical bitstreams multiplexed at the page level.  The
+   logical bitstreams are identified by a unique serial number in the
+
+
+
+Pfeiffer                     Informational                      [Page 3]
+
+RFC 3533                          OGG                           May 2003
+
+
+   header of each page of the physical bitstream.  This unique serial
+   number is created randomly and does not have any connection to the
+   content or encoder of the logical bitstream it represents.  Pages of
+   all logical bitstreams are concurrently interleaved, but they need
+   not be in a regular order - they are only required to be consecutive
+   within the logical bitstream.  Ogg demultiplexing reconstructs the
+   original logical bitstreams from the physical bitstream by taking the
+   pages in order from the physical bitstream and redirecting them into
+   the appropriate logical decoding entity.
+
+   Each Ogg page contains only one type of data as it belongs to one
+   logical bitstream only.  Pages are of variable size and have a page
+   header containing encapsulation and error recovery information.  Each
+   logical bitstream in a physical Ogg bitstream starts with a special
+   start page (bos=beginning of stream) and ends with a special page
+   (eos=end of stream).
+
+   The bos page contains information to uniquely identify the codec type
+   and MAY contain information to set up the decoding process.  The bos
+   page SHOULD also contain information about the encoded media - for
+   example, for audio, it should contain the sample rate and number of
+   channels.  By convention, the first bytes of the bos page contain
+   magic data that uniquely identifies the required codec.  It is the
+   responsibility of anyone fielding a new codec to make sure it is
+   possible to reliably distinguish his/her codec from all other codecs
+   in use.  There is no fixed way to detect the end of the codec-
+   identifying marker.  The format of the bos page is dependent on the
+   codec and therefore MUST be given in the encapsulation specification
+   of that logical bitstream type.  Ogg also allows but does not require
+   secondary header packets after the bos page for logical bitstreams
+   and these must also precede any data packets in any logical
+   bitstream.  These subsequent header packets are framed into an
+   integral number of pages, which will not contain any data packets.
+   So, a physical bitstream begins with the bos pages of all logical
+   bitstreams containing one initial header packet per page, followed by
+   the subsidiary header packets of all streams, followed by pages
+   containing data packets.
+
+   The encapsulation specification for one or more logical bitstreams is
+   called a "media mapping".  An example for a media mapping is "Ogg
+   Vorbis", which uses the Ogg framework to encapsulate Vorbis-encoded
+   audio data for stream-based storage (such as files) and transport
+   (such as TCP streams or pipes).  Ogg Vorbis provides the name and
+   revision of the Vorbis codec, the audio rate and the audio quality on
+   the Ogg Vorbis bos page.  It also uses two additional header pages
+   per logical bitstream.  The Ogg Vorbis bos page starts with the byte
+   0x01, followed by "vorbis" (a total of 7 bytes of identifier).
+
+
+
+
+Pfeiffer                     Informational                      [Page 4]
+
+RFC 3533                          OGG                           May 2003
+
+
+   Ogg knows two types of multiplexing: concurrent multiplexing (so-
+   called "Grouping") and sequential multiplexing (so-called
+   "Chaining").  Grouping defines how to interleave several logical
+   bitstreams page-wise in the same physical bitstream.  Grouping is for
+   example needed for interleaving a video stream with several
+   synchronised audio tracks using different codecs in different logical
+   bitstreams.  Chaining on the other hand, is defined to provide a
+   simple mechanism to concatenate physical Ogg bitstreams, as is often
+   needed for streaming applications.
+
+   In grouping, all bos pages of all logical bitstreams MUST appear
+   together at the beginning of the Ogg bitstream.  The media mapping
+   specifies the order of the initial pages.  For example, the grouping
+   of a specific Ogg video and Ogg audio bitstream may specify that the
+   physical bitstream MUST begin with the bos page of the logical video
+   bitstream, followed by the bos page of the audio bitstream.  Unlike
+   bos pages, eos pages for the logical bitstreams need not all occur
+   contiguously.  Eos pages may be 'nil' pages, that is, pages
+   containing no content but simply a page header with position
+   information and the eos flag set in the page header.  Each grouped
+   logical bitstream MUST have a unique serial number within the scope
+   of the physical bitstream.
+
+   In chaining, complete logical bitstreams are concatenated.  The
+   bitstreams do not overlap, i.e., the eos page of a given logical
+   bitstream is immediately followed by the bos page of the next.  Each
+   chained logical bitstream MUST have a unique serial number within the
+   scope of the physical bitstream.
+
+   It is possible to consecutively chain groups of concurrently
+   multiplexed bitstreams.  The groups, when unchained, MUST stand on
+   their own as a valid concurrently multiplexed bitstream.  The
+   following diagram shows a schematic example of such a physical
+   bitstream that obeys all the rules of both grouped and chained
+   multiplexed bitstreams.
+
+               physical bitstream with pages of
+          different logical bitstreams grouped and chained
+      -------------------------------------------------------------
+      |*A*|*B*|*C*|A|A|C|B|A|B|#A#|C|...|B|C|#B#|#C#|*D*|D|...|#D#|
+      -------------------------------------------------------------
+       bos bos bos             eos           eos eos bos       eos
+
+   In this example, there are two chained physical bitstreams, the first
+   of which is a grouped stream of three logical bitstreams A, B, and C.
+   The second physical bitstream is chained after the end of the grouped
+   bitstream, which ends after the last eos page of all its grouped
+   logical bitstreams.  As can be seen, grouped bitstreams begin
+
+
+
+Pfeiffer                     Informational                      [Page 5]
+
+RFC 3533                          OGG                           May 2003
+
+
+   together - all of the bos pages MUST appear before any data pages.
+   It can also be seen that pages of concurrently multiplexed bitstreams
+   need not conform to a regular order.  And it can be seen that a
+   grouped bitstream can end long before the other bitstreams in the
+   group end.
+
+   Ogg does not know any specifics about the codec data except that each
+   logical bitstream belongs to a different codec, the data from the
+   codec comes in order and has position markers (so-called "Granule
+   positions").  Ogg does not have a concept of 'time': it only knows
+   about sequentially increasing, unitless position markers.  An
+   application can only get temporal information through higher layers
+   which have access to the codec APIs to assign and convert granule
+   positions or time.
+
+   A specific definition of a media mapping using Ogg may put further
+   constraints on its specific use of the Ogg bitstream format.  For
+   example, a specific media mapping may require that all the eos pages
+   for all grouped bitstreams need to appear in direct sequence.  An
+   example for a media mapping is the specification of "Ogg Vorbis".
+   Another example is the upcoming "Ogg Theora" specification which
+   encapsulates Theora-encoded video data and usually comes multiplexed
+   with a Vorbis stream for an Ogg containing synchronised audio and
+   video.  As Ogg does not specify temporal relationships between the
+   encapsulated concurrently multiplexed bitstreams, the temporal
+   synchronisation between the audio and video stream will be specified
+   in this media mapping.  To enable streaming, pages from various
+   logical bitstreams will typically be interleaved in chronological
+   order.
+
+5. The encapsulation process
+
+   The process of multiplexing different logical bitstreams happens at
+   the level of pages as described above.  The bitstreams provided by
+   encoders are however handed over to Ogg as so-called "Packets" with
+   packet boundaries dependent on the encoding format.  The process of
+   encapsulating packets into pages will be described now.
+
+   From Ogg's perspective, packets can be of any arbitrary size.  A
+   specific media mapping will define how to group or break up packets
+   from a specific media encoder.  As Ogg pages have a maximum size of
+   about 64 kBytes, sometimes a packet has to be distributed over
+   several pages.  To simplify that process, Ogg divides each packet
+   into 255 byte long chunks plus a final shorter chunk.  These chunks
+   are called "Ogg Segments".  They are only a logical construct and do
+   not have a header for themselves.
+
+
+
+
+
+Pfeiffer                     Informational                      [Page 6]
+
+RFC 3533                          OGG                           May 2003
+
+
+   A group of contiguous segments is wrapped into a variable length page
+   preceded by a header.  A segment table in the page header tells about
+   the "Lacing values" (sizes) of the segments included in the page.  A
+   flag in the page header tells whether a page contains a packet
+   continued from a previous page.  Note that a lacing value of 255
+   implies that a second lacing value follows in the packet, and a value
+   of less than 255 marks the end of the packet after that many
+   additional bytes.  A packet of 255 bytes (or a multiple of 255 bytes)
+   is terminated by a lacing value of 0.  Note also that a 'nil' (zero
+   length) packet is not an error; it consists of nothing more than a
+   lacing value of zero in the header.
+
+   The encoding is optimized for speed and the expected case of the
+   majority of packets being between 50 and 200 bytes large.  This is a
+   design justification rather than a recommendation.  This encoding
+   both avoids imposing a maximum packet size as well as imposing
+   minimum overhead on small packets.  In contrast, e.g., simply using
+   two bytes at the head of every packet and having a max packet size of
+   32 kBytes would always penalize small packets (< 255 bytes, the
+   typical case) with twice the segmentation overhead.  Using the lacing
+   values as suggested, small packets see the minimum possible byte-
+   aligned overhead (1 byte) and large packets (>512 bytes) see a fairly
+   constant ~0.5% overhead on encoding space.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Pfeiffer                     Informational                      [Page 7]
+
+RFC 3533                          OGG                           May 2003
+
+
+   The following diagram shows a schematic example of a media mapping
+   using Ogg and grouped logical bitstreams:
+
+          logical bitstream with packet boundaries
+ -----------------------------------------------------------------
+ > |       packet_1             | packet_2         | packet_3 |  <
+ -----------------------------------------------------------------
+
+                     |segmentation (logically only)
+                     v
+
+      packet_1 (5 segments)          packet_2 (4 segs)    p_3 (2 segs)
+     ------------------------------ -------------------- ------------
+ ..  |seg_1|seg_2|seg_3|seg_4|s_5 | |seg_1|seg_2|seg_3|| |seg_1|s_2 | ..
+     ------------------------------ -------------------- ------------
+
+                     | page encapsulation
+                     v
+
+ page_1 (packet_1 data)   page_2 (pket_1 data)   page_3 (packet_2 data)
+------------------------  ----------------  ------------------------
+|H|------------------- |  |H|----------- |  |H|------------------- |
+|D||seg_1|seg_2|seg_3| |  |D|seg_4|s_5 | |  |D||seg_1|seg_2|seg_3| | ...
+|R|------------------- |  |R|----------- |  |R|------------------- |
+------------------------  ----------------  ------------------------
+
+                    |
+pages of            |
+other    --------|  |
+logical         -------
+bitstreams      | MUX |
+                -------
+                   |
+                   v
+
+              page_1  page_2          page_3
+      ------  ------  -------  -----  -------
+ ...  ||   |  ||   |  ||    |  ||  |  ||    |  ...
+      ------  ------  -------  -----  -------
+              physical Ogg bitstream
+
+   In this example we take a snapshot of the encapsulation process of
+   one logical bitstream.  We can see part of that bitstream's
+   subdivision into packets as provided by the codec.  The Ogg
+   encapsulation process chops up the packets into segments.  The
+   packets in this example are rather large such that packet_1 is split
+   into 5 segments - 4 segments with 255 bytes and a final smaller one.
+   Packet_2 is split into 4 segments - 3 segments with 255 bytes and a
+
+
+
+Pfeiffer                     Informational                      [Page 8]
+
+RFC 3533                          OGG                           May 2003
+
+
+   final very small one - and packet_3 is split into two segments.  The
+   encapsulation process then creates pages, which are quite small in
+   this example.  Page_1 consists of the first three segments of
+   packet_1, page_2 contains the remaining 2 segments from packet_1, and
+   page_3 contains the first three pages of packet_2.  Finally, this
+   logical bitstream is multiplexed into a physical Ogg bitstream with
+   pages of other logical bitstreams.
+
+6. The Ogg page format
+
+   A physical Ogg bitstream consists of a sequence of concatenated
+   pages.  Pages are of variable size, usually 4-8 kB, maximum 65307
+   bytes.  A page header contains all the information needed to
+   demultiplex the logical bitstreams out of the physical bitstream and
+   to perform basic error recovery and landmarks for seeking.  Each page
+   is a self-contained entity such that the page decode mechanism can
+   recognize, verify, and handle single pages at a time without
+   requiring the overall bitstream.
+
+   The Ogg page header has the following format:
+
+ 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| capture_pattern: Magic number for page start "OggS"           | 0-3
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| version       | header_type   | granule_position              | 4-7
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                                                               | 8-11
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                               | bitstream_serial_number       | 12-15
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                               | page_sequence_number          | 16-19
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                               | CRC_checksum                  | 20-23
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                               |page_segments  | segment_table | 24-27
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ...                                                           | 28-
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The LSb (least significant bit) comes first in the Bytes.  Fields
+   with more than one byte length are encoded LSB (least significant
+   byte) first.
+
+
+
+
+
+
+
+Pfeiffer                     Informational                      [Page 9]
+
+RFC 3533                          OGG                           May 2003
+
+
+   The fields in the page header have the following meaning:
+
+   1. capture_pattern: a 4 Byte field that signifies the beginning of a
+      page.  It contains the magic numbers:
+
+            0x4f 'O'
+
+            0x67 'g'
+
+            0x67 'g'
+
+            0x53 'S'
+
+      It helps a decoder to find the page boundaries and regain
+      synchronisation after parsing a corrupted stream.  Once the
+      capture pattern is found, the decoder verifies page sync and
+      integrity by computing and comparing the checksum.
+
+   2. stream_structure_version: 1 Byte signifying the version number of
+      the Ogg file format used in this stream (this document specifies
+      version 0).
+
+   3. header_type_flag: the bits in this 1 Byte field identify the
+      specific type of this page.
+
+      *  bit 0x01
+
+         set: page contains data of a packet continued from the previous
+            page
+
+         unset: page contains a fresh packet
+
+      *  bit 0x02
+
+         set: this is the first page of a logical bitstream (bos)
+
+         unset: this page is not a first page
+
+      *  bit 0x04
+
+         set: this is the last page of a logical bitstream (eos)
+
+         unset: this page is not a last page
+
+   4. granule_position: an 8 Byte field containing position information.
+      For example, for an audio stream, it MAY contain the total number
+      of PCM samples encoded after including all frames finished on this
+      page.  For a video stream it MAY contain the total number of video
+
+
+
+Pfeiffer                     Informational                     [Page 10]
+
+RFC 3533                          OGG                           May 2003
+
+
+      frames encoded after this page.  This is a hint for the decoder
+      and gives it some timing and position information.  Its meaning is
+      dependent on the codec for that logical bitstream and specified in
+      a specific media mapping.  A special value of -1 (in two's
+      complement) indicates that no packets finish on this page.
+
+   5. bitstream_serial_number: a 4 Byte field containing the unique
+      serial number by which the logical bitstream is identified.
+
+   6. page_sequence_number: a 4 Byte field containing the sequence
+      number of the page so the decoder can identify page loss.  This
+      sequence number is increasing on each logical bitstream
+      separately.
+
+   7. CRC_checksum: a 4 Byte field containing a 32 bit CRC checksum of
+      the page (including header with zero CRC field and page content).
+      The generator polynomial is 0x04c11db7.
+
+   8. number_page_segments: 1 Byte giving the number of segment entries
+      encoded in the segment table.
+
+   9. segment_table: number_page_segments Bytes containing the lacing
+      values of all segments in this page.  Each Byte contains one
+      lacing value.
+
+   The total header size in bytes is given by:
+   header_size = number_page_segments + 27 [Byte]
+
+   The total page size in Bytes is given by:
+   page_size = header_size + sum(lacing_values: 1..number_page_segments)
+   [Byte]
+
+7. Security Considerations
+
+   The Ogg encapsulation format is a container format and only
+   encapsulates content (such as Vorbis-encoded audio).  It does not
+   provide for any generic encryption or signing of itself or its
+   contained content bitstreams.  However, it encapsulates any kind of
+   content bitstream as long as there is a codec for it, and is thus
+   able to contain encrypted and signed content data.  It is also
+   possible to add an external security mechanism that encrypts or signs
+   an Ogg physical bitstream and thus provides content confidentiality
+   and authenticity.
+
+   As Ogg encapsulates binary data, it is possible to include executable
+   content in an Ogg bitstream.  This can be an issue with applications
+   that are implemented using the Ogg format, especially when Ogg is
+   used for streaming or file transfer in a networking scenario.  As
+
+
+
+Pfeiffer                     Informational                     [Page 11]
+
+RFC 3533                          OGG                           May 2003
+
+
+   such, Ogg does not pose a threat there.  However, an application
+   decoding Ogg and its encapsulated content bitstreams has to ensure
+   correct handling of manipulated bitstreams, of buffer overflows and
+   the like.
+
+8. References
+
+   [1] Walleij, L., "The application/ogg Media Type", RFC 3534, May
+       2003.
+
+   [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+       Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Pfeiffer                     Informational                     [Page 12]
+
+RFC 3533                          OGG                           May 2003
+
+
+Appendix A. Glossary of terms and abbreviations
+
+   bos page: The initial page (beginning of stream) of a logical
+      bitstream which contains information to identify the codec type
+      and other decoding-relevant information.
+
+   chaining (or sequential multiplexing): Concatenation of two or more
+      complete physical Ogg bitstreams.
+
+   eos page: The final page (end of stream) of a logical bitstream.
+
+   granule position: An increasing position number for a specific
+      logical bitstream stored in the page header.  Its meaning is
+      dependent on the codec for that logical bitstream and specified in
+      a specific media mapping.
+
+   grouping (or concurrent multiplexing): Interleaving of pages of
+      several logical bitstreams into one complete physical Ogg
+      bitstream under the restriction that all bos pages of all grouped
+      logical bitstreams MUST appear before any data pages.
+
+   lacing value: An entry in the segment table of a page header
+      representing the size of the related segment.
+
+   logical bitstream: A sequence of bits being the result of an encoded
+      media stream.
+
+   media mapping: A specific use of the Ogg encapsulation format
+      together with a specific (set of) codec(s).
+
+   (Ogg) packet: A subpart of a logical bitstream that is created by the
+      encoder for that bitstream and represents a meaningful entity for
+      the encoder, but only a sequence of bits to the Ogg encapsulation.
+
+   (Ogg) page: A physical bitstream consists of a sequence of Ogg pages
+      containing data of one logical bitstream only.  It usually
+      contains a group of contiguous segments of one packet only, but
+      sometimes packets are too large and need to be split over several
+      pages.
+
+   physical (Ogg) bitstream: The sequence of bits resulting from an Ogg
+      encapsulation of one or several logical bitstreams.  It consists
+      of a sequence of pages from the logical bitstreams with the
+      restriction that the pages of one logical bitstream MUST come in
+      their correct temporal order.
+
+
+
+
+
+
+Pfeiffer                     Informational                     [Page 13]
+
+RFC 3533                          OGG                           May 2003
+
+
+   (Ogg) segment: The Ogg encapsulation process splits each packet into
+      chunks of 255 bytes plus a last fractional chunk of less than 255
+      bytes.  These chunks are called segments.
+
+Appendix B. Acknowledgements
+
+   The author gratefully acknowledges the work that Christopher
+   Montgomery  and the Xiph.Org foundation have done in defining the Ogg
+   multimedia project and as part of it the open file format described
+   in this document.  The author hopes that providing this document to
+   the Internet community will help in promoting the Ogg multimedia
+   project at http://www.xiph.org/.  Many thanks also for the many
+   technical and typo corrections that C. Montgomery and the Ogg
+   community provided as feedback to this RFC.
+
+Author's Address
+
+   Silvia Pfeiffer
+   CSIRO, Australia
+   Locked Bag 17
+   North Ryde, NSW  2113
+   Australia
+
+   Phone: +61 2 9325 3141
+   EMail: Silvia.Pfeiffer@csiro.au
+   URI:   http://www.cmis.csiro.au/Silvia.Pfeiffer/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Pfeiffer                     Informational                     [Page 14]
+
+RFC 3533                          OGG                           May 2003
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Pfeiffer                     Informational                     [Page 15]
+
diff --git a/dist/share/doc/libogg/rfc5334.txt b/dist/share/doc/libogg/rfc5334.txt
new file mode 100644
index 0000000..fea91fb
--- /dev/null
+++ b/dist/share/doc/libogg/rfc5334.txt
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+Network Working Group                                       I. Goncalves
+Request for Comments: 5334                                   S. Pfeiffer
+Obsoletes: 3534                                            C. Montgomery
+Category: Standards Track                                           Xiph
+                                                          September 2008
+
+
+                            Ogg Media Types
+
+Status of This Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Abstract
+
+   This document describes the registration of media types for the Ogg
+   container format and conformance requirements for implementations of
+   these types.  This document obsoletes RFC 3534.
+
+Table of Contents
+
+   1.     Introduction  . . . . . . . . . . . . . . . . . . . . . . .  2
+   2.     Changes Since RFC 3534  . . . . . . . . . . . . . . . . . .  2
+   3.     Conformance and Document Conventions  . . . . . . . . . . .  3
+   4.     Deployed Media Types and Compatibility  . . . . . . . . . .  3
+   5.     Relation between the Media Types  . . . . . . . . . . . . .  5
+   6.     Encoding Considerations . . . . . . . . . . . . . . . . . .  5
+   7.     Security Considerations . . . . . . . . . . . . . . . . . .  6
+   8.     Interoperability Considerations . . . . . . . . . . . . . .  7
+   9.     IANA Considerations . . . . . . . . . . . . . . . . . . . .  7
+   10.    Ogg Media Types . . . . . . . . . . . . . . . . . . . . . .  7
+   10.1.  application/ogg . . . . . . . . . . . . . . . . . . . . . .  7
+   10.2.  video/ogg . . . . . . . . . . . . . . . . . . . . . . . . .  8
+   10.3.  audio/ogg . . . . . . . . . . . . . . . . . . . . . . . . .  9
+   11.    Acknowledgements  . . . . . . . . . . . . . . . . . . . . . 10
+   12.    Copying Conditions  . . . . . . . . . . . . . . . . . . . . 10
+   13.    References  . . . . . . . . . . . . . . . . . . . . . . . . 11
+   13.1.  Normative References  . . . . . . . . . . . . . . . . . . . 11
+   13.2.  Informative References  . . . . . . . . . . . . . . . . . . 11
+
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 1]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+1.  Introduction
+
+   This document describes media types for Ogg, a data encapsulation
+   format defined by the Xiph.Org Foundation for public use.  Refer to
+   "Introduction" in [RFC3533] and "Overview" in [Ogg] for background
+   information on this container format.
+
+   Binary data contained in Ogg, such as Vorbis and Theora, has
+   historically been interchanged using the application/ogg media type
+   as defined by [RFC3534].  This document obsoletes [RFC3534] and
+   defines three media types for different types of content in Ogg to
+   reflect this usage in the IANA media type registry, to foster
+   interoperability by defining underspecified aspects, and to provide
+   general security considerations.
+
+   The Ogg container format is known to contain [Theora] or [Dirac]
+   video, [Speex] (narrow-band and wide-band) speech, [Vorbis] or [FLAC]
+   audio, and [CMML] timed text/metadata.  As Ogg encapsulates binary
+   data, it is possible to include any other type of video, audio,
+   image, text, or, generally speaking, any time-continuously sampled
+   data.
+
+   While raw packets from these data sources may be used directly by
+   transport mechanisms that provide their own framing and packet-
+   separation mechanisms (such as UDP datagrams or RTP), Ogg is a
+   solution for stream based storage (such as files) and transport (such
+   as TCP streams or pipes).  The media types defined in this document
+   are needed to correctly identify such content when it is served over
+   HTTP, included in multi-part documents, or used in other places where
+   media types [RFC2045] are used.
+
+2.  Changes Since RFC 3534
+
+   o  The type "application/ogg" is redefined.
+
+   o  The types "video/ogg" and "audio/ogg" are defined.
+
+   o  New file extensions are defined.
+
+   o  New Macintosh file type codes are defined.
+
+   o  The codecs parameter is defined for optional use.
+
+   o  The Ogg Skeleton extension becomes a recommended addition for
+      content served under the new types.
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 2]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+3.  Conformance and Document Conventions
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in BCP 14, [RFC2119] and
+   indicate requirement levels for compliant implementations.
+   Requirements apply to all implementations unless otherwise stated.
+
+   An implementation is a software module that supports one of the media
+   types defined in this document.  Software modules may support
+   multiple media types, but conformance is considered individually for
+   each type.
+
+   Implementations that fail to satisfy one or more "MUST" requirements
+   are considered non-compliant.  Implementations that satisfy all
+   "MUST" requirements, but fail to satisfy one or more "SHOULD"
+   requirements, are said to be "conditionally compliant".  All other
+   implementations are "unconditionally compliant".
+
+4.  Deployed Media Types and Compatibility
+
+   The application/ogg media type has been used in an ad hoc fashion to
+   label and exchange multimedia content in Ogg containers.
+
+   Use of the "application" top-level type for this kind of content is
+   known to be problematic, in particular since it obfuscates video and
+   audio content.  This document thus defines the media types,
+
+   o  video/ogg
+
+   o  audio/ogg
+
+   which are intended for common use and SHOULD be used when dealing
+   with video or audio content, respectively.  This document also
+   obsoletes the [RFC3534] definition of application/ogg and marks it
+   for complex data (e.g., multitrack visual, audio, textual, and other
+   time-continuously sampled data), which is not clearly video or audio
+   data and thus not suited for either the video/ogg or audio/ogg types.
+   Refer to the following section for more details.
+
+   An Ogg bitstream generally consists of one or more logical bitstreams
+   that each consist of a series of header and data pages packetising
+   time-continuous binary data [RFC3533].  The content types of the
+   logical bitstreams may be identified without decoding the header
+   pages of the logical bitstreams through use of a [Skeleton]
+   bitstream.  Using Ogg Skeleton is REQUIRED for content served under
+
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 3]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+   the application/ogg type and RECOMMENDED for video/ogg and audio/ogg,
+   as Skeleton contains identifiers to describe the different
+   encapsulated data.
+
+   Furthermore, it is RECOMMENDED that implementations that identify a
+   logical bitstream that they cannot decode SHOULD ignore it, while
+   continuing to decode the ones they can.  Such precaution ensures
+   backward and forward compatibility with existing and future data.
+
+   These media types can optionally use the "codecs" parameter described
+   in [RFC4281].  Codecs encapsulated in Ogg require a text identifier
+   at the beginning of the first header page, hence a machine-readable
+   method to identify the encapsulated codecs would be through this
+   header.  The following table illustrates how those header values map
+   into strings that are used in the "codecs" parameter when dealing
+   with Ogg media types.
+
+        Codec Identifier             | Codecs Parameter
+       -----------------------------------------------------------
+        char[5]: 'BBCD\0'            | dirac
+        char[5]: '\177FLAC'          | flac
+        char[7]: '\x80theora'        | theora
+        char[7]: '\x01vorbis'        | vorbis
+        char[8]: 'CELT    '          | celt
+        char[8]: 'CMML\0\0\0\0'      | cmml
+        char[8]: '\213JNG\r\n\032\n' | jng
+        char[8]: '\x80kate\0\0\0'    | kate
+        char[8]: 'OggMIDI\0'         | midi
+        char[8]: '\212MNG\r\n\032\n' | mng
+        char[8]: 'PCM     '          | pcm
+        char[8]: '\211PNG\r\n\032\n' | png
+        char[8]: 'Speex   '          | speex
+        char[8]: 'YUV4MPEG'          | yuv4mpeg
+
+   An up-to-date version of this table is kept at Xiph.org (see
+   [Codecs]).
+
+   Possible examples include:
+
+   o  application/ogg; codecs="theora, cmml, ecmascript"
+
+   o  video/ogg; codecs="theora, vorbis"
+
+   o  audio/ogg; codecs=speex
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 4]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+5.  Relation between the Media Types
+
+   As stated in the previous section, this document describes three
+   media types that are targeted at different data encapsulated in Ogg.
+   Since Ogg is capable of encapsulating any kind of data, the multiple
+   usage scenarios have revealed interoperability issues between
+   implementations when dealing with content served solely under the
+   application/ogg type.
+
+   While this document does redefine the earlier definition of
+   application/ogg, this media type will continue to embrace the widest
+   net possible of content with the video/ogg and audio/ogg types being
+   smaller subsets of it.  However, the video/ogg and audio/ogg types
+   take precedence in a subset of the usages, specifically when serving
+   multimedia content that is not complex enough to warrant the use of
+   application/ogg.  Following this line of thought, the audio/ogg type
+   is an even smaller subset within video/ogg, as it is not intended to
+   refer to visual content.
+
+   As such, the application/ogg type is the recommended choice to serve
+   content aimed at scientific and other applications that require
+   various multiplexed signals or streams of continuous data, with or
+   without scriptable control of content.  For bitstreams containing
+   visual, timed text, and any other type of material that requires a
+   visual interface, but that is not complex enough to warrant serving
+   under application/ogg, the video/ogg type is recommended.  In
+   situations where the Ogg bitstream predominantly contains audio data
+   (lyrics, metadata, or cover art notwithstanding), it is recommended
+   to use the audio/ogg type.
+
+6.  Encoding Considerations
+
+   Binary: The content consists of an unrestricted sequence of octets.
+
+   Note:
+
+   o  Ogg encapsulated content is binary data and should be transmitted
+      in a suitable encoding without CR/LF conversion, 7-bit stripping,
+      etc.; base64 [RFC4648] is generally preferred for binary-to-text
+      encoding.
+
+   o  Media types described in this document are used for stream based
+      storage (such as files) and transport (such as TCP streams or
+      pipes); separate types are used to identify codecs such as in
+      real-time applications for the RTP payload formats of Theora
+      [ThRTP] video, Vorbis [RFC5215], or Speex [SpRTP] audio, as well
+      as for identification of encapsulated data within Ogg through
+      Skeleton.
+
+
+
+Goncalves, et al.           Standards Track                     [Page 5]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+7.  Security Considerations
+
+   Refer to [RFC3552] for a discussion of terminology used in this
+   section.
+
+   The Ogg encapsulation format is a container and only a carrier of
+   content (such as audio, video, and displayable text data) with a very
+   rigid definition.  This format in itself is not more vulnerable than
+   any other content framing mechanism.
+
+   Ogg does not provide for any generic encryption or signing of itself
+   or its contained bitstreams.  However, it encapsulates any kind of
+   binary content and is thus able to contain encrypted and signed
+   content data.  It is also possible to add an external security
+   mechanism that encrypts or signs an Ogg bitstream and thus provides
+   content confidentiality and authenticity.
+
+   As Ogg encapsulates binary data, it is possible to include executable
+   content in an Ogg bitstream.  Implementations SHOULD NOT execute such
+   content without prior validation of its origin by the end-user.
+
+   Issues may arise on applications that use Ogg for streaming or file
+   transfer in a networking scenario.  In such cases, implementations
+   decoding Ogg and its encapsulated bitstreams have to ensure correct
+   handling of manipulated bitstreams, of buffer overflows, and similar
+   issues.
+
+   It is also possible to author malicious Ogg bitstreams, which attempt
+   to call for an excessively large picture size, high sampling-rate
+   audio, etc.  Implementations SHOULD protect themselves against this
+   kind of attack.
+
+   Ogg has an extensible structure, so that it is theoretically possible
+   that metadata fields or media formats might be defined in the future
+   which might be used to induce particular actions on the part of the
+   recipient, thus presenting additional security risks.  However, this
+   type of capability is currently not supported in the referenced
+   specification.
+
+   Implementations may fail to implement a specific security model or
+   other means to prevent possibly dangerous operations.  Such failure
+   might possibly be exploited to gain unauthorized access to a system
+   or sensitive information; such failure constitutes an unknown factor
+   and is thus considered out of the scope of this document.
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 6]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+8.  Interoperability Considerations
+
+   The Ogg container format is device-, platform-, and vendor-neutral
+   and has proved to be widely implementable across different computing
+   platforms through a wide range of encoders and decoders.  A broadly
+   portable reference implementation [libogg] is available under the
+   revised (3-clause) BSD license, which is a Free Software license.
+
+   The Xiph.Org Foundation has defined the specification,
+   interoperability, and conformance and conducts regular
+   interoperability testing.
+
+   The use of the Ogg Skeleton extension has been confirmed to not cause
+   interoperability issues with existing implementations.  Third parties
+   are, however, welcome to conduct their own testing.
+
+9.  IANA Considerations
+
+   In accordance with the procedures set forth in [RFC4288], this
+   document registers two new media types and redefines the existing
+   application/ogg as defined in the following section.
+
+10.  Ogg Media Types
+
+10.1.  application/ogg
+
+   Type name: application
+
+   Subtype name: ogg
+
+   Required parameters: none
+
+   Optional parameters: codecs, whose syntax is defined in RFC 4281.
+   See section 4 of RFC 5334 for a list of allowed values.
+
+   Encoding considerations: See section 6 of RFC 5334.
+
+   Security considerations: See section 7 of RFC 5334.
+
+   Interoperability considerations: None, as noted in section 8 of RFC
+   5334.
+
+   Published specification: RFC 3533
+
+   Applications which use this media type: Scientific and otherwise that
+   require various multiplexed signals or streams of data, with or
+   without scriptable control of content.
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 7]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+   Additional information:
+
+   Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
+   correspond to the string "OggS".
+
+   File extension(s): .ogx
+
+      RFC 3534 defined the file extension .ogg for application/ogg,
+      which RFC 5334 obsoletes in favor of .ogx due to concerns where,
+      historically, some implementations expect .ogg files to be solely
+      Vorbis-encoded audio.
+
+   Macintosh File Type Code(s): OggX
+
+   Person & Email address to contact for further information: See
+   "Authors' Addresses" section.
+
+   Intended usage: COMMON
+
+   Restrictions on usage: The type application/ogg SHOULD only be used
+   in situations where it is not appropriate to serve data under the
+   video/ogg or audio/ogg types.  Data served under the application/ogg
+   type SHOULD use the .ogx file extension and MUST contain an Ogg
+   Skeleton logical bitstream to identify all other contained logical
+   bitstreams.
+
+   Author: See "Authors' Addresses" section.
+
+   Change controller: The Xiph.Org Foundation.
+
+10.2.  video/ogg
+
+   Type name: video
+
+   Subtype name: ogg
+
+   Required parameters: none
+
+   Optional parameters: codecs, whose syntax is defined in RFC 4281.
+   See section 4 of RFC 5334 for a list of allowed values.
+
+   Encoding considerations: See section 6 of RFC 5334.
+
+   Security considerations: See section 7 of RFC 5334.
+
+   Interoperability considerations: None, as noted in section 8 of RFC
+   5334.
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 8]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+   Published specification: RFC 3533
+
+   Applications which use this media type: Multimedia applications,
+   including embedded, streaming, and conferencing tools.
+
+   Additional information:
+
+   Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
+   correspond to the string "OggS".
+
+   File extension(s): .ogv
+
+   Macintosh File Type Code(s): OggV
+
+   Person & Email address to contact for further information: See
+   "Authors' Addresses" section.
+
+   Intended usage: COMMON
+
+   Restrictions on usage: The type "video/ogg" SHOULD be used for Ogg
+   bitstreams containing visual, audio, timed text, or any other type of
+   material that requires a visual interface.  It is intended for
+   content not complex enough to warrant serving under "application/
+   ogg"; for example, a combination of Theora video, Vorbis audio,
+   Skeleton metadata, and CMML captioning.  Data served under the type
+   "video/ogg" SHOULD contain an Ogg Skeleton logical bitstream.
+   Implementations interacting with the type "video/ogg" SHOULD support
+   multiplexed bitstreams.
+
+   Author: See "Authors' Addresses" section.
+
+   Change controller: The Xiph.Org Foundation.
+
+10.3.  audio/ogg
+
+   Type name: audio
+
+   Subtype name: ogg
+
+   Required parameters: none
+
+   Optional parameters: codecs, whose syntax is defined in RFC 4281.
+   See section 4 of RFC 5334 for a list of allowed values.
+
+   Encoding considerations: See section 6 of RFC 5334.
+
+   Security considerations: See section 7 of RFC 5334.
+
+
+
+
+Goncalves, et al.           Standards Track                     [Page 9]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+   Interoperability considerations: None, as noted in section 8 of RFC
+   5334.
+
+   Published specification: RFC 3533
+
+   Applications which use this media type: Multimedia applications,
+   including embedded, streaming, and conferencing tools.
+
+   Additional information:
+
+   Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
+   correspond to the string "OggS".
+
+   File extension(s): .oga, .ogg, .spx
+
+   Macintosh File Type Code(s): OggA
+
+   Person & Email address to contact for further information: See
+   "Authors' Addresses" section.
+
+   Intended usage: COMMON
+
+   Restrictions on usage: The type "audio/ogg" SHOULD be used when the
+   Ogg bitstream predominantly contains audio data.  Content served
+   under the "audio/ogg" type SHOULD have an Ogg Skeleton logical
+   bitstream when using the default .oga file extension.  The .ogg and
+   .spx file extensions indicate a specialization that requires no
+   Skeleton due to backward compatibility concerns with existing
+   implementations.  In particular, .ogg is used for Ogg files that
+   contain only a Vorbis bitstream, while .spx is used for Ogg files
+   that contain only a Speex bitstream.
+
+   Author: See "Authors' Addresses" section.
+
+   Change controller: The Xiph.Org Foundation.
+
+11.  Acknowledgements
+
+   The authors gratefully acknowledge the contributions of Magnus
+   Westerlund, Alfred Hoenes, and Peter Saint-Andre.
+
+12.  Copying Conditions
+
+   The authors agree to grant third parties the irrevocable right to
+   copy, use and distribute the work, with or without modification, in
+   any medium, without royalty, provided that, unless separate
+   permission is granted, redistributed modified works do not contain
+   misleading author, version, name of work, or endorsement information.
+
+
+
+Goncalves, et al.           Standards Track                    [Page 10]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+13.  References
+
+13.1.  Normative References
+
+   [RFC2045]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail
+               Extensions (MIME) Part One: Format of Internet Message
+               Bodies", RFC 2045, November 1996.
+
+   [RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
+               Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC3533]   Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
+               RFC 3533, May 2003.
+
+   [RFC4281]   Gellens, R., Singer, D., and P. Frojdh, "The Codecs
+               Parameter for "Bucket" Media Types", RFC 4281,
+               November 2005.
+
+   [RFC4288]   Freed, N. and J. Klensin, "Media Type Specifications and
+               Registration Procedures", BCP 13, RFC 4288,
+               December 2005.
+
+13.2.  Informative References
+
+   [CMML]      Pfeiffer, S., Parker, C., and A. Pang, "The Continuous
+               Media Markup Language (CMML)", Work in Progress,
+               March 2006.
+
+   [Codecs]    Pfeiffer, S. and I. Goncalves, "Specification of MIME
+               types and respective codecs parameter", July 2008,
+               <http://wiki.xiph.org/index.php/MIMETypesCodecs>.
+
+   [Dirac]     Dirac Group, "Dirac Specification",
+               <http://diracvideo.org/specifications/>.
+
+   [FLAC]      Coalson, J., "The FLAC Format",
+               <http://flac.sourceforge.net/format.html>.
+
+   [libogg]    Xiph.Org Foundation, "The libogg API", June 2000,
+               <http://xiph.org/ogg/doc/libogg>.
+
+   [Ogg]       Xiph.Org Foundation, "Ogg bitstream documentation: Ogg
+               logical and physical bitstream overview, Ogg logical
+               bitstream framing, Ogg multi-stream multiplexing",
+               <http://xiph.org/ogg/doc>.
+
+   [RFC3534]   Walleij, L., "The application/ogg Media Type", RFC 3534,
+               May 2003.
+
+
+
+Goncalves, et al.           Standards Track                    [Page 11]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+   [RFC3552]   Rescorla, E. and B. Korver, "Guidelines for Writing RFC
+               Text on Security Considerations", BCP 72, RFC 3552,
+               July 2003.
+
+   [RFC4648]   Josefsson, S., "The Base16, Base32, and Base64 Data
+               Encodings", RFC 4648, October 2006.
+
+   [RFC5215]   Barbato, L., "RTP Payload Format for Vorbis Encoded
+               Audio", RFC 5215, August 2008.
+
+   [Skeleton]  Pfeiffer, S. and C. Parker, "The Ogg Skeleton Metadata
+               Bitstream", November 2007,
+               <http://xiph.org/ogg/doc/skeleton.html>.
+
+   [Speex]     Valin, J., "The Speex Codec Manual", February 2002,
+               <http://speex.org/docs/manual/speex-manual>.
+
+   [SpRTP]     Herlein, G., Valin, J., Heggestad, A., and A. Moizard,
+               "RTP Payload Format for the Speex Codec", Work
+               in Progress, February 2008.
+
+   [Theora]    Xiph.Org Foundation, "Theora Specification",
+               October 2007, <http://theora.org/doc/Theora.pdf>.
+
+   [ThRTP]     Barbato, L., "RTP Payload Format for Theora Encoded
+               Video", Work in Progress, June 2006.
+
+   [Vorbis]    Xiph.Org Foundation, "Vorbis I Specification", July 2004,
+               <http://xiph.org/vorbis/doc/Vorbis_I_spec.html>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                    [Page 12]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+Authors' Addresses
+
+   Ivo Emanuel Goncalves
+   Xiph.Org Foundation
+   21 College Hill Road
+   Somerville, MA  02144
+   US
+
+   EMail: justivo@gmail.com
+   URI:   xmpp:justivo@gmail.com
+
+
+   Silvia Pfeiffer
+   Xiph.Org Foundation
+
+   EMail: silvia@annodex.net
+   URI:   http://annodex.net/
+
+
+   Christopher Montgomery
+   Xiph.Org Foundation
+
+   EMail: monty@xiph.org
+   URI:   http://xiph.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                    [Page 13]
+
+RFC 5334                    Ogg Media Types               September 2008
+
+
+Full Copyright Statement
+
+   Copyright (C) The IETF Trust (2008).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
+   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
+   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+
+
+
+
+
+
+
+
+
+
+
+Goncalves, et al.           Standards Track                    [Page 14]
+
diff --git a/dist/share/doc/libogg/skeleton.html b/dist/share/doc/libogg/skeleton.html
new file mode 100644
index 0000000..8b29c18
--- /dev/null
+++ b/dist/share/doc/libogg/skeleton.html
@@ -0,0 +1,222 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html dir="ltr" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The Ogg Skeleton Metadata Bitstream</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, "DejaVu Sans", sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"></a>
+</div>
+
+<h1>The Ogg Skeleton Metadata Bitstream</h1>
+
+<h2>Overview</h2>
+
+<p><strong>Ogg Skeleton</strong> provides structuring information for multitrack <a href="//xiph.org/ogg">Ogg</a> files. It is compatible with Ogg <a rel="external" href="//theora.org">Theora</a> and provides extra clues for synchronization and content negotiation such as language selection.</p>
+
+<p>Ogg is a generic container format for time-continuous data streams, enabling interleaving of several tracks of frame-wise encoded content in a time-multiplexed manner. As an example, an Ogg physical bitstream could encapsulate several tracks of video encoded in Theora and multiple tracks of audio encoded in Speex or Vorbis or FLAC at the same time. A player that decodes such a bitstream could then, for example, play one video channel as the main video playback, alpha-blend another one on top of it (e.g. a caption track), play a main Vorbis audio together with several FLAC audio tracks simultaneously (e.g. as sound effects), and provide a choice of Speex channels (e.g. providing commentary in different languages). Such a file is generally possible to create with Ogg, it is however not possible to generically parse such a file, seek on it, understand what codecs are contained in such a file, and dynamically handle and play back such content.</p>
+
+<p>Ogg does not know anything about the content it carries and leaves it to the media mapping of each codec to declare and describe itself. There is no meta information available at the Ogg level about the content tracks encapsulated within an Ogg physical bitstream. This is particularly a problem if you don't have all the decoder libraries available and just want to parse an Ogg file to find out what type of data it encapsulates (such as the "file" command under *nix to determine what file it is through magic numbers), or want to seek to a temporal offset without having to decode the data (such as on a Web server that just serves out Ogg files and parts thereof).</p>
+
+<p>Ogg Skeleton is being designed to overcome these problems. Ogg Skeleton is a logical bitstream within an Ogg stream that contains information about the other encapsulated logical bitstreams. For each logical bitstream it provides information such as its media type, and explains the way the granulepos field in Ogg pages is mapped to time.</p>
+
+<p>Ogg Skeleton is also designed to allow the creation of substreams from Ogg physical bitstreams that retain the original timing information. For example, when cutting out the segment between the 7th and the 59th second of an Ogg file, it would be nice to continue to start this cut out file with a playback time of 7 seconds and not of 0. This is of particular interest if you're streaming this file from a Web server after a query for a temporal subpart such as in http://example.com/video.ogv?t=7-59</p>
+
+<h2>Specification</h2>
+
+<h3>How to describe the logical bitstreams within an Ogg container?</h3>
+
+<p>The following information about a logical bitstream is of interest to contain as meta information in the Skeleton:</p>
+<ul>
+<li>the serial number: it identifies a content track</li>
+<li>the mime type: it identifies the content type</li>
+<li>other generic name-value fields that can provide meta information such as the language of a track or the video height and width</li>
+<li>the number of header packets: this informs a parser about the number of actual header packets in an Ogg logical bitstream</li>
+<li>the granule rate: the granule rate represents the data rate in Hz at which content is sampled for the particular logical bitstream, allowing to map a granule position to time by calculating "granulepos / granulerate"</li>
+<li>the preroll: the number of past content packets to take into account when decoding the current Ogg page, which is necessary for seeking (vorbis has generally 2, speex 3)</li>
+<li>the granuleshift: the number of lower bits from the granulepos field that are used to provide position information for sub-seekable units (like the keyframe shift in theora)</li>
+<li>a basetime: it provides a mapping for granule position 0 (for all logical bitstreams) to a playback time; an example use: most content in professional analog video creation actually starts at a time of 1 hour and thus adding this additional field allows them retain this mapping on digitizing their content</li>
+<li>a UTC time: it provides a mapping for granule position 0 (for all logical bitstreams) to a real-world clock time allowing to remember e.g. the recording or broadcast time of some content</li>
+</ul>
+
+<h3>How to allow the creation of substreams from an Ogg physical bitstream?</h3>
+
+<p>When cutting out a subpart of an Ogg physical bitstream, the aim is to keep all the content pages intact (including the framing and granule positions) and just change some information in the Skeleton that allows reconstruction of the accurate time mapping. When remultiplexing such a bitstream, it is necessary to take into account all the different contained logical bitstreams. A given cut-in time maps to several different byte positions in the Ogg physical bitstream because each logical bitstream has its relevant information for that time at a different location. In addition, the resolution of each logical bitstream may not be high enough to accommodate for the given cut-in time and thus there may be some surplus information necessary to be remuxed into the new bitstream.</p>
+
+<p>The following information is necessary to be added to the Skeleton to allow a correct presentation of a subpart of an Ogg bitstream:</p>
+<ul>
+<li>the presentation time: this is the actual cut-in time and all logical bitstreams are meant to start presenting from this time onwards, not from the time their data starts, which may be some time before that (because this time may have mapped right into the middle of a packet, or because the logical bitstream has a preroll or a keyframe shift)</li>
+<li>the basegranule: this represents the granule number with which this logical bitstream starts in the remuxed stream and provides for each logical bitstream the accurate start time of its data stream; this information is necessary to allow correct decoding and timing of the first data packets contained in a logcial bitstream of a remuxed Ogg stream</li>
+</ul>
+
+<h3>Ogg Skeleton version 3.0 Format Specification</h3>
+
+<p>Adding the above information into an Ogg bitstream without breaking existing Ogg functionality and code requires the use of a logical bitstream for Ogg Skeleton. This logical bitstream may be ignored on decoding such that existing players can still continue to play back Ogg files that have a Skeleton bitstream. Skeleton enriches the Ogg bitstream to provide meta information about structure and content of the Ogg bitstream.</p>
+
+<p>The Skeleton logical bitstream starts with an ident header that contains information about all of the logical bitstreams and is mapped into the Skeleton bos page.  The first 8 bytes provide the magic identifier "fishead\0".
+After the fishead follows a set of secondary header packets, each of which contains information about one logical bitstream. These secondary header packets are identified by an 8 byte code of "fisbone\0". The Skeleton logical bitstream has no actual content packets. Its eos page is included into the stream before any data pages of the other logical bitstreams appear and contains a packet of length 0.</p>
+
+<p>The fishead ident header looks as follows:</p>
+<pre>
+
+  0                   1                   2                   3
+  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Identifier 'fishead\0'                                        | 0-3
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 4-7
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Version major                 | Version minor                 | 8-11
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Presentationtime numerator                                    | 12-15
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 16-19
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Presentationtime denominator                                  | 20-23
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 24-27
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Basetime numerator                                            | 28-31
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 32-35
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Basetime denominator                                          | 36-39
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 40-43
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | UTC                                                           | 44-47
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 48-51
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 52-55
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 56-59
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 60-63
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+</pre>
+<p>The version fields provide version information for the Skeleton track, currently being 3.0 (the number having evolved within the Annodex project).</p>
+
+<p>Presentation time and basetime are specified as a rational number, the denominator providing the temporal resolution at which the time is given (e.g. to specify time in milliseconds, provide a denominator of 1000).</p>
+
+<p>The fisbone secondary header packet looks as follows:</p>
+<pre>
+
+  0                   1                   2                   3
+  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Identifier 'fisbone\0'                                        | 0-3
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 4-7
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Offset to message header fields                               | 8-11
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Serial number                                                 | 12-15
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Number of header packets                                      | 16-19
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Granulerate numerator                                         | 20-23
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 24-27
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Granulerate denominator                                       | 28-31
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 32-35
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Basegranule                                                   | 36-39
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |                                                               | 40-43
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Preroll                                                       | 44-47
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Granuleshift  | Padding/future use                            | 48-51
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Message header fields ...                                     | 52-
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+</pre>
+<p>The mime type is provided as a message header field specified in the same way that HTTP header fields are given (e.g. "Content-Type: audio/vorbis"). Further meta information (such as language and screen size) are also included as message header fields. The offset to the message header fields at the beginning of a fisbone packet is included for forward compatibility - to allow further fields to be included into the packet without disrupting the message header field parsing.</p>
+
+<p>The granule rate is again given as a rational number in the same way that presentation time and basetime were provided above.</p>
+
+<p>A further restriction on how to encapsulate Skeleton into Ogg is proposed to allow for easier parsing:</p>
+<ul>
+<li>there can only be one Skeleton logical bitstream in a Ogg bitstream</li>
+<li>the Skeleton bos page is the very first bos page in the Ogg stream such that it can be identified straight away and decoders don't get confused about it being e.g. Ogg Vorbis without this meta information</li>
+<li>the bos pages of all the other logical bistreams come next (a requirement of Ogg)</li>
+<li>the secondary header pages of all logical bitstreams come next, including Skeleton's secondary header packets</li>
+<li>the Skeleton eos page end the control section of the Ogg stream before any content pages of any of the other logical bitstreams appear</li>
+</ul>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of the Xiph.Org Foundation.<br>
+
+  These pages &copy; 1994 - 2008 Xiph.Org Foundation. Some rights reserved.
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/dist/share/doc/libogg/stream.png b/dist/share/doc/libogg/stream.png
new file mode 100644
index 0000000..ce2d2da
--- /dev/null
+++ b/dist/share/doc/libogg/stream.png
Binary files differ
diff --git a/dist/share/doc/libogg/vorbisword2.png b/dist/share/doc/libogg/vorbisword2.png
new file mode 100644
index 0000000..12e3d31
--- /dev/null
+++ b/dist/share/doc/libogg/vorbisword2.png
Binary files differ
diff --git a/dist/share/doc/libogg/white-ogg.png b/dist/share/doc/libogg/white-ogg.png
new file mode 100644
index 0000000..2694296
--- /dev/null
+++ b/dist/share/doc/libogg/white-ogg.png
Binary files differ
diff --git a/dist/share/doc/libogg/white-xifish.png b/dist/share/doc/libogg/white-xifish.png
new file mode 100644
index 0000000..ab25cc8
--- /dev/null
+++ b/dist/share/doc/libogg/white-xifish.png
Binary files differ
diff --git a/dist/share/doc/speex/manual.pdf b/dist/share/doc/speex/manual.pdf
new file mode 100644
index 0000000..292f304
--- /dev/null
+++ b/dist/share/doc/speex/manual.pdf
Binary files differ
diff --git a/dist/share/man/man1/speexdec.1 b/dist/share/man/man1/speexdec.1
new file mode 100644
index 0000000..3545f09
--- /dev/null
+++ b/dist/share/man/man1/speexdec.1
@@ -0,0 +1,78 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH SPEEXDEC "1" "September 2003" "speexdec version 1.1" "User Commands"
+.SH NAME
+speexdec \- The reference implementation speex decoder.
+.SH SYNOPSIS
+.B speexdec
+[\fIoptions\fR] \fIinput_file.spx \fR[\fIoutput_file\fR]
+.SH DESCRIPTION
+Decodes a Speex file and produce a WAV file or raw file
+.SS "input_file can be:"
+.TP
+filename.spx
+regular Speex file
+.TP
+-
+stdin
+.SS "output_file can be:"
+.TP
+filename.wav
+Wav file
+.TP
+filename.*
+Raw PCM file (any extension other that .wav)
+.TP
+-
+stdout
+.TP
+(nothing)
+Will be played to soundcard
+.SH OPTIONS
+.TP
+\fB\-\-enh\fR
+Enable perceptual enhancement (default)
+.TP
+\fB\-\-no\-enh\fR
+Disable perceptual enhancement
+.TP
+\fB\-\-force\-nb\fR
+Force decoding in narrowband
+.TP
+\fB\-\-force\-wb\fR
+Force decoding in wideband
+.TP
+\fB\-\-force\-uwb\fR
+Force decoding in ultra-wideband
+.TP
+\fB\-\-mono\fR
+Force decoding in mono
+.TP
+\fB\-\-stereo\fR
+Force decoding in stereo
+.TP
+\fB\-\-rate\fR n
+Force decoding at sampling rate n Hz
+.TP
+\fB\-\-packet\-loss\fR n
+Simulate n % random packet loss
+.TP
+\fB\-V\fR
+Verbose mode (show bit-rate)
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+This help
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Version information
+.TP
+\fB\-\-pf\fR
+Deprecated, use \fB\-\-enh\fR instead
+.TP
+\fB\-\-no\-pf\fR
+Deprecated, use \fB\-\-no\-enh\fR instead
+.PP
+More information is available from the Speex site: http://www.speex.org
+.PP
+Please report bugs to the mailing list `speex-dev@xiph.org'.
+.SH COPYRIGHT
+Copyright \(co 2002 Jean-Marc Valin
diff --git a/dist/share/man/man1/speexenc.1 b/dist/share/man/man1/speexenc.1
new file mode 100644
index 0000000..9b0d6a7
--- /dev/null
+++ b/dist/share/man/man1/speexenc.1
@@ -0,0 +1,105 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
+.TH SPEEXENC "1" "September 2003" "speexenc version 1.1" "User Commands"
+.SH NAME
+speexenc \- The reference implementation speex encoder.
+.SH SYNOPSIS
+.B speexenc
+[\fIoptions\fR] \fIinput_file output_file\fR
+.SH DESCRIPTION
+Encodes input_file using Speex. It can read the WAV or raw files.
+.SS "input_file can be:"
+.TP
+filename.wav
+wav file
+.TP
+filename.*
+Raw PCM file (any extension other than .wav)
+.TP
+-
+stdin
+.SS "output_file can be:"
+.TP
+filename.spx
+Speex file
+.TP
+-
+stdout
+.SH OPTIONS
+.TP
+\fB\-n\fR, \fB\-\-narrowband\fR
+Narrowband (8 kHz) input file
+.TP
+\fB\-w\fR, \fB\-\-wideband\fR
+Wideband (16 kHz) input file
+.HP
+\fB\-u\fR, \fB\-\-ultra\-wideband\fR "Ultra-wideband" (32 kHz) input file
+.TP
+\fB\-\-quality\fR n
+Encoding quality (0-10), default 8
+.TP
+\fB\-\-bitrate\fR n
+Encoding bit-rate (use bit-rate n or lower)
+.TP
+\fB\-\-vbr\fR
+Enable variable bit-rate (VBR)
+.TP
+\fB\-\-abr\fR rate
+Enable average bit-rate (ABR) at rate bps
+.TP
+\fB\-\-vad\fR
+Enable voice activity detection (VAD)
+.TP
+\fB\-\-dtx\fR
+Enable file-based discontinuous transmission (DTX)
+.TP
+\fB\-\-comp\fR n
+Set encoding complexity (0-10), default 3
+.TP
+\fB\-\-nframes\fR n
+Number of frames per Ogg packet (1-10), default 1
+.TP
+\fB\-\-comment\fR
+Add the given string as an extra comment. This may be
+used multiple times
+.TP
+\fB\-\-author\fR
+Author of this track
+.TP
+\fB\-\-title\fR
+Title for this track
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+This help
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+Version information
+.TP
+\fB\-V\fR
+Verbose mode (show bit-rate)
+.SS "Raw input options:"
+.TP
+\fB\-\-rate\fR n
+Sampling rate for raw input
+.TP
+\fB\-\-stereo\fR
+Consider raw input as stereo
+.TP
+\fB\-\-le\fR
+Raw input is little-endian
+.TP
+\fB\-\-be\fR
+Raw input is big-endian
+.TP
+\fB\-\-8bit\fR
+Raw input is 8-bit unsigned
+.TP
+\fB\-\-16bit\fR
+Raw input is 16-bit signed
+.PP
+Default raw PCM input is 16-bit, little-endian, mono
+.PP
+More information is available from the Speex site: http://www.speex.org
+.PP
+Please report bugs to the mailing list `speex-dev@xiph.org'.
+.SH COPYRIGHT
+Copyright \(co 2002 Jean-Marc Valin
diff --git a/libogg-1.3.1.tar.gz b/libogg-1.3.1.tar.gz
new file mode 100644
index 0000000..97ba196
--- /dev/null
+++ b/libogg-1.3.1.tar.gz
Binary files differ
diff --git a/speex-1.2rc1.tar.gz b/speex-1.2rc1.tar.gz
new file mode 100644
index 0000000..44ea08a
--- /dev/null
+++ b/speex-1.2rc1.tar.gz
Binary files differ
