summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <xiphmont@xiph.org>2000-11-03 10:06:08 +0000
committerMonty <xiphmont@xiph.org>2000-11-03 10:06:08 +0000
commitb58f0d442954f98a58b384a7c8bdfc723b421b27 (patch)
tree694039082bb7b1cd9cc42300de38cbf36c539297
parentf9572aa5c9a74e1394e08b1282eb27d499f42257 (diff)
downloadlibvorbis-git-b58f0d442954f98a58b384a7c8bdfc723b421b27.tar.gz
Hid all the formerly exposed modes and codebooks behind the
libvorbisenc API. Libvorbisenc now exists. Caveats: It listens to bitrate_nominal, but only maps to one of the five modes we had before for now. bitrate_max and min are ignored. Bitrate is handled properly with differing channels, but not with differing sample rate. Monty svn path=/branches/branch_beta3/vorbis/; revision=956
-rw-r--r--configure.in2
-rw-r--r--examples/Makefile.am1
-rw-r--r--examples/encoder_example.c199
-rw-r--r--include/vorbis/Makefile.am9
-rw-r--r--include/vorbis/codec.h141
-rw-r--r--lib/Makefile.am48
-rw-r--r--lib/analysis.c20
-rw-r--r--lib/backends.h146
-rw-r--r--lib/block.c243
-rw-r--r--lib/books/lsp12_0.vqh1157
-rw-r--r--lib/books/lsp30_0.vqh2073
-rw-r--r--lib/books/res0_1024a_128_1.vqh63
-rw-r--r--lib/books/res0_1024a_128_2.vqh63
-rw-r--r--lib/books/res0_1024a_128_3.vqh99
-rw-r--r--lib/books/res0_1024a_128_4.vqh99
-rw-r--r--lib/books/res0_1024a_128_5.vqh212
-rw-r--r--lib/books/res0_1024a_128_6.vqh212
-rw-r--r--lib/books/res0_1024a_128_7.vqh75
-rw-r--r--lib/books/res0_1024a_128_8.vqh86
-rw-r--r--lib/books/res0_1024a_128_9.vqh115
-rw-r--r--lib/books/res0_1024a_160_1.vqh63
-rw-r--r--lib/books/res0_1024a_160_2.vqh63
-rw-r--r--lib/books/res0_1024a_160_3.vqh99
-rw-r--r--lib/books/res0_1024a_160_4.vqh99
-rw-r--r--lib/books/res0_1024a_160_5.vqh212
-rw-r--r--lib/books/res0_1024a_160_6.vqh212
-rw-r--r--lib/books/res0_1024a_160_7.vqh75
-rw-r--r--lib/books/res0_1024a_160_8.vqh86
-rw-r--r--lib/books/res0_1024a_160_9.vqh115
-rw-r--r--lib/books/res0_1024a_192_1.vqh63
-rw-r--r--lib/books/res0_1024a_192_2.vqh99
-rw-r--r--lib/books/res0_1024a_192_3.vqh212
-rw-r--r--lib/books/res0_1024a_192_4.vqh70
-rw-r--r--lib/books/res0_1024a_192_5.vqh115
-rw-r--r--lib/books/res0_1024a_256_1.vqh99
-rw-r--r--lib/books/res0_1024a_256_2.vqh75
-rw-r--r--lib/books/res0_1024a_256_3.vqh86
-rw-r--r--lib/books/res0_1024a_256_4.vqh100
-rw-r--r--lib/books/res0_1024a_256_5.vqh133
-rw-r--r--lib/books/res0_1024a_350_1.vqh99
-rw-r--r--lib/books/res0_1024a_350_2.vqh75
-rw-r--r--lib/books/res0_1024a_350_3.vqh86
-rw-r--r--lib/books/res0_1024a_350_4.vqh100
-rw-r--r--lib/books/res0_1024a_350_5.vqh133
-rw-r--r--lib/books/res0_128a_128_1.vqh63
-rw-r--r--lib/books/res0_128a_128_2.vqh99
-rw-r--r--lib/books/res0_128a_128_3.vqh212
-rw-r--r--lib/books/res0_128a_128_4.vqh70
-rw-r--r--lib/books/res0_128a_128_5.vqh115
-rw-r--r--lib/books/res0_128a_160_1.vqh63
-rw-r--r--lib/books/res0_128a_160_2.vqh99
-rw-r--r--lib/books/res0_128a_160_3.vqh212
-rw-r--r--lib/books/res0_128a_160_4.vqh70
-rw-r--r--lib/books/res0_128a_160_5.vqh115
-rw-r--r--lib/books/res0_128a_192_1.vqh63
-rw-r--r--lib/books/res0_128a_192_2.vqh99
-rw-r--r--lib/books/res0_128a_192_3.vqh212
-rw-r--r--lib/books/res0_128a_192_4.vqh70
-rw-r--r--lib/books/res0_128a_192_5.vqh115
-rw-r--r--lib/books/res0_128a_256_1.vqh99
-rw-r--r--lib/books/res0_128a_256_2.vqh75
-rw-r--r--lib/books/res0_128a_256_3.vqh86
-rw-r--r--lib/books/res0_128a_256_4.vqh100
-rw-r--r--lib/books/res0_128a_256_5.vqh133
-rw-r--r--lib/books/res0_128a_350_1.vqh99
-rw-r--r--lib/books/res0_128a_350_2.vqh75
-rw-r--r--lib/books/res0_128a_350_3.vqh86
-rw-r--r--lib/books/res0_128a_350_4.vqh100
-rw-r--r--lib/books/res0_128a_350_5.vqh133
-rw-r--r--lib/books/resaux0_1024a_128.vqh42
-rw-r--r--lib/books/resaux0_1024a_160.vqh42
-rw-r--r--lib/books/resaux0_1024a_192.vqh38
-rw-r--r--lib/books/resaux0_1024a_256.vqh116
-rw-r--r--lib/books/resaux0_1024a_350.vqh116
-rw-r--r--lib/books/resaux0_128a_128.vqh116
-rw-r--r--lib/books/resaux0_128a_160.vqh116
-rw-r--r--lib/books/resaux0_128a_192.vqh116
-rw-r--r--lib/books/resaux0_128a_256.vqh116
-rw-r--r--lib/books/resaux0_128a_350.vqh116
-rw-r--r--lib/codebook.c7
-rw-r--r--lib/codebook.h157
-rw-r--r--lib/codec_internal.h112
-rw-r--r--lib/envelope.c218
-rw-r--r--lib/floor0.c400
-rw-r--r--lib/info.c283
-rw-r--r--lib/lsp.c4
-rw-r--r--lib/mapping0.c393
-rw-r--r--lib/modes/mode_A.h205
-rw-r--r--lib/modes/mode_B.h204
-rw-r--r--lib/modes/mode_C.h195
-rw-r--r--lib/modes/mode_D.h178
-rw-r--r--lib/modes/mode_E.h162
-rw-r--r--lib/modes/modes.h28
-rw-r--r--lib/psy.c709
-rw-r--r--lib/psy.h90
-rw-r--r--lib/registry.h36
-rw-r--r--lib/res0.c398
-rw-r--r--lib/sharedbook.c655
-rw-r--r--lib/synthesis.c22
-rw-r--r--lib/time0.c55
-rw-r--r--lib/vorbisfile.c3
-rw-r--r--vq/bookutil.c4
-rw-r--r--vq/huffbuild.c4
103 files changed, 15343 insertions, 408 deletions
diff --git a/configure.in b/configure.in
index 72a84a05..860d870d 100644
--- a/configure.in
+++ b/configure.in
@@ -160,4 +160,4 @@ AC_SUBST(DEBUG)
AC_SUBST(PROFILE)
AC_SUBST(pthread_lib)
-AC_OUTPUT(Makefile lib/Makefile doc/Makefile doc/vorbisfile/Makefile include/Makefile include/vorbis/Makefile include/vorbis/book/Makefile examples/Makefile)
+AC_OUTPUT(Makefile lib/Makefile doc/Makefile doc/vorbisfile/Makefile include/Makefile include/vorbis/Makefile examples/Makefile)
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 4406d273..8a145785 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -11,6 +11,7 @@ LDADD = $(top_srcdir)/lib/.libs/libvorbis.a $(OGG_LIBS)
decoder_example_SOURCES = decoder_example.c
encoder_example_SOURCES = encoder_example.c
+encoder_example_LDADD = $(top_srcdir)/lib/.libs/libvorbisenc.a $(top_srcdir)/lib/.libs/libvorbis.a $(OGG_LIBS)
chaining_example_SOURCES = chaining_example.c
chaining_example_LDADD = $(top_srcdir)/lib/.libs/libvorbisfile.a $(top_srcdir)/lib/.libs/libvorbis.a $(OGG_LIBS)
vorbisfile_example_SOURCES = vorbisfile_example.c
diff --git a/examples/encoder_example.c b/examples/encoder_example.c
new file mode 100644
index 00000000..3d1f19b5
--- /dev/null
+++ b/examples/encoder_example.c
@@ -0,0 +1,199 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: simple example encoder
+ last mod: $Id: encoder_example.c,v 1.14.2.1 2000/11/03 10:05:43 xiphmont Exp $
+
+ ********************************************************************/
+
+/* takes a stereo 16bit 44.1kHz WAV file from stdin and encodes it into
+ a Vorbis bitstream */
+
+/* Note that this is POSIX, not ANSI, code */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <math.h>
+#include <vorbis/vorbisenc.h>
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+#if defined(macintosh) && defined(__MWERKS__)
+#include <console.h> /* CodeWarrior's Mac "command-line" support */
+#endif
+
+#define READ 1024
+signed char readbuffer[READ*4+44]; /* out of the data segment, not the stack */
+
+int main(){
+ ogg_stream_state os; /* take physical pages, weld into a logical
+ stream of packets */
+ ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */
+ ogg_packet op; /* one raw packet of data for decode */
+
+ vorbis_info vi; /* struct that stores all the static vorbis bitstream
+ settings */
+ vorbis_comment vc; /* struct that stores all the user comments */
+
+ vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+ vorbis_block vb; /* local working space for packet->PCM decode */
+
+ int eos=0;
+
+#if defined(macintosh) && defined(__MWERKS__)
+ int argc = 0;
+ char **argv = NULL;
+ argc = ccommand(&argv); /* get a "command line" from the Mac user */
+ /* this also lets the user set stdin and stdout */
+#endif
+
+ /* we cheat on the WAV header; we just bypass 44 bytes and never
+ verify that it matches 16bit/stereo/44.1kHz. This is just an
+ example, after all. */
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+ /* Beware the evil ifdef. We avoid these where we can, but this one we
+ cannot. Don't add any more, you'll probably go to hell if you do. */
+ _setmode( _fileno( stdin ), _O_BINARY );
+ _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+
+ fread(readbuffer,1,44,stdin);
+
+ /********** Encode setup ************/
+
+ /* choose an encoding mode */
+ /* (mode 0: 44kHz stereo uncoupled, roughly 128kbps VBR) */
+ vorbis_info_init(&vi);
+ vorbis_encode_init(&vi,2,44100, -1, 128, -1);
+
+ /* add a comment */
+ vorbis_comment_init(&vc);
+ vorbis_comment_add(&vc,"Track encoded by encoder_example.c");
+
+ /* set up the analysis state and auxiliary encoding storage */
+ vorbis_analysis_init(&vd,&vi);
+ vorbis_block_init(&vd,&vb);
+
+ /* set up our packet->stream encoder */
+ /* pick a random serial number; that way we can more likely build
+ chained streams just by concatenation */
+ srand(time(NULL));
+ ogg_stream_init(&os,rand());
+
+ /* Vorbis streams begin with three headers; the initial header (with
+ most of the codec setup parameters) which is mandated by the Ogg
+ bitstream spec. The second header holds any comment fields. The
+ third header holds the bitstream codebook. We merely need to
+ make the headers, then pass them to libvorbis one at a time;
+ libvorbis handles the additional Ogg bitstream constraints */
+
+ {
+ ogg_packet header;
+ ogg_packet header_comm;
+ ogg_packet header_code;
+
+ vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code);
+ ogg_stream_packetin(&os,&header); /* automatically placed in its own
+ page */
+ ogg_stream_packetin(&os,&header_comm);
+ ogg_stream_packetin(&os,&header_code);
+
+ /* We don't have to write out here, but doing so makes streaming
+ * much easier, so we do, flushing ALL pages. This ensures the actual
+ * audio data will start on a new page
+ */
+ while(!eos){
+ int result=ogg_stream_flush(&os,&og);
+ if(result==0)break;
+ fwrite(og.header,1,og.header_len,stdout);
+ fwrite(og.body,1,og.body_len,stdout);
+ }
+
+ }
+
+ while(!eos){
+ long i;
+ long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */
+
+ if(bytes==0){
+ /* end of file. this can be done implicitly in the mainline,
+ but it's easier to see here in non-clever fashion.
+ Tell the library we're at end of stream so that it can handle
+ the last frame and mark end of stream in the output properly */
+ vorbis_analysis_wrote(&vd,0);
+
+ }else{
+ /* data to encode */
+
+ /* expose the buffer to submit data */
+ float **buffer=vorbis_analysis_buffer(&vd,READ);
+
+ /* uninterleave samples */
+ for(i=0;i<bytes/4;i++){
+ buffer[0][i]=((readbuffer[i*4+1]<<8)|
+ (0x00ff&(int)readbuffer[i*4]))/32768.;
+ buffer[1][i]=((readbuffer[i*4+3]<<8)|
+ (0x00ff&(int)readbuffer[i*4+2]))/32768.;
+ }
+
+ /* tell the library how much we actually submitted */
+ vorbis_analysis_wrote(&vd,i);
+ }
+
+ /* vorbis does some data preanalysis, then divvies up blocks for
+ more involved (potentially parallel) processing. Get a single
+ block for encoding now */
+ while(vorbis_analysis_blockout(&vd,&vb)==1){
+
+ /* analysis */
+ vorbis_analysis(&vb,&op);
+
+ /* weld the packet into the bitstream */
+ ogg_stream_packetin(&os,&op);
+
+ /* write out pages (if any) */
+ while(!eos){
+ int result=ogg_stream_pageout(&os,&og);
+ if(result==0)break;
+ fwrite(og.header,1,og.header_len,stdout);
+ fwrite(og.body,1,og.body_len,stdout);
+
+ /* this could be set above, but for illustrative purposes, I do
+ it here (to show that vorbis does know where the stream ends) */
+
+ if(ogg_page_eos(&og))eos=1;
+
+ }
+ }
+ }
+
+ /* clean up and exit. vorbis_info_clear() must be called last */
+
+ ogg_stream_clear(&os);
+ vorbis_block_clear(&vb);
+ vorbis_dsp_clear(&vd);
+ vorbis_info_clear(&vi);
+
+ /* ogg_page and ogg_packet structs always point to storage in
+ libvorbis. They're never freed or manipulated directly */
+
+ fprintf(stderr,"Done.\n");
+ return(0);
+}
+
diff --git a/include/vorbis/Makefile.am b/include/vorbis/Makefile.am
new file mode 100644
index 00000000..794e8cdb
--- /dev/null
+++ b/include/vorbis/Makefile.am
@@ -0,0 +1,9 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = foreign
+
+includedir = $(prefix)/include/vorbis
+
+include_HEADERS = codec.h vorbisfile.h vorbisenc.h
+
+
diff --git a/include/vorbis/codec.h b/include/vorbis/codec.h
index 5b8e8637..2b6870ad 100644
--- a/include/vorbis/codec.h
+++ b/include/vorbis/codec.h
@@ -12,7 +12,7 @@
********************************************************************
function: libvorbis codec headers
- last mod: $Id: codec.h,v 1.32.2.2 2000/10/31 00:10:36 xiphmont Exp $
+ last mod: $Id: codec.h,v 1.32.2.3 2000/11/03 10:05:43 xiphmont Exp $
********************************************************************/
@@ -24,69 +24,7 @@ extern "C"
{
#endif /* __cplusplus */
-#define MAX_BARK 27
-
#include <ogg/ogg.h>
-#include "vorbis/codebook.h"
-
-typedef void vorbis_look_transform;
-typedef void vorbis_info_time;
-typedef void vorbis_look_time;
-typedef void vorbis_info_floor;
-typedef void vorbis_look_floor;
-typedef void vorbis_echstate_floor;
-typedef void vorbis_info_residue;
-typedef void vorbis_look_residue;
-typedef void vorbis_info_mapping;
-typedef void vorbis_look_mapping;
-
-/* mode ************************************************************/
-typedef struct {
- int blockflag;
- int windowtype;
- int transformtype;
- int mapping;
-} vorbis_info_mode;
-
-/* psychoacoustic setup ********************************************/
-#define P_BANDS 17
-#define P_LEVELS 11
-typedef struct vorbis_info_psy{
- int athp;
- int decayp;
- int smoothp;
-
- int noisecullp;
- float noisecull_barkwidth;
-
- float ath_adjatt;
- float ath_maxatt;
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
- /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
- /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
-
- int tonemaskp;
- float toneatt[P_BANDS][P_LEVELS];
-
- int peakattp;
- float peakatt[P_BANDS][P_LEVELS];
-
- int noisemaskp;
- float noiseatt[P_BANDS][P_LEVELS];
-
- float max_curve_dB;
-
- /* decay setup */
- float attack_coeff;
- float decay_coeff;
-} vorbis_info_psy;
-
-/* vorbis_info contains all the setup information specific to the
- specific compression/decompression mode in progress (eg,
- psychoacoustic settings, channel setup, options, codebook
- etc).
-*********************************************************************/
typedef struct vorbis_info{
int version;
@@ -111,51 +49,17 @@ typedef struct vorbis_info{
long bitrate_upper;
long bitrate_nominal;
long bitrate_lower;
+ long bitrate_window;
- /* Vorbis supports only short and long blocks, but allows the
- encoder to choose the sizes */
-
- long blocksizes[2];
-
- /* modes are the primary means of supporting on-the-fly different
- blocksizes, different channel mappings (LR or mid-side),
- different residue backends, etc. Each mode consists of a
- blocksize flag and a mapping (along with the mapping setup */
-
- int modes;
- int maps;
- int times;
- int floors;
- int residues;
- int books;
- int psys; /* encode only */
-
- vorbis_info_mode *mode_param[64];
- int map_type[64];
- vorbis_info_mapping *map_param[64];
- int time_type[64];
- vorbis_info_time *time_param[64];
- int floor_type[64];
- vorbis_info_floor *floor_param[64];
- int residue_type[64];
- vorbis_info_residue *residue_param[64];
- static_codebook *book_param[256];
- vorbis_info_psy *psy_param[64]; /* encode only */
-
- /* for block long/sort tuning; encode only */
- int envelopesa;
- float preecho_thresh;
- float preecho_clamp;
- float preecho_minenergy;
+ void *codec_setup;
} vorbis_info;
-
+
/* vorbis_dsp_state buffers the current vorbis audio
analysis/synthesis state. The DSP state belongs to a specific
logical bitstream ****************************************************/
typedef struct vorbis_dsp_state{
int analysisp;
vorbis_info *vi;
- int modebits;
float **pcm;
float **pcmret;
@@ -179,34 +83,9 @@ typedef struct vorbis_dsp_state{
ogg_int64_t floor_bits;
ogg_int64_t res_bits;
- /* local lookup storage */
- void *ve; /* envelope lookup */
- float **window[2][2][2]; /* block, leadin, leadout, type */
- vorbis_look_transform **transform[2]; /* block, type */
- codebook *fullbooks;
- /* backend lookups are tied to the mode, not the backend or naked mapping */
- vorbis_look_mapping **mode;
-
- /* local storage, only used on the encoding side. This way the
- application does not need to worry about freeing some packets'
- memory and not others'; packet storage is always tracked.
- Cleared next call to a _dsp_ function */
- unsigned char *header;
- unsigned char *header1;
- unsigned char *header2;
-
+ void *backend_state;
} vorbis_dsp_state;
-/* vorbis_block is a single block of data to be processed as part of
-the analysis/synthesis stream; it belongs to a specific logical
-bitstream, but is independant from other vorbis_blocks belonging to
-that logical bitstream. *************************************************/
-
-struct alloc_chain{
- void *ptr;
- struct alloc_chain *next;
-};
-
typedef struct vorbis_block{
/* necessary stream state for linking to the framing abstraction */
float **pcm; /* this is a pointer into local storage */
@@ -239,7 +118,15 @@ typedef struct vorbis_block{
} vorbis_block;
-#include "vorbis/backends.h"
+/* vorbis_block is a single block of data to be processed as part of
+the analysis/synthesis stream; it belongs to a specific logical
+bitstream, but is independant from other vorbis_blocks belonging to
+that logical bitstream. *************************************************/
+
+struct alloc_chain{
+ void *ptr;
+ struct alloc_chain *next;
+};
/* vorbis_info contains all the setup information specific to the
specific compression/decompression mode in progress (eg,
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 5a4c6593..7d9287b7 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -4,20 +4,62 @@ AUTOMAKE_OPTIONS = foreign
INCLUDES = -I../include
-lib_LTLIBRARIES = libvorbis.la libvorbisfile.la
+lib_LTLIBRARIES = libvorbis.la libvorbisfile.la libvorbisenc.la
libvorbis_la_SOURCES = mdct.c smallft.c block.c envelope.c window.c lsp.c lpc.c\
analysis.c synthesis.c psy.c info.c time0.c floor0.c\
res0.c mapping0.c registry.c codebook.c sharedbook.c\
iir.c lookup.c\
- envelope.h lpc.h lsp.h bookinternal.h misc.h psy.h\
+ envelope.h lpc.h lsp.h codebook.h misc.h psy.h\
masking.h sharedbook.h iir.h os.h mdct.h smallft.h\
- registry.h scales.h window.h lookup.h lookup_data.h
+ registry.h scales.h window.h lookup.h lookup_data.h\
+ codec_internal.h backends.h
libvorbis_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
libvorbisfile_la_SOURCES = vorbisfile.c
libvorbisfile_la_LDFLAGS = -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@
+libvorbisenc_la_SOURCES = vorbisenc.c\
+ os.h misc.h mode_A.h mode_B.h mode_C.h mode_D.h\
+ mode_E.h modes.h\
+ res0_1024a_192_4.vqh res0_128a_192_3.vqh\
+ lsp12_0.vqh res0_1024a_192_5.vqh\
+ res0_128a_192_4.vqh lsp30_0.vqh res0_1024a_256_1.vqh\
+ res0_128a_192_5.vqh res0_1024a_128_1.vqh\
+ res0_1024a_256_2.vqh res0_128a_256_1.vq\
+ res0_1024a_128_2.vqh res0_1024a_256_3.vqh\
+ res0_128a_256_2.vqh res0_1024a_128_3.vqh\
+ res0_1024a_256_4.vqh res0_128a_256_3.vqh\
+ res0_1024a_128_4.vqh res0_1024a_256_5.vqh\
+ res0_128a_256_4.vqh res0_1024a_128_5.vqh\
+ res0_1024a_350_1.vqh res0_128a_256_5.vqh\
+ res0_1024a_128_6.vqh res0_1024a_350_2.vqh\
+ res0_128a_350_1.vqh res0_1024a_128_7.vqh\
+ res0_1024a_350_3.vqh res0_128a_350_2.vqh\
+ res0_1024a_128_8.vqh res0_1024a_350_4.vqh\
+ res0_128a_350_3.vqh res0_1024a_128_9.vqh\
+ res0_1024a_350_5.vqh res0_128a_350_4.vqh\
+ res0_1024a_160_1.vqh res0_128a_128_1.vqh\
+ res0_128a_350_5.vqh res0_1024a_160_2.vqh\
+ res0_128a_128_2.vqh resaux0_1024a_128.vqh\
+ res0_1024a_160_3.vqh res0_128a_128_3.vqh\
+ resaux0_1024a_160.vqh res0_1024a_160_4.vqh\
+ res0_128a_128_4.vqh resaux0_1024a_192.vqh\
+ res0_1024a_160_5.vqh res0_128a_128_5.vqh\
+ resaux0_1024a_256.vqh res0_1024a_160_6.vqh\
+ res0_128a_160_1.vqh resaux0_1024a_350.vqh\
+ res0_1024a_160_7.vqh res0_128a_160_2.vqh\
+ resaux0_128a_128.vqh res0_1024a_160_8.vqh\
+ res0_128a_160_3.vqh resaux0_128a_160.vqh\
+ res0_1024a_160_9.vqh res0_128a_160_4.vqh\
+ resaux0_128a_192.vqh res0_1024a_192_1.vqh\
+ res0_128a_160_5.vqh resaux0_128a_256.vqh\
+ res0_1024a_192_2.vqh res0_128a_192_1.vqh\
+ resaux0_128a_350.vqh res0_1024a_192_3.vqh\
+ res0_128a_192_2.vqh
+
+libvorbisenc_la_LDFLAGS = -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@
+
debug:
$(MAKE) all CFLAGS="@DEBUG@"
diff --git a/lib/analysis.c b/lib/analysis.c
index a6af547a..bedc54fd 100644
--- a/lib/analysis.c
+++ b/lib/analysis.c
@@ -12,7 +12,7 @@
********************************************************************
function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.34.2.1 2000/10/14 03:14:06 xiphmont Exp $
+ last mod: $Id: analysis.c,v 1.34.2.2 2000/11/03 10:05:46 xiphmont Exp $
********************************************************************/
@@ -27,10 +27,12 @@
/* decides between modes, dispatches to the appropriate mapping. */
int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
- vorbis_dsp_state *vd=vb->vd;
- vorbis_info *vi=vd->vi;
- int type,ret;
- int mode=0;
+ vorbis_dsp_state *vd=vb->vd;
+ backend_lookup_state *b=vd->backend_state;
+ vorbis_info *vi=vd->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ int type,ret;
+ int mode=0;
vb->glue_bits=0;
vb->time_bits=0;
@@ -44,12 +46,12 @@ int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
/* currently lazy. Short block dispatches to 0, long to 1. */
- if(vb->W &&vi->modes>1)mode=1;
- type=vi->map_type[vi->mode_param[mode]->mapping];
+ if(vb->W &&ci->modes>1)mode=1;
+ type=ci->map_type[ci->mode_param[mode]->mapping];
vb->mode=mode;
/* Encode frame mode, pre,post windowsize, then dispatch */
- oggpack_write(&vb->opb,mode,vd->modebits);
+ oggpack_write(&vb->opb,mode,b->modebits);
if(vb->W){
oggpack_write(&vb->opb,vb->lW,1);
oggpack_write(&vb->opb,vb->nW,1);
@@ -58,7 +60,7 @@ int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
fprintf(stderr,".");
}*/
- if((ret=_mapping_P[type]->forward(vb,vd->mode[mode])))
+ if((ret=_mapping_P[type]->forward(vb,b->mode[mode])))
return(ret);
/* set up the packet wrapper */
diff --git a/lib/backends.h b/lib/backends.h
new file mode 100644
index 00000000..4a5f4cdd
--- /dev/null
+++ b/lib/backends.h
@@ -0,0 +1,146 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: libvorbis backend and mapping structures; needed for
+ static mode headers
+ last mod: $Id: backends.h,v 1.1.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ ********************************************************************/
+
+/* this is exposed up here because we need it for static modes.
+ Lookups for each backend aren't exposed because there's no reason
+ to do so */
+
+#ifndef _vorbis_backend_h_
+#define _vorbis_backend_h_
+
+#include "codec_internal.h"
+
+/* this would all be simpler/shorter with templates, but.... */
+/* Transform backend generic *************************************/
+
+/* only mdct right now. Flesh it out more if we ever transcend mdct
+ in the transform domain */
+
+/* Time backend generic ******************************************/
+typedef struct{
+ void (*pack) (vorbis_info_time *,oggpack_buffer *);
+ vorbis_info_time *(*unpack)(vorbis_info *,oggpack_buffer *);
+ vorbis_look_time *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
+ vorbis_info_time *);
+ vorbis_info_time *(*copy_info)(vorbis_info *);
+
+ void (*free_info) (vorbis_info_time *);
+ void (*free_look) (vorbis_look_time *);
+ int (*forward) (struct vorbis_block *,vorbis_look_time *,
+ float *,float *);
+ int (*inverse) (struct vorbis_block *,vorbis_look_time *,
+ float *,float *);
+} vorbis_func_time;
+
+typedef struct{
+ int dummy;
+} vorbis_info_time0;
+
+/* Floor backend generic *****************************************/
+typedef struct{
+ void (*pack) (vorbis_info_floor *,oggpack_buffer *);
+ vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *);
+ vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
+ vorbis_info_floor *);
+ vorbis_info_floor *(*copy_info)(vorbis_info *);
+ void (*free_info) (vorbis_info_floor *);
+ void (*free_look) (vorbis_look_floor *);
+ int (*forward) (struct vorbis_block *,vorbis_look_floor *,
+ float *,float *);
+ int (*inverse) (struct vorbis_block *,vorbis_look_floor *,
+ float *);
+} vorbis_func_floor;
+
+typedef struct{
+ int order;
+ long rate;
+ long barkmap;
+
+ int ampbits;
+ int ampdB;
+
+ int numbooks; /* <= 16 */
+ int books[16];
+} vorbis_info_floor0;
+
+/* Residue backend generic *****************************************/
+typedef struct{
+ void (*pack) (vorbis_info_residue *,oggpack_buffer *);
+ vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
+ vorbis_look_residue *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
+ vorbis_info_residue *);
+ vorbis_info_residue *(*copy_info)(vorbis_info *);
+ void (*free_info) (vorbis_info_residue *);
+ void (*free_look) (vorbis_look_residue *);
+ int (*forward) (struct vorbis_block *,vorbis_look_residue *,
+ float **,int);
+ int (*inverse) (struct vorbis_block *,vorbis_look_residue *,
+ float **,int);
+} vorbis_func_residue;
+
+typedef struct vorbis_info_residue0{
+/* block-partitioned VQ coded straight residue */
+ long begin;
+ long end;
+
+ /* first stage (lossless partitioning) */
+ int grouping; /* group n vectors per partition */
+ int partitions; /* possible codebooks for a partition */
+ int groupbook; /* huffbook for partitioning */
+ int secondstages[64]; /* expanded out to pointers in lookup */
+ int booklist[256]; /* list of second stage books */
+
+ /* encode-only heuristic settings */
+ float entmax[64]; /* book entropy threshholds*/
+ float ampmax[64]; /* book amp threshholds*/
+ int subgrp[64]; /* book heuristic subgroup size */
+ int blimit[64]; /* subgroup position limits */
+
+} vorbis_info_residue0;
+
+/* Mapping backend generic *****************************************/
+typedef struct{
+ void (*pack) (vorbis_info *,vorbis_info_mapping *,
+ oggpack_buffer *);
+ vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
+ vorbis_look_mapping *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
+ vorbis_info_mapping *);
+ vorbis_info_mapping *(*copy_info)(vorbis_info *);
+ void (*free_info) (vorbis_info_mapping *);
+ void (*free_look) (vorbis_look_mapping *);
+ int (*forward) (struct vorbis_block *vb,vorbis_look_mapping *);
+ int (*inverse) (struct vorbis_block *vb,vorbis_look_mapping *);
+} vorbis_func_mapping;
+
+typedef struct vorbis_info_mapping0{
+ int submaps; /* <= 16 */
+ int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */
+
+ int timesubmap[16]; /* [mux] */
+ int floorsubmap[16]; /* [mux] submap to floors */
+ int residuesubmap[16]; /* [mux] submap to residue */
+ int psysubmap[16]; /* [mux]; encode only */
+} vorbis_info_mapping0;
+
+#endif
+
+
+
+
+
diff --git a/lib/block.c b/lib/block.c
index 6739a8cf..59d89f9b 100644
--- a/lib/block.c
+++ b/lib/block.c
@@ -12,7 +12,7 @@
********************************************************************
function: PCM data vector blocking, windowing and dis/reassembly
- last mod: $Id: block.c,v 1.39.2.2 2000/10/31 00:10:37 xiphmont Exp $
+ last mod: $Id: block.c,v 1.39.2.3 2000/11/03 10:05:47 xiphmont Exp $
Handle windowing, overlap-add, etc of the PCM vectors. This is made
more amusing by Vorbis' current two allowed block sizes.
@@ -34,8 +34,7 @@
#include "mdct.h"
#include "lpc.h"
#include "registry.h"
-#include "sharedbook.h"
-#include "bookinternal.h"
+#include "codebook.h"
#include "misc.h"
#include "os.h"
@@ -166,54 +165,58 @@ int vorbis_block_clear(vorbis_block *vb){
static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
int i;
+ codec_setup_info *ci=vi->codec_setup;
+ backend_lookup_state *b=NULL;
+
memset(v,0,sizeof(vorbis_dsp_state));
+ b=v->backend_state=calloc(1,sizeof(backend_lookup_state));
v->vi=vi;
- v->modebits=ilog2(vi->modes);
+ b->modebits=ilog2(ci->modes);
- v->transform[0]=calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
- v->transform[1]=calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
+ b->transform[0]=calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
+ b->transform[1]=calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
/* MDCT is tranform 0 */
- v->transform[0][0]=calloc(1,sizeof(mdct_lookup));
- v->transform[1][0]=calloc(1,sizeof(mdct_lookup));
- mdct_init(v->transform[0][0],vi->blocksizes[0]);
- mdct_init(v->transform[1][0],vi->blocksizes[1]);
+ b->transform[0][0]=calloc(1,sizeof(mdct_lookup));
+ b->transform[1][0]=calloc(1,sizeof(mdct_lookup));
+ mdct_init(b->transform[0][0],ci->blocksizes[0]);
+ mdct_init(b->transform[1][0],ci->blocksizes[1]);
- v->window[0][0][0]=calloc(VI_WINDOWB,sizeof(float *));
- v->window[0][0][1]=v->window[0][0][0];
- v->window[0][1][0]=v->window[0][0][0];
- v->window[0][1][1]=v->window[0][0][0];
- v->window[1][0][0]=calloc(VI_WINDOWB,sizeof(float *));
- v->window[1][0][1]=calloc(VI_WINDOWB,sizeof(float *));
- v->window[1][1][0]=calloc(VI_WINDOWB,sizeof(float *));
- v->window[1][1][1]=calloc(VI_WINDOWB,sizeof(float *));
+ b->window[0][0][0]=calloc(VI_WINDOWB,sizeof(float *));
+ b->window[0][0][1]=b->window[0][0][0];
+ b->window[0][1][0]=b->window[0][0][0];
+ b->window[0][1][1]=b->window[0][0][0];
+ b->window[1][0][0]=calloc(VI_WINDOWB,sizeof(float *));
+ b->window[1][0][1]=calloc(VI_WINDOWB,sizeof(float *));
+ b->window[1][1][0]=calloc(VI_WINDOWB,sizeof(float *));
+ b->window[1][1][1]=calloc(VI_WINDOWB,sizeof(float *));
for(i=0;i<VI_WINDOWB;i++){
- v->window[0][0][0][i]=
- _vorbis_window(i,vi->blocksizes[0],vi->blocksizes[0]/2,vi->blocksizes[0]/2);
- v->window[1][0][0][i]=
- _vorbis_window(i,vi->blocksizes[1],vi->blocksizes[0]/2,vi->blocksizes[0]/2);
- v->window[1][0][1][i]=
- _vorbis_window(i,vi->blocksizes[1],vi->blocksizes[0]/2,vi->blocksizes[1]/2);
- v->window[1][1][0][i]=
- _vorbis_window(i,vi->blocksizes[1],vi->blocksizes[1]/2,vi->blocksizes[0]/2);
- v->window[1][1][1][i]=
- _vorbis_window(i,vi->blocksizes[1],vi->blocksizes[1]/2,vi->blocksizes[1]/2);
+ b->window[0][0][0][i]=
+ _vorbis_window(i,ci->blocksizes[0],ci->blocksizes[0]/2,ci->blocksizes[0]/2);
+ b->window[1][0][0][i]=
+ _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[0]/2);
+ b->window[1][0][1][i]=
+ _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[1]/2);
+ b->window[1][1][0][i]=
+ _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[0]/2);
+ b->window[1][1][1][i]=
+ _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[1]/2);
}
if(encp){ /* encode/decode differ here */
/* finish the codebooks */
- v->fullbooks=calloc(vi->books,sizeof(codebook));
- for(i=0;i<vi->books;i++)
- vorbis_book_init_encode(v->fullbooks+i,vi->book_param[i]);
+ b->fullbooks=calloc(ci->books,sizeof(codebook));
+ for(i=0;i<ci->books;i++)
+ vorbis_book_init_encode(b->fullbooks+i,ci->book_param[i]);
v->analysisp=1;
}else{
/* finish the codebooks */
- v->fullbooks=calloc(vi->books,sizeof(codebook));
- for(i=0;i<vi->books;i++)
- vorbis_book_init_decode(v->fullbooks+i,vi->book_param[i]);
+ b->fullbooks=calloc(ci->books,sizeof(codebook));
+ for(i=0;i<ci->books;i++)
+ vorbis_book_init_decode(b->fullbooks+i,ci->book_param[i]);
}
/* initialize the storage vectors to a decent size greater than the
@@ -236,17 +239,17 @@ static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
v->W=0; /* current window size */
/* all vector indexes */
- v->centerW=vi->blocksizes[1]/2;
+ v->centerW=ci->blocksizes[1]/2;
v->pcm_current=v->centerW;
/* initialize all the mapping/backend lookups */
- v->mode=calloc(vi->modes,sizeof(vorbis_look_mapping *));
- for(i=0;i<vi->modes;i++){
- int mapnum=vi->mode_param[i]->mapping;
- int maptype=vi->map_type[mapnum];
- v->mode[i]=_mapping_P[maptype]->look(v,vi->mode_param[i],
- vi->map_param[mapnum]);
+ b->mode=calloc(ci->modes,sizeof(vorbis_look_mapping *));
+ for(i=0;i<ci->modes;i++){
+ int mapnum=ci->mode_param[i]->mapping;
+ int maptype=ci->map_type[mapnum];
+ b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i],
+ ci->map_param[mapnum]);
}
return(0);
@@ -254,11 +257,14 @@ static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
/* arbitrary settings and spec-mandated numbers get filled in here */
int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
+ backend_lookup_state *b=NULL;
+
_vds_shared_init(v,vi,1);
+ b=v->backend_state;
/* Initialize the envelope state storage */
- v->ve=calloc(1,sizeof(envelope_lookup));
- _ve_envelope_init(v->ve,vi);
+ b->ve=calloc(1,sizeof(envelope_lookup));
+ _ve_envelope_init(b->ve,vi);
return(0);
}
@@ -267,18 +273,39 @@ void vorbis_dsp_clear(vorbis_dsp_state *v){
int i,j,k;
if(v){
vorbis_info *vi=v->vi;
+ codec_setup_info *ci=(vi?vi->codec_setup:NULL);
+ backend_lookup_state *b=v->backend_state;
+
+ if(b){
+ if(b->window[0][0][0]){
+ for(i=0;i<VI_WINDOWB;i++)
+ if(b->window[0][0][0][i])free(b->window[0][0][0][i]);
+ free(b->window[0][0][0]);
+
+ for(j=0;j<2;j++)
+ for(k=0;k<2;k++){
+ for(i=0;i<VI_WINDOWB;i++)
+ if(b->window[1][j][k][i])free(b->window[1][j][k][i]);
+ free(b->window[1][j][k]);
+ }
+ }
+
+ if(b->ve){
+ _ve_envelope_clear(b->ve);
+ free(b->ve);
+ }
- if(v->window[0][0][0]){
- for(i=0;i<VI_WINDOWB;i++)
- if(v->window[0][0][0][i])free(v->window[0][0][0][i]);
- free(v->window[0][0][0]);
-
- for(j=0;j<2;j++)
- for(k=0;k<2;k++){
- for(i=0;i<VI_WINDOWB;i++)
- if(v->window[1][j][k][i])free(v->window[1][j][k][i]);
- free(v->window[1][j][k]);
- }
+ if(b->transform[0]){
+ mdct_clear(b->transform[0][0]);
+ free(b->transform[0][0]);
+ free(b->transform[0]);
+ }
+ if(b->transform[1]){
+ mdct_clear(b->transform[1][0]);
+ free(b->transform[1][0]);
+ free(b->transform[1]);
+ }
+
}
if(v->pcm){
@@ -288,42 +315,29 @@ void vorbis_dsp_clear(vorbis_dsp_state *v){
if(v->pcmret)free(v->pcmret);
}
- if(v->ve){
- _ve_envelope_clear(v->ve);
- free(v->ve);
- }
-
- if(v->transform[0]){
- mdct_clear(v->transform[0][0]);
- free(v->transform[0][0]);
- free(v->transform[0]);
- }
- if(v->transform[1]){
- mdct_clear(v->transform[1][0]);
- free(v->transform[1][0]);
- free(v->transform[1]);
- }
-
/* free mode lookups; these are actually vorbis_look_mapping structs */
- if(vi){
- for(i=0;i<vi->modes;i++){
- int mapnum=vi->mode_param[i]->mapping;
- int maptype=vi->map_type[mapnum];
- _mapping_P[maptype]->free_look(v->mode[i]);
+ if(ci){
+ for(i=0;i<ci->modes;i++){
+ int mapnum=ci->mode_param[i]->mapping;
+ int maptype=ci->map_type[mapnum];
+ if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]);
}
/* free codebooks */
- for(i=0;i<vi->books;i++)
- vorbis_book_clear(v->fullbooks+i);
+ for(i=0;i<ci->books;i++)
+ if(b && b->fullbooks)vorbis_book_clear(b->fullbooks+i);
}
- if(v->mode)free(v->mode);
- if(v->fullbooks)free(v->fullbooks);
-
- /* free header, header1, header2 */
- if(v->header)free(v->header);
- if(v->header1)free(v->header1);
- if(v->header2)free(v->header2);
-
+ if(b){
+ if(b->mode)free(b->mode);
+ if(b->fullbooks)free(b->fullbooks);
+
+ /* free header, header1, header2 */
+ if(b->header)free(b->header);
+ if(b->header1)free(b->header1);
+ if(b->header2)free(b->header2);
+ free(b);
+ }
+
memset(v,0,sizeof(vorbis_dsp_state));
}
}
@@ -331,11 +345,12 @@ void vorbis_dsp_clear(vorbis_dsp_state *v){
float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
int i;
vorbis_info *vi=v->vi;
+ backend_lookup_state *b=v->backend_state;
/* free header, header1, header2 */
- if(v->header)free(v->header);v->header=NULL;
- if(v->header1)free(v->header1);v->header1=NULL;
- if(v->header2)free(v->header2);v->header2=NULL;
+ if(b->header)free(b->header);b->header=NULL;
+ if(b->header1)free(b->header1);b->header1=NULL;
+ if(b->header2)free(b->header2);b->header2=NULL;
/* Do we have enough storage space for the requested buffer? If not,
expand the PCM (and envelope) storage */
@@ -388,6 +403,8 @@ static void _preextrapolate_helper(vorbis_dsp_state *v){
int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
vorbis_info *vi=v->vi;
+ codec_setup_info *ci=vi->codec_setup;
+
if(vals<=0){
int order=32;
int i;
@@ -403,9 +420,9 @@ int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
amplitude off a cliff, creating spread spectrum noise that will
suck to encode. Extrapolate for the sake of cleanliness. */
- vorbis_analysis_buffer(v,v->vi->blocksizes[1]*2);
+ vorbis_analysis_buffer(v,ci->blocksizes[1]*2);
v->eofflag=v->pcm_current;
- v->pcm_current+=v->vi->blocksizes[1]*2;
+ v->pcm_current+=ci->blocksizes[1]*2;
for(i=0;i<vi->channels;i++){
if(v->eofflag>order*2){
@@ -414,7 +431,7 @@ int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
/* make a predictor filter */
n=v->eofflag;
- if(n>v->vi->blocksizes[1])n=v->vi->blocksizes[1];
+ if(n>ci->blocksizes[1])n=ci->blocksizes[1];
vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order);
/* run the predictor filter */
@@ -439,7 +456,7 @@ int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
/* we may want to reverse extrapolate the beginning of a stream
too... in case we're beginning on a cliff! */
/* clumsy, but simple. It only runs once, so simple is good. */
- if(!v->preextrapolate && v->pcm_current-v->centerW>v->vi->blocksizes[1])
+ if(!v->preextrapolate && v->pcm_current-v->centerW>ci->blocksizes[1])
_preextrapolate_helper(v);
}
@@ -451,7 +468,9 @@ int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
int i;
vorbis_info *vi=v->vi;
- long beginW=v->centerW-vi->blocksizes[v->W]/2,centerNext;
+ codec_setup_info *ci=vi->codec_setup;
+ backend_lookup_state *b=v->backend_state;
+ long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
/* check to see if we're started... */
if(!v->preextrapolate)return(0);
@@ -463,16 +482,16 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
the next boundary so we can determine nW (the next window size)
which lets us compute the shape of the current block's window */
- if(vi->blocksizes[0]<vi->blocksizes[1]){
+ if(ci->blocksizes[0]<ci->blocksizes[1]){
long largebound;
long bp;
if(v->W)
/* min boundary; nW large, next small */
- largebound=v->centerW+vi->blocksizes[1]*3/4+vi->blocksizes[0]/4;
+ largebound=v->centerW+ci->blocksizes[1]*3/4+ci->blocksizes[0]/4;
else
/* min boundary; nW large, next small */
- largebound=v->centerW+vi->blocksizes[1]*3/4+vi->blocksizes[0]*3/4;
+ largebound=v->centerW+ci->blocksizes[1]*3/4+ci->blocksizes[0]*3/4;
bp=_ve_envelope_search(v,largebound);
if(bp==-1)return(0); /* not enough data currently to search for a
@@ -482,12 +501,12 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
}else
v->nW=0;
- centerNext=v->centerW+vi->blocksizes[v->W]/4+vi->blocksizes[v->nW]/4;
+ centerNext=v->centerW+ci->blocksizes[v->W]/4+ci->blocksizes[v->nW]/4;
{
/* center of next block + next block maximum right side. */
- long blockbound=centerNext+vi->blocksizes[v->nW]/2;
+ long blockbound=centerNext+ci->blocksizes[v->nW]/2;
if(v->pcm_current<blockbound)return(0); /* not enough data yet;
although this check is
less strict that the
@@ -513,14 +532,14 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
vb->vd=v;
vb->sequence=v->sequence;
vb->granulepos=v->granulepos;
- vb->pcmend=vi->blocksizes[v->W];
+ vb->pcmend=ci->blocksizes[v->W];
/* copy the vectors; this uses the local storage in vb */
{
vb->pcm=_vorbis_block_alloc(vb,sizeof(float *)*vi->channels);
for(i=0;i<vi->channels;i++){
vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(float));
- memcpy(vb->pcm[i],v->pcm[i]+beginW,vi->blocksizes[v->W]*sizeof(float));
+ memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(float));
}
}
@@ -538,10 +557,10 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
/* advance storage vectors and clean up */
{
- int new_centerNext=vi->blocksizes[1]/2;
+ int new_centerNext=ci->blocksizes[1]/2;
int movementW=centerNext-new_centerNext;
- _ve_envelope_shift(v->ve,movementW);
+ _ve_envelope_shift(b->ve,movementW);
v->pcm_current-=movementW;
for(i=0;i<vi->channels;i++)
@@ -573,11 +592,12 @@ int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
}
int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
+ codec_setup_info *ci=vi->codec_setup;
_vds_shared_init(v,vi,0);
/* Adjust centerW to allow an easier mechanism for determining output */
v->pcm_returned=v->centerW;
- v->centerW-= vi->blocksizes[v->W]/4+vi->blocksizes[v->lW]/4;
+ v->centerW-= ci->blocksizes[v->W]/4+ci->blocksizes[v->lW]/4;
v->granulepos=-1;
v->sequence=-1;
@@ -590,15 +610,16 @@ int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
vorbis_info *vi=v->vi;
+ codec_setup_info *ci=vi->codec_setup;
/* Shift out any PCM that we returned previously */
/* centerW is currently the center of the last block added */
- if(v->pcm_returned && v->centerW>vi->blocksizes[1]/2){
+ if(v->pcm_returned && v->centerW>ci->blocksizes[1]/2){
/* don't shift too much; we need to have a minimum PCM buffer of
1/2 long block */
- int shiftPCM=v->centerW-vi->blocksizes[1]/2;
+ int shiftPCM=v->centerW-ci->blocksizes[1]/2;
shiftPCM=(v->pcm_returned<shiftPCM?v->pcm_returned:shiftPCM);
v->pcm_current-=shiftPCM;
@@ -628,8 +649,8 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
v->sequence=vb->sequence;
{
- int sizeW=vi->blocksizes[v->W];
- int centerW=v->centerW+vi->blocksizes[v->lW]/4+sizeW/4;
+ int sizeW=ci->blocksizes[v->W];
+ int centerW=v->centerW+ci->blocksizes[v->lW]/4+sizeW/4;
int beginW=centerW-sizeW/2;
int endW=beginW+sizeW;
int beginSl;
@@ -639,7 +660,7 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
/* Do we have enough PCM/mult storage for the block? */
if(endW>v->pcm_storage){
/* expand the storage */
- v->pcm_storage=endW+vi->blocksizes[1];
+ v->pcm_storage=endW+ci->blocksizes[1];
for(i=0;i<vi->channels;i++)
v->pcm[i]=realloc(v->pcm[i],v->pcm_storage*sizeof(float));
@@ -650,11 +671,11 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
switch(v->W){
case 0:
beginSl=0;
- endSl=vi->blocksizes[0]/2;
+ endSl=ci->blocksizes[0]/2;
break;
case 1:
- beginSl=vi->blocksizes[1]/4-vi->blocksizes[v->lW]/4;
- endSl=beginSl+vi->blocksizes[v->lW]/2;
+ beginSl=ci->blocksizes[1]/4-ci->blocksizes[v->lW]/4;
+ endSl=beginSl+ci->blocksizes[v->lW]/2;
break;
}
diff --git a/lib/books/lsp12_0.vqh b/lib/books/lsp12_0.vqh
new file mode 100644
index 00000000..b0a0a277
--- /dev/null
+++ b/lib/books/lsp12_0.vqh
@@ -0,0 +1,1157 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_lsp12_0_VQH_
+#define _V_lsp12_0_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_lsp12_0[] = {
+ 0,
+ 3,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 13,
+ 15,
+ 19,
+ 25,
+ 40,
+};
+
+static long _vq_lengthlist_lsp12_0[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,15,14,14,
+ 0, 0, 0, 0, 8, 0, 0, 0, 0,16,15,16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,14,14,16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,16,16,15, 0,16, 0, 0, 0, 0, 0, 0, 0,13,15,
+ 0, 0,15,13, 0, 0, 0, 0, 0, 0,15,14, 0, 0,15,14,
+ 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,16,15,15, 0,16, 0, 0, 0, 0,
+ 0,15, 0, 0,16,15, 0, 0, 0, 0, 0, 0, 0, 0,15, 0,
+ 14,14,14,15,14,16, 0, 0, 0, 0, 0,15,12,12,13,13,
+ 13,16, 0, 0, 0, 0, 0, 0,16,12,12,13,11,11,14, 0,
+ 0, 0, 0, 0, 0, 0,12,12,12,10,11,12,15, 0, 0, 0,
+ 0, 0,14,14,12,10,10,10,12, 0,16, 0, 0, 0, 0, 0,
+ 14,13,11,11,11,13,16, 0, 0, 0, 0, 0, 0, 0,14,13,
+ 14,13,15, 0, 0, 0, 0, 0, 0, 0, 0,16,15, 0, 0,16,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,14,15,13,14,14,13,16,15,16,
+ 0, 0, 0, 0,14,13,10,11,12,12,13, 0, 0, 0, 0, 0,
+ 0,14,10, 9, 9, 9,10,12,16, 0, 0, 0, 0, 0,14,11,
+ 9, 8, 9,10,12,15, 0, 0, 0, 0, 0,14,12, 9, 9, 9,
+ 9,12, 0, 0, 0, 0, 0, 0,14,13,11,10, 9,10,14, 0,
+ 0, 0, 0, 0, 0, 0,14,13,13,12,13,16, 0, 0, 0, 0,
+ 0, 0, 0, 0,15,16, 0,14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,15,16, 0, 0, 0, 0, 0,
+ 14,13,12,12,12,12,14, 0,15,16, 0, 0,15, 8, 9, 8,
+ 9,10,11,12,16, 0, 0, 0, 0,15, 9, 6, 7, 6, 7, 9,
+ 11, 0, 0, 0, 0, 0, 0,11, 8, 6, 5, 7, 8,12,16, 0,
+ 0, 0, 0, 0,12,10, 7, 7, 7, 8,12,15,16, 0, 0, 0,
+ 0,14,12, 9, 8, 8, 9,13, 0, 0, 0, 0, 0, 0,14,13,
+ 11,11,12,12,15, 0, 0, 0, 0, 0, 0,16,16,15,16,15,
+ 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,14,15,16, 0, 0, 0, 0,14,13,12,10,11, 8,12,14,
+ 16,16, 0, 0, 0, 0,14, 7, 7, 8, 9,10,12,16, 0, 0,
+ 0, 0, 0, 8, 6, 5, 5, 6, 8,11,14, 0, 0, 0, 0, 0,
+ 10, 6, 5, 4, 5, 7,11,15, 0, 0, 0, 0, 0,12, 9, 6,
+ 6, 6, 8,11,15, 0, 0, 0, 0, 0,13,10, 8, 7, 7, 9,
+ 13, 0, 0, 0, 0, 0,13,13,12,10,11,11,11,14, 0, 0,
+ 0, 0, 0, 0,16, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,15, 0, 0,16,14,13,14, 0,16, 0, 0,
+ 0,14,13,12,11,11,12,12,14,16, 0, 0, 0, 0, 0,12,
+ 10, 9, 8, 9,10,12, 0, 0, 0, 0, 0, 0,10, 8, 6, 6,
+ 6, 8,10,15, 0, 0, 0, 0, 0,10, 8, 6, 5, 6, 7,10,
+ 0, 0, 0, 0, 0, 0,11, 9, 7, 6, 6, 8,10,15, 0, 0,
+ 0, 0,14,11,10, 8, 7, 7, 8,12, 0,16, 0, 0, 0,13,
+ 13,13,11,11,11,11,15,15, 0, 0, 0, 0, 0, 0,16,16,
+ 16,16,14,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16, 0,
+ 15,16,14,14, 0, 0, 0, 0, 0, 0,15,12,13,12,12,12,
+ 12,15, 0, 0, 0, 0, 0,15,12,11,10,10, 9,10,12,16,
+ 0, 0, 0, 0,16,11,10, 8, 7, 7, 8,10,16, 0, 0, 0,
+ 0,15,11, 9, 8, 6, 6, 6,10,15, 0, 0, 0, 0,14,11,
+ 10, 8, 7, 6, 7,11,15, 0, 0, 0, 0,14,12,10, 8, 7,
+ 7, 7,13,15, 0, 0, 0, 0,15,14,12,10,10,12,13,14,
+ 0, 0, 0, 0, 0, 0, 0, 0,16, 0,16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0,16, 0, 0, 0,16,
+ 0, 0, 0, 0,12,14,12,12,14,14,14, 0,16, 0, 0, 0,
+ 0,13,14,12,11,12,12,13, 0, 0, 0, 0, 0,16,13,13,
+ 11,10, 9,10,13,15, 0, 0, 0, 0,15,12,11,11, 8, 8,
+ 9,12, 0, 0, 0, 0, 0,14,13,12, 9, 8, 8,10,15, 0,
+ 0, 0, 0, 0, 0,12,12, 9, 9,10,11,16, 0,16, 0, 0,
+ 0, 0, 0,14,13,13,14,15,16, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,15,15,
+ 15, 0, 0,16, 0, 0, 0, 0, 0, 0,15, 0,16,16, 0,16,
+ 0, 0, 0, 0, 0, 0, 0,14, 0,14,15, 0,16,16, 0, 0,
+ 0, 0, 0, 0,16, 0,15,15, 0,15, 0, 0, 0, 0, 0, 0,
+ 0,16,16,15,14,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0,
+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0,
+ 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 8, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+};
+
+static long _vq_pigeonmap_lsp12_0[] = {
+ 0, 0, 0, 0, 0, 1, 1, 1,
+ 2, 2, 3, 3, 3, 4, 4, 4,
+ 4, 4, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 6, 6, 6, 6, 6, 6, 6,
+};
+
+static long _vq_fitlist_lsp12_0[] = {
+ 196, 353, 343, 344, 345, 356, 366, 379,
+ 535, 189, 357, 201, 368, 380, 238, 250,
+ 392, 536, 548, 716, 226, 381, 393, 537,
+ 549, 704, 369, 561, 705, 202, 214, 227,
+ 239, 251, 370, 382, 394, 406, 538, 550,
+ 562, 706, 215, 717, 418, 574, 718, 730,
+ 873, 874, 1032, 1200, 707, 865, 875, 1033,
+ 1201, 729, 872, 1029, 1198, 886, 1042, 563,
+ 575, 719, 731, 743, 887, 899, 1043, 343,
+ 344, 189, 345, 178, 190, 201, 202, 356,
+ 357, 214, 368, 369, 215, 226, 370, 191,
+ 203, 227, 347, 371, 538, 381, 537, 382,
+ 539, 865, 228, 383, 384, 540, 552, 697,
+ 708, 550, 551, 706, 707, 1032, 1033, 1034,
+ 866, 709, 1202, 394, 719, 875, 876, 395,
+ 720, 877, 1203, 1201, 396, 553, 564, 721,
+ 878, 889, 1035, 1045, 1046, 1200, 565, 722,
+ 733, 890, 1047, 1058, 1214, 1215, 178, 189,
+ 344, 345, 179, 190, 191, 347, 202, 203,
+ 216, 215, 230, 373, 372, 242, 385, 541,
+ 698, 867, 243, 542, 228, 371, 697, 398,
+ 554, 255, 256, 412, 568, 710, 724, 254,
+ 267, 397, 410, 411, 567, 543, 581, 438,
+ 712, 750, 763, 906, 424, 881, 540, 866,
+ 384, 357, 1035, 553, 709, 880, 865, 722,
+ 878, 723, 879, 893, 1037, 1049, 179, 191,
+ 543, 1037, 712, 881, 426, 713, 230, 243,
+ 256, 373, 542, 412, 568, 764, 724, 698,
+ 880, 867, 581, 893, 438, 1049, 1375, 1388,
+ 750, 906, 1048, 1217, 1115, 763, 1453, 1231,
+ 1413, 196, 353, 366, 716, 872, 379, 535,
+ 729, 1041, 392, 548, 704, 380, 536, 238,
+ 250, 368, 561, 717, 226, 393, 549, 418,
+ 574, 730, 406, 562, 587, 873, 743, 886,
+ 419, 575, 251, 239, 600, 407, 420, 432,
+ 588, 601, 950, 1106, 1236, 1249, 1262, 756,
+ 769, 408, 421, 433, 576, 589, 602, 614,
+ 757, 770, 782, 394, 744, 899, 1275, 912,
+ 925, 1119, 563, 938, 434, 446, 758, 1223,
+ 926, 590, 615, 771, 783, 939, 951, 718,
+ 1055, 1288, 1094, 1107, 603, 795, 952, 1120,
+ 1042, 189, 190, 201, 202, 214, 178, 226,
+ 215, 227, 191, 203, 228, 238, 239, 216,
+ 357, 371, 370, 369, 383, 384, 540, 697,
+ 382, 395, 539, 396, 254, 372, 397, 189,
+ 201, 202, 214, 226, 238, 250, 368, 227,
+ 239, 251, 215, 228, 369, 381, 370, 382,
+ 394, 383, 395, 393, 406, 538, 550, 371,
+ 407, 539, 551, 419, 563, 384, 396, 397,
+ 408, 409, 420, 421, 432, 433, 540, 552,
+ 553, 564, 565, 576, 577, 589, 708, 720,
+ 721, 733, 190, 201, 202, 214, 215, 226,
+ 227, 238, 239, 251, 203, 228, 191, 216,
+ 254, 242, 267, 384, 397, 255, 372, 385,
+ 371, 383, 396, 395, 408, 540, 552, 409,
+ 410, 421, 422, 541, 553, 565, 566, 578,
+ 709, 722, 398, 423, 554, 579, 710, 420,
+ 433, 434, 564, 577, 590, 721, 734, 201,
+ 238, 250, 356, 366, 368, 379, 380, 392,
+ 535, 536, 548, 704, 226, 393, 214, 239,
+ 251, 561, 227, 549, 381, 717, 418, 406,
+ 419, 407, 420, 432, 394, 574, 587, 575,
+ 588, 600, 383, 395, 396, 408, 409, 421,
+ 433, 564, 576, 577, 589, 601, 745, 757,
+ 562, 730, 382, 563, 743, 550, 731, 744,
+ 756, 551, 732, 769, 434, 590, 602, 758,
+ 770, 201, 202, 214, 215, 226, 227, 238,
+ 239, 250, 251, 228, 254, 203, 216, 267,
+ 396, 408, 409, 421, 395, 407, 420, 432,
+ 433, 383, 384, 397, 565, 577, 371, 410,
+ 419, 422, 434, 552, 553, 564, 576, 578,
+ 588, 589, 590, 601, 602, 733, 745, 746,
+ 758, 423, 435, 446, 591, 603, 370, 382,
+ 394, 406, 539, 551, 563, 575, 720, 732,
+ 540, 566, 721, 734, 579, 747, 759, 614,
+ 771, 436, 447, 592, 604, 615, 760, 772,
+ 203, 215, 216, 227, 228, 239, 251, 242,
+ 254, 267, 255, 230, 243, 384, 396, 397,
+ 409, 423, 436, 256, 411, 424, 410, 398,
+ 422, 435, 448, 592, 605, 412, 437, 449,
+ 580, 593, 749, 421, 434, 566, 578, 385,
+ 579, 567, 591, 447, 554, 604, 748, 761,
+ 736, 446, 603, 616, 760, 773, 617, 774,
+ 606, 618, 762, 230, 242, 254, 255, 267,
+ 243, 256, 412, 438, 543, 581, 426, 450,
+ 463, 712, 750, 763, 881, 424, 568, 411,
+ 437, 580, 593, 932, 606, 373, 398, 436,
+ 542, 567, 736, 749, 449, 762, 775, 619,
+ 788, 764, 631, 645, 1127, 1115, 1139, 618,
+ 385, 554, 723, 724, 880, 893, 906, 919,
+ 892, 905, 918, 1049, 1061, 1075, 1074, 931,
+ 1101, 944, 957, 1257, 1270, 1283, 1087, 1100,
+ 1126, 1113, 1295, 226, 238, 250, 251, 239,
+ 227, 418, 419, 432, 228, 254, 396, 407,
+ 408, 409, 420, 421, 433, 406, 600, 588,
+ 589, 601, 267, 397, 410, 422, 434, 435,
+ 446, 577, 578, 590, 602, 603, 614, 576,
+ 769, 615, 758, 770, 771, 782, 423, 447,
+ 591, 757, 783, 459, 436, 448, 604, 616,
+ 784, 587, 395, 564, 565, 575, 759, 795,
+ 939, 951, 460, 628, 796, 383, 745, 394,
+ 756, 938, 952, 393, 562, 563, 574, 743,
+ 744, 964, 925, 926, 927, 1107, 1120, 629,
+ 797, 215, 226, 227, 228, 238, 239, 251,
+ 254, 267, 384, 395, 396, 397, 407, 408,
+ 409, 420, 421, 432, 433, 434, 422, 242,
+ 435, 446, 255, 447, 423, 436, 448, 459,
+ 615, 449, 460, 604, 605, 616, 617, 592,
+ 628, 784, 785, 424, 437, 618, 629, 786,
+ 577, 589, 590, 602, 410, 603, 591, 614,
+ 578, 772, 773, 797, 798, 759, 771, 631,
+ 787, 799, 579, 760, 450, 800, 955, 956,
+ 968, 242, 254, 255, 267, 230, 243, 256,
+ 436, 424, 437, 449, 411, 423, 435, 447,
+ 448, 459, 460, 593, 605, 617, 618, 412,
+ 450, 606, 580, 616, 628, 629, 774, 786,
+ 787, 438, 463, 581, 619, 631, 775, 799,
+ 788, 592, 604, 798, 800, 398, 446, 761,
+ 773, 762, 567, 749, 956, 968, 969, 955,
+ 785, 797, 1137, 1138, 645, 1139, 1136, 1306,
+ 957, 1126, 1476, 426, 764, 713, 1115, 645,
+ 1453, 1815, 1994, 1993, 1139, 1138, 1295, 1464,
+ 1476, 1127, 1283, 1632, 1438, 1451, 1581, 1762,
+ 1775, 1787, 1270, 1413, 1463, 1388, 1375, 1399,
+ 1412, 1425, 1555, 1580, 1593, 1257, 1786, 750,
+ 763, 775, 906, 919, 931, 932, 944, 1075,
+ 1087, 1100, 1113, 1231, 1244, 1256, 1269, 1282,
+ 788, 957, 1101, 619, 1126, 238, 250, 251,
+ 379, 380, 392, 393, 406, 418, 419, 548,
+ 549, 561, 562, 574, 575, 587, 600, 717,
+ 729, 730, 743, 756, 950, 1106, 1249, 1262,
+ 1275, 432, 588, 769, 239, 407, 420, 601,
+ 744, 757, 925, 1119, 408, 421, 433, 576,
+ 589, 602, 614, 770, 782, 938, 434, 446,
+ 577, 590, 603, 615, 758, 771, 783, 939,
+ 951, 912, 926, 795, 254, 267, 422, 435,
+ 447, 459, 784, 952, 1288, 1107, 796, 964,
+ 1120, 616, 628, 1094, 448, 460, 797, 953,
+ 629, 798, 1289, 1134, 617, 799, 1135, 449,
+ 631, 800, 968, 1136, 1304, 618, 786, 787,
+ 969, 1137, 785, 463, 956, 1138, 1306, 955,
+ 954, 619, 645, 788, 1139, 1476, 1123, 1124,
+ 1125, 899, 1122, 1292, 1293, 1294, 1121, 1291,
+ 1276, 1290, 1461, 1462, 1460, 1463, 1630, 251,
+ 254, 267, 409, 420, 421, 422, 432, 433,
+ 434, 435, 446, 447, 459, 589, 590, 601,
+ 602, 603, 614, 615, 758, 770, 771, 782,
+ 783, 784, 795, 951, 448, 604, 616, 628,
+ 436, 460, 617, 796, 952, 449, 629, 797,
+ 964, 618, 798, 631, 799, 450, 787, 800,
+ 968, 1136, 463, 619, 956, 969, 1137, 1135,
+ 786, 1138, 788, 1304, 1306, 645, 1139, 957,
+ 1476, 1134, 955, 1126, 953, 785, 1125, 954,
+ 1124, 1295, 1294, 256, 424, 437, 438, 448,
+ 449, 450, 459, 460, 463, 606, 617, 618,
+ 619, 629, 631, 775, 786, 787, 798, 799,
+ 800, 788, 968, 969, 645, 1139, 956, 1453,
+ 1138, 1127, 1815, 436, 447, 605, 616, 774,
+ 593, 412, 581, 762, 931, 944, 955, 957,
+ 785, 943, 1125, 1124, 1137, 954, 1112, 1113,
+ 1126, 1295, 1306, 1123, 1281, 1100, 1282, 1136,
+ 1293, 1294, 1476, 1292, 1269, 1283, 1464, 450,
+ 463, 426, 645, 764, 1127, 1115, 1453, 1815,
+ 1139, 1994, 1993, 619, 631, 788, 799, 800,
+ 957, 968, 969, 1137, 1138, 1126, 1295, 1306,
+ 1476, 932, 1101, 763, 1270, 1283, 1464, 438,
+ 459, 460, 463, 628, 629, 631, 645, 796,
+ 797, 798, 799, 800, 956, 964, 968, 969,
+ 1124, 1125, 1134, 1135, 1136, 1137, 1138, 1293,
+ 1304, 1306, 1476, 1139, 1294, 1462, 1463, 1994,
+ 1993, 1815, 446, 447, 615, 616, 783, 784,
+ 795, 952, 953, 785, 617, 786, 954, 618,
+ 787, 955, 1123, 957, 1126, 1122, 1292, 1295,
+ 1291, 1464, 1632, 449, 619, 788, 1461, 1460,
+ 1630, 196, 353, 343, 344, 356, 366, 379,
+ 535, 345, 1029, 536, 704, 1198, 716, 872,
+ 357, 368, 380, 548, 705, 873, 729, 1041,
+ 1366, 392, 537, 549, 717, 874, 1032, 1042,
+ 1200, 561, 706, 718, 886, 1043, 1201, 1211,
+ 369, 381, 538, 1033, 393, 550, 875, 370,
+ 382, 394, 539, 551, 562, 707, 719, 865,
+ 876, 887, 1034, 1044, 1202, 189, 201, 356,
+ 357, 366, 368, 369, 379, 380, 381, 392,
+ 535, 536, 537, 548, 549, 705, 202, 214,
+ 226, 238, 370, 382, 393, 538, 550, 706,
+ 394, 250, 406, 562, 215, 227, 239, 251,
+ 371, 383, 395, 407, 539, 551, 563, 707,
+ 718, 719, 575, 731, 875, 396, 408, 540,
+ 552, 564, 576, 708, 720, 732, 876, 874,
+ 1032, 865, 1033, 887, 888, 419, 744, 900,
+ 1044, 384, 420, 565, 577, 709, 721, 733,
+ 745, 877, 889, 901, 1045, 190, 201, 202,
+ 214, 215, 226, 227, 238, 239, 357, 368,
+ 369, 370, 371, 381, 382, 383, 394, 537,
+ 538, 539, 550, 551, 707, 865, 203, 228,
+ 384, 395, 540, 552, 697, 708, 191, 216,
+ 372, 396, 553, 709, 866, 254, 385, 397,
+ 409, 541, 565, 566, 722, 408, 564, 410,
+ 721, 878, 1035, 720, 577, 733, 877, 578,
+ 734, 398, 554, 579, 710, 735, 876, 1034,
+ 698, 890, 891, 1047, 889, 421, 746, 902,
+ 1046, 422, 747, 903, 423, 567, 723, 748,
+ 879, 904, 191, 203, 216, 228, 371, 372,
+ 384, 385, 397, 540, 541, 553, 697, 698,
+ 866, 242, 373, 554, 710, 867, 230, 398,
+ 542, 243, 256, 412, 568, 724, 880, 893,
+ 255, 567, 723, 543, 581, 750, 906, 1037,
+ 1049, 411, 424, 580, 438, 712, 879, 736,
+ 593, 749, 763, 919, 892, 1048, 1075, 1231,
+ 905, 881, 1061, 1217, 1244, 918, 1074, 932,
+ 1230, 1257, 1375, 762, 1087, 1243, 1101, 196,
+ 716, 872, 353, 729, 1041, 366, 535, 379,
+ 548, 704, 380, 392, 536, 561, 717, 873,
+ 549, 705, 730, 886, 1366, 1042, 1210, 1223,
+ 1236, 393, 574, 718, 874, 899, 1055, 1029,
+ 1198, 1211, 1249, 418, 562, 743, 887, 1043,
+ 1068, 1106, 1224, 1262, 1405, 587, 731, 912,
+ 1056, 1212, 1237, 1275, 343, 344, 1200, 1032,
+ 1201, 1380, 706, 875, 1033, 1044, 1202, 1213,
+ 1225, 1381, 1418, 366, 379, 380, 392, 535,
+ 536, 548, 704, 368, 381, 393, 537, 549,
+ 561, 705, 717, 226, 238, 250, 369, 382,
+ 394, 406, 418, 538, 550, 562, 574, 706,
+ 718, 730, 239, 251, 395, 407, 419, 551,
+ 563, 575, 587, 719, 731, 873, 874, 886,
+ 707, 743, 875, 887, 899, 420, 432, 564,
+ 576, 588, 600, 720, 732, 744, 756, 888,
+ 900, 1042, 1043, 1055, 876, 912, 1044, 1056,
+ 1068, 408, 589, 601, 733, 745, 757, 769,
+ 889, 901, 913, 925, 1057, 1069, 214, 226,
+ 227, 238, 239, 250, 251, 369, 370, 381,
+ 382, 383, 393, 394, 395, 406, 407, 419,
+ 538, 539, 550, 551, 562, 563, 575, 707,
+ 719, 215, 228, 371, 384, 396, 408, 420,
+ 540, 552, 564, 576, 708, 720, 432, 588,
+ 732, 397, 409, 421, 433, 553, 565, 577,
+ 589, 721, 733, 731, 744, 876, 888, 709,
+ 745, 877, 889, 601, 757, 901, 422, 434,
+ 566, 578, 590, 602, 722, 734, 746, 758,
+ 890, 902, 900, 913, 1045, 1057, 878, 914,
+ 1046, 1058, 770, 926, 1070, 410, 591, 603,
+ 735, 747, 759, 771, 891, 903, 915, 927,
+ 1059, 1071, 228, 371, 383, 384, 395, 396,
+ 397, 408, 409, 421, 540, 552, 553, 564,
+ 565, 577, 709, 721, 216, 254, 372, 385,
+ 410, 422, 541, 566, 578, 722, 242, 267,
+ 398, 423, 554, 579, 710, 434, 590, 734,
+ 435, 591, 735, 255, 411, 436, 567, 592,
+ 723, 733, 746, 878, 890, 747, 891, 748,
+ 879, 603, 759, 903, 604, 760, 904, 424,
+ 580, 605, 736, 761, 892, 902, 915, 1047,
+ 1059, 916, 1060, 917, 1048, 772, 928, 1072,
+ 773, 929, 1073, 593, 749, 774, 905, 930,
+ 1061, 196, 716, 729, 872, 1041, 366, 379,
+ 380, 392, 535, 536, 548, 561, 704, 717,
+ 873, 393, 549, 574, 730, 418, 886, 250,
+ 406, 562, 575, 587, 705, 718, 731, 743,
+ 899, 1042, 1106, 1223, 1236, 1249, 1262, 756,
+ 912, 1055, 419, 600, 1210, 950, 1211, 1275,
+ 1068, 588, 744, 769, 925, 874, 887, 1405,
+ 1224, 900, 1081, 432, 757, 913, 938, 1094,
+ 1119, 238, 250, 368, 379, 380, 381, 392,
+ 393, 394, 406, 418, 536, 537, 548, 549,
+ 550, 561, 562, 574, 575, 587, 705, 717,
+ 718, 730, 731, 743, 886, 899, 251, 407,
+ 419, 563, 239, 382, 395, 408, 420, 432,
+ 551, 564, 576, 588, 600, 732, 744, 756,
+ 421, 433, 577, 589, 601, 745, 757, 769,
+ 912, 925, 434, 590, 602, 758, 770, 719,
+ 900, 720, 733, 901, 913, 746, 914, 926,
+ 938, 446, 603, 614, 759, 771, 782, 927,
+ 939, 887, 1068, 888, 1069, 1081, 889, 902,
+ 1070, 1082, 1094, 915, 1083, 1095, 1107, 615,
+ 772, 783, 928, 940, 951, 1096, 1108, 383,
+ 395, 396, 407, 408, 409, 419, 420, 421,
+ 432, 433, 552, 564, 565, 576, 577, 588,
+ 589, 601, 733, 745, 254, 384, 397, 410,
+ 422, 434, 553, 566, 578, 590, 602, 734,
+ 746, 758, 267, 423, 435, 446, 579, 591,
+ 603, 747, 759, 614, 771, 436, 447, 592,
+ 604, 615, 760, 772, 721, 757, 770, 902,
+ 914, 722, 735, 903, 915, 927, 748, 916,
+ 928, 783, 940, 448, 605, 616, 761, 773,
+ 784, 929, 941, 890, 926, 939, 1071, 1083,
+ 891, 904, 1072, 1084, 1096, 917, 1085, 1097,
+ 952, 1109, 459, 617, 774, 785, 930, 942,
+ 953, 1098, 1110, 254, 267, 397, 409, 410,
+ 421, 422, 423, 434, 435, 566, 578, 579,
+ 590, 591, 603, 735, 747, 242, 255, 385,
+ 398, 411, 436, 554, 567, 592, 604, 748,
+ 424, 580, 605, 736, 447, 760, 448, 761,
+ 437, 449, 593, 749, 616, 773, 460, 606,
+ 617, 618, 762, 774, 786, 930, 943, 759,
+ 772, 904, 916, 723, 917, 905, 929, 918,
+ 785, 942, 450, 775, 787, 931, 928, 941,
+ 1073, 1085, 892, 1086, 1074, 1098, 1099, 1087,
+ 954, 1111, 955, 1112, 619, 944, 956, 1100,
+ 716, 729, 1223, 1236, 379, 392, 535, 548,
+ 561, 574, 704, 717, 730, 1106, 1249, 1262,
+ 250, 380, 393, 406, 418, 536, 549, 562,
+ 575, 587, 600, 705, 718, 731, 743, 756,
+ 873, 886, 899, 912, 950, 1042, 1055, 1068,
+ 1275, 419, 432, 588, 601, 744, 757, 769,
+ 925, 1119, 938, 1081, 770, 782, 1094, 1288,
+ 420, 433, 576, 589, 602, 614, 745, 758,
+ 771, 783, 913, 926, 939, 951, 1095, 1107,
+ 1263, 1276, 446, 795, 1120, 615, 784, 796,
+ 952, 964, 1405, 1418, 1041, 1210, 1082, 1108,
+ 1121, 1289, 407, 418, 419, 420, 432, 433,
+ 575, 576, 587, 588, 589, 600, 601, 744,
+ 756, 757, 769, 770, 925, 938, 408, 421,
+ 434, 577, 590, 602, 614, 745, 758, 771,
+ 782, 926, 939, 409, 422, 435, 446, 578,
+ 591, 603, 615, 746, 759, 772, 783, 927,
+ 940, 1107, 951, 447, 784, 795, 952, 448,
+ 459, 604, 616, 628, 785, 796, 953, 1120,
+ 964, 1121, 460, 797, 617, 629, 798, 913,
+ 1094, 914, 1095, 1108, 1134, 786, 954, 1135,
+ 1082, 1263, 1276, 928, 941, 1109, 1289, 1122,
+ 799, 955, 1123, 1136, 1304, 422, 434, 435,
+ 446, 447, 591, 603, 604, 614, 615, 772,
+ 423, 436, 448, 459, 592, 605, 616, 773,
+ 784, 449, 460, 617, 628, 785, 618, 629,
+ 786, 797, 631, 787, 798, 799, 955, 800,
+ 956, 968, 1136, 760, 783, 941, 761, 774,
+ 942, 796, 953, 954, 1124, 1135, 969, 1137,
+ 929, 952, 1110, 930, 943, 1111, 1122, 1123,
+ 1304, 1125, 1138, 1306, 950, 1106, 1119, 1275,
+ 1288, 600, 769, 782, 432, 601, 614, 770,
+ 783, 795, 938, 939, 951, 1107, 1120, 1276,
+ 446, 615, 796, 952, 964, 1289, 459, 784,
+ 628, 797, 460, 629, 953, 1134, 1121, 785,
+ 798, 954, 1122, 1135, 1304, 799, 968, 1123,
+ 1136, 1290, 1291, 631, 800, 955, 969, 1124,
+ 1137, 1292, 1306, 1138, 1293, 1125, 1294, 1476,
+ 1459, 463, 1139, 1460, 1461, 1462, 645, 1463,
+ 1630, 1632, 1108, 1445, 190, 347, 697, 865,
+ 1034, 191, 698, 866, 1035, 867, 371, 1203,
+ 372, 373, 542, 724, 880, 541, 568, 893,
+ 1049, 384, 385, 397, 540, 553, 554, 566,
+ 709, 710, 722, 878, 879, 891, 1047, 398,
+ 567, 723, 892, 1048, 412, 581, 906, 1037,
+ 1033, 1202, 735, 1060, 1216, 736, 1061, 1217,
+ 1231, 366, 379, 535, 548, 704, 716, 729,
+ 872, 873, 1029, 1041, 1198, 536, 705, 717,
+ 368, 380, 392, 537, 549, 561, 706, 718,
+ 874, 886, 1032, 1042, 1200, 730, 369, 381,
+ 393, 538, 550, 562, 574, 719, 731, 875,
+ 887, 899, 1043, 1055, 743, 1211, 382, 394,
+ 406, 418, 551, 563, 575, 587, 707, 732,
+ 744, 876, 888, 900, 912, 1044, 1056, 1068,
+ 1212, 1210, 1223, 1201, 1224, 720, 756, 901,
+ 913, 1045, 1057, 1069, 1081, 1213, 1225, 1237,
+ 368, 369, 380, 381, 393, 536, 537, 538,
+ 549, 550, 562, 705, 706, 707, 718, 719,
+ 874, 875, 887, 1032, 1033, 1043, 1201, 370,
+ 382, 394, 539, 551, 563, 708, 720, 865,
+ 876, 888, 1034, 1044, 1202, 406, 575, 731,
+ 732, 900, 1056, 371, 383, 395, 407, 540,
+ 552, 564, 576, 721, 733, 877, 889, 901,
+ 1045, 1057, 419, 588, 744, 745, 913, 1069,
+ 1213, 384, 396, 408, 420, 553, 565, 577,
+ 589, 709, 734, 746, 878, 890, 902, 914,
+ 1046, 1058, 1070, 1214, 1212, 1203, 1225, 1226,
+ 757, 1082, 1238, 722, 758, 903, 915, 1047,
+ 1059, 1071, 1083, 1215, 1227, 1239, 370, 371,
+ 382, 383, 395, 538, 539, 540, 551, 552,
+ 564, 707, 708, 709, 720, 721, 865, 876,
+ 877, 889, 1034, 1045, 1203, 384, 396, 553,
+ 565, 697, 722, 866, 878, 890, 1035, 1046,
+ 372, 385, 397, 409, 410, 541, 554, 566,
+ 578, 698, 710, 734, 735, 867, 879, 891,
+ 903, 1047, 1059, 1060, 1216, 408, 577, 733,
+ 902, 1058, 579, 723, 904, 421, 590, 746,
+ 747, 915, 1071, 1215, 422, 591, 748, 916,
+ 1072, 398, 423, 567, 592, 736, 892, 917,
+ 1048, 1073, 1214, 1228, 1229, 1227, 759, 1084,
+ 1240, 760, 1085, 1241, 761, 905, 1061, 1086,
+ 1217, 1242, 380, 392, 393, 536, 548, 549,
+ 561, 562, 574, 704, 705, 717, 718, 730,
+ 743, 873, 874, 886, 887, 899, 1042, 1043,
+ 1055, 1211, 381, 394, 406, 418, 537, 550,
+ 563, 575, 587, 706, 719, 731, 744, 756,
+ 875, 888, 900, 912, 1044, 1056, 1068, 1212,
+ 1224, 382, 395, 407, 419, 538, 551, 564,
+ 576, 588, 600, 707, 720, 732, 745, 757,
+ 876, 889, 901, 913, 925, 1045, 1057, 1069,
+ 1081, 1213, 1225, 769, 1237, 408, 420, 432,
+ 577, 589, 601, 733, 758, 770, 902, 914,
+ 926, 938, 1058, 1070, 1082, 1094, 1226, 1238,
+ 1214, 1250, 746, 927, 939, 1071, 1083, 1095,
+ 1107, 1227, 1239, 1251, 1263, 383, 395, 396,
+ 407, 408, 419, 420, 432, 539, 551, 552,
+ 563, 564, 565, 575, 576, 577, 588, 589,
+ 601, 707, 708, 719, 720, 721, 732, 733,
+ 744, 745, 746, 757, 758, 876, 877, 888,
+ 889, 890, 900, 901, 902, 913, 914, 926,
+ 1045, 1046, 1057, 1058, 1069, 1070, 1082, 1214,
+ 1226, 384, 397, 409, 421, 433, 540, 553,
+ 566, 578, 590, 602, 709, 722, 734, 747,
+ 759, 878, 891, 903, 915, 927, 1047, 1059,
+ 1071, 1083, 1215, 1227, 770, 771, 939, 1095,
+ 1239, 410, 422, 434, 579, 591, 603, 735,
+ 760, 772, 904, 916, 928, 940, 1060, 1072,
+ 1084, 1096, 1228, 1240, 1238, 1251, 1216, 1252,
+ 1108, 1264, 748, 929, 941, 1073, 1085, 1097,
+ 1109, 1229, 1241, 1253, 1265, 397, 409, 410,
+ 421, 422, 434, 553, 565, 566, 577, 578,
+ 579, 590, 591, 603, 709, 721, 722, 734,
+ 735, 746, 747, 748, 759, 760, 878, 890,
+ 891, 902, 903, 904, 915, 916, 928, 1047,
+ 1059, 1060, 1071, 1072, 1084, 1216, 1228, 385,
+ 398, 423, 435, 541, 554, 567, 592, 604,
+ 710, 723, 761, 879, 892, 917, 929, 1048,
+ 1073, 1085, 1229, 411, 436, 580, 605, 736,
+ 749, 905, 930, 1061, 1086, 1217, 772, 773,
+ 941, 1097, 1241, 774, 942, 1098, 1242, 424,
+ 593, 762, 918, 943, 1074, 1099, 1230, 1240,
+ 1253, 1254, 1255, 1110, 1266, 1111, 1267, 931,
+ 1087, 1112, 1243, 1268, 411, 424, 542, 567,
+ 568, 580, 593, 723, 724, 736, 749, 762,
+ 880, 892, 893, 905, 918, 1049, 1061, 1074,
+ 1230, 412, 437, 581, 606, 750, 906, 931,
+ 1087, 763, 919, 1075, 1231, 438, 543, 712,
+ 881, 932, 1101, 1244, 1257, 775, 1243, 944,
+ 1100, 1270, 426, 1283, 1256, 1113, 1269, 764,
+ 1127, 1388, 450, 619, 788, 957, 463, 1126,
+ 1295, 1282, 1139, 1115, 1399, 1413, 1412, 1425,
+ 1438, 1581, 1451, 716, 729, 872, 1041, 1210,
+ 1223, 1236, 1249, 379, 392, 418, 548, 561,
+ 574, 704, 717, 730, 743, 873, 886, 899,
+ 1042, 1055, 1068, 1106, 1211, 1224, 1262, 1405,
+ 393, 406, 549, 562, 575, 587, 718, 731,
+ 756, 874, 887, 900, 912, 1043, 1056, 1081,
+ 1237, 1275, 950, 419, 588, 600, 744, 769,
+ 913, 925, 1069, 1094, 1119, 1250, 1418, 432,
+ 601, 757, 926, 938, 1082, 1107, 1263, 1288,
+ 1212, 1225, 1238, 770, 1095, 1251, 1276, 406,
+ 418, 419, 562, 574, 575, 587, 588, 600,
+ 730, 731, 743, 744, 756, 769, 887, 899,
+ 900, 912, 913, 925, 1056, 1068, 1069, 1081,
+ 1237, 407, 420, 432, 563, 576, 589, 601,
+ 732, 745, 757, 770, 888, 901, 914, 926,
+ 938, 1057, 1070, 1082, 1094, 1238, 1250, 408,
+ 421, 433, 564, 577, 590, 602, 733, 746,
+ 758, 771, 889, 902, 915, 927, 939, 1058,
+ 1071, 1083, 1095, 1107, 1239, 1251, 782, 1263,
+ 434, 603, 614, 759, 783, 928, 940, 951,
+ 1084, 1096, 1108, 1252, 1264, 1276, 446, 615,
+ 772, 784, 941, 952, 1097, 1109, 1120, 1265,
+ 1277, 1225, 1226, 1227, 1240, 1253, 795, 953,
+ 1110, 1121, 1266, 1278, 1289, 409, 421, 422,
+ 433, 434, 565, 577, 578, 589, 590, 591,
+ 601, 602, 603, 614, 733, 734, 745, 746,
+ 747, 758, 759, 770, 771, 772, 890, 902,
+ 903, 914, 915, 916, 926, 927, 928, 939,
+ 940, 1059, 1071, 1072, 1083, 1084, 1095, 1096,
+ 1108, 1240, 1252, 410, 423, 435, 446, 566,
+ 579, 592, 604, 615, 735, 748, 760, 773,
+ 891, 904, 917, 929, 941, 1060, 1073, 1085,
+ 1097, 1109, 1241, 1253, 783, 784, 952, 1265,
+ 436, 447, 605, 616, 761, 785, 930, 942,
+ 953, 1086, 1098, 1110, 1254, 1266, 1121, 1278,
+ 448, 459, 617, 628, 774, 786, 943, 954,
+ 1099, 1111, 1122, 1267, 1279, 1228, 1264, 1277,
+ 1229, 1242, 1255, 796, 1290, 797, 955, 1112,
+ 1123, 1268, 1280, 1291, 423, 435, 436, 447,
+ 579, 591, 592, 603, 604, 605, 616, 735,
+ 747, 748, 760, 761, 772, 773, 774, 904,
+ 916, 917, 928, 929, 930, 941, 942, 1073,
+ 1085, 1086, 1097, 1098, 1110, 1242, 1254, 411,
+ 424, 448, 567, 580, 593, 617, 736, 749,
+ 892, 905, 918, 943, 1061, 1074, 1099, 1111,
+ 1255, 437, 449, 606, 618, 762, 775, 931,
+ 1087, 1112, 1243, 785, 786, 954, 1267, 787,
+ 955, 1268, 944, 956, 1100, 1256, 460, 629,
+ 1123, 1280, 1124, 1281, 450, 619, 631, 788,
+ 1113, 1125, 1269, 1266, 1279, 1230, 798, 1292,
+ 799, 1293, 800, 957, 1282, 1294, 729, 1106,
+ 1223, 1236, 1249, 1262, 1275, 1405, 1418, 950,
+ 1119, 432, 588, 600, 601, 756, 757, 769,
+ 770, 782, 913, 925, 926, 938, 939, 1081,
+ 1082, 1094, 1095, 1107, 1250, 1263, 1276, 1288,
+ 614, 951, 1108, 1120, 1431, 783, 795, 952,
+ 1289, 964, 1121, 1445, 796, 1251, 1264, 1277,
+ 1432, 1290, 1134, 1419, 1459, 1420, 1433, 1446,
+ 1601, 1122, 1135, 1291, 1460, 1588, 1602, 1447,
+ 1304, 1616, 601, 614, 769, 770, 782, 926,
+ 938, 939, 951, 1095, 1107, 1108, 1276, 446,
+ 602, 615, 771, 783, 795, 927, 940, 952,
+ 1096, 1109, 1120, 1277, 447, 603, 616, 772,
+ 784, 796, 928, 941, 953, 964, 1097, 1110,
+ 1121, 1278, 1289, 459, 628, 785, 797, 954,
+ 1122, 1290, 460, 629, 1123, 1134, 1291, 798,
+ 1135, 1304, 799, 955, 968, 1124, 1136, 1292,
+ 1264, 1265, 1266, 1279, 1137, 1293, 447, 448,
+ 459, 604, 615, 616, 617, 628, 772, 773,
+ 784, 785, 796, 797, 929, 941, 942, 952,
+ 953, 954, 1098, 1110, 1111, 1121, 1122, 1279,
+ 449, 460, 605, 618, 629, 774, 786, 798,
+ 930, 943, 955, 1099, 1112, 1123, 1280, 1134,
+ 1291, 787, 799, 956, 1124, 1135, 1292, 631,
+ 968, 1125, 1136, 1293, 1304, 800, 969, 1137,
+ 1306, 1138, 1294, 1267, 1290, 1268, 1281, 950,
+ 1119, 1288, 782, 795, 951, 1107, 1120, 1276,
+ 1289, 614, 783, 952, 964, 1121, 796, 1134,
+ 1290, 1445, 459, 628, 797, 1122, 1135, 1291,
+ 1304, 1459, 629, 798, 1136, 799, 968, 1292,
+ 1460, 1137, 1306, 1461, 631, 800, 969, 1138,
+ 1293, 1462, 1630, 1463, 1476, 1632, 645, 1139,
+ 1815, 1993, 1994, 1277, 1432, 1601, 1446, 1786,
+ 1787, 1464, 1602, 1616, 1433, 1588, 1757, 1617,
+ 1447, 1603, 1590, 1732, 1604, 1775, 343, 344,
+ 345, 356, 1029, 1198, 357, 535, 536, 704,
+ 1032, 1200, 1201, 366, 873, 705, 1033, 874,
+ 706, 865, 875, 1202, 537, 718, 887, 1043,
+ 1044, 1212, 538, 707, 719, 876, 888, 1034,
+ 1045, 1203, 1213, 1056, 1057, 1214, 1371, 900,
+ 1055, 1068, 1069, 1211, 1224, 1225, 1226, 1237,
+ 1380, 1381, 1382, 1393, 345, 356, 357, 1032,
+ 1033, 1200, 1201, 865, 1034, 1202, 1203, 697,
+ 866, 540, 708, 709, 877, 1035, 707, 876,
+ 878, 539, 720, 889, 1045, 1046, 1214, 1371,
+ 371, 384, 552, 553, 565, 721, 722, 733,
+ 734, 890, 891, 902, 1047, 1058, 1059, 1215,
+ 1216, 1227, 903, 1060, 1071, 1228, 1383, 1384,
+ 541, 710, 735, 867, 879, 904, 1048, 1072,
+ 1229, 1385, 1057, 1070, 1213, 1226, 1239, 1382,
+ 1395, 1240, 1396, 1073, 1217, 1241, 1397, 347,
+ 697, 865, 866, 1033, 1034, 1035, 1202, 1203,
+ 698, 867, 373, 542, 880, 1049, 541, 710,
+ 568, 724, 893, 1037, 879, 723, 892, 1048,
+ 1217, 906, 1231, 372, 385, 554, 722, 735,
+ 878, 891, 904, 1047, 1060, 1216, 1229, 567,
+ 736, 1061, 905, 1230, 1371, 1386, 1074, 1073,
+ 1385, 1075, 1375, 1059, 1072, 1215, 1228, 1241,
+ 1242, 1384, 1397, 1398, 1243, 1399, 1244, 919,
+ 366, 379, 535, 536, 548, 704, 705, 717,
+ 729, 873, 886, 1029, 1042, 1198, 1200, 1210,
+ 1211, 1223, 1236, 874, 1043, 1055, 537, 549,
+ 706, 718, 730, 875, 887, 899, 1032, 1044,
+ 1056, 1201, 1212, 1224, 561, 1068, 550, 562,
+ 707, 719, 731, 743, 876, 888, 900, 912,
+ 1057, 1069, 1213, 1225, 1237, 574, 1081, 1380,
+ 563, 575, 720, 732, 744, 756, 889, 901,
+ 913, 925, 1045, 1070, 1082, 1214, 1226, 1238,
+ 1250, 1381, 1393, 1058, 1094, 1239, 1251, 1382,
+ 1394, 1406, 1249, 1405, 1549, 1227, 1263, 1383,
+ 1395, 1407, 1419, 1550, 538, 550, 706, 707,
+ 718, 719, 731, 874, 875, 876, 887, 888,
+ 900, 1032, 1033, 1043, 1044, 1045, 1056, 1057,
+ 1201, 1202, 1212, 1213, 1225, 539, 551, 708,
+ 720, 732, 865, 877, 889, 901, 1034, 1046,
+ 1058, 1203, 1214, 1226, 1371, 563, 744, 913,
+ 1069, 1070, 1238, 552, 564, 709, 721, 733,
+ 745, 878, 890, 902, 914, 1059, 1071, 1215,
+ 1227, 1239, 576, 757, 926, 1082, 1083, 1251,
+ 1382, 565, 577, 722, 734, 746, 758, 891,
+ 903, 915, 927, 1047, 1072, 1084, 1216, 1228,
+ 1240, 1252, 1383, 1381, 1394, 1395, 1095, 1407,
+ 1060, 1096, 1241, 1253, 1384, 1396, 1408, 1264,
+ 1420, 1551, 1229, 1265, 1385, 1397, 1409, 1421,
+ 1552, 540, 552, 708, 709, 720, 721, 733,
+ 876, 877, 878, 889, 890, 902, 1034, 1045,
+ 1046, 1047, 1058, 1059, 1203, 1214, 1215, 1227,
+ 553, 722, 734, 866, 891, 903, 1035, 1060,
+ 1216, 1228, 372, 385, 541, 554, 566, 579,
+ 698, 710, 723, 735, 747, 748, 867, 879,
+ 892, 904, 916, 1048, 1072, 1073, 1217, 1229,
+ 1241, 1385, 565, 746, 915, 1071, 1240, 917,
+ 1061, 1242, 578, 759, 928, 1084, 1085, 1253,
+ 1384, 760, 929, 1086, 1254, 567, 736, 761,
+ 905, 930, 1074, 1230, 1255, 1383, 1397, 1398,
+ 1396, 1097, 1409, 1098, 1410, 1099, 1243, 1386,
+ 1411, 1266, 1422, 1267, 1423, 1268, 1399, 1424,
+ 554, 710, 723, 867, 879, 892, 1048, 1061,
+ 1217, 373, 542, 567, 580, 724, 736, 749,
+ 880, 893, 905, 1049, 1074, 1230, 1386, 568,
+ 581, 750, 906, 1037, 1075, 1231, 543, 712,
+ 919, 1244, 1375, 918, 1243, 763, 881, 932,
+ 1101, 1257, 1413, 1087, 762, 931, 1256, 1270,
+ 1399, 1100, 1412, 1283, 1388, 1555, 1269, 1425,
+ 1581, 1113, 1282, 1438, 1451, 1464, 1580, 1593,
+ 1762, 1632, 1775, 1295, 1127, 716, 729, 872,
+ 1041, 1210, 1223, 1366, 1236, 1249, 548, 561,
+ 574, 704, 705, 717, 718, 730, 743, 873,
+ 874, 886, 887, 899, 1042, 1043, 1055, 1068,
+ 1106, 1211, 1212, 1224, 1262, 1380, 1405, 1418,
+ 587, 731, 756, 900, 912, 1056, 1081, 1225,
+ 1237, 1275, 1393, 1431, 925, 950, 1069, 1250,
+ 1381, 1406, 1549, 1094, 1119, 1238, 1394, 1562,
+ 1263, 1288, 1419, 1550, 1575, 1407, 1432, 1588,
+ 1601, 1732, 574, 718, 730, 731, 743, 874,
+ 886, 887, 899, 900, 912, 1042, 1043, 1055,
+ 1056, 1068, 1081, 1211, 1212, 1224, 1225, 1237,
+ 1380, 575, 587, 719, 732, 744, 756, 875,
+ 888, 901, 913, 925, 1044, 1057, 1069, 1082,
+ 1094, 1213, 1226, 1238, 1250, 1381, 1393, 576,
+ 588, 720, 733, 745, 757, 769, 876, 889,
+ 902, 914, 926, 938, 1045, 1058, 1070, 1083,
+ 1095, 1214, 1227, 1239, 1251, 1263, 1382, 1394,
+ 600, 1107, 1406, 589, 601, 746, 758, 770,
+ 915, 927, 939, 1071, 1096, 1108, 1240, 1252,
+ 1264, 1276, 1395, 1407, 1383, 1419, 1084, 1265,
+ 1277, 1396, 1408, 1420, 1432, 1549, 1550, 1562,
+ 1551, 1575, 1253, 1409, 1421, 1433, 1445, 1564,
+ 577, 589, 721, 733, 734, 745, 746, 757,
+ 758, 770, 877, 889, 890, 901, 902, 903,
+ 913, 914, 915, 926, 927, 939, 1045, 1046,
+ 1057, 1058, 1059, 1070, 1071, 1082, 1083, 1084,
+ 1095, 1096, 1214, 1215, 1226, 1227, 1228, 1238,
+ 1239, 1240, 1251, 1252, 1264, 1383, 1395, 578,
+ 590, 722, 735, 747, 759, 771, 878, 891,
+ 904, 916, 928, 940, 1047, 1060, 1072, 1085,
+ 1097, 1216, 1229, 1241, 1253, 1265, 1384, 1396,
+ 602, 1108, 1109, 1277, 1408, 591, 603, 748,
+ 760, 772, 917, 929, 941, 1073, 1098, 1110,
+ 1242, 1254, 1266, 1278, 1397, 1409, 1407, 1420,
+ 1385, 1421, 1433, 1086, 1267, 1279, 1398, 1410,
+ 1422, 1434, 1552, 1564, 1565, 1446, 1577, 1255,
+ 1411, 1423, 1435, 1447, 1578, 579, 591, 735,
+ 747, 748, 759, 760, 772, 891, 903, 904,
+ 915, 916, 917, 928, 929, 941, 1047, 1059,
+ 1060, 1072, 1073, 1084, 1085, 1086, 1097, 1098,
+ 1216, 1228, 1229, 1240, 1241, 1242, 1253, 1254,
+ 1266, 1385, 1397, 592, 723, 736, 761, 773,
+ 879, 892, 905, 930, 942, 1048, 1061, 1099,
+ 1217, 1230, 1255, 1267, 1398, 580, 749, 774,
+ 918, 943, 1074, 1087, 1243, 1268, 1386, 604,
+ 1110, 1111, 1279, 1410, 605, 1112, 1280, 1411,
+ 593, 762, 931, 1100, 1256, 1281, 1399, 1409,
+ 1422, 1423, 1424, 1435, 1436, 1269, 1412, 1437,
+ 1567, 1555, 1448, 1449, 1580, 1425, 1450, 426,
+ 764, 881, 1388, 1115, 713, 1453, 1127, 716,
+ 729, 872, 1041, 1210, 1223, 1236, 1249, 1405,
+ 1106, 1262, 1275, 1418, 574, 587, 600, 730,
+ 731, 743, 744, 756, 769, 887, 899, 900,
+ 912, 913, 925, 950, 1055, 1056, 1068, 1069,
+ 1081, 1094, 1119, 1212, 1224, 1225, 1237, 1238,
+ 1250, 1380, 1393, 1406, 1431, 757, 926, 938,
+ 1082, 1107, 1251, 1263, 1288, 1419, 770, 782,
+ 939, 1095, 1264, 1276, 1432, 1381, 1394, 1407,
+ 951, 1108, 1420, 1445, 1549, 1562, 1575, 1588,
+ 1120, 1277, 1433, 1601, 600, 744, 756, 757,
+ 769, 900, 912, 913, 925, 926, 938, 1068,
+ 1069, 1081, 1082, 1094, 1107, 1225, 1237, 1238,
+ 1250, 1251, 1263, 1406, 601, 745, 758, 770,
+ 901, 914, 927, 939, 1070, 1083, 1095, 1108,
+ 1226, 1239, 1252, 1264, 1276, 1407, 1419, 602,
+ 746, 759, 771, 782, 902, 915, 928, 940,
+ 951, 1071, 1084, 1096, 1109, 1227, 1240, 1253,
+ 1265, 1277, 1408, 1420, 1120, 1432, 614, 772,
+ 783, 941, 952, 1097, 1121, 1266, 1278, 1289,
+ 1421, 1433, 1445, 615, 784, 795, 953, 964,
+ 1110, 1122, 1279, 1290, 1434, 1446, 1394, 1395,
+ 1396, 1409, 1422, 1291, 1435, 1447, 1575, 1588,
+ 1577, 1601, 1590, 1602, 1448, 1459, 1603, 603,
+ 747, 759, 760, 771, 772, 783, 903, 915,
+ 916, 927, 928, 929, 939, 940, 941, 952,
+ 1071, 1072, 1083, 1084, 1085, 1096, 1097, 1108,
+ 1109, 1110, 1228, 1240, 1241, 1252, 1253, 1254,
+ 1264, 1265, 1266, 1277, 1278, 1409, 1421, 604,
+ 748, 761, 773, 784, 904, 917, 930, 942,
+ 953, 1073, 1086, 1098, 1111, 1229, 1242, 1255,
+ 1267, 1279, 1410, 1422, 615, 1121, 1122, 1290,
+ 1434, 616, 774, 785, 943, 954, 1099, 1123,
+ 1268, 1280, 1291, 1423, 1435, 796, 1447, 617,
+ 786, 797, 955, 1112, 1124, 1281, 1292, 1436,
+ 1448, 1397, 1433, 1446, 1398, 1411, 1424, 1134,
+ 1459, 1135, 1293, 1437, 1449, 1460, 1578, 1590,
+ 1591, 1603, 1604, 1616, 1304, 1450, 1461, 1605,
+ 1617, 605, 761, 773, 774, 785, 917, 929,
+ 930, 941, 942, 943, 954, 1073, 1085, 1086,
+ 1098, 1099, 1110, 1111, 1112, 1242, 1254, 1255,
+ 1266, 1267, 1268, 1279, 1280, 1411, 1423, 749,
+ 762, 786, 905, 918, 931, 955, 1074, 1087,
+ 1230, 1243, 1256, 1281, 1424, 606, 775, 787,
+ 944, 956, 1100, 1113, 1269, 1412, 617, 1123,
+ 1124, 1292, 1436, 618, 1125, 1293, 1437, 1282,
+ 1294, 1425, 798, 1449, 799, 968, 1450, 619,
+ 788, 800, 957, 969, 1126, 1438, 1435, 1448,
+ 1399, 1136, 1461, 1137, 1462, 1138, 1295, 1451,
+ 1463, 1580, 1593, 1581, 1605, 1306, 782, 783,
+ 939, 951, 952, 1107, 1108, 1120, 1264, 1276,
+ 1277, 1289, 1445, 784, 795, 940, 953, 964,
+ 1109, 1121, 1265, 1278, 1290, 1446, 785, 796,
+ 941, 954, 1110, 1122, 1134, 1266, 1279, 1291,
+ 1447, 628, 797, 1123, 1135, 1292, 1459, 798,
+ 1304, 1460, 1136, 799, 968, 1137, 1293, 1306,
+ 1461, 1433, 1434, 1435, 1448, 1462, 1630, 1616,
+ 1602, 1138, 1294, 1463, 628, 785, 786, 796,
+ 797, 942, 953, 954, 955, 1110, 1111, 1122,
+ 1123, 1134, 1135, 1267, 1279, 1280, 1290, 1291,
+ 1292, 1448, 629, 787, 798, 943, 956, 1112,
+ 1124, 1136, 1268, 1281, 1293, 1304, 1449, 1460,
+ 799, 968, 1125, 1137, 1294, 1461, 800, 969,
+ 1306, 1462, 1138, 1463, 1476, 1436, 1459, 1437,
+ 1450, 1630, 1632, 1617, 1139, 645, 1464, 1815,
+ 1993, 1994, 1605, 1787, 1786, 1762, 1775, 787,
+ 798, 799, 955, 956, 968, 1112, 1124, 1125,
+ 1136, 1137, 1281, 1292, 1293, 1294, 1450, 631,
+ 788, 800, 944, 957, 969, 1113, 1138, 1269,
+ 1282, 1306, 1126, 1295, 1451, 1462, 1463, 1139,
+ 1464, 1476, 645, 1127, 1461, 1438, 1632, 196,
+ 1366, 1029, 1041, 1198, 1210, 872, 1223, 1236,
+ 873, 1042, 1211, 1249, 1405, 1380, 1418, 1200,
+ 1549, 1381, 1393, 1431, 1562, 1550, 1575, 1406,
+ 1551, 1732, 1588, 1757, 1262, 1275, 1032, 1201,
+ 1043, 1212, 1224, 1371, 1382, 1394, 1395, 1407,
+ 1552, 1564, 1786, 1762, 1775, 1787, 1202, 1383,
+ 1384, 1396, 1565, 1577, 1578, 1590, 1591, 1567,
+ 1603, 1604, 1580, 1616, 1029, 1198, 1366, 872,
+ 1041, 1210, 1200, 1032, 1042, 1201, 1211, 1223,
+ 704, 873, 1380, 874, 1043, 1055, 1212, 1224,
+ 717, 886, 1236, 1249, 1405, 875, 887, 1044,
+ 1056, 1068, 1202, 1213, 1225, 1237, 1381, 1393,
+ 1549, 1418, 1371, 1382, 1394, 1550, 1406, 1562,
+ 1551, 1575, 1033, 1034, 1203, 876, 888, 1045,
+ 1057, 1069, 1214, 1226, 1238, 1383, 1395, 1046,
+ 1058, 1215, 1227, 1239, 1384, 1396, 1407, 1552,
+ 1408, 1564, 1565, 1577, 1032, 1033, 1200, 1201,
+ 1202, 1371, 865, 1034, 1203, 697, 866, 1035,
+ 1046, 1215, 1214, 878, 1047, 1059, 1216, 1228,
+ 1384, 709, 877, 890, 1045, 1058, 1071, 1227,
+ 1240, 1383, 1385, 1396, 1552, 891, 1060, 1072,
+ 1229, 1241, 1397, 1226, 1239, 1382, 1395, 1551,
+ 879, 1048, 1073, 1217, 1242, 1398, 1408, 1564,
+ 1409, 1565, 1386, 1410, 1411, 1423, 1555, 1567,
+ 1550, 1577, 1578, 1422, 1580, 1590, 1591, 697,
+ 866, 1034, 1035, 1203, 1371, 698, 867, 879,
+ 1048, 1217, 373, 542, 723, 724, 880, 892,
+ 893, 905, 1037, 1049, 1061, 1074, 1230, 1231,
+ 1386, 1399, 1047, 1216, 710, 1060, 1229, 1385,
+ 736, 1243, 1555, 878, 891, 1215, 1228, 1384,
+ 1073, 1242, 1398, 906, 1075, 1375, 904, 1241,
+ 1397, 1244, 1412, 1087, 1256, 1410, 1411, 1567,
+ 1425, 1581, 919, 1257, 1413, 1046, 1383, 1552,
+ 1059, 1396, 1565, 1438, 1227, 1409, 1551, 1580,
+ 1388, 1578, 1270, 1366, 1041, 1210, 872, 1223,
+ 1198, 1236, 873, 1042, 1211, 1249, 1405, 1055,
+ 1224, 1262, 1380, 1418, 716, 1068, 1106, 1212,
+ 1237, 1275, 1393, 1431, 1549, 1381, 1406, 1562,
+ 1550, 1575, 1419, 1588, 1551, 1732, 1432, 1564,
+ 1601, 1757, 1288, 1786, 1762, 1787, 1445, 1775,
+ 1602, 1119, 1616, 1617, 1993, 1081, 1094, 1107,
+ 1238, 1250, 1251, 1263, 1276, 1394, 1407, 950,
+ 1264, 1420, 1120, 1277, 1289, 1433, 1446, 873,
+ 886, 1042, 1043, 1055, 1200, 1211, 1212, 1224,
+ 1236, 1249, 1380, 1405, 1381, 1393, 1044, 1056,
+ 1213, 1225, 1237, 1382, 1394, 1549, 1068, 1406,
+ 1057, 1069, 1214, 1226, 1238, 1250, 1395, 1407,
+ 1550, 1562, 1081, 1419, 1070, 1082, 1227, 1239,
+ 1251, 1263, 1383, 1408, 1420, 1551, 1575, 1418,
+ 1396, 1432, 1552, 1564, 1588, 1577, 1565, 1601,
+ 1732, 1421, 1433, 1578, 1590, 1602, 1757, 1045,
+ 1057, 1213, 1214, 1225, 1226, 1238, 1371, 1381,
+ 1382, 1383, 1394, 1395, 1550, 1046, 1058, 1215,
+ 1227, 1239, 1384, 1396, 1551, 1070, 1251, 1407,
+ 1408, 1059, 1071, 1216, 1228, 1240, 1252, 1397,
+ 1409, 1552, 1564, 1083, 1264, 1420, 1421, 1072,
+ 1084, 1229, 1241, 1253, 1265, 1385, 1410, 1422,
+ 1565, 1577, 1433, 1398, 1434, 1578, 1590, 1591,
+ 1602, 1567, 1603, 1575, 1588, 1732, 1601, 1757,
+ 1423, 1435, 1580, 1604, 1616, 1047, 1059, 1215,
+ 1216, 1227, 1228, 1240, 1383, 1384, 1385, 1396,
+ 1397, 1552, 1060, 1229, 1241, 1398, 879, 892,
+ 1048, 1061, 1073, 1086, 1217, 1230, 1242, 1254,
+ 1255, 1386, 1410, 1411, 1567, 1072, 1253, 1409,
+ 1565, 1399, 1085, 1266, 1422, 1423, 1578, 1267,
+ 1424, 1074, 1243, 1268, 1412, 1555, 1580, 1435,
+ 1591, 1436, 1437, 1593, 1408, 1421, 1564, 1577,
+ 1434, 1590, 1581, 1603, 1604, 1605, 1425, 1450,
+ 1616, 1617, 1762, 1081, 1225, 1237, 1238, 1250,
+ 1380, 1381, 1393, 1394, 1406, 1419, 1549, 1550,
+ 1562, 1082, 1094, 1226, 1239, 1251, 1263, 1382,
+ 1395, 1407, 1420, 1432, 1551, 1575, 1083, 1095,
+ 1227, 1240, 1252, 1264, 1276, 1383, 1396, 1408,
+ 1421, 1433, 1552, 1564, 1588, 1107, 1445, 1096,
+ 1108, 1253, 1265, 1277, 1409, 1434, 1446, 1565,
+ 1577, 1601, 1422, 1578, 1590, 1602, 1603, 1732,
+ 1591, 1757, 1447, 1604, 1616, 1084, 1096, 1228,
+ 1240, 1241, 1252, 1253, 1264, 1265, 1277, 1383,
+ 1384, 1395, 1396, 1397, 1408, 1409, 1420, 1421,
+ 1422, 1433, 1434, 1552, 1564, 1565, 1577, 1085,
+ 1097, 1229, 1242, 1254, 1266, 1278, 1385, 1398,
+ 1410, 1423, 1435, 1578, 1590, 1109, 1446, 1447,
+ 1602, 1098, 1110, 1255, 1267, 1279, 1411, 1436,
+ 1448, 1567, 1591, 1603, 1424, 1580, 1604, 1616,
+ 1605, 1617, 1593, 1732, 1757, 1449, 1086, 1098,
+ 1242, 1254, 1255, 1266, 1267, 1279, 1385, 1397,
+ 1398, 1410, 1411, 1422, 1423, 1424, 1435, 1436,
+ 1567, 1578, 1591, 1099, 1230, 1243, 1268, 1280,
+ 1386, 1399, 1437, 1555, 1580, 1087, 1256, 1281,
+ 1412, 1425, 1593, 1111, 1448, 1449, 1604, 1112,
+ 1450, 1605, 1100, 1269, 1438, 1581, 1617, 1462,
+ 1630, 1762, 1451, 1463, 1775, 1616, 1786, 1787,
+ 1632, 1107, 1251, 1263, 1264, 1276, 1406, 1407,
+ 1419, 1420, 1432, 1445, 1575, 1588, 1108, 1252,
+ 1265, 1277, 1408, 1421, 1433, 1446, 1564, 1577,
+ 1601, 1109, 1253, 1266, 1278, 1289, 1409, 1422,
+ 1434, 1447, 1565, 1578, 1590, 1602, 1120, 1121,
+ 1279, 1290, 1435, 1459, 1591, 1603, 1122, 1291,
+ 1448, 1460, 1604, 1616, 1617, 1757, 1732, 1461,
+ 1605, 1630, 1786, 1110, 1254, 1266, 1267, 1278,
+ 1279, 1290, 1409, 1410, 1421, 1422, 1423, 1434,
+ 1435, 1446, 1447, 1448, 1578, 1590, 1591, 1602,
+ 1603, 1111, 1255, 1268, 1280, 1291, 1411, 1424,
+ 1436, 1449, 1567, 1580, 1604, 1616, 1122, 1459,
+ 1460, 1123, 1281, 1292, 1437, 1461, 1593, 1605,
+ 1617, 1124, 1293, 1304, 1450, 1462, 1630, 1762,
+ 1786, 1775, 1787, 1632, 1112, 1268, 1280, 1281,
+ 1292, 1411, 1423, 1424, 1436, 1437, 1448, 1449,
+ 1450, 1580, 1593, 1604, 1605, 1617, 1256, 1269,
+ 1293, 1412, 1425, 1581, 1113, 1282, 1294, 1438,
+ 1451, 1124, 1461, 1462, 1125, 1463, 1630, 1306,
+ 1126, 1295, 1464, 1632, 1476, 1762, 1413, 1775,
+ 1787, 1786, 950, 1106, 1119, 1262, 1275, 1288,
+ 1418, 1431, 951, 1107, 1120, 1263, 1264, 1276,
+ 1277, 1289, 1419, 1420, 1432, 1433, 1445, 1575,
+ 1588, 1601, 1446, 1602, 964, 1121, 1290, 1459,
+ 795, 1134, 1291, 1447, 1603, 1616, 796, 1460,
+ 1757, 952, 1135, 1304, 1461, 1278, 1434, 1590,
+ 1292, 1617, 1630, 1562, 1604, 1136, 1786, 1732,
+ 1448, 1591, 1605, 1787, 1293, 1462, 1137, 1306,
+ 968, 1138, 1294, 1463, 1476, 1632, 1449, 1775,
+ 1762, 1137, 1294, 1306, 1450, 1462, 1463, 1630,
+ 1138, 1295, 1451, 1476, 1632, 1464, 1139, 1127,
+ 645, 1815, 1775, 1787, 1203, 1371, 1381, 1382,
+ 1383, 1549, 1550, 1551, 1552, 1214, 1215, 1384,
+ 1395, 1396, 1564, 1565, 1035, 1216, 1228, 1385,
+ 1397, 1409, 1577, 1394, 1562, 1229, 1398, 1410,
+ 1567, 1578, 1217, 1386, 1411, 1422, 1423, 1555,
+ 1580, 1590, 1591, 1732, 1399, 1593, 1575, 1602,
+ 1603, 1757, 1604, 1605, 1616, 1581, 1762, 1424,
+ 1617, 1786, 1775, 1787, 1408, 1588, 1601, 1434,
+ 1435, 1436, 1448, 1412, 1425, 1437, 1449, 1815,
+ 1993, 1994, 1216, 1217, 1228, 1229, 1383, 1384,
+ 1385, 1386, 1396, 1397, 1398, 1409, 1410, 1552,
+ 1564, 1565, 1567, 1578, 1048, 1230, 1242, 1399,
+ 1411, 1555, 1580, 1412, 1037, 1049, 1231, 1375,
+ 1413, 1581, 1423, 1591, 1244, 1425, 1438, 1593,
+ 1257, 1388, 1270, 1451, 1422, 1577, 1762, 1775,
+ 1605, 1787, 1283, 1464, 1632, 1732, 1786, 1604,
+ 1453, 1815, 1993, 1994, 1393, 1549, 1550, 1562,
+ 1394, 1406, 1551, 1575, 1395, 1407, 1552, 1564,
+ 1588, 1732, 1419, 1565, 1577, 1601, 1757, 1786,
+ 1762, 1787, 1775, 1432, 1551, 1564, 1575, 1577,
+ 1588, 1601, 1732, 1757, 1565, 1578, 1590, 1591,
+ 1602, 1603, 1447, 1604, 1616, 1617, 1605, 1786,
+ 1580, 1593, 1762, 1787, 1775, 1993, 1435, 1567,
+ 1436, 1448, 1449, 1460, 1994, 1119, 1275, 1288,
+ 1406, 1418, 1419, 1431, 1445, 1549, 1562, 1459,
+ 1630, 1304, 1461, 1134, 1135, 1437, 1555, 1581,
+ 1632, 1815, 1476, 1290, 1289, 1446, 1306, 1462,
+ 1463,
+};
+
+static long _vq_fitmap_lsp12_0[] = {
+ 0, 0, 0, 71, 142, 206, 206, 241,
+ 0, 0, 329, 142, 206, 206, 241, 0,
+ 359, 410, 142, 206, 206, 241, 463, 529,
+ 608, 667, 206, 206, 241, 739, 825, 897,
+ 667, 963, 963, 1021, 1151, 897, 1227, 1295,
+ 963, 963, 1328, 1328, 1328, 1295, 963, 963,
+ 963, 241, 1393, 0, 71, 142, 206, 206,
+ 1393, 0, 1453, 1533, 1618, 206, 206, 1687,
+ 1755, 1838, 1938, 667, 206, 206, 2025, 2089,
+ 2191, 2291, 667, 963, 206, 2376, 2466, 2557,
+ 1227, 1295, 963, 963, 2620, 1328, 1328, 1295,
+ 963, 963, 963, 1328, 963, 963, 963, 963,
+ 963, 963, 1687, 1393, 1393, 71, 2692, 206,
+ 206, 1687, 2745, 2824, 2926, 1618, 206, 206,
+ 1687, 3026, 3133, 3253, 3356, 206, 206, 3427,
+ 3503, 3613, 3732, 3356, 963, 963, 3830, 3898,
+ 3966, 1227, 1295, 963, 963, 4031, 1328, 1328,
+ 1295, 963, 963, 963, 1328, 963, 963, 963,
+ 963, 963, 963, 1687, 1687, 4102, 4156, 4231,
+ 206, 206, 1687, 4296, 4388, 4497, 4600, 206,
+ 206, 4669, 4738, 4848, 4965, 3356, 5063, 206,
+ 5071, 5148, 5255, 5369, 963, 206, 206, 3830,
+ 5462, 5524, 5591, 1295, 206, 206, 4031, 5524,
+ 1328, 963, 963, 963, 963, 963, 963, 963,
+ 963, 963, 963, 963, 5631, 5692, 5692, 5764,
+ 5831, 206, 206, 5907, 5975, 6039, 6109, 4600,
+ 206, 206, 4669, 6179, 6245, 6310, 963, 5063,
+ 206, 5907, 6369, 6427, 6484, 963, 206, 206,
+ 6530, 6530, 5524, 6601, 963, 963, 963, 4031,
+ 4031, 963, 963, 963, 963, 963, 963, 963,
+ 963, 963, 963, 963, 963, 5631, 5631, 5631,
+ 6620, 6690, 963, 963, 5907, 6748, 6620, 6620,
+ 963, 963, 963, 5907, 6771, 6771, 6771, 963,
+ 963, 963, 5907, 6771, 6771, 5524, 963, 963,
+ 963, 6771, 6771, 5524, 963, 963, 963, 963,
+ 6771, 4031, 963, 963, 963, 963, 963, 963,
+ 963, 963, 963, 963, 963, 963, 5631, 5907,
+ 6620, 6620, 5524, 963, 963, 5907, 6620, 5524,
+ 5524, 963, 963, 963, 6620, 5524, 5524, 963,
+ 963, 963, 963, 6620, 5524, 963, 963, 963,
+ 963, 963, 6620, 963, 963, 963, 963, 963,
+ 963, 963, 963, 963, 963, 963, 963, 963,
+ 963, 963, 963, 963, 963, 963, 963,
+};
+
+static long _vq_fitlength_lsp12_0[] = {
+ 71, 71, 71, 71, 64, 35, 35, 88,
+ 71, 71, 30, 64, 35, 35, 88, 71,
+ 51, 53, 64, 35, 35, 88, 66, 79,
+ 59, 72, 35, 35, 88, 86, 72, 66,
+ 72, 58, 58, 130, 76, 66, 68, 33,
+ 58, 58, 65, 65, 65, 33, 58, 58,
+ 58, 88, 60, 71, 71, 64, 35, 35,
+ 60, 71, 80, 85, 69, 35, 35, 68,
+ 83, 100, 87, 72, 35, 35, 64, 102,
+ 100, 85, 72, 58, 35, 90, 91, 63,
+ 68, 33, 58, 58, 72, 65, 65, 33,
+ 58, 58, 58, 65, 58, 58, 58, 58,
+ 58, 58, 68, 60, 60, 71, 53, 35,
+ 35, 68, 79, 102, 100, 69, 35, 35,
+ 68, 107, 120, 103, 71, 35, 35, 76,
+ 110, 119, 98, 71, 58, 58, 68, 68,
+ 65, 68, 33, 58, 58, 71, 65, 65,
+ 33, 58, 58, 58, 65, 58, 58, 58,
+ 58, 58, 58, 68, 68, 54, 75, 65,
+ 35, 35, 68, 92, 109, 103, 69, 35,
+ 35, 69, 110, 117, 98, 71, 8, 35,
+ 77, 107, 114, 93, 58, 35, 35, 68,
+ 62, 67, 40, 33, 35, 35, 71, 67,
+ 65, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 61, 72, 72, 67,
+ 76, 35, 35, 68, 64, 70, 70, 69,
+ 35, 35, 69, 66, 65, 59, 58, 8,
+ 35, 68, 58, 57, 46, 58, 35, 35,
+ 71, 71, 67, 19, 58, 58, 58, 71,
+ 71, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 61, 61, 61,
+ 70, 58, 58, 58, 68, 23, 70, 70,
+ 58, 58, 58, 68, 62, 62, 62, 58,
+ 58, 58, 68, 62, 62, 67, 58, 58,
+ 58, 62, 62, 67, 58, 58, 58, 58,
+ 62, 71, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 61, 68,
+ 70, 70, 67, 58, 58, 68, 70, 67,
+ 67, 58, 58, 58, 70, 67, 67, 58,
+ 58, 58, 58, 70, 67, 58, 58, 58,
+ 58, 58, 70, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58,
+};
+
+static encode_aux_pigeonhole _vq_auxp_lsp12_0 = {
+ 0.15, 0.01, 40, 7,
+ _vq_pigeonmap_lsp12_0,
+ 6833,
+ _vq_fitlist_lsp12_0,
+ _vq_fitmap_lsp12_0,
+ _vq_fitlength_lsp12_0
+};
+
+static static_codebook _vq_book_lsp12_0 = {
+ 3, 2197,
+ _vq_lengthlist_lsp12_0,
+ 1, 1605579571, 1597274849, 6, 1,
+ _vq_quantlist_lsp12_0,
+ NULL,
+ NULL,
+ &_vq_auxp_lsp12_0,
+};
+
+
+#endif
diff --git a/lib/books/lsp30_0.vqh b/lib/books/lsp30_0.vqh
new file mode 100644
index 00000000..b9e95e43
--- /dev/null
+++ b/lib/books/lsp30_0.vqh
@@ -0,0 +1,2073 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_lsp30_0_VQH_
+#define _V_lsp30_0_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_lsp30_0[] = {
+ 0,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 14,
+ 16,
+ 18,
+ 22,
+ 26,
+ 30,
+};
+
+static long _vq_lengthlist_lsp30_0[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,20,18,16,15,17,18, 0, 0, 0, 0, 0, 0, 0,
+ 19,17,15,14,16,19,20, 0, 0, 0, 0, 0, 0, 0,20,16,
+ 15,16,16, 0, 0, 0, 0, 0, 0, 0, 0,20, 0,20,16,19,
+ 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20,17,18,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,17, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20,18, 0,20, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,19, 0,18, 0,20, 0,20, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 20,20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,19,
+ 0, 0, 0, 0, 0,19,16,14,13,13,15,18,20,20, 0, 0,
+ 0, 0, 0, 0, 0, 0,16,16,16,19,19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,17,17,20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,17,17,19, 0,19,17,20, 0, 0, 0, 0, 0, 0,
+ 0,17,16,17, 0,14,17, 0, 0, 0, 0, 0, 0, 0, 0,16,
+ 18,18,17,14,20, 0, 0, 0, 0, 0, 0,20,19,16,18,16,
+ 14,13,19, 0, 0, 0, 0, 0, 0, 0,20,18,16,15,15,15,
+ 20,20, 0, 0, 0, 0, 0, 0,18,16,16,18,18,18,17, 0,
+ 0, 0, 0, 0,20, 0,17,18,18,20,17,18,18, 0, 0, 0,
+ 0, 0, 0,19,19,17,15,15,16,18,20, 0, 0, 0, 0, 0,
+ 0, 0,20,17,19, 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 20,19, 0,20, 0, 0, 0, 0,19,17,15,15,14,14,17,18,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20,17, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,18, 0,
+ 0, 0, 0, 0, 0, 0, 0,18,15,18,20,18,20, 0, 0, 0,
+ 0, 0, 0, 0, 0,14,18,18, 0,20,18, 0, 0, 0, 0, 0,
+ 0, 0, 0,14,17,19,18,15,20, 0, 0, 0, 0, 0, 0,19,
+ 18,17,16,18,16,15, 0,20, 0, 0, 0, 0, 0, 0,19,16,
+ 16,15,15,15,19,20, 0, 0, 0, 0, 0, 0,20,18,17,15,
+ 15,15,17,18, 0, 0,20,17,18, 0,17,18,18,17,14,16,
+ 18,19, 0, 0, 0, 0, 0,17,17,16,14,15,15,18,20, 0,
+ 0, 0, 0, 0, 0, 0,19,19,18,17,20, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,20,15,17,18,18,20,20, 0, 0, 0, 0,16,15,16,
+ 14,15,16,18,19,20,18, 0, 0, 0, 0, 0, 0, 0, 0,18,
+ 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,19,16,20,
+ 19,19,20, 0, 0, 0, 0, 0, 0, 0,18,15,16, 0,19,20,
+ 18, 0, 0, 0, 0, 0,19,18,16,15,17,18,18,17, 0, 0,
+ 0, 0, 0, 0, 0,20,17,18,18,17, 0,16,20, 0, 0, 0,
+ 0, 0, 0,20,17,14,15,17,16,15,20,20, 0, 0, 0, 0,
+ 0, 0,19,17,15,13,13,14,17,17, 0, 0, 0, 0,19, 0,
+ 0,17,17,14,13,14,17,20, 0, 0,20,19, 0,20, 0,18,
+ 17,14,13,15,15,20, 0, 0, 0, 0,20,18,16,16,14,14,
+ 13,19,20, 0, 0, 0, 0, 0, 0, 0, 0,17,16,14,18,18,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20,
+ 0, 0, 0, 0, 0,17,15,14,15,16,17,19,20, 0, 0, 0,
+ 0,20,19,15,14,15,16,16,20,17,20, 0, 0, 0, 0, 0,
+ 0, 0, 0,19,18, 0, 0,19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,17,16,16,16,17, 0,20, 0, 0, 0, 0,19,16,15,15,
+ 17,18,16,17,18, 0, 0, 0, 0, 0,16,15,14,17,16,17,
+ 17,17,18,19, 0, 0, 0,20, 0,17, 0,16,14,15,15,15,
+ 18,19, 0, 0, 0, 0, 0,20,17,16,14,15,14,14,16,16,
+ 0, 0, 0, 0, 0, 0,19,16,15,13,13,13,16,17, 0, 0,
+ 0, 0, 0,20,18,18,16,13,12,13,19,19, 0, 0,20, 0,
+ 0, 0,20,16,14,13,12,14,18, 0, 0, 0, 0, 0,18,18,
+ 17,15,13,13,11,17, 0,17, 0, 0, 0, 0, 0,17,17,18,
+ 15,12,19, 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0,19, 0,
+ 0, 0, 0, 0, 0, 0, 0,18,17,16,14,14,15,16,16,17,
+ 18, 0, 0, 0, 0, 0,19,18,14,16,16,18,17,17,20, 0,
+ 0, 0, 0, 0, 0, 0,18,18,18,17,17,18, 0, 0, 0, 0,
+ 0, 0, 0, 0,18,16,15,15,16,16,19, 0, 0, 0, 0, 0,
+ 20,16,15,16,19,15,15,14,19, 0, 0, 0, 0,19,19,18,
+ 15,17,16,14,15,15,18, 0, 0, 0, 0, 0, 0, 0,20,14,
+ 14,15,14,14,16,17, 0, 0, 0, 0,20, 0,18,15,14,14,
+ 13,13,17,19, 0, 0, 0, 0, 0,20,19,15,14,13,12,12,
+ 19,13, 0, 0, 0,20, 0,18,17,15,13,12,12,12,20,16,
+ 0,20, 0,20,18,17,17,15,12,11,11,13,19,16, 0, 0,
+ 0,19,17,16,19,14,12,12,12,16, 0,16, 0, 0, 0, 0,
+ 17,17,16,16,15,13,17,20,18,17, 0, 0, 0, 0, 0, 0,
+ 0,19,16,18, 0, 0,18,18, 0, 0,18,15,14,14,14,14,
+ 16,17,15,16,19, 0, 0, 0, 0, 0, 0,18,16,16,16,16,
+ 16,16,19,19, 0, 0, 0, 0, 0,18,16,16,16,16,17,16,
+ 0, 0, 0, 0, 0, 0, 0,18,16,16,16,16,15,15,17, 0,
+ 0, 0, 0, 0, 0, 0,17,16,17,14,14,14,20,18, 0, 0,
+ 0, 0, 0, 0,20,17,15,13,14,13,16, 0, 0, 0, 0,19,
+ 15,18,18,16,14,13,13,13,15,20, 0, 0, 0, 0,19,20,
+ 17,15,13,12,11,12,15,20, 0,19, 0, 0,18,19,16,13,
+ 12,11,10,11,15, 9, 0,18,18,19, 0,16,15,13,11,10,
+ 9,12,18,17, 0,20,17,16,16,15,14,12,10,10, 9,13,
+ 19,16,20,14,17,18,17,15,15,13,12,11,10,15,16,13,
+ 0,19,20,17,16,18,19,17,12,14,17,20,14,14,20, 0,
+ 20,18,20, 0,19,16,14,13, 0,19,17,18, 0, 0, 0,18,
+ 15,14,14,15,17,17,15,15,17,20, 0,17, 0, 0,17, 0,
+ 17,14,14,15,15,15,19,18, 0, 0, 0, 0, 0,19,16,14,
+ 15,16,15,15,20,18, 0, 0, 0, 0,16,16,14,14,16,15,
+ 13,14,19, 0, 0, 0,20,15,15, 9,15,15,16,13,12,13,
+ 17,20, 0, 0,16,14,12,13,13,15,14,13,12,13,16, 0,
+ 0, 0,18,16,13,13,14,14,13,12,11,11,14,20, 0, 0,
+ 0,20,20,16,14,12,11,10, 9,10,14,18, 0,20, 0,16,
+ 16,15,14,11, 9, 7, 8,10,15,18, 0,16,17,16,14,14,
+ 13,10, 8, 7, 7,11,15,16,18,17,16,16,14,13,11, 9,
+ 8, 7, 8,12,16,14,20,13,16,15,14,14,12,11,10,10,
+ 10,13,14,14,15,17,18,17,18,18,19,13,11,12,16,16,
+ 16,16,19,20,18,20, 0, 0,17,13,12,19,17,16,15,17,
+ 0, 0, 0,19,18,17,15,15,16,17,15,15,19,20, 0,13,
+ 0,20, 0,18,16,15,15,15,15,16,17,20, 0,13,17,17,
+ 17,18,16,16,15,14,16,16,20,20, 0,14,16,16,14,14,
+ 14,15,15,14,14,14,18,19,16,15,18,13,13,13,14,14,
+ 14,14,13,13,16,20,14,16,17,17,14,15,15,15,14,13,
+ 12,12,16,19,19,18, 0,17,17,16,15,13,12,11,10,11,
+ 15, 0, 0,16,20,16,14,14,14, 9, 8, 8, 8, 9,15, 0,
+ 20,15,14,12,11,11,11, 8, 6, 6, 6, 9,14, 0,17,14,
+ 16,14,13,11,10, 7, 5, 5, 6,10,15,15,17,13,14,13,
+ 13,12,10, 7, 6, 6, 7,11,13,14,14,13,14,14,13,12,
+ 12,10, 9,10, 9,11,15,15,15,17,18,16,17,17,16,13,
+ 11,13,14,14,14,18, 0,19, 0,20,20, 0,18,12,12,16,
+ 16,14,15,18, 0, 0, 0, 0,19,20,20,20,20,18,17,16,
+ 19,20, 0,18,18, 0, 0,18,18,14,17,16,16,16,18,18,
+ 0, 0, 0,20,17,15,13,15,16,15,16,14,16, 0, 0,16,
+ 15,15,15,14,14,14,14,15,15,13,16, 0, 0,16,14,14,
+ 13,15,13,14,13,13,14,12,16,20, 0,17,16,16,14,14,
+ 14,14,13,12,12,11,16,20, 0,15,18,16,15,15,14,13,
+ 11,10,10,10,15, 0,18,13,15,13,12,12,12,10, 8, 7,
+ 7, 9,14,19,15,12,13,12,11,11,10, 8, 6, 5, 6, 9,
+ 14, 0,14,12,13,12,12,11, 9, 7, 4, 4, 6, 8,15,19,
+ 14,12,13,13,12,11, 9, 7, 6, 5, 6, 9,13, 0,12,12,
+ 14,13,13,12,11,10, 9, 9, 8,10,16,20,17,14,16,15,
+ 15,14,14,14,13,15,12,13,14,19,20, 0,20,20, 0,17,
+ 14,11,13,15,15,13,17,18, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,18,18,20,19, 0,19, 0, 0,19,17,19,15,15,16,
+ 17,15,17, 0, 0,20,20,19,18,19,15,14,14,15,17,14,
+ 16, 0, 0, 0, 0,17,16,16,14,13,13,15,15,13,16, 0,
+ 0,18,20,17,14,14,13,12,13,13,13,12,16, 0,20,19,
+ 18,16,15,14,14,13,12,12,11,12,16, 0, 0,15,16,16,
+ 15,14,13,12,11,10, 9,10,16, 0,17,12,14,14,13,13,
+ 12,10, 8, 7, 7,10,15,18,14,11,14,13,12,12,11, 7,
+ 6, 5, 6,10,15,19,13,11,13,13,12,11, 9, 7, 5, 5,
+ 6, 9,15,20,13,10,13,12,11,11, 9, 7, 6, 5, 6, 8,
+ 15,20,14,11,13,12,13,12,11,10, 9, 9, 9,11,17,17,
+ 18,13,14,14,14,14,14,13,13,13,12,13,14, 0, 0,18,
+ 17,16,14,14,12,11,13,16,16,14,18,20, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,20,16,17,19, 0, 0, 0, 0, 0, 0,
+ 18,15,17,19,18,15,14,20, 0, 0, 0, 0, 0,20,17,16,
+ 15,16,17,15,16, 0, 0, 0, 0, 0,20,19,17,16,15,15,
+ 15,15,15, 0,20, 0, 0, 0,20,17,16,15,14,14,14,14,
+ 16, 0,20, 0,20, 0,18,18,16,14,13,13,13,13,17, 0,
+ 20,16,18,16,18,16,15,13,12,12,12,13,17, 0,18,13,
+ 16,15,13,13,12,11,11,10,11,12,16, 0,14,12,15,14,
+ 13,12,12,10, 9,10,10,11,16, 0,14,11,14,15,14,13,
+ 12, 9, 9,10,10,11,17, 0,14,11,13,14,13,12,11,10,
+ 10,10, 9,10,17, 0,16,12,13,13,13,13,13,11,11,11,
+ 10,12, 0, 0,20,14,14,14,15,16,13,12,14,14,12,13,
+ 17, 0, 0,16,16,13,13,12,11,13,18,16,15,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,20,20,17,16,18, 0, 0,
+ 0, 0, 0,20, 0,17,18, 0, 0, 0,18, 0, 0, 0, 0, 0,
+ 0, 0,20,19,20, 0, 0,16,17,20, 0, 0, 0, 0, 0, 0,
+ 0,18, 0, 0,20,16,15, 0, 0,20, 0, 0, 0, 0, 0,20,
+ 0,20, 0,16,15, 0, 0,20,20, 0, 0, 0,20,18,18,17,
+ 17,15,16, 0, 0,20, 0, 0, 0, 0,20,17,17,16,16,16,
+ 17, 0, 0,18, 0,19, 0,18,16,15,13,14,14,15,20, 0,
+ 20,16,20,20,18,17,15,13,13,15,14,14,19, 0,20,14,
+ 15,16,16,16,14,11,13,14,13,14,20, 0,20,14,14,14,
+ 14,14,12,11,12,13,12,13,20,20, 0,14,16,17,18,20,
+ 16,14,13,13,13,14,20, 0, 0,17,15,15,14,15,15,16,
+ 18,16,13,13, 0, 0, 0,16,14,14,14,13,14,16, 0, 0,
+ 16,17, 0,19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,
+ 18,20, 0, 0, 0, 0, 0, 0,20, 0, 0, 0, 0,20,19, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,19,20, 0,20,19,20, 0, 0, 0, 0, 0,20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20,
+ 0,20,20,20,20, 0, 0, 0, 0, 0, 0,20, 0,19,19, 0,
+ 20,17,20, 0, 0, 0, 0, 0, 0, 0, 0,19,18,17,19,18,
+ 0, 0,20, 0,20,19,19,20,19,17,17,19,19,17, 0, 0,
+ 0, 0, 0,20, 0, 0,18,19,17,16,16,15, 0, 0, 0, 0,
+ 0,20,20, 0, 0,20,18,16,14,14, 0, 0, 0,17,16,15,
+ 16, 0,20, 0,18,18,15,16, 0, 0, 0,16,16,15,15,17,
+ 0,19, 0, 0,18,16,18, 9,
+};
+
+static long _vq_pigeonmap_lsp30_0[] = {
+ 0, 0, 0, 0, 0, 0, 1, 1,
+ 2, 2, 3, 3, 3, 3, 4, 4,
+ 4, 4, 5, 5, 5, 5, 5, 5,
+ 5, 6, 6, 6, 6, 6,
+};
+
+static long _vq_fitlist_lsp30_0[] = {
+ 983, 1178, 1179, 19, 32, 984, 408, 59,
+ 46, 213, 789, 594, 33, 409, 214, 985,
+ 1180, 790, 410, 605, 20, 34, 47, 48,
+ 61, 215, 216, 411, 595, 986, 606, 230,
+ 412, 607, 801, 802, 803, 998, 62, 21,
+ 35, 426, 608, 804, 999, 662, 844, 845,
+ 858, 871, 1000, 1040, 1053, 1195, 663, 1387,
+ 1054, 1430, 1624, 1638, 1652, 1390, 1444, 1583,
+ 1597, 1611, 1263, 49, 63, 77, 217, 231,
+ 245, 299, 650, 259, 427, 664, 677, 846,
+ 859, 495, 678, 873, 1041, 860, 1055, 691,
+ 19, 20, 32, 33, 34, 21, 48, 35,
+ 47, 22, 49, 36, 594, 789, 595, 400,
+ 46, 61, 62, 63, 790, 791, 215, 596,
+ 216, 217, 230, 50, 77, 231, 984, 986,
+ 213, 214, 410, 411, 412, 401, 413, 792,
+ 426, 608, 23, 218, 245, 427, 609, 409,
+ 987, 606, 607, 597, 988, 232, 414, 623,
+ 1182, 804, 805, 37, 24, 38, 64, 598,
+ 219, 78, 79, 233, 793, 794, 415, 246,
+ 610, 220, 247, 611, 989, 990, 442, 624,
+ 234, 1185, 806, 807, 22, 23, 36, 37,
+ 50, 401, 597, 24, 38, 598, 207, 403,
+ 599, 221, 795, 600, 220, 234, 79, 93,
+ 613, 796, 991, 612, 107, 458, 640, 263,
+ 793, 794, 247, 809, 989, 990, 219, 1187,
+ 233, 415, 808, 277, 459, 641, 823, 992,
+ 1005, 611, 654, 836, 1004, 655, 837, 1186,
+ 807, 1019, 1188, 1018, 473, 261, 275, 109,
+ 121, 289, 290, 291, 457, 471, 485, 487,
+ 614, 669, 810, 851, 1033, 667, 668, 850,
+ 486, 446, 683, 865, 207, 403, 599, 795,
+ 221, 600, 796, 991, 992, 614, 1188, 109,
+ 263, 264, 446, 810, 613, 277, 459, 278,
+ 460, 642, 1006, 809, 641, 123, 291, 473,
+ 823, 655, 837, 474, 656, 1384, 292, 1005,
+ 1019, 1202, 1385, 1201, 488, 852, 1034, 265,
+ 487, 669, 306, 684, 866, 839, 1048, 1203,
+ 1230, 851, 1033, 1398, 880, 1062, 1244, 1412,
+ 1580, 1215, 1581, 1229, 1426, 1258, 983, 1178,
+ 1179, 32, 408, 19, 59, 46, 213, 984,
+ 409, 33, 214, 605, 410, 801, 1180, 1375,
+ 1376, 1387, 606, 789, 985, 594, 790, 986,
+ 1181, 1182, 802, 411, 607, 998, 1377, 1571,
+ 803, 215, 595, 791, 987, 1378, 216, 412,
+ 608, 999, 1183, 804, 230, 426, 1000, 1195,
+ 844, 1014, 1196, 1209, 1572, 1573, 1574, 1583,
+ 1768, 1390, 1597, 1585, 1598, 1769, 1611, 1430,
+ 1779, 1770, 1599, 1780, 1612, 20, 21, 34,
+ 47, 48, 61, 62, 35, 49, 22, 63,
+ 36, 50, 77, 64, 215, 216, 230, 412,
+ 217, 231, 413, 23, 218, 245, 426, 427,
+ 37, 78, 232, 259, 414, 411, 608, 609,
+ 623, 246, 273, 455, 610, 804, 805, 637,
+ 650, 662, 663, 845, 1000, 1014, 819, 260,
+ 442, 469, 624, 651, 806, 33, 46, 607,
+ 803, 844, 664, 677, 846, 858, 859, 871,
+ 1028, 1040, 1041, 999, 299, 300, 495, 287,
+ 678, 873, 1054, 860, 496, 691, 1042, 1055,
+ 314, 692, 887, 22, 23, 36, 50, 64,
+ 37, 24, 38, 78, 79, 92, 219, 93,
+ 233, 220, 77, 218, 232, 414, 246, 260,
+ 415, 247, 442, 234, 261, 245, 259, 610,
+ 611, 273, 624, 274, 456, 275, 457, 612,
+ 806, 638, 807, 639, 820, 470, 652, 471,
+ 808, 107, 106, 288, 289, 287, 484, 458,
+ 485, 640, 667, 290, 654, 681, 836, 834,
+ 666, 835, 849, 863, 1004, 1018, 848, 680,
+ 1002, 1003, 1016, 1017, 1031, 1045, 1200, 1198,
+ 1030, 1199, 1212, 862, 1044, 1213, 35, 48,
+ 49, 62, 63, 77, 36, 50, 64, 78,
+ 92, 230, 245, 259, 217, 231, 413, 426,
+ 427, 218, 232, 37, 246, 273, 414, 455,
+ 637, 260, 287, 442, 609, 623, 219, 469,
+ 610, 624, 650, 663, 651, 233, 274, 456,
+ 483, 638, 664, 677, 846, 662, 805, 819,
+ 845, 859, 1014, 1028, 833, 665, 820, 299,
+ 678, 860, 873, 1042, 847, 288, 470, 652,
+ 679, 834, 38, 79, 93, 107, 220, 234,
+ 121, 275, 221, 290, 458, 640, 109, 263,
+ 613, 277, 459, 641, 289, 486, 247, 261,
+ 457, 612, 471, 291, 303, 485, 654, 668,
+ 836, 123, 473, 655, 487, 614, 667, 304,
+ 264, 305, 446, 669, 808, 850, 809, 823,
+ 683, 810, 851, 500, 864, 278, 460, 501,
+ 642, 865, 878, 1005, 837, 879, 1006, 656,
+ 639, 835, 849, 1004, 1018, 1200, 1032, 1019,
+ 1201, 1033, 1047, 1046, 1214, 1228, 1215, 1229,
+ 1060, 1242, 1061, 1243, 1202, 109, 123, 277,
+ 264, 278, 291, 446, 460, 614, 642, 810,
+ 292, 474, 656, 265, 488, 306, 473, 684,
+ 487, 669, 852, 866, 839, 880, 1048, 1062,
+ 1006, 1034, 1230, 1203, 1244, 1202, 1076, 1258,
+ 698, 867, 1272, 894, 881, 1245, 320, 516,
+ 1090, 712, 908, 503, 699, 1077, 334, 530,
+ 1104, 726, 895, 321, 517, 1286, 1273, 1300,
+ 922, 1091, 713, 1412, 1426, 1440, 1454, 1399,
+ 1413, 1468, 1118, 1287, 909, 1441, 1482, 1469,
+ 1496, 1314, 1105, 49, 63, 77, 50, 64,
+ 78, 92, 259, 106, 245, 273, 299, 119,
+ 287, 246, 300, 455, 469, 495, 496, 232,
+ 79, 93, 260, 274, 637, 651, 664, 677,
+ 678, 483, 107, 288, 231, 427, 650, 218,
+ 442, 456, 623, 663, 665, 301, 470, 484,
+ 314, 497, 261, 275, 289, 302, 315, 457,
+ 471, 498, 511, 666, 680, 693, 846, 233,
+ 247, 638, 652, 860, 679, 692, 510, 691,
+ 861, 875, 862, 876, 888, 328, 889, 819,
+ 833, 847, 859, 873, 1042, 1056, 848, 706,
+ 316, 694, 707, 78, 79, 92, 106, 93,
+ 107, 121, 135, 119, 260, 274, 261, 275,
+ 289, 458, 288, 290, 302, 303, 486, 233,
+ 247, 456, 470, 457, 234, 471, 485, 640,
+ 484, 654, 301, 315, 680, 499, 668, 498,
+ 316, 304, 317, 652, 666, 639, 667, 681,
+ 836, 694, 512, 695, 500, 513, 850, 497,
+ 862, 876, 863, 877, 864, 878, 329, 511,
+ 890, 330, 891, 849, 708, 318, 696, 709,
+ 107, 121, 135, 221, 290, 458, 109, 263,
+ 304, 486, 613, 668, 277, 459, 123, 303,
+ 500, 641, 264, 278, 292, 305, 319, 460,
+ 474, 275, 289, 485, 640, 654, 809, 291,
+ 446, 487, 317, 499, 501, 318, 488, 515,
+ 656, 473, 614, 642, 683, 655, 696, 331,
+ 514, 697, 306, 684, 669, 332, 333, 864,
+ 878, 865, 879, 892, 893, 513, 710, 528,
+ 711, 529, 866, 880, 823, 837, 851, 852,
+ 906, 907, 698, 109, 123, 264, 278, 446,
+ 460, 292, 474, 642, 488, 656, 265, 306,
+ 684, 305, 125, 320, 319, 698, 516, 334,
+ 839, 867, 712, 894, 503, 881, 530, 866,
+ 880, 1245, 699, 1077, 726, 908, 321, 852,
+ 1090, 333, 347, 348, 517, 544, 713, 531,
+ 895, 727, 909, 922, 740, 1105, 936, 1104,
+ 1091, 1118, 1132, 923, 545, 1286, 1300, 1273,
+ 1287, 1314, 1301, 1328, 1119, 741, 1315, 1482,
+ 1496, 1469, 1483, 1510, 1497, 1524, 1133, 32,
+ 46, 59, 213, 408, 409, 33, 47, 61,
+ 214, 410, 48, 62, 215, 216, 230, 426,
+ 662, 844, 871, 605, 411, 606, 412, 607,
+ 663, 858, 1053, 49, 63, 77, 299, 650,
+ 677, 845, 859, 1040, 1054, 801, 802, 300,
+ 495, 664, 846, 873, 1041, 803, 998, 1263,
+ 691, 608, 999, 1430, 1444, 1055, 1289, 1387,
+ 1638, 1652, 1583, 1597, 1611, 1625, 1680, 1264,
+ 1624, 1639, 1862, 1082, 496, 534, 887, 1195,
+ 1390, 1598, 1612, 678, 1431, 1458, 1512, 1694,
+ 1303, 692, 730, 1278, 1265, 1653, 1445, 35,
+ 48, 49, 61, 62, 63, 77, 230, 231,
+ 299, 426, 650, 662, 663, 677, 844, 845,
+ 858, 859, 871, 1040, 1053, 245, 259, 495,
+ 664, 300, 846, 873, 1054, 496, 691, 119,
+ 314, 510, 534, 692, 887, 1041, 340, 535,
+ 718, 730, 888, 678, 1055, 1263, 1082, 706,
+ 1278, 1264, 1289, 1303, 536, 731, 926, 1109,
+ 803, 999, 860, 1028, 1042, 1223, 1056, 1265,
+ 1445, 1446, 1458, 1459, 1070, 1084, 1279, 1097,
+ 1292, 1473, 1121, 1266, 1280, 1304, 1474, 915,
+ 1305, 63, 77, 245, 259, 273, 299, 300,
+ 495, 663, 664, 677, 64, 78, 92, 119,
+ 287, 455, 469, 496, 678, 314, 691, 301,
+ 483, 692, 510, 340, 534, 315, 328, 497,
+ 706, 887, 535, 718, 524, 536, 888, 902,
+ 731, 1082, 730, 1097, 342, 915, 1070, 1084,
+ 1278, 1279, 1109, 1292, 1098, 538, 733, 916,
+ 1111, 1266, 1280, 1293, 1294, 1123, 1112, 1124,
+ 1307, 1304, 1305, 1474, 1475, 1319, 930, 1125,
+ 1308, 1320, 1476, 1488, 1489, 1490, 1502, 1126,
+ 1321, 1503, 78, 92, 106, 119, 273, 287,
+ 299, 300, 93, 107, 121, 302, 315, 288,
+ 289, 301, 316, 328, 329, 497, 498, 511,
+ 524, 148, 314, 340, 342, 510, 135, 525,
+ 496, 275, 484, 693, 303, 485, 694, 707,
+ 512, 706, 483, 692, 274, 470, 680, 538,
+ 330, 343, 708, 721, 317, 526, 539, 889,
+ 890, 902, 903, 499, 904, 536, 733, 916,
+ 917, 344, 722, 735, 107, 121, 135, 148,
+ 304, 317, 318, 331, 109, 123, 332, 344,
+ 345, 500, 513, 514, 527, 289, 302, 498,
+ 303, 316, 696, 330, 709, 710, 315, 329,
+ 485, 694, 499, 290, 512, 526, 540, 722,
+ 528, 541, 723, 695, 486, 708, 343, 891,
+ 892, 525, 904, 905, 906, 539, 918, 919,
+ 736, 346, 724, 737, 1087, 1088, 1100, 1101,
+ 1102, 1114, 932, 1115, 542, 920, 933, 1283,
+ 1284, 1296, 1297, 1298, 1310, 1128, 1311, 738,
+ 1116, 1129, 1324, 934, 1312, 1325, 1479, 1480,
+ 1492, 1493, 1494, 1506, 1507, 1130, 135, 304,
+ 109, 123, 305, 319, 264, 278, 292, 306,
+ 333, 460, 474, 488, 501, 515, 656, 684,
+ 317, 318, 331, 500, 697, 711, 529, 291,
+ 332, 514, 527, 320, 347, 698, 345, 528,
+ 346, 725, 516, 543, 513, 696, 277, 487,
+ 710, 542, 473, 683, 724, 334, 712, 669,
+ 906, 893, 907, 894, 920, 921, 541, 738,
+ 739, 530, 908, 879, 880, 934, 935, 726,
+ 46, 47, 59, 61, 213, 214, 215, 408,
+ 409, 410, 605, 606, 662, 801, 802, 844,
+ 871, 1053, 48, 62, 216, 230, 411, 426,
+ 607, 663, 803, 845, 858, 998, 1040, 1054,
+ 1263, 1430, 299, 677, 859, 495, 650, 664,
+ 873, 1289, 300, 691, 496, 1444, 1680, 534,
+ 314, 887, 1512, 1055, 1082, 1264, 730, 535,
+ 340, 1458, 1694, 1303, 718, 1330, 1485, 1121,
+ 536, 731, 926, 328, 342, 1387, 1611, 1652,
+ 733, 1625, 1123, 524, 538, 1124, 1639, 1278,
+ 1317, 1318, 1319, 355, 746, 915, 1125, 1320,
+ 1331, 1431, 1653, 1862, 1526, 1109, 551, 916,
+ 930, 942, 1111, 1137, 1321, 1332, 1304, 1307,
+ 1514, 1515, 1513, 1305, 1333, 119, 299, 300,
+ 314, 495, 496, 534, 691, 287, 301, 340,
+ 510, 535, 692, 718, 887, 730, 328, 536,
+ 706, 731, 524, 342, 329, 355, 538, 733,
+ 343, 551, 746, 1124, 356, 926, 1123, 930,
+ 1125, 915, 916, 1319, 1320, 942, 1137, 1321,
+ 1331, 1332, 747, 1111, 1126, 552, 943, 1138,
+ 315, 511, 148, 525, 539, 721, 748, 357,
+ 944, 1139, 553, 1140, 1121, 1289, 1303, 1330,
+ 1317, 1318, 1526, 1540, 1333, 1358, 1527, 1513,
+ 1514, 1722, 1345, 1334, 1346, 1109, 1528, 370,
+ 1152, 1335, 1347, 957, 1541, 1305, 106, 119,
+ 301, 302, 314, 315, 328, 329, 340, 342,
+ 497, 510, 511, 524, 536, 107, 121, 148,
+ 316, 498, 525, 538, 707, 135, 343, 355,
+ 330, 344, 331, 356, 357, 526, 527, 539,
+ 540, 552, 722, 735, 736, 345, 553, 551,
+ 748, 358, 541, 749, 370, 554, 512, 721,
+ 317, 513, 930, 931, 932, 944, 566, 945,
+ 371, 750, 917, 918, 733, 747, 359, 567,
+ 946, 1126, 1127, 746, 723, 1128, 737, 943,
+ 1140, 1141, 555, 763, 1142, 135, 148, 304,
+ 317, 318, 331, 332, 344, 345, 500, 513,
+ 514, 527, 540, 109, 123, 528, 541, 710,
+ 723, 330, 526, 346, 357, 736, 358, 542,
+ 724, 737, 359, 553, 554, 738, 555, 750,
+ 178, 360, 751, 371, 556, 709, 343, 722,
+ 372, 539, 932, 933, 934, 567, 946, 568,
+ 947, 752, 919, 920, 569, 948, 1128, 1129,
+ 749, 1130, 1142, 1143, 763, 764, 765, 1144,
+ 1115, 1116, 1324, 1325, 945, 1326, 1338, 1339,
+ 959, 960, 961, 1340, 1311, 1312, 1141, 1155,
+ 1156, 570, 1157, 109, 123, 305, 318, 332,
+ 345, 346, 514, 528, 541, 319, 333, 501,
+ 515, 542, 697, 711, 529, 306, 347, 320,
+ 516, 543, 698, 725, 334, 712, 724, 738,
+ 739, 530, 359, 360, 178, 348, 361, 726,
+ 555, 556, 934, 557, 935, 544, 751, 740,
+ 753, 192, 193, 362, 375, 558, 936, 949,
+ 752, 1132, 570, 1145, 907, 908, 948, 569,
+ 921, 1130, 1131, 922, 1144, 765, 766, 754,
+ 1103, 1326, 1104, 1327, 947, 1328, 961, 1340,
+ 767, 1341, 125, 320, 334, 347, 516, 530,
+ 712, 348, 321, 503, 517, 544, 699, 713,
+ 531, 726, 740, 362, 545, 727, 909, 361,
+ 923, 558, 936, 741, 754, 375, 557, 193,
+ 951, 1133, 1147, 1329, 1132, 1342, 1160, 922,
+ 1105, 1119, 1328, 1525, 1538, 1118, 1356, 1343,
+ 1314, 1301, 1315, 1524, 1539, 1510, 1497, 1511,
+ 1734, 965, 1720, 1721, 1552, 1161, 1735, 1706,
+ 1707, 1357, 1916, 1930, 1748, 1931, 1902, 1903,
+ 1553, 328, 340, 342, 355, 356, 524, 536,
+ 538, 551, 733, 746, 930, 552, 747, 942,
+ 357, 748, 943, 370, 944, 553, 566, 1138,
+ 1139, 1140, 957, 1152, 1334, 1335, 1345, 1346,
+ 1347, 1137, 1333, 1336, 1153, 1348, 958, 749,
+ 371, 567, 763, 1154, 945, 1349, 959, 1350,
+ 731, 915, 916, 1111, 1112, 1124, 1125, 1126,
+ 1320, 1321, 343, 539, 721, 735, 917, 1322,
+ 1123, 1307, 1308, 931, 1113, 1319, 1332, 1516,
+ 1517, 1127, 1309, 1518, 1530, 1531, 1141, 1532,
+ 1503, 1504, 1323, 1337, 344, 355, 356, 357,
+ 551, 552, 553, 748, 370, 345, 358, 554,
+ 749, 371, 566, 750, 359, 567, 372, 555,
+ 763, 568, 178, 764, 945, 946, 958, 959,
+ 569, 960, 1155, 765, 1156, 1141, 751, 1142,
+ 957, 1154, 1351, 961, 1169, 1352, 1337, 947,
+ 1338, 1153, 1350, 1364, 974, 1157, 1365, 1143,
+ 1349, 1362, 1547, 1353, 1548, 1533, 1339, 1534,
+ 1546, 1170, 1545, 1560, 1366, 1561, 1729, 1535,
+ 1730, 1742, 1743, 1744, 1549, 1741, 1756, 1562,
+ 1757, 1925, 1731, 1926, 1938, 1939, 1754, 1940,
+ 1745, 1937, 1952, 1758, 1953, 346, 358, 359,
+ 371, 554, 555, 750, 372, 178, 360, 556,
+ 751, 567, 568, 192, 764, 569, 570, 765,
+ 752, 961, 766, 960, 947, 948, 962, 1144,
+ 1156, 1157, 974, 1158, 1143, 1170, 1353, 1171,
+ 1354, 1339, 1340, 1352, 1169, 1367, 1366, 1550,
+ 1535, 1536, 1548, 1549, 1365, 1562, 1563, 1731,
+ 1732, 1744, 1745, 1561, 1746, 1758, 1564, 1759,
+ 1927, 1928, 1940, 1941, 1757, 1942, 1954, 1760,
+ 1955, 178, 192, 361, 557, 348, 753, 193,
+ 362, 375, 544, 558, 740, 936, 949, 570,
+ 754, 569, 766, 767, 1160, 360, 556, 752,
+ 765, 948, 962, 1159, 1342, 1355, 1356, 1369,
+ 961, 1144, 1145, 1158, 1538, 1551, 1171, 1354,
+ 1341, 1367, 1550, 1537, 1563, 1746, 1564, 1552,
+ 1734, 1733, 1747, 1565, 1759, 1174, 1748, 1929,
+ 1942, 1760, 1761, 1370, 1930, 1943, 1944, 1956,
+ 1957, 1566, 193, 362, 375, 558, 754, 545,
+ 741, 951, 1133, 1147, 1329, 1160, 1342, 1343,
+ 1356, 965, 1161, 1174, 767, 1159, 1538, 1355,
+ 1357, 1539, 1552, 1370, 783, 1553, 1175, 1734,
+ 1748, 1566, 1371, 1735, 1749, 1762, 1567, 1930,
+ 1931, 1944, 1945, 1958, 1763, 983, 1178, 1179,
+ 984, 789, 408, 213, 409, 594, 790, 985,
+ 1180, 214, 605, 410, 215, 606, 801, 1181,
+ 986, 411, 802, 595, 1182, 216, 607, 791,
+ 412, 230, 426, 608, 803, 987, 998, 804,
+ 999, 662, 844, 1000, 1195, 858, 871, 1040,
+ 1053, 1209, 845, 1624, 1638, 1387, 1390, 1430,
+ 1652, 1583, 1597, 1611, 1054, 1444, 1598, 1625,
+ 1431, 1585, 1612, 1639, 1680, 1263, 1458, 1264,
+ 1779, 1862, 1626, 1289, 1445, 1459, 1807, 1653,
+ 1640, 1375, 1376, 1571, 1377, 1572, 1599, 1780,
+ 1613, 1627, 1808, 1821, 594, 789, 790, 595,
+ 791, 986, 400, 596, 214, 985, 1182, 216,
+ 792, 987, 1183, 215, 410, 411, 606, 412,
+ 607, 217, 230, 608, 988, 401, 413, 597,
+ 1184, 802, 803, 426, 804, 231, 609, 218,
+ 427, 793, 805, 1000, 232, 245, 414, 610,
+ 623, 819, 1001, 259, 637, 1181, 998, 999,
+ 989, 1014, 1196, 806, 1015, 1197, 455, 624,
+ 833, 1378, 1379, 1380, 1195, 1185, 1209, 1210,
+ 1002, 1211, 650, 1028, 651, 820, 1029, 1377,
+ 845, 1223, 1392, 1198, 1393, 846, 1224, 847,
+ 1016, 1225, 400, 596, 792, 401, 597, 793,
+ 598, 794, 989, 217, 988, 1184, 218, 1185,
+ 231, 413, 609, 414, 219, 232, 610, 990,
+ 415, 1186, 245, 427, 623, 805, 806, 233,
+ 246, 611, 624, 220, 807, 442, 820, 1002,
+ 234, 247, 612, 1003, 260, 638, 261, 639,
+ 819, 1001, 1016, 1198, 808, 1017, 1199, 456,
+ 834, 457, 835, 1380, 1381, 1382, 637, 1015,
+ 1197, 1212, 1004, 1213, 652, 1030, 1031, 833,
+ 1211, 1394, 1200, 1395, 848, 1226, 849, 1018,
+ 1227, 598, 794, 990, 1186, 207, 403, 599,
+ 795, 991, 1187, 221, 600, 796, 219, 220,
+ 233, 415, 611, 807, 247, 234, 612, 613,
+ 992, 808, 1004, 640, 809, 823, 1005, 1188,
+ 458, 654, 836, 1018, 1032, 1200, 1214, 263,
+ 277, 459, 473, 641, 655, 837, 1019, 1033,
+ 1201, 1215, 850, 291, 614, 669, 851, 1003,
+ 1382, 1383, 1384, 290, 668, 1046, 1228, 487,
+ 810, 865, 1047, 1229, 1199, 639, 1017, 1396,
+ 1397, 486, 864, 1242, 1006, 1243, 1578, 1579,
+ 835, 1213, 1410, 1411, 1580, 1060, 1424, 683,
+ 1061, 1202, 1425, 215, 216, 230, 410, 411,
+ 412, 606, 607, 608, 802, 803, 998, 426,
+ 804, 999, 662, 844, 1000, 1195, 845, 858,
+ 1014, 1040, 1053, 1196, 1209, 217, 231, 413,
+ 427, 609, 650, 663, 805, 846, 859, 871,
+ 1028, 1041, 1054, 1210, 1223, 245, 623, 664,
+ 677, 678, 860, 873, 1042, 1055, 1224, 1390,
+ 1392, 1405, 1263, 1056, 1238, 1264, 1418, 1406,
+ 1419, 1432, 1070, 1252, 1265, 1420, 1433, 217,
+ 230, 231, 412, 413, 426, 608, 609, 804,
+ 1000, 245, 427, 623, 650, 805, 218, 232,
+ 259, 414, 455, 610, 637, 819, 1001, 246,
+ 273, 442, 624, 651, 806, 833, 662, 663,
+ 664, 844, 845, 846, 858, 859, 1014, 1028,
+ 1041, 1196, 1210, 469, 1015, 260, 287, 456,
+ 638, 665, 820, 847, 1002, 999, 1040, 1195,
+ 1209, 1223, 1197, 1029, 860, 1042, 1211, 483,
+ 652, 834, 861, 1016, 1043, 1198, 231, 245,
+ 259, 427, 609, 623, 637, 650, 663, 664,
+ 677, 805, 819, 845, 846, 859, 1028, 273,
+ 455, 469, 651, 678, 833, 860, 1015, 232,
+ 246, 260, 287, 442, 483, 610, 624, 638,
+ 665, 806, 820, 847, 1029, 274, 456, 470,
+ 652, 679, 834, 861, 1016, 299, 873, 1042,
+ 300, 1043, 288, 301, 484, 666, 848, 875,
+ 1030, 1001, 1041, 1055, 1224, 1056, 1211, 1002,
+ 1225, 1057, 1212, 495, 1238, 496, 1070, 1239,
+ 497, 680, 862, 1044, 1071, 1226, 233, 247,
+ 260, 261, 274, 288, 442, 456, 470, 484,
+ 611, 638, 639, 652, 666, 807, 834, 848,
+ 1030, 275, 457, 471, 680, 835, 862, 1017,
+ 234, 289, 485, 612, 640, 667, 808, 849,
+ 1031, 458, 654, 681, 836, 863, 1018, 1044,
+ 302, 876, 1045, 290, 303, 486, 668, 850,
+ 877, 1032, 1003, 1226, 1058, 1213, 1004, 1227,
+ 1059, 1214, 1240, 498, 1072, 1241, 499, 864,
+ 1046, 1073, 1228, 415, 624, 806, 820, 1002,
+ 1016, 1198, 1212, 1199, 1200, 1394, 1395, 1408,
+ 1254, 1409, 1255, 1396, 290, 458, 486, 640,
+ 654, 668, 836, 850, 1032, 221, 613, 809,
+ 864, 878, 1046, 1060, 263, 277, 304, 459,
+ 500, 641, 655, 823, 837, 1005, 1019, 1074,
+ 1201, 473, 291, 487, 669, 851, 1033, 614,
+ 683, 810, 865, 879, 1047, 1061, 264, 305,
+ 446, 460, 642, 1006, 696, 501, 1075, 278,
+ 474, 656, 697, 852, 1034, 1228, 1242, 1256,
+ 1215, 1229, 1243, 1257, 1202, 1270, 892, 1271,
+ 292, 893, 1048, 1230, 808, 1004, 1018, 1200,
+ 1214, 1396, 1410, 1424, 1397, 1411, 1425, 1438,
+ 1439, 1398, 650, 662, 663, 664, 677, 845,
+ 846, 858, 859, 871, 1041, 1054, 299, 495,
+ 678, 860, 873, 1042, 1055, 300, 496, 691,
+ 1056, 692, 887, 1070, 1082, 314, 510, 888,
+ 1028, 1238, 1264, 1252, 1265, 1266, 1278, 706,
+ 1084, 1279, 844, 1040, 1053, 1223, 1263, 1224,
+ 1432, 1445, 1446, 1459, 1289, 1458, 1460, 1431,
+ 1444, 1473, 1485, 718, 902, 1097, 1280, 1292,
+ 1433, 1434, 1447, 1448, 1461, 1462, 1474, 1098,
+ 1293, 1475, 259, 273, 287, 299, 300, 455,
+ 469, 495, 496, 637, 651, 664, 665, 677,
+ 678, 691, 833, 847, 860, 873, 1056, 483,
+ 679, 692, 861, 1043, 260, 274, 288, 301,
+ 456, 470, 497, 638, 652, 666, 834, 848,
+ 875, 1057, 484, 680, 693, 862, 1044, 887,
+ 1070, 314, 888, 1071, 302, 315, 498, 876,
+ 889, 1058, 510, 706, 511, 694, 707, 1072,
+ 1084, 328, 902, 1085, 316, 329, 512, 890,
+ 903, 1029, 1252, 1239, 1030, 1253, 1240, 1266,
+ 1267, 1254, 1268, 1097, 1280, 524, 1098, 1281,
+ 525, 708, 1086, 1099, 261, 275, 288, 289,
+ 302, 457, 470, 471, 484, 498, 639, 666,
+ 667, 680, 835, 849, 862, 876, 1058, 485,
+ 681, 694, 863, 1045, 290, 303, 458, 499,
+ 640, 654, 668, 836, 850, 877, 1059, 486,
+ 695, 864, 1046, 1072, 316, 890, 1073, 304,
+ 317, 500, 878, 891, 1060, 512, 708, 513,
+ 696, 709, 1074, 1086, 330, 904, 1087, 318,
+ 331, 514, 892, 905, 1031, 1254, 1241, 1032,
+ 1255, 1242, 1268, 1269, 1256, 1270, 1282, 526,
+ 1100, 1283, 527, 710, 1088, 1101, 290, 304,
+ 486, 500, 668, 864, 878, 1060, 263, 277,
+ 459, 641, 655, 696, 823, 837, 892, 1074,
+ 291, 318, 473, 487, 669, 851, 865, 1019,
+ 1033, 1047, 683, 305, 501, 879, 1061, 264,
+ 278, 446, 460, 642, 656, 697, 893, 1075,
+ 292, 319, 474, 488, 852, 866, 1034, 1048,
+ 514, 1088, 710, 515, 1089, 684, 711, 880,
+ 1062, 906, 332, 907, 306, 333, 1076, 528,
+ 1102, 724, 529, 1103, 698, 725, 894, 1256,
+ 1270, 1215, 1229, 1243, 1257, 1271, 1230, 1244,
+ 1284, 1285, 1258, 1272, 1298, 920, 1299, 320,
+ 921, 1090, 605, 801, 1387, 1583, 1597, 1624,
+ 1638, 1652, 408, 409, 410, 606, 662, 802,
+ 844, 858, 871, 998, 1040, 1053, 1430, 1444,
+ 1598, 1611, 1612, 1625, 1639, 1680, 1862, 1054,
+ 1263, 1431, 1458, 299, 495, 663, 677, 845,
+ 859, 873, 1041, 1055, 1082, 1264, 1289, 1626,
+ 1445, 1459, 691, 887, 1278, 1512, 1653, 1694,
+ 534, 730, 1303, 1485, 1585, 1779, 1807, 1876,
+ 1121, 1304, 1473, 926, 1109, 1640, 535, 718,
+ 1292, 1305, 1317, 1499, 1821, 1667, 301, 314,
+ 315, 328, 497, 510, 524, 693, 706, 889,
+ 902, 511, 707, 1085, 302, 316, 329, 498,
+ 525, 694, 890, 903, 512, 708, 721, 1086,
+ 915, 1098, 342, 916, 1099, 330, 343, 526,
+ 904, 917, 538, 733, 539, 722, 735, 1100,
+ 1112, 930, 1113, 344, 540, 918, 931, 1097,
+ 1281, 1282, 1111, 1294, 1295, 1296, 1125, 1308,
+ 1126, 1309, 736, 1114, 1127, 1293, 1307, 1321,
+ 1322, 932, 1310, 1323, 1477, 1478, 1490, 1491,
+ 1492, 1504, 1505, 1128, 318, 332, 514, 528,
+ 710, 906, 305, 501, 683, 697, 724, 879,
+ 920, 1102, 319, 346, 515, 893, 1075, 1089,
+ 711, 333, 529, 907, 306, 684, 698, 725,
+ 880, 921, 1103, 320, 347, 516, 894, 1076,
+ 1090, 542, 1116, 738, 543, 1117, 712, 739,
+ 908, 934, 935, 334, 530, 1104, 1130, 1131,
+ 726, 922, 1298, 1271, 1285, 1299, 1272, 1286,
+ 1312, 1313, 1300, 1326, 1327, 348, 1118, 544,
+ 1314, 1494, 1467, 1481, 1495, 1468, 1482, 1508,
+ 1509, 1496, 1522, 1523, 740, 871, 1289, 1512,
+ 1680, 1694, 1263, 1458, 1303, 1485, 534, 730,
+ 926, 1121, 1304, 1330, 535, 731, 1708, 1317,
+ 1499, 340, 536, 718, 1109, 1123, 1318, 1124,
+ 1319, 1305, 1513, 733, 915, 1111, 1125, 1320,
+ 1331, 1514, 1526, 1332, 1515, 746, 1137, 355,
+ 551, 942, 1138, 1333, 1527, 1722, 1500, 1540,
+ 1709, 342, 538, 916, 1307, 930, 1112, 1126,
+ 1321, 747, 356, 552, 748, 943, 1139, 1334,
+ 524, 1308, 1322, 1516, 944, 1335, 1528, 1501,
+ 1918, 1345, 1529, 1140, 1346, 1530, 1502, 1503,
+ 1517, 1336, 1347, 1531, 329, 342, 343, 525,
+ 538, 721, 733, 917, 930, 539, 735, 1113,
+ 330, 344, 526, 722, 918, 931, 540, 736,
+ 1114, 355, 356, 551, 746, 1125, 1126, 1322,
+ 357, 552, 748, 932, 1127, 1323, 747, 942,
+ 943, 944, 553, 749, 1128, 345, 358, 541,
+ 723, 737, 919, 945, 1324, 1140, 554, 750,
+ 933, 1141, 370, 1139, 1336, 371, 566, 946,
+ 1337, 957, 958, 567, 763, 1142, 359, 372,
+ 555, 751, 959, 1338, 1309, 1310, 1321, 1138,
+ 1115, 1129, 1335, 1152, 1153, 1154, 568, 947,
+ 1155, 346, 542, 738, 934, 333, 360, 515,
+ 529, 711, 725, 907, 921, 1103, 1130, 1326,
+ 347, 543, 1117, 739, 935, 334, 361, 516,
+ 530, 712, 726, 908, 922, 1104, 1131, 1327,
+ 348, 544, 1118, 359, 555, 751, 556, 752,
+ 557, 753, 740, 936, 947, 948, 949, 1132,
+ 1144, 1145, 362, 1328, 1340, 570, 375, 1341,
+ 558, 754, 569, 765, 766, 961, 962, 767,
+ 1157, 1299, 1313, 1300, 1314, 1143, 1158, 1159,
+ 1342, 1522, 1523, 1339, 1524, 1536, 1537, 1353,
+ 1354, 1355, 1495, 1509, 1496, 1510, 1538, 1330,
+ 1526, 534, 535, 730, 731, 926, 1121, 1123,
+ 1317, 1318, 1331, 1513, 1514, 1540, 1722, 1319,
+ 1332, 746, 942, 1137, 1333, 1527, 355, 551,
+ 747, 1138, 1345, 1528, 943, 1139, 1334, 1358,
+ 1346, 1529, 1736, 1152, 1347, 1541, 1554, 957,
+ 1348, 1542, 1709, 1723, 1543, 1737, 1360, 1544,
+ 1738, 1724, 1555, 1739, 1932, 1933, 1556, 1919,
+ 1725, 1934, 1946, 1920, 2128, 1740, 1751, 1935,
+ 355, 551, 746, 747, 942, 943, 1137, 1138,
+ 1139, 1333, 1334, 356, 552, 748, 944, 1140,
+ 1335, 1345, 1346, 1529, 370, 566, 957, 1152,
+ 1336, 1347, 1530, 1153, 1348, 1542, 958, 1154,
+ 1349, 1531, 1543, 1350, 1360, 1544, 357, 553,
+ 749, 945, 371, 567, 763, 959, 1155, 1361,
+ 1362, 1141, 1545, 1351, 1546, 1541, 1555, 1556,
+ 1557, 1364, 410, 605, 606, 801, 802, 998,
+ 411, 607, 803, 999, 412, 426, 608, 662,
+ 804, 844, 1000, 1040, 1053, 1195, 1209, 1390,
+ 1387, 858, 871, 1196, 1430, 663, 845, 1041,
+ 1054, 1223, 1585, 1598, 859, 1263, 1418, 1431,
+ 1597, 1611, 1014, 1405, 1444, 1599, 1583, 1612,
+ 1625, 1210, 1392, 1432, 1445, 1587, 1600, 1613,
+ 1626, 1780, 1639, 1419, 1458, 1601, 1614, 1627,
+ 1640, 1795, 1055, 1264, 1433, 1446, 1459, 1653,
+ 1460, 1615, 1628, 1641, 1808, 1796, 1809, 1822,
+ 1447, 1629, 1642, 1655, 1810, 1823, 413, 427,
+ 609, 623, 650, 663, 804, 805, 845, 846,
+ 1000, 1001, 1014, 1028, 1041, 1196, 1209, 1210,
+ 1223, 245, 637, 664, 819, 833, 1015, 1042,
+ 1197, 1224, 259, 414, 455, 610, 624, 651,
+ 806, 847, 1002, 1029, 1211, 246, 442, 469,
+ 638, 665, 820, 834, 1016, 1043, 1198, 1225,
+ 677, 859, 860, 1055, 678, 1056, 1238, 273,
+ 861, 260, 456, 483, 652, 679, 848, 1030,
+ 1057, 1212, 1239, 1392, 1393, 873, 1406, 1252,
+ 1407, 875, 1044, 1226, 1253, 1394, 446, 614,
+ 642, 810, 1006, 1202, 264, 460, 656, 852,
+ 1034, 278, 292, 474, 488, 866, 1048, 1230,
+ 1244, 265, 684, 839, 880, 1062, 1076, 1203,
+ 1258, 1412, 1426, 306, 1272, 1398, 1440, 1399,
+ 1454, 1413, 867, 1245, 1595, 1594, 1608, 1622,
+ 1636, 1468, 1650, 1609, 1441, 1790, 1804, 1818,
+ 1832, 1664, 1791, 1623, 698, 894, 1090, 1286,
+ 881, 1077, 1273, 1482, 1637, 1469, 1846, 1860,
+ 1678, 1651, 455, 623, 637, 650, 651, 663,
+ 664, 677, 678, 819, 833, 846, 859, 860,
+ 873, 1001, 1015, 1028, 1029, 1041, 1042, 1055,
+ 1056, 1197, 1211, 1224, 1238, 273, 469, 665,
+ 847, 861, 1043, 1070, 1225, 1252, 287, 442,
+ 456, 483, 624, 638, 652, 679, 820, 834,
+ 875, 1002, 1016, 1030, 1057, 1198, 1212, 1239,
+ 274, 470, 666, 848, 862, 1044, 1071, 1226,
+ 1253, 495, 691, 1265, 496, 692, 1266, 288,
+ 484, 497, 680, 693, 876, 1058, 1240, 1267,
+ 1420, 1407, 1421, 1408, 887, 1434, 888, 1435,
+ 889, 1072, 1254, 1422, 288, 457, 470, 484,
+ 639, 652, 666, 680, 834, 835, 848, 862,
+ 876, 1003, 1017, 1030, 1031, 1044, 1058, 1199,
+ 1213, 1226, 1240, 275, 471, 667, 849, 863,
+ 1045, 1072, 1227, 1254, 289, 458, 485, 640,
+ 654, 681, 836, 877, 1004, 1018, 1032, 1059,
+ 1200, 1214, 1241, 668, 850, 864, 1046, 1073,
+ 1228, 1255, 498, 694, 1268, 290, 486, 499,
+ 695, 878, 1060, 1242, 1269, 1422, 1409, 1423,
+ 1410, 1436, 890, 1437, 891, 1074, 1256, 1424,
+ 290, 486, 654, 668, 836, 850, 864, 878,
+ 1032, 1046, 1060, 1228, 1242, 304, 500, 613,
+ 641, 809, 823, 1005, 1019, 1074, 1201, 1256,
+ 1270, 263, 277, 459, 473, 655, 696, 837,
+ 851, 1033, 1215, 1229, 669, 865, 1047, 291,
+ 487, 683, 879, 1061, 1243, 305, 446, 501,
+ 614, 642, 810, 1006, 1075, 1202, 1257, 1271,
+ 264, 278, 460, 474, 656, 697, 852, 1034,
+ 1230, 892, 1088, 893, 292, 488, 866, 1048,
+ 1089, 1244, 1424, 1438, 1452, 1397, 1411, 1425,
+ 1439, 1453, 1398, 1412, 1466, 1284, 1467, 684,
+ 1062, 1285, 1426, 300, 469, 483, 495, 496,
+ 651, 665, 678, 679, 691, 692, 847, 860,
+ 861, 887, 888, 1029, 1043, 1056, 1057, 1070,
+ 1225, 1239, 1252, 1265, 1266, 875, 1071, 1084,
+ 1253, 301, 470, 484, 497, 652, 666, 680,
+ 693, 848, 862, 889, 1030, 1044, 1058, 1226,
+ 1240, 1267, 876, 1072, 1085, 1254, 1279, 510,
+ 706, 1280, 302, 498, 511, 694, 707, 890,
+ 1268, 1281, 314, 902, 1097, 1098, 315, 903,
+ 1086, 1099, 1293, 524, 1294, 316, 512, 525,
+ 708, 721, 904, 1282, 1295, 1448, 1435, 1449,
+ 1436, 1462, 1463, 1450, 1464, 915, 1476, 916,
+ 1477, 917, 1100, 302, 471, 485, 498, 667,
+ 680, 681, 694, 849, 862, 863, 876, 890,
+ 1031, 1045, 1058, 1059, 1072, 1227, 1241, 1254,
+ 1268, 877, 1073, 1086, 1255, 303, 486, 499,
+ 654, 668, 695, 850, 864, 891, 1032, 1046,
+ 1060, 1228, 1242, 1269, 878, 1074, 1087, 1256,
+ 512, 708, 1282, 304, 500, 513, 696, 709,
+ 892, 1270, 1283, 316, 904, 1100, 317, 905,
+ 1088, 1101, 526, 722, 1296, 318, 514, 527,
+ 710, 723, 906, 1284, 1297, 1450, 1437, 1451,
+ 1438, 1464, 1465, 1452, 1466, 1478, 918, 1479,
+ 919, 1102, 304, 500, 696, 864, 878, 892,
+ 1060, 1074, 1256, 1270, 318, 459, 473, 514,
+ 641, 655, 669, 837, 851, 1019, 1033, 1047,
+ 1088, 1215, 1229, 1284, 277, 291, 487, 683,
+ 710, 865, 879, 1061, 1243, 1257, 1075, 305,
+ 501, 697, 893, 1271, 319, 460, 474, 515,
+ 642, 656, 852, 1034, 1048, 1089, 1230, 1285,
+ 278, 292, 488, 684, 711, 866, 880, 1062,
+ 1244, 1258, 906, 1102, 907, 306, 1076, 1103,
+ 1272, 332, 528, 1298, 724, 333, 529, 1299,
+ 698, 725, 894, 920, 1116, 921, 320, 516,
+ 1090, 1117, 1286, 1452, 1466, 1411, 1425, 1439,
+ 1453, 1467, 1412, 1426, 1440, 1480, 1481, 1454,
+ 1468, 1494, 1312, 1495, 712, 1313, 495, 691,
+ 887, 1082, 1264, 1265, 1278, 1289, 1303, 1473,
+ 496, 534, 692, 718, 888, 1070, 1084, 1109,
+ 1266, 1279, 1292, 1304, 1474, 730, 926, 1121,
+ 1485, 510, 535, 706, 731, 1097, 1280, 1293,
+ 1305, 1487, 1317, 340, 536, 915, 1111, 1123,
+ 1318, 1460, 1461, 1475, 1499, 1488, 1500, 1124,
+ 1307, 1319, 1501, 1668, 1669, 1489, 1513, 1320,
+ 1502, 1514, 1656, 1670, 1681, 1682, 1683, 1684,
+ 1696, 1503, 1515, 1697, 1671, 1695, 1685, 1709,
+ 1516, 1698, 1710, 1865, 1866, 1878, 1879, 1880,
+ 1892, 1699, 1711, 1893, 539, 721, 735, 917,
+ 930, 1113, 1125, 1126, 1309, 1321, 1322, 931,
+ 1127, 540, 722, 736, 918, 1114, 1310, 1323,
+ 932, 1128, 343, 355, 356, 551, 552, 746,
+ 747, 748, 942, 943, 1138, 1518, 344, 357,
+ 553, 749, 944, 1140, 1324, 1519, 1139, 1334,
+ 1335, 1336, 945, 1141, 358, 541, 554, 737,
+ 750, 933, 1115, 1129, 1311, 1337, 1520, 946,
+ 1142, 1325, 370, 566, 957, 1152, 1532, 371,
+ 567, 763, 958, 1154, 1338, 1533, 1153, 1348,
+ 1349, 1350, 959, 1155, 372, 555, 568, 751,
+ 764, 947, 1143, 1351, 1534, 1505, 1506, 1517,
+ 1531, 960, 1339, 541, 723, 736, 737, 919,
+ 932, 1115, 1128, 1311, 1324, 933, 1129, 542,
+ 724, 738, 920, 1116, 1312, 1325, 934, 1130,
+ 345, 358, 553, 554, 749, 750, 945, 1141,
+ 1520, 346, 359, 555, 751, 946, 1142, 1326,
+ 1521, 1337, 1338, 947, 1143, 360, 556, 752,
+ 1339, 1522, 948, 1144, 372, 567, 568, 763,
+ 764, 959, 1155, 1534, 569, 765, 960, 1156,
+ 1340, 1535, 1351, 1352, 961, 1157, 570, 766,
+ 1353, 1536, 1507, 1508, 962, 789, 790, 984,
+ 985, 986, 1180, 1181, 1375, 1376, 1182, 1377,
+ 1378, 410, 605, 606, 801, 802, 998, 1572,
+ 1573, 411, 607, 791, 803, 987, 999, 1183,
+ 1574, 412, 608, 804, 1000, 1195, 1379, 1390,
+ 1196, 1209, 844, 1014, 1040, 1210, 1223, 1585,
+ 1392, 1405, 1418, 1571, 1768, 1769, 1770, 1598,
+ 1575, 1587, 1599, 1600, 1406, 1419, 1431, 1588,
+ 1601, 1613, 1430, 1432, 1444, 1612, 1614, 1626,
+ 1795, 791, 986, 987, 1182, 1377, 1378, 1183,
+ 792, 988, 1379, 1184, 595, 607, 802, 803,
+ 998, 1574, 596, 804, 1000, 1380, 1575, 412,
+ 608, 999, 1195, 1196, 413, 609, 805, 1001,
+ 1014, 623, 793, 819, 989, 1185, 1197, 1576,
+ 426, 1209, 1390, 1210, 1392, 427, 1015, 1028,
+ 414, 610, 637, 806, 833, 1002, 1211, 1381,
+ 1393, 650, 845, 846, 1041, 1223, 1224, 1405,
+ 1406, 624, 651, 820, 847, 1016, 1029, 1198,
+ 1225, 1407, 1042, 1043, 1212, 1573, 1419, 1588,
+ 1394, 1589, 1238, 1420, 1239, 1421, 1770, 1771,
+ 1772, 1587, 1577, 1601, 1602, 1603, 1408, 1769,
+ 1418, 1600, 1433, 1615, 1784, 1590, 1785, 1434,
+ 1616, 1435, 1617, 793, 988, 989, 1184, 1380,
+ 1185, 794, 990, 1381, 1186, 597, 805, 1001,
+ 1576, 598, 806, 1002, 1382, 1577, 414, 610,
+ 819, 1015, 1197, 624, 820, 1198, 415, 611,
+ 807, 1003, 1016, 1199, 1578, 833, 1029, 1211,
+ 1393, 638, 834, 1212, 1394, 1017, 1030, 612,
+ 639, 808, 835, 1004, 1213, 1395, 652, 848,
+ 1226, 1408, 849, 1018, 1031, 1200, 1227, 1409,
+ 1044, 1045, 1214, 1225, 1407, 1590, 1396, 1591,
+ 1240, 1422, 1241, 1423, 1772, 1773, 1774, 1589,
+ 1604, 1605, 1410, 1421, 1603, 1786, 1592, 1787,
+ 1436, 1618, 1437, 1619, 990, 1186, 1382, 599,
+ 795, 1578, 403, 612, 808, 991, 1187, 1383,
+ 600, 796, 1579, 613, 809, 992, 1188, 807,
+ 1003, 220, 234, 611, 639, 835, 1004, 1017,
+ 1199, 1200, 1213, 1395, 221, 823, 1005, 1201,
+ 1384, 1031, 1018, 1019, 640, 836, 1214, 1396,
+ 654, 850, 1032, 1228, 1410, 1046, 641, 837,
+ 1215, 1397, 655, 851, 1033, 1229, 1411, 1580,
+ 458, 668, 864, 1060, 1242, 1424, 1592, 459,
+ 473, 614, 669, 810, 865, 1006, 1047, 1061,
+ 1202, 1243, 1425, 1593, 878, 1256, 1438, 683,
+ 879, 1257, 1439, 1774, 1775, 1227, 1409, 1606,
+ 1607, 1776, 1074, 1620, 1075, 1398, 1621, 1591,
+ 1788, 1789, 1270, 1452, 1634, 1271, 1453, 1635,
+ 1970, 1971, 1423, 1605, 1802, 1803, 1972, 1816,
+ 1412, 1594, 1817, 796, 992, 1188, 1384, 1580,
+ 614, 810, 1006, 1202, 1385, 1776, 446, 642,
+ 1398, 1581, 837, 851, 1019, 1033, 1047, 1215,
+ 1229, 1397, 1411, 656, 852, 1034, 1230, 1412,
+ 1048, 1203, 460, 474, 866, 1062, 1244, 1426,
+ 1594, 488, 684, 880, 1076, 1258, 1440, 1608,
+ 1243, 1425, 1777, 1399, 1622, 1593, 1607, 1790,
+ 1272, 1454, 1636, 1413, 1972, 1439, 1621, 1973,
+ 1804, 1595, 1818, 804, 844, 999, 1000, 1014,
+ 1040, 1053, 1195, 1196, 1209, 1223, 1390, 845,
+ 858, 1028, 1041, 1054, 1210, 1224, 1392, 1405,
+ 1418, 662, 871, 1431, 650, 663, 846, 859,
+ 1042, 1055, 1238, 1406, 1419, 1432, 1587, 1263,
+ 1445, 1600, 1264, 1420, 1433, 1446, 1588, 1601,
+ 1599, 1613, 1614, 1627, 1434, 1447, 1602, 1615,
+ 1628, 1783, 1459, 1641, 1796, 1460, 1616, 1629,
+ 1642, 1784, 1797, 650, 805, 819, 845, 846,
+ 859, 1001, 1014, 1015, 1028, 1041, 1042, 1055,
+ 1196, 1197, 1210, 1223, 1224, 1238, 1392, 1405,
+ 1406, 1419, 637, 833, 860, 1029, 1056, 1211,
+ 1225, 1393, 1420, 651, 806, 820, 847, 1002,
+ 1016, 1043, 1198, 1239, 1407, 638, 834, 861,
+ 1030, 1057, 1212, 1226, 1394, 1421, 664, 873,
+ 1252, 1433, 1070, 1434, 665, 1253, 652, 848,
+ 875, 1044, 1071, 1240, 1408, 1435, 1588, 1589,
+ 1265, 1447, 1602, 1266, 1448, 1603, 1267, 1422,
+ 1449, 1590, 1601, 1615, 1616, 1617, 1629, 1630,
+ 1436, 1604, 1631, 1784, 1785, 1461, 1643, 1798,
+ 1462, 1644, 1799, 1463, 1618, 1645, 1786, 652,
+ 807, 834, 848, 1003, 1016, 1017, 1030, 1044,
+ 1198, 1199, 1212, 1226, 1240, 1394, 1408, 639,
+ 835, 862, 1031, 1058, 1213, 1227, 1395, 1422,
+ 808, 849, 1004, 1018, 1045, 1200, 1241, 1409,
+ 640, 836, 863, 1032, 1059, 1214, 1228, 1396,
+ 1423, 666, 1254, 876, 1072, 1436, 667, 1255,
+ 654, 850, 877, 1046, 1073, 1242, 1410, 1437,
+ 1590, 1591, 1604, 1268, 1450, 1605, 1269, 1424,
+ 1451, 1592, 1618, 1619, 1632, 1438, 1606, 1633,
+ 1786, 1787, 1800, 1464, 1646, 1801, 1465, 1620,
+ 1647, 1788, 654, 836, 850, 1018, 1032, 1046,
+ 1200, 1214, 1228, 1242, 1396, 1410, 668, 809,
+ 864, 878, 1005, 1060, 1256, 1424, 1438, 613,
+ 641, 823, 837, 1019, 1074, 1201, 1215, 1397,
+ 1033, 1229, 655, 851, 1047, 1243, 1411, 669,
+ 683, 810, 865, 879, 1006, 1061, 1257, 1425,
+ 1439, 614, 642, 1075, 1202, 1398, 1270, 1452,
+ 1271, 1453, 656, 852, 1034, 1230, 1412, 1592,
+ 1606, 1620, 1593, 1607, 1621, 1634, 1466, 1635,
+ 1048, 1467, 1594, 1648, 1649, 1244, 1426, 1608,
+ 1788, 1802, 1816, 1789, 1803, 1817, 1830, 1662,
+ 1831, 1663, 1790, 663, 845, 846, 858, 859,
+ 871, 1014, 1028, 1040, 1041, 1042, 1053, 1054,
+ 1055, 1209, 1210, 1223, 1224, 1263, 1264, 1392,
+ 1405, 1406, 1418, 1419, 1431, 1432, 1445, 664,
+ 677, 860, 873, 1056, 1238, 1252, 1265, 1420,
+ 1433, 1446, 1459, 678, 1070, 1082, 1266, 1434,
+ 1447, 1460, 1601, 1614, 1602, 1615, 1628, 1278,
+ 1448, 1461, 1616, 1629, 1588, 1627, 1641, 1642,
+ 1655, 1462, 1630, 1643, 1656, 1797, 1810, 1798,
+ 1811, 1473, 1824, 1474, 1644, 1657, 1812, 1825,
+ 678, 833, 847, 860, 873, 1015, 1029, 1042,
+ 1043, 1055, 1056, 1070, 1211, 1224, 1225, 1238,
+ 1252, 1265, 1266, 1393, 1407, 1420, 1433, 1434,
+ 1447, 665, 861, 1057, 1239, 1253, 1421, 1448,
+ 679, 834, 848, 875, 1016, 1030, 1044, 1071,
+ 1212, 1226, 1267, 1394, 1408, 1435, 666, 862,
+ 1058, 1240, 1254, 1422, 1449, 887, 1461, 888,
+ 1084, 1462, 680, 876, 889, 1072, 1085, 1268,
+ 1436, 1463, 1616, 1603, 1617, 1604, 1279, 1630,
+ 1280, 1631, 1281, 1450, 1618, 1589, 1629, 1643,
+ 1644, 1590, 1645, 1657, 1658, 1464, 1632, 1659,
+ 1812, 1799, 1813, 1800, 1475, 1826, 1476, 1827,
+ 1477, 1646, 1814, 680, 835, 849, 862, 876,
+ 1017, 1031, 1044, 1045, 1058, 1072, 1213, 1226,
+ 1227, 1240, 1254, 1268, 1395, 1409, 1422, 1436,
+ 667, 863, 1059, 1241, 1255, 1423, 1450, 681,
+ 836, 850, 877, 1018, 1032, 1046, 1073, 1214,
+ 1228, 1269, 1396, 1410, 1437, 668, 864, 1060,
+ 1242, 1256, 1424, 1451, 890, 1086, 1464, 878,
+ 891, 1074, 1087, 1270, 1438, 1465, 1618, 1605,
+ 1619, 1606, 1632, 1282, 1633, 1283, 1452, 1620,
+ 1591, 1646, 1592, 1647, 1660, 1466, 1634, 1661,
+ 1814, 1801, 1815, 1802, 1828, 1478, 1829, 1479,
+ 1648, 1816, 864, 878, 1046, 1060, 1074, 1228,
+ 1242, 1256, 1270, 1424, 1438, 696, 823, 837,
+ 892, 1005, 1019, 1033, 1201, 1215, 1397, 1452,
+ 1466, 641, 655, 669, 851, 865, 1047, 1088,
+ 1229, 1243, 1411, 1425, 1061, 1257, 683, 879,
+ 1075, 1271, 1439, 697, 893, 1006, 1034, 1202,
+ 1398, 1453, 1467, 642, 656, 852, 866, 1048,
+ 1089, 1230, 1244, 1412, 1426, 1284, 1285, 684,
+ 880, 1062, 1258, 1440, 1620, 1634, 1648, 1593,
+ 1607, 1621, 1635, 1649, 1594, 1608, 1662, 1480,
+ 1663, 1076, 1481, 1622, 1272, 1454, 1636, 1816,
+ 1830, 1844, 1789, 1803, 1817, 1831, 1845, 1790,
+ 1804, 1858, 1676, 1859, 1677, 1818, 1624, 1638,
+ 1652, 1387, 1583, 1597, 1598, 1611, 1779, 1053,
+ 1430, 1444, 1585, 1612, 1625, 871, 1431, 844,
+ 858, 1040, 1054, 1263, 1418, 1445, 1458, 1626,
+ 1639, 1680, 1807, 1862, 1432, 1459, 1640, 1653,
+ 1289, 1264, 1446, 1694, 1821, 1460, 1485, 1627,
+ 1641, 1655, 1667, 1835, 1876, 1473, 1599, 1613,
+ 1849, 1628, 1642, 1668, 1836, 1850, 1512, 1822,
+ 2030, 1614, 1809, 1823, 1837, 1669, 1681, 1863,
+ 1780, 1795, 1808, 1975, 1989, 1990, 2017, 1991,
+ 2058, 2005, 2018, 2031, 2019, 2032, 2045, 858,
+ 871, 1040, 1053, 1054, 1263, 1418, 1431, 1432,
+ 1444, 1445, 1458, 859, 873, 1041, 1055, 1264,
+ 1419, 1433, 1446, 1459, 1082, 1265, 1278, 1447,
+ 1460, 1289, 1473, 1485, 1641, 1655, 887, 1461,
+ 1303, 1474, 1668, 1279, 1292, 1627, 1640, 1628,
+ 1642, 1656, 1667, 1304, 1475, 1487, 1669, 1614,
+ 1653, 1615, 1629, 1643, 1657, 1681, 1488, 1670,
+ 1682, 1823, 1836, 1824, 1837, 1850, 1838, 1851,
+ 1852, 1499, 1864, 1500, 1671, 1683, 1865, 860,
+ 873, 1042, 1055, 1056, 1070, 1082, 1238, 1252,
+ 1264, 1265, 1278, 1420, 1433, 1434, 1446, 1447,
+ 1459, 1460, 691, 887, 1266, 1279, 1448, 1461,
+ 1473, 692, 888, 1084, 1280, 1462, 1474, 1292,
+ 1097, 1293, 1475, 1109, 1487, 706, 902, 1098,
+ 1294, 1476, 1488, 1629, 1642, 1630, 1643, 1656,
+ 1644, 1657, 1658, 1305, 1670, 1489, 1671, 1616,
+ 1655, 1669, 1683, 1490, 1672, 1684, 1825, 1838,
+ 1826, 1839, 1852, 1840, 1853, 1854, 1501, 1866,
+ 1502, 1685, 1867, 692, 861, 875, 887, 888,
+ 1043, 1057, 1070, 1071, 1084, 1239, 1252, 1253,
+ 1266, 1279, 1280, 1421, 1435, 1448, 1461, 1462,
+ 1267, 1449, 693, 862, 876, 889, 1044, 1058,
+ 1072, 1085, 1240, 1254, 1281, 1422, 1436, 1463,
+ 1268, 1450, 1097, 1475, 902, 1098, 1476, 694,
+ 890, 903, 1086, 1099, 1282, 1464, 1477, 706,
+ 1293, 1294, 707, 1295, 915, 1111, 1489, 916,
+ 1112, 1490, 708, 904, 917, 1100, 1113, 1296,
+ 1478, 1491, 1644, 1631, 1645, 1632, 1658, 1659,
+ 1646, 1660, 1307, 1672, 1308, 1673, 1309, 1617,
+ 1657, 1618, 1671, 1685, 1686, 1492, 1674, 1687,
+ 1840, 1827, 1841, 1828, 1854, 1855, 1842, 1856,
+ 1503, 1868, 1504, 1869, 1505, 694, 863, 877,
+ 890, 1045, 1059, 1072, 1073, 1086, 1241, 1254,
+ 1255, 1268, 1282, 1423, 1437, 1450, 1464, 1269,
+ 1451, 695, 864, 878, 891, 1046, 1060, 1074,
+ 1087, 1242, 1256, 1283, 1424, 1438, 1465, 1270,
+ 1452, 904, 1100, 1478, 696, 892, 905, 1088,
+ 1101, 1284, 1466, 1479, 708, 1296, 709, 1297,
+ 918, 1114, 1492, 710, 906, 919, 1102, 1115,
+ 1298, 1480, 1493, 1646, 1633, 1647, 1634, 1660,
+ 1661, 1648, 1662, 1674, 1310, 1675, 1311, 1619,
+ 1620, 1688, 1494, 1676, 1689, 1842, 1829, 1843,
+ 1830, 1856, 1857, 1844, 1858, 1870, 1506, 1871,
+ 1507, 696, 892, 1074, 1088, 1256, 1270, 1284,
+ 1452, 1466, 710, 851, 865, 906, 1033, 1047,
+ 1061, 1229, 1243, 1411, 1425, 1480, 669, 683,
+ 879, 1075, 1102, 1257, 1271, 1439, 1453, 697,
+ 893, 1089, 1285, 1467, 711, 852, 866, 907,
+ 1034, 1048, 1062, 1230, 1244, 1412, 1426, 1481,
+ 684, 880, 1076, 1103, 1258, 1272, 1440, 1454,
+ 1298, 1299, 698, 894, 1468, 724, 920, 1494,
+ 1116, 725, 921, 1495, 1090, 1117, 1286, 1312,
+ 1313, 712, 908, 1482, 1648, 1662, 1607, 1621,
+ 1635, 1649, 1663, 1608, 1622, 1636, 1676, 1677,
+ 1650, 1664, 1690, 1508, 1691, 1104, 1509, 1300,
+ 1678, 1844, 1858, 1803, 1817, 1831, 1845, 1859,
+ 1804, 1818, 1832, 1872, 1873, 1846, 1860, 1886,
+ 1704, 1887, 1705, 880, 1062, 1076, 1244, 1258,
+ 1272, 1440, 1454, 698, 894, 1090, 1286, 1468,
+ 712, 867, 908, 1245, 1413, 1482, 881, 1077,
+ 1104, 1273, 1441, 1300, 699, 895, 1469, 1091,
+ 1287, 726, 922, 1496, 1118, 1314, 713, 909,
+ 1483, 1105, 1301, 1636, 1650, 1664, 1609, 1623,
+ 1637, 1678, 1651, 1692, 1510, 1497, 1832, 1846,
+ 1860, 1833, 1874, 1847, 1888, 1706, 1875, 1412,
+ 1426, 1594, 1608, 1622, 1790, 1804, 1399, 1818,
+ 1595, 1791, 1986, 2000, 2014, 2028, 2042, 2056,
+ 2070, 1524, 1902, 2084, 2071, 2098, 1652, 1680,
+ 1862, 1625, 1639, 871, 1053, 1263, 1289, 1430,
+ 1431, 1444, 1445, 1458, 1459, 1512, 1611, 1612,
+ 1626, 1640, 1653, 1667, 1694, 1821, 1835, 1876,
+ 1485, 1303, 1473, 1304, 1109, 1121, 1317, 1487,
+ 1499, 1708, 730, 926, 1305, 1318, 1500, 1849,
+ 1668, 1681, 1682, 1330, 1501, 1513, 1695, 1890,
+ 1669, 1863, 1683, 1904, 1514, 1696, 1864, 1877,
+ 1878, 1526, 1697, 1709, 1891, 718, 902, 1084,
+ 1097, 1098, 1109, 1279, 1280, 1292, 1293, 1305,
+ 1475, 1476, 1487, 1488, 915, 1111, 1294, 1307,
+ 1489, 1123, 1501, 916, 1112, 1124, 1308, 1490,
+ 1502, 1319, 1320, 733, 1125, 1321, 1503, 1515,
+ 930, 1126, 1322, 1504, 1516, 1671, 1672, 1684,
+ 1685, 1686, 1698, 1517, 1699, 1683, 1697, 1711,
+ 1518, 1700, 1712, 1867, 1868, 1880, 1881, 1882,
+ 1894, 1713, 1895, 903, 915, 916, 1085, 1098,
+ 1099, 1111, 1112, 1281, 1294, 1307, 1308, 1477,
+ 1489, 1490, 1295, 721, 904, 917, 1086, 1100,
+ 1113, 1282, 1309, 1478, 1491, 1296, 1125, 1503,
+ 930, 1126, 1504, 722, 918, 931, 1114, 1127,
+ 1310, 1492, 1505, 1321, 1322, 735, 1323, 1517,
+ 1518, 736, 932, 1128, 1324, 1506, 1519, 1673,
+ 1674, 1686, 1687, 1688, 1700, 1701, 1685, 1699,
+ 1713, 1714, 1520, 1702, 1715, 1869, 1870, 1882,
+ 1883, 1884, 1896, 1897, 722, 905, 918, 1087,
+ 1100, 1101, 1114, 1283, 1296, 1310, 1479, 1492,
+ 1297, 723, 906, 919, 1088, 1102, 1115, 1284,
+ 1311, 1480, 1493, 1298, 932, 1128, 1506, 724,
+ 920, 933, 1116, 1129, 1312, 1494, 1507, 736,
+ 1324, 737, 1325, 1520, 738, 934, 1130, 1326,
+ 1508, 1521, 1675, 1676, 1688, 1689, 1690, 1702,
+ 1703, 1716, 1522, 1704, 1717, 1871, 1872, 1884,
+ 1885, 1886, 1898, 1899, 724, 920, 1102, 1116,
+ 1298, 1312, 1494, 738, 893, 934, 1089, 1285,
+ 1467, 1508, 711, 907, 1103, 1130, 1299, 1481,
+ 725, 921, 1117, 1313, 1495, 739, 894, 935,
+ 1090, 1286, 1468, 1509, 712, 908, 1104, 1131,
+ 1300, 1482, 1326, 1327, 726, 922, 1496, 1522,
+ 1523, 1118, 1314, 740, 936, 1510, 1690, 1663,
+ 1677, 1691, 1664, 1678, 1704, 1705, 1692, 1718,
+ 1719, 1132, 1328, 1706, 1886, 1859, 1873, 1887,
+ 1860, 1874, 1900, 1901, 1888, 1914, 1915, 908,
+ 1104, 1286, 1300, 1482, 726, 922, 1118, 1314,
+ 1496, 740, 895, 936, 1091, 1287, 1469, 1510,
+ 713, 909, 1105, 1132, 1301, 1483, 1328, 727,
+ 923, 1497, 1119, 1315, 1524, 741, 1511, 1133,
+ 1329, 1678, 1692, 1706, 1720, 1707, 1525, 1874,
+ 1888, 1875, 1902, 1916, 1512, 1694, 1708, 1121,
+ 1289, 1303, 1330, 1485, 1499, 1681, 1304, 1317,
+ 926, 1500, 1109, 1123, 1305, 1318, 1501, 1513,
+ 1526, 1319, 1514, 1695, 1709, 1124, 1320, 1331,
+ 1502, 1515, 1710, 1722, 1332, 1527, 1137, 1540,
+ 1333, 1528, 1723, 942, 1138, 1334, 1345, 1529,
+ 1724, 1696, 1516, 1697, 1711, 1918, 1736, 1905,
+ 1346, 1530, 1541, 1725, 1904, 1682, 1877, 1891,
+ 1698, 1906, 1919, 1920, 1892, 1712, 1893, 1907,
+ 2114, 1932, 1542, 1726, 1737, 1921, 1123, 1124,
+ 1305, 1318, 1319, 1501, 1502, 1513, 1514, 1111,
+ 1125, 1307, 1320, 1503, 1515, 1321, 1516, 1137,
+ 1331, 1332, 1527, 1710, 1711, 746, 930, 942,
+ 1126, 1138, 1322, 1333, 1504, 1517, 1528, 1712,
+ 1334, 943, 1139, 1529, 1335, 1530, 1345, 1346,
+ 1541, 1724, 1725, 944, 1140, 1152, 1336, 1347,
+ 1531, 1542, 1726, 1697, 1698, 1518, 1699, 1713,
+ 1348, 1532, 1543, 1727, 1709, 1723, 1906, 1907,
+ 1700, 1908, 1737, 1920, 1921, 1738, 1922, 1893,
+ 1894, 1714, 1895, 1909, 1544, 1728, 1739, 1923,
+ 930, 1112, 1124, 1125, 1126, 1307, 1308, 1320,
+ 1321, 1503, 1504, 1515, 1516, 1322, 1517, 1137,
+ 942, 1138, 1518, 551, 746, 747, 943, 1139,
+ 1332, 1333, 1334, 1528, 1529, 1712, 1713, 552,
+ 748, 931, 944, 1127, 1140, 1323, 1335, 1505,
+ 1530, 1714, 1336, 1531, 1152, 1532, 957, 1153,
+ 1346, 1347, 1348, 1542, 1543, 1726, 1727, 566,
+ 945, 958, 1141, 1154, 1337, 1349, 1544, 1728,
+ 1699, 1700, 1519, 1350, 1533, 1545, 1711, 1724,
+ 1725, 1908, 1909, 1701, 1910, 1738, 1739, 1922,
+ 1923, 1740, 1924, 1895, 1896, 1715, 1546, 1729,
+ 1741, 931, 1113, 1126, 1127, 1309, 1322, 1505,
+ 1517, 1518, 1323, 932, 1114, 1128, 1310, 1506,
+ 1519, 1324, 552, 735, 747, 748, 942, 943,
+ 944, 1138, 1139, 1140, 1334, 1335, 1714, 553,
+ 736, 749, 945, 1141, 1336, 1520, 1715, 1530,
+ 1531, 1532, 1337, 554, 750, 933, 946, 1129,
+ 1142, 1325, 1507, 1533, 1716, 1338, 1521, 566,
+ 957, 958, 1152, 1153, 1154, 1348, 1349, 1728,
+ 567, 763, 959, 1155, 1350, 1534, 1729, 1544,
+ 1545, 1546, 1351, 568, 764, 947, 960, 1143,
+ 1156, 1339, 1547, 1730, 1701, 1702, 1713, 1727,
+ 1352, 1535, 1910, 1911, 1726, 1703, 1912, 1717,
+ 1924, 1925, 1740, 1741, 1742, 1743, 1926, 1897,
+ 1898, 1909, 1923, 1548, 1731, 933, 1115, 1128,
+ 1129, 1311, 1324, 1507, 1520, 1325, 934, 1116,
+ 1130, 1312, 1508, 1521, 1326, 554, 737, 750,
+ 945, 946, 1141, 1142, 1337, 1716, 555, 738,
+ 751, 947, 1143, 1338, 1522, 1717, 1533, 1534,
+ 1339, 556, 752, 948, 1144, 1535, 1718, 1340,
+ 568, 764, 959, 960, 1155, 1156, 1351, 1730,
+ 569, 765, 961, 1157, 1352, 1536, 1731, 1547,
+ 1548, 1353, 570, 766, 962, 1158, 1549, 1732,
+ 1703, 1704, 1354, 1912, 1913, 1729, 1914, 1926,
+ 1927, 1743, 1744, 1745, 1928, 1899, 1900, 1550,
+ 1130, 1326, 1522, 556, 725, 739, 752, 921,
+ 935, 948, 1117, 1144, 1299, 1313, 1495, 1509,
+ 1718, 1131, 1327, 1523, 557, 726, 740, 753,
+ 922, 936, 949, 1118, 1145, 1300, 1314, 1496,
+ 1510, 1719, 1132, 1328, 947, 1143, 1339, 1340,
+ 1341, 1524, 1535, 1536, 1537, 766, 962, 558,
+ 754, 767, 1720, 570, 1158, 1732, 1354, 1159,
+ 1733, 362, 1342, 1355, 1538, 961, 1157, 1353,
+ 1549, 1550, 1551, 1691, 1705, 1692, 1706, 1734,
+ 1914, 1915, 1731, 1916, 1928, 1929, 1745, 1746,
+ 1747, 1887, 1901, 1888, 1902, 1930, 1345, 1346,
+ 1347, 1530, 1541, 1152, 1348, 1531, 1542, 957,
+ 1153, 1543, 1349, 1544, 1360, 1555, 1738, 1739,
+ 958, 1154, 1350, 1361, 1545, 1556, 1740, 1362,
+ 1546, 1557, 1741, 1726, 1737, 1727, 1751, 1934,
+ 1935, 1936, 1742, 1753, 1937, 1532, 959, 1155,
+ 1351, 1364, 1547, 1560, 1754, 1728, 1938, 1743,
+ 1949, 1756, 983, 1178, 1179, 1375, 1571, 1376,
+ 1624, 1387, 1572, 1638, 1583, 1768, 1597, 1598,
+ 1611, 1779, 1652, 1585, 1780, 1573, 1807, 1975,
+ 1769, 2030, 1989, 1375, 1376, 1571, 1377, 1572,
+ 1573, 1768, 1387, 1583, 1378, 1574, 1769, 1597,
+ 1779, 998, 1390, 1585, 1598, 1599, 1611, 1770,
+ 1780, 1612, 1430, 1600, 1613, 1975, 1625, 1807,
+ 1587, 1626, 1795, 1808, 1989, 1990, 1796, 1809,
+ 1821, 1978, 1991, 1639, 1822, 1783, 1624, 1638,
+ 1652, 2030, 1835, 1862, 2017, 1377, 1378, 1572,
+ 1573, 1768, 1574, 1769, 1770, 1390, 1585, 1195,
+ 1379, 1575, 1598, 1599, 1780, 1000, 1196, 1209,
+ 1392, 1405, 1418, 1431, 1587, 1588, 1600, 1601,
+ 1613, 1771, 1795, 1430, 1612, 1614, 1406, 1419,
+ 1432, 1602, 1615, 1783, 1796, 1626, 1808, 1627,
+ 1809, 1628, 1784, 1797, 1810, 1990, 1978, 1991,
+ 1798, 1811, 1979, 1992, 1822, 1823, 2005, 1824,
+ 1980, 1993, 2006, 1611, 1625, 1807, 1444, 1639,
+ 1640, 1821, 1445, 1458, 1641, 1653, 1835, 1836,
+ 1989, 2017, 1837, 2018, 1849, 2031, 1850, 2019,
+ 2032, 1379, 1574, 1769, 1770, 1575, 1380, 1771,
+ 1576, 1390, 1392, 1772, 1196, 1405, 1587, 1406,
+ 1588, 1197, 1393, 1381, 1407, 1577, 1589, 1210,
+ 1418, 1419, 1600, 1601, 1783, 1420, 1602, 1784,
+ 1211, 1198, 1394, 1421, 1603, 1773, 1785, 1433,
+ 1434, 1615, 1616, 1797, 1798, 1212, 1408, 1435,
+ 1590, 1617, 1799, 1604, 1614, 1796, 1629, 1811,
+ 1980, 1786, 1981, 1630, 1812, 1631, 1813, 1979,
+ 1978, 1993, 1994, 1995, 1800, 1810, 1992, 1825,
+ 2007, 1982, 1826, 2008, 1827, 2009, 1381, 1576,
+ 1772, 1577, 1382, 1773, 1578, 1393, 1394, 1774,
+ 1198, 1407, 1589, 1408, 1590, 1199, 1395, 1409,
+ 1591, 1970, 1212, 1421, 1603, 1785, 1422, 1604,
+ 1786, 1213, 1200, 1396, 1423, 1605, 1787, 1436,
+ 1618, 1800, 1214, 1410, 1437, 1592, 1619, 1801,
+ 1606, 1617, 1799, 1982, 1788, 1983, 1632, 1814,
+ 1633, 1815, 1981, 1996, 1997, 1802, 1813, 1995,
+ 1984, 1828, 2010, 1829, 2011, 1450, 1424, 1451,
+ 1620, 1646, 1464, 1647, 1438, 1465, 1634, 1660,
+ 1842, 1661, 1816, 1843, 2024, 1830, 1998, 2025,
+ 1856, 2038, 1857, 2012, 2039, 1578, 1774, 1383,
+ 1970, 1187, 1396, 1579, 1775, 1384, 1971, 1188,
+ 1397, 1580, 1395, 1004, 1018, 1200, 1214, 1409,
+ 1410, 1423, 1591, 1592, 1605, 1787, 1005, 1019,
+ 1201, 1215, 1411, 1593, 1776, 1213, 1227, 1424,
+ 1606, 1788, 1438, 1620, 1802, 1425, 1607, 1789,
+ 1439, 1621, 1803, 1972, 1242, 1256, 1452, 1634,
+ 1816, 1984, 1006, 1202, 1243, 1257, 1398, 1453,
+ 1594, 1635, 1817, 1985, 1466, 1648, 1830, 1412,
+ 1467, 1649, 1831, 1619, 1801, 1998, 1999, 2012,
+ 1608, 1790, 2013, 1983, 1662, 1844, 2026, 1663,
+ 1845, 2027, 2166, 2167, 1815, 1997, 2168, 1804,
+ 1986, 1384, 1580, 1776, 1385, 1972, 1398, 1581,
+ 1006, 1202, 1412, 1594, 1777, 1973, 1425, 1439,
+ 1607, 1621, 1789, 1803, 1426, 1608, 1790, 1440,
+ 1622, 1804, 1203, 1399, 1413, 1595, 1244, 1258,
+ 1454, 1636, 1818, 1986, 1468, 1650, 1832, 1609,
+ 1635, 1817, 2000, 1791, 2014, 1985, 1999, 1664,
+ 1846, 2028, 2168, 1831, 2013, 2169, 2182, 1860,
+ 2042, 1623, 2027, 2196, 2056, 2210, 1637, 1833,
+ 2183, 2181, 2195, 2224, 2365, 2364, 2209, 2238,
+ 2223, 2378, 2392, 2406, 2391, 2252, 2420, 1392,
+ 1405, 1406, 1418, 1419, 1431, 1432, 1445, 1587,
+ 1588, 1600, 1601, 1613, 1614, 1615, 1627, 1628,
+ 1783, 1795, 1796, 1809, 1420, 1433, 1446, 1602,
+ 1616, 1629, 1784, 1797, 1810, 1459, 1641, 1642,
+ 1823, 1434, 1447, 1460, 1630, 1643, 1798, 1811,
+ 1824, 1978, 1979, 1655, 1837, 1992, 1656, 1812,
+ 1825, 1838, 1980, 1993, 1991, 2005, 2006, 2019,
+ 1826, 1839, 1994, 2007, 2020, 1851, 2033, 1852,
+ 2008, 2021, 2034, 1448, 1461, 1644, 1657, 1473,
+ 1462, 1474, 1658, 1669, 1670, 1840, 1853, 2047,
+ 1854, 2022, 2035, 2048, 1865, 1866, 2036, 2049,
+ 1393, 1407, 1420, 1433, 1434, 1447, 1588, 1589,
+ 1602, 1615, 1616, 1629, 1630, 1784, 1797, 1798,
+ 1811, 1421, 1448, 1603, 1617, 1785, 1812, 1394,
+ 1408, 1435, 1590, 1631, 1799, 1422, 1449, 1604,
+ 1618, 1786, 1813, 1461, 1643, 1644, 1825, 1462,
+ 1826, 1645, 1436, 1463, 1632, 1800, 1827, 1980,
+ 1981, 1657, 1839, 1994, 1658, 1840, 1995, 1659,
+ 1814, 1841, 1982, 1993, 2007, 2008, 2009, 2021,
+ 2022, 1828, 1996, 2023, 1853, 2035, 1854, 2036,
+ 1855, 2010, 2037, 1424, 1438, 1592, 1606, 1620,
+ 1634, 1788, 1802, 1397, 1452, 1466, 1648, 1816,
+ 1830, 1411, 1425, 1593, 1607, 1789, 1621, 1439,
+ 1635, 1803, 1398, 1453, 1467, 1649, 1817, 1831,
+ 1412, 1426, 1594, 1608, 1790, 1662, 1844, 1663,
+ 1845, 1440, 1622, 1804, 1984, 1998, 2012, 1985,
+ 1999, 2013, 2026, 1858, 2027, 1859, 1986, 2040,
+ 2041, 1636, 1818, 2000, 2054, 2055, 1480, 1481,
+ 1454, 1676, 1677, 1468, 1650, 1832, 1872, 1873,
+ 2014, 1664, 1846, 2028, 2068, 2069, 1418, 1431,
+ 1432, 1444, 1445, 1458, 1599, 1600, 1612, 1613,
+ 1614, 1626, 1627, 1639, 1640, 1641, 1653, 1795,
+ 1796, 1808, 1809, 1821, 1822, 1835, 1419, 1433,
+ 1446, 1459, 1601, 1615, 1628, 1642, 1655, 1783,
+ 1797, 1810, 1823, 1836, 1849, 1447, 1460, 1629,
+ 1656, 1811, 1824, 1837, 1850, 1991, 1992, 2005,
+ 1667, 2018, 1643, 1668, 1825, 1838, 1851, 2006,
+ 2019, 1978, 2017, 2031, 1979, 1993, 2032, 2045,
+ 1852, 2007, 2020, 2033, 2046, 1863, 1839, 1864,
+ 2021, 2034, 2047, 1421, 1435, 1448, 1461, 1462,
+ 1603, 1616, 1617, 1630, 1643, 1644, 1657, 1658,
+ 1785, 1799, 1812, 1825, 1826, 1839, 1449, 1631,
+ 1645, 1813, 1840, 1422, 1436, 1463, 1604, 1618,
+ 1659, 1786, 1800, 1827, 1450, 1632, 1646, 1814,
+ 1841, 1475, 1853, 1476, 1854, 1464, 1477, 1660,
+ 1828, 1855, 2008, 1995, 2009, 1996, 1671, 2022,
+ 1672, 2023, 1673, 1842, 2010, 1981, 2021, 2035,
+ 2036, 1982, 2037, 2049, 2050, 1856, 2024, 2051,
+ 1867, 1868, 1869, 2038, 1423, 1437, 1450, 1464,
+ 1605, 1618, 1619, 1632, 1646, 1660, 1787, 1801,
+ 1814, 1828, 1451, 1633, 1647, 1815, 1842, 1424,
+ 1438, 1465, 1606, 1620, 1661, 1788, 1802, 1829,
+ 1452, 1634, 1648, 1816, 1843, 1478, 1856, 1466,
+ 1479, 1662, 1830, 1857, 2010, 1997, 2011, 1998,
+ 2024, 1674, 2025, 1675, 1844, 2012, 1983, 2038,
+ 1984, 2039, 2052, 1858, 2026, 2053, 1870, 1871,
+ 2040, 1492, 1480, 1493, 1676, 1688, 1689, 1506,
+ 1884, 1494, 1507, 1690, 1872, 1885, 2054, 2066,
+ 1702, 2067, 1703, 2080, 1886, 2068, 2081, 1898,
+ 1899, 1638, 1652, 1583, 1597, 1611, 1625, 1680,
+ 1779, 1862, 2030, 1430, 1598, 1612, 1639, 1780,
+ 1807, 1821, 1975, 1989, 1444, 1626, 1653, 1808,
+ 1835, 1458, 1640, 1822, 1445, 1459, 1627, 1641,
+ 1667, 1809, 1823, 1836, 1849, 1876, 2058, 1655,
+ 1668, 1837, 1850, 1694, 2017, 1473, 1485, 1681,
+ 1851, 1863, 1512, 1890, 2031, 2072, 1669, 1682,
+ 1864, 2018, 2032, 2045, 2046, 1708, 1865, 1877,
+ 2059, 1990, 2005, 2019, 2033, 2047, 2086, 1878,
+ 2060, 1904, 2061, 2073, 1446, 1459, 1460, 1627,
+ 1628, 1640, 1641, 1642, 1655, 1667, 1668, 1810,
+ 1823, 1824, 1836, 1837, 1849, 1850, 1447, 1461,
+ 1473, 1629, 1643, 1656, 1669, 1811, 1825, 1838,
+ 1851, 1485, 1863, 1474, 1657, 1670, 1839, 1852,
+ 1864, 1681, 1682, 1475, 1487, 1683, 1853, 1865,
+ 1499, 1877, 1488, 1500, 1671, 1684, 1866, 1878,
+ 2019, 2032, 2020, 2033, 2046, 2034, 2047, 2048,
+ 1695, 2060, 1696, 1867, 1879, 2061, 2006, 2045,
+ 2007, 2021, 2059, 2035, 2049, 2073, 1880, 2062,
+ 2074, 1891, 1892, 2063, 2075, 1448, 1461, 1462,
+ 1473, 1474, 1629, 1630, 1642, 1643, 1644, 1656,
+ 1657, 1669, 1670, 1812, 1825, 1826, 1838, 1839,
+ 1851, 1852, 1475, 1658, 1671, 1840, 1853, 1487,
+ 1865, 1476, 1488, 1672, 1854, 1866, 1683, 1684,
+ 1489, 1685, 1867, 1501, 1879, 1490, 1502, 1686,
+ 1868, 1880, 2021, 2034, 2022, 2035, 2048, 2036,
+ 2049, 2050, 1697, 2062, 1698, 1881, 2063, 2008,
+ 2047, 2061, 2075, 1882, 2064, 2076, 1893, 1894,
+ 2077, 1449, 1463, 1475, 1476, 1631, 1644, 1645,
+ 1658, 1671, 1672, 1813, 1827, 1840, 1853, 1854,
+ 1659, 1841, 1450, 1464, 1477, 1632, 1646, 1673,
+ 1814, 1828, 1855, 1660, 1842, 1489, 1867, 1490,
+ 1868, 1478, 1491, 1674, 1856, 1869, 1685, 1686,
+ 1687, 1503, 1881, 1504, 1882, 1492, 1505, 1688,
+ 1870, 1883, 2036, 2023, 2037, 2024, 2050, 2051,
+ 2038, 2052, 1699, 2064, 1700, 2065, 1701, 2009,
+ 2049, 2010, 2063, 2077, 2078, 1884, 2066, 2079,
+ 1895, 1896, 1897, 1480, 1648, 1662, 1676, 1844,
+ 1858, 1439, 1453, 1494, 1621, 1635, 1803, 1817,
+ 1872, 1467, 1649, 1663, 1831, 1845, 1481, 1677,
+ 1859, 1440, 1454, 1495, 1622, 1636, 1804, 1818,
+ 1873, 1468, 1650, 1664, 1832, 1846, 1690, 1691,
+ 1482, 1860, 1508, 1886, 1509, 1887, 1678, 1704,
+ 1705, 1496, 1874, 2040, 2054, 1999, 2013, 2027,
+ 2041, 2055, 2000, 2014, 2028, 2068, 2069, 2042,
+ 2056, 2082, 1900, 2083, 1901, 1692, 2070, 2096,
+ 2097, 1680, 1694, 1876, 1512, 1890, 1289, 1485,
+ 1653, 1667, 1708, 1835, 1836, 1849, 1850, 1863,
+ 2031, 2045, 2072, 1668, 1681, 1864, 1487, 1499,
+ 1669, 1682, 1695, 1865, 1877, 1904, 2086, 1500,
+ 1683, 1696, 1878, 1303, 2059, 1501, 1513, 1709,
+ 1879, 1891, 1330, 1526, 2100, 1514, 1697, 1710,
+ 1892, 2060, 2073, 2074, 1722, 1893, 1905, 2087,
+ 2032, 2046, 2061, 2075, 1906, 2088, 1918, 2089,
+ 2101, 1487, 1488, 1499, 1500, 1669, 1670, 1682,
+ 1683, 1695, 1696, 1865, 1866, 1877, 1878, 1489,
+ 1501, 1671, 1684, 1697, 1867, 1879, 1513, 1891,
+ 1502, 1514, 1685, 1698, 1880, 1892, 1709, 1710,
+ 1503, 1515, 1711, 1881, 1893, 1905, 1516, 1699,
+ 1712, 1894, 1906, 2061, 2062, 2074, 2075, 2076,
+ 2088, 1895, 1907, 2089, 2073, 2063, 2087, 2077,
+ 2101, 1908, 2090, 2102, 2091, 2103, 1490, 1672,
+ 1868, 1686, 1504, 1700, 1882, 1517, 1713, 1518,
+ 1714, 1896, 2064, 2078, 1909, 1910, 2092, 2104,
+ 2105, 1491, 1503, 1504, 1673, 1686, 1699, 1700,
+ 1869, 1881, 1882, 1687, 1492, 1505, 1674, 1701,
+ 1870, 1883, 1688, 1517, 1895, 1518, 1896, 1506,
+ 1519, 1702, 1884, 1897, 1713, 1714, 1715, 1909,
+ 1910, 1520, 1716, 1898, 1911, 2065, 2066, 2078,
+ 2079, 2080, 2092, 2093, 2077, 2091, 2105, 2106,
+ 1912, 2094, 2107, 1493, 1506, 1675, 1688, 1702,
+ 1871, 1884, 1689, 1494, 1507, 1676, 1703, 1872,
+ 1885, 1690, 1520, 1898, 1508, 1521, 1704, 1886,
+ 1899, 1716, 1717, 1912, 1522, 1718, 1900, 1913,
+ 2067, 2068, 2080, 2081, 2082, 2094, 2095, 2108,
+ 1914, 2096, 2109, 1508, 1690, 1704, 1886, 1481,
+ 1522, 1677, 1859, 1900, 1495, 1691, 1873, 1509,
+ 1705, 1887, 1482, 1523, 1678, 1860, 1901, 1496,
+ 1692, 1874, 1718, 1719, 1510, 1888, 1914, 1915,
+ 1706, 1524, 1902, 2082, 2055, 2069, 2083, 2056,
+ 2070, 2096, 2097, 2084, 2110, 2111, 1720, 2098,
+ 1496, 1678, 1692, 1874, 1510, 1706, 1888, 1483,
+ 1524, 1902, 1301, 1497, 1720, 1875, 1315, 1511,
+ 2071, 1916, 1707, 1525, 1903, 1721, 2070, 2084,
+ 2098, 2085, 2112, 2099, 1708, 1904, 1330, 1526,
+ 2100, 1317, 1499, 1500, 1513, 1681, 1682, 1695,
+ 1722, 1877, 1878, 1891, 2073, 1696, 1709, 1514,
+ 1892, 1515, 1697, 1710, 1893, 1905, 1918, 1711,
+ 1906, 2087, 1331, 1527, 2101, 1332, 1516, 1528,
+ 1712, 1723, 1894, 1907, 2102, 1540, 2114, 1724,
+ 1736, 1529, 1919, 1932, 1725, 1920, 1345, 1541,
+ 2115, 1346, 1530, 1542, 1726, 1737, 1921, 2116,
+ 2088, 1908, 2089, 2103, 2128, 1738, 1922, 1933,
+ 2117, 2074, 2090, 2104, 2310, 1934, 2118, 2129,
+ 1515, 1516, 1697, 1698, 1710, 1711, 1893, 1894,
+ 1905, 1906, 1517, 1699, 1712, 1895, 1907, 1527,
+ 1528, 1713, 1908, 1332, 1333, 1529, 1723, 1724,
+ 1919, 2102, 2103, 1334, 1518, 1530, 1714, 1725,
+ 1896, 1909, 1920, 2104, 1726, 1531, 1921, 1541,
+ 1542, 1727, 1922, 1346, 1347, 1543, 1737, 1738,
+ 1933, 2116, 2117, 1348, 1532, 1544, 1728, 1739,
+ 1923, 1934, 2118, 2089, 2090, 1910, 2091, 2105,
+ 1740, 1924, 1935, 2119, 2101, 2115, 2092, 2129,
+ 2130, 2106, 1936, 2120, 2131, 1517, 1518, 1699,
+ 1700, 1712, 1713, 1895, 1896, 1907, 1908, 1714,
+ 1909, 1529, 1530, 1910, 1334, 1335, 1531, 1724,
+ 1725, 1726, 1920, 1921, 2104, 2105, 1336, 1519,
+ 1532, 1715, 1727, 1897, 1922, 2106, 1728, 1923,
+ 1543, 1544, 1924, 1348, 1349, 1545, 1738, 1739,
+ 1740, 1934, 1935, 2118, 2119, 1350, 1533, 1546,
+ 1729, 1741, 1936, 2120, 2091, 2092, 1911, 1742,
+ 1925, 1937, 2103, 2116, 2117, 2093, 2130, 2131,
+ 2132, 2107, 1938, 2121, 2133, 1519, 1701, 1714,
+ 1897, 1909, 1910, 1715, 1520, 1702, 1898, 1911,
+ 1716, 1336, 1530, 1531, 1532, 1726, 1727, 2106,
+ 1337, 1533, 1728, 1912, 2107, 1922, 1923, 1924,
+ 1729, 1338, 1521, 1534, 1717, 1899, 1925, 2108,
+ 1730, 1913, 1350, 1544, 1545, 1546, 1740, 1741,
+ 2120, 1351, 1547, 1742, 1926, 2121, 1936, 1937,
+ 1938, 1743, 1352, 1535, 1548, 1731, 1939, 2122,
+ 2093, 2094, 2105, 2119, 1744, 1927, 2118, 2095,
+ 2109, 2132, 2133, 2134, 2135, 1940, 2123, 1521,
+ 1703, 1716, 1899, 1912, 1717, 1522, 1704, 1900,
+ 1913, 1718, 1338, 1533, 1534, 1729, 2108, 1339,
+ 1535, 1730, 1914, 2109, 1925, 1926, 1731, 1340,
+ 1536, 1927, 2110, 1732, 1352, 1547, 1548, 1743,
+ 2122, 1353, 1549, 1744, 1928, 2123, 1939, 1940,
+ 1745, 1354, 1550, 1941, 2124, 2095, 2096, 1746,
+ 2121, 2135, 2136, 2137, 1942, 1718, 1914, 1340,
+ 1509, 1523, 1536, 1691, 1705, 1887, 1901, 2110,
+ 1719, 1915, 1341, 1510, 1524, 1537, 1692, 1706,
+ 1888, 1902, 2111, 1720, 1535, 1731, 1732, 1733,
+ 1916, 1927, 1928, 1929, 1550, 1342, 1538, 1551,
+ 2112, 1354, 2124, 1746, 1355, 2125, 1734, 1747,
+ 1549, 1745, 1930, 1941, 1942, 1943, 2083, 2097,
+ 2084, 2098, 2126, 2123, 2137, 2138, 2139, 1524,
+ 1706, 1720, 1902, 1916, 1342, 1511, 1525, 1538,
+ 1707, 1903, 2112, 1721, 1734, 1930, 1147, 1343,
+ 1539, 1735, 2113, 1356, 1552, 2099, 2126, 1748,
+ 1931, 1944, 1357, 1553, 2127, 2098, 2085, 1749,
+ 2140, 1945, 2294, 2308, 2336, 2335, 1958, 2154,
+ 2504, 2505, 2518, 2490, 1540, 1736, 1932, 1358,
+ 1527, 1528, 1554, 1723, 1724, 1919, 2128, 1345,
+ 1541, 1920, 2115, 1542, 1725, 1737, 1921, 1738,
+ 1543, 1933, 1946, 1739, 1934, 1555, 2129, 1360,
+ 1544, 1556, 1740, 1751, 1935, 2130, 2116, 1936,
+ 2131, 2117, 1753, 1948, 2132, 2143, 2324, 2325,
+ 2144, 1922, 1923, 1545, 1741, 1361, 1557, 1362,
+ 1546, 1742, 1937, 1754, 1938, 1949, 2133, 2118,
+ 2119, 2134, 2145, 1544, 1545, 1739, 1740, 1741,
+ 1924, 1935, 1546, 1742, 1936, 1937, 1557, 1938,
+ 1362, 1753, 1754, 1948, 1949, 2132, 2133, 1364,
+ 1547, 1560, 1743, 2134, 1756, 1939, 1951, 1952,
+ 2146, 2120, 2131, 2144, 2145, 2135, 2147, 1546,
+ 1741, 1742, 1925, 1937, 1351, 1547, 1730, 1743,
+ 1926, 1938, 2121, 1352, 1548, 1731, 1744, 1927,
+ 1939, 2122, 1364, 1560, 1754, 2134, 1365, 1561,
+ 1756, 1940, 2135, 1951, 1952, 1757, 1366, 1549,
+ 1562, 1745, 1953, 2136, 1758, 1941, 2133, 2148,
+ 1954, 2149, 2123, 2146, 2147, 2137, 2150, 1548,
+ 1744, 1927, 1353, 1549, 1732, 1745, 1928, 1940,
+ 2123, 1354, 1550, 1746, 1941, 2124, 1366, 1561,
+ 1562, 1757, 2136, 1367, 1563, 1758, 1942, 2137,
+ 1953, 1954, 1759, 1564, 1955, 2138, 1760, 2150,
+ 1956, 2151, 2149, 2152, 2319, 2320, 2332, 2333,
+ 2334, 2346, 2347, 2331, 2345, 2348, 2515, 2516,
+ 2528, 2529, 2530, 2527, 2541, 1550, 1746, 1733,
+ 1929, 1942, 1355, 1551, 1564, 2125, 1747, 1734,
+ 1930, 1943, 1356, 1552, 1565, 2126, 2138, 1760,
+ 1369, 2139, 1748, 1761, 1563, 1759, 1944, 1955,
+ 1956, 1957, 1370, 1566, 2140, 2152, 2153, 1762,
+ 2151, 1958, 2321, 2334, 2335, 2348, 2154, 2336,
+ 2349, 2333, 2347, 2517, 2518, 2530, 2531, 2544,
+ 2545, 2529, 1356, 1552, 1748, 1930, 2126, 1735,
+ 1931, 1944, 1357, 1553, 1566, 2127, 1749, 1370,
+ 2140, 1762, 1945, 1958, 1371, 1567, 1763, 2154,
+ 1959, 2155, 2336, 2518, 2545, 2547, 2349, 2741,
+ 2742, 983, 1178, 1179, 1375, 1571, 1624, 1638,
+ 1572, 1768, 1583, 1387, 1779, 1769, 1597, 1652,
+ 2030, 1780, 1975, 1989, 1807, 1990, 2212, 1808,
+ 1821, 1991, 2017, 2226, 1978, 2240, 1822, 1835,
+ 1992, 2005, 2018, 2031, 2019, 2032, 2045, 2254,
+ 1836, 1849, 1979, 2006, 2046, 2202, 2228, 2241,
+ 2409, 1770, 1585, 1598, 1599, 1612, 1795, 1600,
+ 1613, 1783, 1796, 1809, 1810, 1823, 1993, 1980,
+ 1824, 1837, 1994, 2007, 2020, 2033, 2176, 2189,
+ 2216, 2242, 1611, 1862, 2058, 1850, 2072, 2423,
+ 2268, 2371, 2203, 2424, 2437, 1768, 1769, 1770,
+ 1585, 1780, 1575, 1587, 1599, 1600, 1771, 1783,
+ 1795, 1978, 1390, 1598, 1612, 1613, 1626, 1779,
+ 1796, 1807, 1808, 1809, 1821, 1975, 1989, 1990,
+ 1991, 1588, 1601, 1614, 1784, 1797, 1979, 1992,
+ 1822, 1810, 1980, 1993, 1823, 2005, 2006, 1798,
+ 1811, 1824, 1994, 2007, 2019, 2020, 2018, 2032,
+ 2033, 1812, 1825, 2008, 2021, 2034, 2176, 2189,
+ 2202, 2046, 2190, 2203, 2017, 2228, 2216, 2031,
+ 2371, 2241, 2409, 2204, 2217, 2230, 1835, 1836,
+ 1849, 1837, 1850, 2045, 1838, 1851, 2047, 2242,
+ 2423, 2243, 2424, 1575, 1770, 1771, 1576, 1772,
+ 1784, 1587, 1783, 1796, 1978, 1588, 1601, 1602,
+ 1797, 1979, 1980, 1798, 1577, 1589, 1603, 1773,
+ 1785, 1981, 1810, 1992, 1811, 1993, 1616, 1799,
+ 1812, 1994, 1590, 1786, 1813, 1995, 1825, 1826,
+ 2007, 2008, 1604, 1800, 1827, 1982, 2009, 1996,
+ 1600, 1795, 1809, 1991, 2006, 2021, 2176, 2177,
+ 2022, 2023, 2005, 2189, 2020, 2190, 2191, 2034,
+ 2035, 2202, 2203, 2036, 2204, 1814, 2010, 2037,
+ 2178, 2205, 1990, 2217, 2192, 2019, 2373, 2218,
+ 2219, 2371, 2361, 2216, 2386, 2387, 2230, 2231,
+ 2232, 2206, 2233, 2374, 2401, 1577, 1772, 1773,
+ 1785, 1578, 1774, 1786, 1970, 1799, 1981, 1590,
+ 1604, 1982, 1603, 1617, 1800, 1813, 1995, 1591,
+ 1787, 1605, 1801, 1983, 2166, 1814, 1996, 1592,
+ 1788, 1815, 1997, 1828, 2010, 1606, 1802, 1829,
+ 1984, 2011, 1998, 2009, 2178, 2179, 2024, 2025,
+ 2177, 2023, 2191, 2192, 2193, 2037, 2205, 2038,
+ 2206, 1816, 2012, 2039, 2180, 2207, 1994, 2176,
+ 2361, 2362, 2194, 2008, 2190, 2204, 2374, 2220,
+ 2221, 2373, 2219, 2387, 2388, 2233, 2401, 2234,
+ 2208, 2235, 1970, 1579, 1592, 1774, 1775, 1787,
+ 1788, 1983, 2166, 1971, 1580, 1593, 1776, 1789,
+ 2167, 1972, 1801, 1606, 1802, 1815, 1984, 1997,
+ 1607, 1803, 1985, 1605, 1619, 1816, 1998, 1620,
+ 1634, 1830, 2012, 1817, 1999, 1594, 1621, 1635,
+ 1831, 2013, 2168, 1648, 1844, 2026, 2180, 1608,
+ 1649, 1790, 1845, 1986, 2027, 2181, 1858, 2040,
+ 1804, 1859, 2041, 2011, 2194, 2195, 2208, 2000,
+ 2209, 2179, 2025, 2193, 2039, 2207, 2054, 2222,
+ 2055, 2223, 2362, 2363, 2364, 2236, 2014, 2182,
+ 2237, 2196, 2391, 2404, 2405, 2221, 2235, 2250,
+ 2251, 2419, 1784, 1797, 1798, 1810, 1811, 1823,
+ 1824, 1837, 1978, 1979, 1980, 1992, 1993, 2005,
+ 2006, 2007, 2019, 2020, 1812, 1825, 1838, 1994,
+ 2008, 2021, 1851, 2033, 2034, 1826, 1839, 1852,
+ 2022, 2035, 2047, 2048, 2176, 2189, 2032, 2046,
+ 2202, 1981, 2190, 2203, 2216, 2228, 1840, 1853,
+ 1995, 2036, 2049, 2204, 2217, 2230, 2218, 2231,
+ 2371, 2243, 2244, 2242, 2177, 2386, 2424, 2191,
+ 2232, 2245, 1836, 1849, 1850, 1991, 2018, 2031,
+ 2045, 1863, 1864, 2059, 2060, 2241, 1865, 2061,
+ 2255, 2256, 2409, 2423, 2437, 2257, 1785, 1799,
+ 1812, 1825, 1826, 1839, 1980, 1981, 1994, 2007,
+ 2008, 2021, 2022, 1813, 1840, 1995, 2009, 1786,
+ 1800, 1827, 1982, 2023, 1814, 1841, 1996, 2010,
+ 1853, 2035, 2036, 1854, 2037, 1828, 1855, 2024,
+ 2176, 2177, 2049, 2190, 2050, 2191, 2051, 2178,
+ 2034, 2048, 2189, 2202, 2203, 2204, 2216, 2217,
+ 2218, 2205, 1983, 2192, 2219, 2230, 2231, 2232,
+ 1842, 1997, 2038, 2206, 2233, 2220, 2373, 2245,
+ 2386, 2246, 2387, 2247, 2374, 2244, 2371, 2401,
+ 2179, 2388, 2415, 2428, 2193, 2234, 2429, 1787,
+ 1801, 1814, 1828, 1982, 1983, 1996, 2010, 2024,
+ 1815, 1842, 1997, 2011, 1788, 1802, 1829, 1984,
+ 2025, 1816, 1843, 1998, 2012, 2038, 1856, 2039,
+ 1830, 1857, 2026, 2178, 2179, 2192, 2052, 2193,
+ 2053, 2180, 2037, 2051, 2205, 2206, 2219, 2220,
+ 2207, 2194, 2221, 2233, 2234, 1844, 2040, 2208,
+ 2235, 2222, 2374, 2388, 2248, 2249, 2247, 2401,
+ 2415, 2417, 2429, 2430, 2236, 2404, 2431, 1870,
+ 1858, 1871, 2054, 2066, 2067, 2065, 2250, 2262,
+ 2263, 2261, 2443, 2444, 2445, 2432, 1816, 1830,
+ 1984, 1998, 2012, 2026, 1789, 1844, 1858, 2040,
+ 1803, 1817, 1985, 1999, 2013, 1831, 2027, 1790,
+ 1845, 1859, 2041, 1804, 1818, 1986, 2000, 2054,
+ 2055, 1832, 2014, 2180, 2194, 2208, 2181, 2195,
+ 2209, 2222, 2223, 2182, 2039, 2053, 2207, 2221,
+ 2236, 2237, 2235, 2068, 2250, 2028, 2069, 2196,
+ 2251, 2210, 2404, 2391, 2405, 2419, 2378, 2249,
+ 2417, 2432, 2433, 2431, 2264, 2446, 2224, 2265,
+ 2392, 2447, 1872, 1873, 1846, 1860, 2042, 2067,
+ 2082, 2056, 2083, 2238, 2406, 2263, 2445, 2278,
+ 2460, 2252, 2279, 2420, 2461, 1804, 1818, 1986,
+ 2000, 2014, 1832, 2028, 1791, 1846, 1860, 2042,
+ 1609, 1623, 2056, 1637, 1651, 1833, 1847, 2183,
+ 1678, 1874, 2210, 2224, 2182, 2196, 2070, 2238,
+ 2252, 2378, 2392, 2406, 2420, 2434, 2266, 2393,
+ 2448, 1888, 2084, 1875, 2071, 2280, 2462, 1706,
+ 1902, 2098, 2085, 2112, 2294, 1916, 2476, 1903,
+ 2099, 2308, 2617, 2490, 2504, 2030, 1862, 1611,
+ 1625, 1779, 1780, 1807, 1821, 1975, 1989, 2058,
+ 2212, 2226, 1808, 1835, 1990, 2017, 1822, 2031,
+ 1809, 1823, 1836, 1849, 1991, 2005, 2018, 2032,
+ 2045, 1639, 1680, 1876, 2240, 1837, 1850, 2019,
+ 2046, 2072, 2033, 1992, 2006, 2254, 1863, 2020,
+ 2047, 2059, 2228, 2241, 2202, 2242, 2268, 2409,
+ 2423, 2216, 2243, 2255, 2424, 2437, 1812, 1825,
+ 1826, 1838, 1839, 1851, 1852, 1993, 1994, 2006,
+ 2007, 2008, 2020, 2021, 2033, 2034, 2035, 2047,
+ 2048, 1840, 1853, 2022, 2036, 2049, 1865, 1854,
+ 1866, 2050, 2189, 2202, 2190, 2203, 2061, 2216,
+ 2062, 2204, 2217, 2060, 2176, 2228, 2230, 2242,
+ 2243, 1995, 2009, 2177, 2218, 2231, 2244, 1867,
+ 2023, 2063, 2191, 2232, 2245, 2246, 2386, 2257,
+ 2258, 2256, 2371, 2424, 2205, 2373, 2219, 2259,
+ 2387, 2428, 1813, 1827, 1840, 1853, 1854, 1995,
+ 2008, 2009, 2022, 2035, 2036, 2049, 2050, 1841,
+ 2023, 2037, 1814, 1828, 1855, 1996, 2010, 2051,
+ 1842, 2024, 2038, 1867, 1868, 1856, 1869, 2052,
+ 2204, 2191, 2205, 2192, 2063, 2218, 2064, 2219,
+ 2065, 2206, 2062, 2177, 2190, 2203, 2217, 2230,
+ 2231, 2232, 2244, 2245, 2178, 2246, 2233, 1997,
+ 2011, 2179, 2220, 2247, 2025, 2193, 2234, 2248,
+ 2387, 2401, 2388, 2259, 2260, 2415, 2261, 2258,
+ 2373, 2386, 2428, 2374, 2442, 2429, 2207, 2443,
+ 2221, 2430, 1862, 2030, 2058, 2212, 2226, 1876,
+ 1639, 1653, 1680, 1807, 1808, 1821, 1822, 1835,
+ 1849, 1989, 1990, 2017, 2031, 2072, 2240, 1836,
+ 2018, 2045, 1850, 2032, 1837, 1851, 1863, 2019,
+ 2033, 2046, 2059, 1694, 1890, 2254, 1864, 2047,
+ 2060, 1667, 2086, 1865, 1877, 2073, 1708, 1904,
+ 2268, 1878, 2061, 2074, 2228, 2241, 2242, 2100,
+ 2255, 2020, 2034, 2202, 2048, 2216, 2243, 2230,
+ 2256, 2282, 1891, 2062, 2075, 2087, 2244, 2257,
+ 2269, 2409, 2423, 2464, 2270, 2424, 2437, 2296,
+ 2451, 2478, 2258, 2271, 2283, 2453, 2465, 1838,
+ 1851, 1852, 1863, 1864, 2019, 2020, 2032, 2033,
+ 2034, 2046, 2047, 2059, 2060, 1839, 1853, 1865,
+ 2021, 2035, 2048, 2061, 1877, 1866, 1878, 2049,
+ 2062, 2073, 2074, 1867, 1879, 2075, 1891, 1880,
+ 1892, 2063, 2076, 2228, 2216, 2242, 2230, 2243,
+ 2244, 2087, 2256, 2088, 2257, 2189, 2202, 2203,
+ 2241, 2255, 2022, 2036, 2190, 2204, 2217, 2231,
+ 2050, 2218, 2245, 2269, 2232, 2258, 2270, 1893,
+ 2064, 2077, 2089, 2246, 2259, 2271, 2272, 2424,
+ 2283, 2284, 2453, 2423, 2437, 2451, 2386, 2465,
+ 2428, 2466, 2260, 2273, 2285, 2442, 2455, 2467,
+ 1840, 1853, 1854, 1865, 1866, 2021, 2022, 2034,
+ 2035, 2036, 2048, 2049, 2061, 2062, 1867, 2050,
+ 2063, 1879, 1868, 1880, 2064, 2075, 2076, 1881,
+ 2077, 1893, 1882, 1894, 2078, 2217, 2230, 2218,
+ 2231, 2244, 2232, 2245, 2246, 2089, 2258, 2090,
+ 2259, 2074, 2190, 2203, 2204, 2216, 2243, 2256,
+ 2257, 2023, 2037, 2191, 2205, 2051, 2219, 2088,
+ 2270, 2271, 2233, 2260, 2272, 1895, 2065, 2091,
+ 2247, 2273, 2274, 2428, 2442, 2285, 2286, 2455,
+ 2386, 2453, 2387, 2401, 2415, 2284, 2466, 2467,
+ 2429, 2456, 2468, 2261, 2287, 2443, 2469, 1841,
+ 1855, 1867, 1868, 2023, 2036, 2037, 2050, 2063,
+ 2064, 2051, 1842, 1856, 1869, 2024, 2038, 2065,
+ 2052, 1881, 1882, 1870, 1883, 2066, 2077, 2078,
+ 2079, 1895, 1896, 1884, 1897, 2080, 2062, 2076,
+ 2191, 2205, 2218, 2219, 2231, 2232, 2245, 2246,
+ 2192, 2206, 2220, 2233, 2247, 2260, 2025, 2039,
+ 2053, 2234, 2248, 2261, 2090, 2259, 2092, 2091,
+ 2274, 2067, 2093, 2262, 2275, 2258, 2193, 2207,
+ 2221, 2272, 2273, 2235, 2249, 2286, 2288, 2276,
+ 2387, 2401, 2415, 2428, 2442, 2388, 2429, 2443,
+ 2456, 2430, 2444, 2457, 2455, 2287, 2470, 2263,
+ 2289, 2458, 2471, 2417, 2468, 2469, 2431, 2445,
+ 1843, 1857, 1870, 2025, 2038, 2039, 2052, 2066,
+ 2053, 1844, 1858, 1871, 2026, 2040, 2067, 2054,
+ 1884, 1872, 1885, 2068, 2080, 2081, 1898, 1886,
+ 1899, 2082, 2065, 2079, 2193, 2207, 2220, 2221,
+ 2234, 2248, 2194, 2208, 2222, 2235, 2249, 2262,
+ 2236, 2250, 2263, 2093, 2094, 2276, 2095, 2264,
+ 2277, 2261, 2275, 2289, 2290, 2278, 2417, 2430,
+ 2444, 2404, 2431, 2445, 2458, 2432, 2446, 2459,
+ 2472, 2291, 2460, 2473, 2457, 2471, 1872, 2040,
+ 2054, 2068, 1831, 1845, 1886, 2013, 2027, 1859,
+ 2041, 2055, 1873, 2069, 1832, 1846, 1887, 2014,
+ 2028, 1860, 2042, 2056, 2082, 2083, 1874, 1900,
+ 1901, 2070, 2096, 2097, 1888, 2067, 2081, 2222,
+ 2236, 2250, 2195, 2209, 2223, 2237, 2251, 2196,
+ 2210, 2224, 2264, 2265, 2238, 2095, 2278, 2252,
+ 2279, 2263, 2181, 2182, 2277, 2110, 2292, 2084,
+ 2111, 2266, 2293, 2291, 2432, 2446, 2391, 2405,
+ 2419, 2433, 2447, 2392, 2406, 2420, 2460, 2461,
+ 2434, 2474, 2448, 2475, 2459, 2378, 2473, 2306,
+ 2488, 2280, 2307, 2462, 2489, 1890, 2072, 2086,
+ 1904, 1681, 1708, 1863, 1864, 1877, 2045, 2046,
+ 2059, 2100, 2241, 2268, 2060, 2073, 1878, 1879,
+ 1891, 2061, 2074, 2087, 2282, 1892, 2075, 2088,
+ 1695, 2255, 1893, 1905, 2101, 1722, 1918, 2296,
+ 1906, 2089, 2102, 2254, 2228, 2242, 2256, 2269,
+ 2270, 2114, 2283, 2243, 2062, 2244, 2257, 2076,
+ 2258, 2271, 2284, 2090, 2103, 2272, 2285, 2297,
+ 2423, 2437, 2464, 2478, 2451, 2492, 2298, 2424,
+ 2465, 2466, 2310, 2479, 2453, 2467, 2480, 2286,
+ 2299, 2468, 2481, 2493, 1879, 1880, 1891, 1892,
+ 2061, 2062, 2074, 2075, 2087, 2088, 1881, 1893,
+ 2063, 2076, 2089, 1905, 1894, 1906, 2077, 2090,
+ 2101, 2102, 1895, 1907, 2103, 1908, 2091, 2104,
+ 2257, 2258, 2270, 2271, 2272, 2284, 2285, 2244,
+ 2245, 2256, 2269, 2283, 2064, 2246, 2259, 2078,
+ 2260, 2273, 2297, 2286, 2298, 2092, 2105, 2274,
+ 2287, 2299, 2300, 2453, 2466, 2467, 2468, 2480,
+ 2481, 2465, 2479, 2442, 2455, 2456, 2469, 2493,
+ 2482, 2494, 2288, 2301, 2470, 2483, 2495, 1881,
+ 1882, 1893, 1894, 2063, 2064, 2076, 2077, 2089,
+ 2090, 1895, 2078, 2091, 1907, 1896, 1908, 2092,
+ 2103, 2104, 1909, 2105, 1910, 2106, 2259, 2260,
+ 2272, 2273, 2274, 2286, 2287, 2102, 2246, 2258,
+ 2271, 2284, 2285, 2065, 2247, 2079, 2261, 2298,
+ 2299, 2288, 2300, 2093, 2275, 2301, 2302, 2455,
+ 2456, 2468, 2469, 2470, 2482, 2483, 2442, 2467,
+ 2480, 2481, 2443, 2457, 2494, 2495, 2484, 2496,
+ 2289, 2471, 2497, 1883, 1895, 1896, 2065, 2078,
+ 2091, 2092, 2079, 1884, 1897, 2066, 2093, 2080,
+ 1909, 1910, 1898, 1911, 2094, 2105, 2106, 2107,
+ 1912, 2108, 2090, 2104, 2247, 2260, 2261, 2273,
+ 2274, 2248, 2262, 2275, 2288, 2067, 2081, 2276,
+ 2289, 2287, 2302, 2095, 2290, 2303, 2286, 2249,
+ 2263, 2300, 2301, 2277, 2304, 2443, 2456, 2457,
+ 2469, 2470, 2444, 2458, 2471, 2484, 2472, 2485,
+ 2483, 2498, 2291, 2486, 2499, 2482, 2445, 2459,
+ 2496, 2497, 2473, 1885, 1898, 2067, 2080, 2094,
+ 2081, 1886, 1899, 2068, 2095, 2082, 1912, 1900,
+ 1913, 2096, 2108, 2109, 1914, 2110, 2093, 2107,
+ 2249, 2262, 2263, 2276, 2250, 2264, 2277, 2290,
+ 2278, 2291, 2304, 2292, 2305, 2289, 2303, 2306,
+ 2445, 2458, 2459, 2472, 2446, 2460, 2473, 2486,
+ 2474, 2487, 2500, 2488, 2501, 2485, 2499, 1900,
+ 2082, 2096, 1873, 1914, 2069, 1887, 2083, 1901,
+ 2097, 1874, 1915, 2070, 1888, 2084, 2110, 2111,
+ 1902, 2098, 1916, 2095, 2109, 2264, 2278, 2251,
+ 2265, 2292, 2279, 2252, 2266, 2293, 2306, 2280,
+ 2307, 2291, 2237, 2238, 2305, 2124, 2112, 2125,
+ 2294, 2460, 2474, 2447, 2461, 2488, 2475, 2448,
+ 2462, 2489, 2502, 2476, 2503, 2487, 2433, 2434,
+ 2501, 2320, 2308, 2321, 2490, 1888, 2070, 2084,
+ 1902, 2098, 1875, 1916, 2071, 2085, 2112, 1903,
+ 2099, 2113, 2266, 2280, 2294, 2308, 2126, 1930,
+ 2476, 2490, 2504, 2462, 2505, 2518, 2100, 1722,
+ 1891, 1904, 1918, 2073, 2087, 2114, 2282, 2296,
+ 1709, 1892, 1905, 2074, 2269, 2088, 2101, 1906,
+ 1907, 2089, 2102, 2103, 2283, 1723, 1919, 2297,
+ 1724, 1908, 1920, 2104, 2115, 2298, 1736, 1932,
+ 2310, 2284, 2116, 2128, 1921, 2117, 1737, 1933,
+ 2311, 1738, 1922, 1934, 2118, 2129, 2312, 2270,
+ 2090, 2285, 2299, 2324, 2130, 2313, 2256, 2271,
+ 2272, 2286, 2300, 1946, 2492, 2493, 2314, 2325,
+ 2478, 2465, 2479, 2494, 2480, 2507, 2508, 2466,
+ 2481, 2495, 2326, 2509, 2467, 2468, 2482, 2496,
+ 1907, 1908, 2089, 2090, 2102, 2103, 1909, 2091,
+ 2104, 1919, 1920, 2105, 1724, 1725, 1921, 2115,
+ 2116, 2298, 2299, 1726, 1910, 1922, 2106, 2117,
+ 2300, 2118, 1923, 1933, 1934, 2119, 1738, 1739,
+ 1935, 2129, 2130, 2312, 2313, 1740, 1924, 1936,
+ 2120, 2131, 2314, 2285, 2286, 2297, 2092, 2287,
+ 2301, 2311, 2132, 2315, 2272, 2273, 2284, 2274,
+ 2288, 2302, 2325, 2326, 2316, 2327, 2494, 2495,
+ 2496, 2508, 2509, 2510, 2481, 2482, 2493, 2483,
+ 2497, 2507, 2328, 2511, 2468, 2469, 2480, 2470,
+ 2484, 2498, 2521, 2522, 1909, 1910, 2091, 2092,
+ 2104, 2105, 2106, 1921, 1922, 1726, 1727, 1923,
+ 2116, 2117, 2118, 2300, 2301, 1728, 1911, 1924,
+ 2107, 2119, 2302, 2120, 1935, 1936, 1740, 1741,
+ 1937, 2130, 2131, 2132, 2314, 2315, 1742, 1925,
+ 1938, 2121, 2133, 2316, 2287, 2288, 2299, 2093,
+ 2313, 2134, 2274, 2286, 2275, 2289, 2312, 2303,
+ 2326, 2327, 2328, 2317, 2329, 2496, 2497, 2498,
+ 2510, 2511, 2512, 2483, 2484, 2495, 2509, 2330,
+ 2470, 2482, 2471, 2485, 2508, 2499, 2522, 2523,
+ 2524, 1911, 2093, 2106, 2107, 1912, 2094, 2108,
+ 1728, 1922, 1923, 1924, 2118, 2119, 2302, 1729,
+ 1925, 2120, 2303, 2121, 1730, 1913, 1926, 2109,
+ 2304, 2122, 1742, 1936, 1937, 1938, 2132, 2133,
+ 2316, 1743, 1939, 2134, 2317, 2135, 1744, 1927,
+ 1940, 2123, 2318, 2275, 2288, 2289, 2301, 2276,
+ 2290, 2095, 2315, 2136, 2277, 2291, 2314, 2305,
+ 2328, 2329, 2330, 2331, 2319, 2498, 2499, 2500,
+ 2512, 2513, 2514, 2471, 2484, 2485, 2497, 2472,
+ 2486, 2511, 2332, 2473, 2487, 2510, 2501, 2524,
+ 2525, 2526, 2527, 1913, 2095, 2108, 2109, 1914,
+ 2096, 2110, 1730, 1925, 1926, 2121, 2304, 1731,
+ 1927, 2122, 2305, 2123, 1732, 1928, 2306, 2124,
+ 1744, 1939, 1940, 2135, 2318, 1745, 1941, 2136,
+ 2319, 2137, 1746, 1942, 2320, 2277, 2290, 2291,
+ 2278, 2292, 2138, 2317, 2331, 2332, 2333, 2500,
+ 2501, 2502, 2514, 2515, 2516, 2473, 2486, 2487,
+ 2474, 2488, 2334, 2513, 2527, 2528, 2529, 2110,
+ 1719, 1732, 1901, 1915, 1927, 1928, 2083, 2097,
+ 2123, 2124, 2279, 2292, 2306, 2111, 1720, 1733,
+ 1902, 1916, 1929, 2084, 2098, 2125, 2280, 2293,
+ 2307, 2112, 1746, 1942, 2320, 1734, 1747, 1930,
+ 1943, 2126, 2294, 2308, 2321, 1941, 2137, 2138,
+ 2139, 2334, 2335, 2319, 2333, 1944, 1957, 2140,
+ 2502, 2503, 2504, 2516, 2517, 2475, 2488, 2476,
+ 2489, 2490, 2518, 2530, 2531, 2515, 2529, 1932,
+ 2128, 1919, 1920, 1946, 2115, 2116, 2324, 1737,
+ 1921, 1933, 2117, 2129, 2311, 1934, 2130, 1935,
+ 2131, 1751, 2325, 1936, 1948, 2132, 2143, 2326,
+ 2144, 2312, 2327, 2313, 2314, 2145, 2328, 2339,
+ 2507, 2521, 2340, 2508, 2522, 2523, 2509, 2510,
+ 2341, 2524, 2535, 1937, 2133, 1753, 1949, 1754,
+ 1938, 2134, 2146, 2329, 2315, 2316, 2147, 2330,
+ 2342, 2525, 2511, 2512, 2536, 2343, 2526, 2537,
+ 1951, 1756, 1939, 1952, 2135, 2148, 2317, 2331,
+ 2344, 2513, 2538, 2527, 2539, 1938, 2133, 2134,
+ 1743, 1939, 2122, 2135, 2317, 1744, 1940, 2123,
+ 2136, 2318, 1756, 1951, 1952, 2146, 2147, 2330,
+ 1757, 1953, 2148, 2331, 2149, 1758, 1941, 1954,
+ 2137, 2332, 2150, 2329, 2344, 2345, 2328, 2319,
+ 2342, 2343, 2333, 2346, 2513, 2514, 2526, 2527,
+ 2528, 2525, 2540, 2541, 2524, 2515, 2538, 2539,
+ 2529, 1783, 1795, 1796, 1978, 1979, 1989, 1990,
+ 1991, 1992, 2005, 2017, 2018, 1784, 1797, 1980,
+ 1993, 2006, 2019, 2176, 2189, 2202, 2031, 2032,
+ 1994, 2007, 2020, 2190, 2203, 2228, 2371, 2409,
+ 2033, 2045, 2216, 2241, 2423, 2386, 2424, 2568,
+ 1978, 1979, 1980, 1991, 1992, 1993, 1994, 2005,
+ 2006, 2007, 2019, 2176, 2189, 2190, 2202, 2371,
+ 2177, 2203, 1981, 2191, 2204, 2361, 2386, 2178,
+ 2205, 2373, 2216, 2217, 2218, 2387, 2231, 2192,
+ 2219, 2374, 2232, 2206, 2233, 2388, 2401, 2568,
+ 2415, 2428, 2429, 2442, 2177, 2191, 2361, 2166,
+ 2362, 2178, 2373, 2192, 2179, 2374, 2193, 2205,
+ 2219, 2387, 2206, 2388, 2220, 2180, 2194, 2207,
+ 2221, 2401, 2234, 2248, 2208, 2235, 2417, 2430,
+ 2444, 2222, 2249, 2404, 2431, 2363, 2612, 2415,
+ 2429, 2443, 2445, 2613, 2236, 2432, 2639, 2362,
+ 2167, 2180, 2363, 2168, 2181, 2364, 2179, 2193,
+ 2194, 2207, 2195, 2559, 2208, 2209, 2221, 2222,
+ 2404, 2223, 2391, 2235, 2236, 2417, 2250, 2405,
+ 2182, 2196, 2237, 2419, 2560, 2249, 2432, 2210,
+ 2251, 2378, 2433, 2431, 2573, 2392, 2388, 2430,
+ 2446, 2374, 2447, 2615, 2612, 2613, 2445, 2406,
+ 2574, 2264, 2224, 2460, 2642, 2420, 2461, 2643,
+ 2641, 2459, 2265, 2238, 2252, 2434, 2474, 2656,
+ 2448, 2475, 2616, 2657, 2168, 2364, 2169, 2182,
+ 2365, 2196, 2560, 2210, 2378, 2391, 2405, 2392,
+ 2224, 2183, 2406, 2561, 2238, 2420, 2252, 2434,
+ 2393, 2419, 2574, 2448, 2573, 2616, 2266, 2462,
+ 2644, 2617, 2212, 2226, 2240, 2254, 1990, 2017,
+ 2018, 2031, 1991, 2005, 2019, 2032, 2045, 2228,
+ 2241, 2268, 2409, 2423, 2202, 2464, 2424, 2437,
+ 2189, 2202, 2228, 2241, 2409, 2423, 2176, 2190,
+ 2203, 2216, 2242, 2371, 2424, 2217, 2230, 2243,
+ 2437, 2386, 2451, 2568, 2203, 2216, 2371, 2190,
+ 2204, 2217, 2218, 2230, 2231, 2244, 2386, 2243,
+ 2424, 2568, 2373, 2387, 2428, 2623, 2218, 2373,
+ 2386, 2205, 2387, 2219, 2374, 2401, 2206, 2388,
+ 2415, 2191, 2231, 2232, 2245, 2246, 2428, 2233,
+ 2220, 2429, 2568, 2442, 2430, 2443, 2623, 2455,
+ 2456, 2444, 2457, 2612, 2639, 2259, 2247, 2234,
+ 2248, 2261, 2417, 2468, 2651, 2469, 2202, 2216,
+ 2228, 2230, 2241, 2242, 2243, 2255, 2371, 2409,
+ 2423, 2424, 2437, 2203, 2217, 2231, 2244, 2256,
+ 2386, 2204, 2218, 2232, 2245, 2257, 2269, 2451,
+ 2258, 2270, 2453, 2568, 2428, 2465, 2466, 2623,
+ 2246, 2373, 2387, 2259, 2401, 2442, 2271, 2415,
+ 2455, 2283, 2272, 2273, 2284, 2285, 2467, 2468,
+ 2479, 2480, 2456, 2469, 2481, 2651, 2493, 2676,
+ 2207, 2221, 2234, 2235, 2248, 2388, 2429, 2430,
+ 2443, 2444, 2249, 2262, 2417, 2431, 2404, 2236,
+ 2445, 2250, 2263, 2432, 2446, 2613, 2612, 2458,
+ 2459, 2457, 2639, 2641, 2653, 2654, 2642, 2276,
+ 2471, 2264, 2277, 2472, 2290, 2278, 2291, 2460,
+ 2473, 2485, 2486, 2474, 2668, 2487, 2656, 2669,
+ 2667, 2681, 2682, 2238, 2392, 2406, 2420, 2252,
+ 2434, 2266, 2393, 2448, 2280, 2462, 2644, 2476,
+ 2617, 2616, 2574, 2658, 2071, 2085, 2294, 2490,
+ 2099, 2308, 2504, 2254, 2268, 2228, 2241, 2282,
+ 2409, 2423, 2464, 2424, 2437, 2255, 2243, 2256,
+ 2257, 2269, 2451, 2478, 2296, 2270, 2271, 2283,
+ 2453, 2465, 2466, 2492, 2674, 2467, 2479, 2284,
+ 2297, 2480, 2310, 2298, 2481, 2493, 2494, 2468,
+ 2676, 2482, 2495, 2677, 2232, 2245, 2246, 2257,
+ 2258, 2259, 2270, 2271, 2386, 2428, 2442, 2453,
+ 2260, 2272, 2455, 2466, 2273, 2285, 2467, 2468,
+ 2456, 2274, 2469, 2623, 2470, 2481, 2482, 2651,
+ 2415, 2429, 2443, 2480, 2457, 2483, 2639, 2677,
+ 2260, 2401, 2415, 2428, 2429, 2442, 2455, 2443,
+ 2456, 2261, 2430, 2444, 2457, 2247, 2273, 2274,
+ 2468, 2248, 2262, 2275, 2470, 2469, 2288, 2276,
+ 2289, 2417, 2431, 2445, 2458, 2471, 2287, 2482,
+ 2484, 2472, 2623, 2612, 2639, 2653, 2651, 2483,
+ 2459, 2485, 2654, 2667, 2613, 2641, 2496, 2678,
+ 2679, 2680, 2302, 2290, 2303, 2301, 2498, 2497,
+ 2304, 2473, 2486, 2499, 2500, 2668, 2681, 2694,
+ 2487, 2682, 2695, 2669, 2264, 2432, 2446, 2223,
+ 2237, 2251, 2278, 2391, 2405, 2419, 2460, 2433,
+ 2447, 2265, 2224, 2238, 2252, 2279, 2392, 2406,
+ 2420, 2461, 2434, 2459, 2473, 2474, 2266, 2448,
+ 2475, 2292, 2293, 2487, 2306, 2488, 2280, 2307,
+ 2462, 2489, 2642, 2615, 2643, 2616, 2656, 2657,
+ 2670, 2644, 2671, 2573, 2574, 2669, 2502, 2684,
+ 2476, 2503, 2658, 2685, 2683, 2501, 2294, 2320,
+ 2308, 2321, 2490, 2698, 2699, 2697, 2516, 2504,
+ 2517, 2284, 2453, 2465, 2466, 2467, 2479, 2285,
+ 2455, 2468, 2480, 2286, 2469, 2481, 2298, 2493,
+ 2299, 2482, 2494, 2300, 2483, 2495, 2496, 2676,
+ 2677, 2456, 2651, 2470, 2678, 2484, 2497, 2679,
+ 2691, 2287, 2288, 2301, 2302, 2498, 2457, 2639,
+ 2471, 2653, 2680, 2485, 2667, 2290, 2459, 2472,
+ 2277, 2291, 2304, 2446, 2460, 2473, 2486, 2278,
+ 2292, 2305, 2474, 2487, 2485, 2499, 2500, 2306,
+ 2488, 2501, 2502, 2641, 2654, 2668, 2642, 2656,
+ 2669, 2682, 2670, 2683, 2696, 2684, 2697, 2681,
+ 2695, 2280, 2294, 2462, 2476, 2308, 2490, 2504,
+ 2099, 2113, 2505, 2518, 2658, 2699, 2492, 2310,
+ 2283, 2284, 2297, 2465, 2466, 2479, 2480, 2298,
+ 2467, 2481, 2493, 2494, 2495, 2324, 2311, 2312,
+ 2482, 2496, 2507, 2128, 2313, 2508, 2509, 2325,
+ 2326, 2510, 2521, 2674, 2676, 2677, 2691, 2522,
+ 2705, 2678, 2706, 2717, 2483, 2497, 2314, 2484,
+ 2498, 2315, 2511, 2327, 2328, 2512, 2523, 2679,
+ 2524, 2680, 2694, 2718, 2719, 2316, 2485, 2499,
+ 2329, 2330, 2513, 2525, 2526, 2667, 2681, 2695,
+ 2720, 2709, 2485, 2497, 2498, 2303, 2316, 2472,
+ 2486, 2499, 2304, 2317, 2473, 2487, 2500, 2315,
+ 2510, 2512, 2511, 2513, 2318, 2501, 2514, 2330,
+ 2331, 2329, 2524, 2526, 2525, 2527, 2332, 2515,
+ 2694, 2695, 2696, 2709, 2710, 2667, 2680, 2681,
+ 2668, 2682, 2528, 2669, 2683, 2706, 2697, 2720,
+ 2722, 2719, 2711, 2487, 2500, 2305, 2318, 2474,
+ 2488, 2501, 2306, 2319, 2502, 2513, 2514, 2515,
+ 2320, 2516, 2332, 2333, 2527, 2528, 2529, 2334,
+ 2696, 2697, 2698, 2710, 2711, 2712, 2669, 2682,
+ 2683, 2670, 2684, 2530, 2709, 2724, 2725, 2502,
+ 2293, 2307, 2320, 2475, 2489, 2503, 2294, 2308,
+ 2321, 2476, 2490, 2515, 2516, 2698, 2504, 2517,
+ 2699, 2334, 2335, 2530, 2518, 2531, 2713, 2529,
+ 2712, 2671, 2684, 2685, 2726, 2727, 2711, 2725,
+ 2308, 2490, 2504, 2505, 2518, 2335, 2336, 2154,
+ 1945, 1959, 2155, 2545, 2742, 2713, 2727, 2741,
+ 2531, 2547, 2349, 2743, 2324, 2311, 2312, 2507,
+ 2508, 2325, 2326, 2509, 2521, 2327, 2510, 2522,
+ 2523, 2339, 2340, 2524, 2535, 2717, 2341, 2536,
+ 2718, 2719, 2705, 2706, 2537, 2720, 2731, 2691,
+ 2732, 2328, 2511, 2329, 2512, 2525, 2342, 2526,
+ 2343, 2538, 2539, 2722, 2733, 2734, 2330, 2513,
+ 2344, 2527, 2540, 2709, 2735, 2330, 2331, 2513,
+ 2524, 2525, 2526, 2514, 2527, 2332, 2515, 2528,
+ 2344, 2345, 2343, 2538, 2540, 2539, 2541, 2346,
+ 2529, 2709, 2710, 2722, 2724, 2725, 2737, 2720,
+ 2711, 2735, 2734, 2332, 2333, 2515, 2527, 2528,
+ 2516, 2529, 2334, 2530, 2346, 2347, 2541, 2348,
+ 2725, 2544, 2726, 2711, 2712, 2724, 2737, 2740,
+ 2334, 2529, 2530, 2517, 2335, 2348, 2531, 2713,
+ 2518, 2336, 2349, 2544, 2545, 2726, 2727, 2740,
+ 2741, 2725,
+};
+
+static long _vq_fitmap_lsp30_0[] = {
+ 0, 0, 0, 88, 88, 172, 252, 318,
+ 0, 0, 389, 475, 172, 252, 0, 0,
+ 389, 558, 475, 626, 709, 0, 0, 389,
+ 787, 875, 944, 1019, 1095, 1183, 1265, 1346,
+ 1412, 1502, 1019, 1568, 1677, 1677, 1766, 1845,
+ 1931, 2010, 1677, 2081, 2081, 2164, 2253, 2321,
+ 2386, 0, 2429, 2429, 2516, 2602, 2681, 252,
+ 0, 0, 2771, 2839, 475, 626, 709, 0,
+ 2429, 2771, 2910, 2990, 3076, 709, 2429, 1183,
+ 3162, 3234, 3324, 3406, 709, 3498, 1183, 1265,
+ 3574, 1412, 3652, 1019, 3733, 3733, 2081, 3820,
+ 1845, 3905, 2010, 3991, 4056, 4056, 2164, 2253,
+ 2321, 2386, 318, 318, 318, 2516, 2602, 2681,
+ 252, 2429, 4114, 2771, 4198, 2990, 3076, 4278,
+ 2429, 4114, 2771, 4346, 4436, 4512, 709, 2429,
+ 3162, 3162, 4603, 4699, 4786, 709, 3498, 4894,
+ 1265, 3574, 1412, 3652, 1019, 3733, 3733, 2081,
+ 4980, 5075, 3905, 2010, 3991, 4056, 4056, 2164,
+ 2253, 2321, 2386, 2429, 318, 5149, 5217, 5323,
+ 5412, 5531, 2429, 4114, 5595, 5659, 5759, 5842,
+ 4278, 2429, 4114, 5931, 6008, 6107, 6194, 4278,
+ 6294, 6375, 6447, 6523, 6629, 6721, 6835, 6918,
+ 4894, 6981, 7043, 7116, 7180, 7255, 7300, 7374,
+ 7456, 7545, 7653, 7736, 2010, 3991, 7822, 7822,
+ 2164, 2253, 2321, 2386, 7874, 7899, 7949, 8033,
+ 8110, 8197, 8289, 7899, 7949, 8367, 8456, 8110,
+ 8531, 6835, 6294, 8606, 8367, 8683, 8756, 8531,
+ 6835, 8841, 8916, 8997, 9065, 8756, 9139, 6835,
+ 9209, 9273, 9273, 9353, 9403, 9443, 9488, 9516,
+ 9592, 9669, 9741, 9815, 9869, 9927, 9972, 9972,
+ 10035, 10071, 10119, 10173, 10226, 10257, 10257, 10341,
+ 10427, 10517, 10594, 8289, 10257, 10341, 10682, 10766,
+ 10847, 10926, 11013, 11069, 10682, 11126, 11194, 10847,
+ 10926, 11013, 11274, 11359, 11448, 11535, 11632, 11702,
+ 11013, 11789, 11868, 11943, 12011, 12083, 12135, 12197,
+ 12222, 12304, 12388, 12465, 12547, 12607, 9927, 12671,
+ 12671, 12671, 12749, 10119, 10173, 10226, 10257, 10257,
+ 12801, 12840, 12884, 12927, 12996, 13026, 13048, 13068,
+ 13086, 12884, 12927, 12996, 11274, 13126, 13126, 13086,
+ 13184, 12927, 13235, 13259, 13126, 13300, 13336, 13184,
+ 13404, 13235, 13259, 13473, 13473, 13336, 13517, 13404,
+ 13553, 13566, 13566, 13566, 13634, 13683, 13719, 13752,
+ 13772, 13772, 13772, 13821, 13851, 13872, 13752,
+};
+
+static long _vq_fitlength_lsp30_0[] = {
+ 88, 88, 88, 84, 84, 80, 66, 71,
+ 88, 88, 86, 83, 80, 66, 88, 88,
+ 86, 68, 83, 83, 78, 88, 88, 86,
+ 88, 69, 75, 76, 88, 82, 81, 66,
+ 90, 66, 76, 109, 89, 89, 79, 86,
+ 79, 71, 89, 83, 83, 89, 68, 65,
+ 43, 88, 87, 87, 86, 79, 90, 66,
+ 88, 88, 68, 71, 83, 83, 78, 88,
+ 87, 68, 80, 86, 86, 78, 87, 82,
+ 72, 90, 82, 92, 78, 76, 82, 81,
+ 78, 90, 81, 76, 87, 87, 83, 85,
+ 86, 86, 71, 65, 58, 58, 89, 68,
+ 65, 43, 71, 71, 71, 86, 79, 90,
+ 66, 87, 84, 68, 80, 86, 86, 68,
+ 87, 84, 68, 90, 76, 91, 78, 87,
+ 72, 72, 96, 87, 108, 78, 76, 86,
+ 81, 78, 90, 81, 76, 87, 87, 83,
+ 95, 74, 86, 71, 65, 58, 58, 89,
+ 68, 65, 43, 87, 71, 68, 106, 89,
+ 119, 64, 87, 84, 64, 100, 83, 89,
+ 68, 87, 84, 77, 99, 87, 100, 68,
+ 81, 72, 76, 106, 92, 114, 83, 63,
+ 86, 62, 73, 64, 75, 45, 74, 82,
+ 89, 108, 83, 86, 71, 65, 52, 52,
+ 89, 68, 65, 43, 25, 50, 84, 77,
+ 87, 92, 78, 50, 84, 89, 75, 87,
+ 75, 83, 81, 77, 89, 73, 85, 75,
+ 83, 75, 81, 68, 74, 85, 70, 83,
+ 64, 80, 80, 50, 40, 45, 28, 76,
+ 77, 72, 74, 54, 58, 45, 63, 63,
+ 36, 48, 54, 53, 31, 84, 84, 86,
+ 90, 77, 88, 78, 84, 86, 84, 81,
+ 79, 87, 56, 57, 84, 68, 80, 79,
+ 87, 56, 85, 89, 87, 97, 70, 87,
+ 56, 79, 75, 68, 72, 52, 62, 25,
+ 82, 84, 77, 82, 60, 64, 45, 78,
+ 78, 78, 52, 54, 53, 31, 84, 84,
+ 39, 44, 43, 69, 30, 22, 20, 18,
+ 40, 43, 69, 30, 85, 58, 58, 40,
+ 51, 69, 24, 41, 58, 36, 68, 51,
+ 69, 24, 41, 44, 44, 68, 36, 69,
+ 13, 68, 68, 68, 49, 36, 33, 20,
+ 49, 49, 49, 30, 21, 18, 20,
+};
+
+static encode_aux_pigeonhole _vq_auxp_lsp30_0 = {
+ 0.07, 0.002, 30, 7,
+ _vq_pigeonmap_lsp30_0,
+ 13890,
+ _vq_fitlist_lsp30_0,
+ _vq_fitmap_lsp30_0,
+ _vq_fitlength_lsp30_0
+};
+
+static static_codebook _vq_book_lsp30_0 = {
+ 3, 2744,
+ _vq_lengthlist_lsp30_0,
+ 1, 1603398533, 1592812110, 5, 1,
+ _vq_quantlist_lsp30_0,
+ NULL,
+ NULL,
+ &_vq_auxp_lsp30_0,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_1.vqh b/lib/books/res0_1024a_128_1.vqh
new file mode 100644
index 00000000..5c5929fb
--- /dev/null
+++ b/lib/books/res0_1024a_128_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_1_VQH_
+#define _V_res0_1024a_128_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_1[] = {
+ 1, 4, 4, 4, 7, 7, 4, 7, 7, 5, 8, 8, 8,11,11, 8,
+ 11,11, 5, 8, 8, 8,11,11, 8,11,11, 5, 8, 8, 8,11,
+ 11, 8,11,11, 8,11,11,11,14,14,11,15,15, 8,11,11,
+ 11,14,14,12,15,15, 5, 8, 8, 8,11,11, 8,11,11, 8,
+ 11,11,11,15,14,11,14,15, 8,11,12,12,15,15,11,14,
+ 14,
+};
+
+static float _vq_quantthresh_res0_1024a_128_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_1 = {
+ _vq_quantthresh_res0_1024a_128_1,
+ _vq_quantmap_res0_1024a_128_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_1024a_128_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_1024a_128_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_1024a_128_1,
+ NULL,
+ &_vq_auxt_res0_1024a_128_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_2.vqh b/lib/books/res0_1024a_128_2.vqh
new file mode 100644
index 00000000..fce8c60a
--- /dev/null
+++ b/lib/books/res0_1024a_128_2.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_2_VQH_
+#define _V_res0_1024a_128_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_2[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_2[] = {
+ 3, 4, 5, 4, 6, 6, 5, 6, 6, 4, 6, 6, 6, 8, 8, 6,
+ 8, 8, 5, 6, 6, 6, 8, 8, 6, 8, 8, 5, 6, 6, 6, 8,
+ 8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 8,
+ 8, 9, 9, 8, 9, 9, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
+ 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+ 9,
+};
+
+static float _vq_quantthresh_res0_1024a_128_2[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_2[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_2 = {
+ _vq_quantthresh_res0_1024a_128_2,
+ _vq_quantmap_res0_1024a_128_2,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_1024a_128_2 = {
+ 4, 81,
+ _vq_lengthlist_res0_1024a_128_2,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_1024a_128_2,
+ NULL,
+ &_vq_auxt_res0_1024a_128_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_3.vqh b/lib/books/res0_1024a_128_3.vqh
new file mode 100644
index 00000000..87d9ef86
--- /dev/null
+++ b/lib/books/res0_1024a_128_3.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_3_VQH_
+#define _V_res0_1024a_128_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_3[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_3[] = {
+ 2, 5, 7, 5, 7, 5, 6, 9, 6, 9, 7, 9,13, 9,13, 5,
+ 6, 9, 7, 9, 7, 9,13, 9,13, 5, 7, 9, 7, 9, 7, 8,
+ 11, 8,11, 9,11,15,11,15, 7, 8,11, 9,11, 9,11,15,
+ 11,15, 7, 9,12, 9,12, 9,11,15,11,15,13,15,19,15,
+ 19, 9,11,15,12,15,13,15,18,15,18, 5, 7, 9, 7, 9,
+ 7, 9,11, 8,11, 9,11,15,11,15, 7, 9,11, 9,11, 9,
+ 11,15,11,15, 7, 9,12, 9,13, 9,11,15,12,15,13,15,
+ 19,15,18, 9,11,15,12,15,13,15,19,15,18, 5, 7, 9,
+ 7, 9, 7, 9,11, 9,11, 9,11,15,12,15, 7, 9,11, 9,
+ 11, 9,11,15,11,15, 7, 9,11, 9,11, 9,10,13,11,13,
+ 11,13,17,13,17, 9,11,14,11,13,11,13,18,14,17, 9,
+ 11,15,12,15,11,13,18,14,18,15,18,19,18,22,11,14,
+ 18,14,18,15,18,22,18,20, 7, 9,11, 9,11, 9,11,13,
+ 11,13,11,14,17,13,17, 9,11,13,11,14,11,13,18,14,
+ 17, 9,12,15,11,15,11,14,17,13,18,15,17,21,17,19,
+ 12,14,18,14,19,16,18, 0,18, 0, 7, 9,13, 9,13, 9,
+ 11,16,12,16,13,15,19,15,21, 9,11,16,11,16,13,15,
+ 19,15,19, 9,11,15,12,16,11,13,17,14,18,16,18, 0,
+ 18,19,11,14,17,13,17,15,18, 0,18,21,13,16,20,15,
+ 21,15,18, 0,17,21,19,19, 0,20, 0,16,19, 0,18,20,
+ 21, 0, 0,20,21, 9,11,16,11,15,11,13,18,13,17,15,
+ 18,20,17,20,11,14,18,14,18,15,18,21,18,21,13,16,
+ 18,16,19,15,18,20,17,19,20, 0,21,19, 0,15,18, 0,
+ 18,21,20,20, 0,21, 0, 5, 7, 9, 7, 9, 7, 9,11, 9,
+ 11, 9,11,15,11,15, 7, 9,11, 9,11, 9,11,15,11,15,
+ 7, 9,11, 9,11, 9,11,13,11,13,11,14,18,14,18, 9,
+ 11,13,11,13,11,13,17,14,18, 9,12,15,12,16,11,14,
+ 18,14,18,15,18,21,18,21,11,13,17,14,19,15,17,19,
+ 18,21, 7, 9,11, 9,11, 9,11,14,11,13,12,14,17,14,
+ 17, 9,11,13,11,13,12,14,17,13,17, 9,11,16,12,16,
+ 11,14,18,14,18,16,19, 0,18, 0,11,14,18,13,18,16,
+ 18, 0,17,20, 7, 9,13, 9,13, 9,12,16,12,15,13,15,
+ 19,16,19, 9,12,16,12,15,13,15,18,15,20, 9,11,15,
+ 12,15,11,14,18,13,17,15,18,20,18,21,11,13,17,14,
+ 18,15,17,20,18, 0,13,15,19,16,18,15,18,21,17, 0,
+ 19,20, 0,21, 0,15,17,20,18, 0,21,20,21,21, 0, 9,
+ 11,15,12,15,11,14,18,14,19,16,17, 0,18, 0,11,14,
+ 17,14,18,15,17,20,17,21,13,15,19,16,20,15,18, 0,
+ 17,21,20,21, 0, 0, 0,15,17,21,18,20,19, 0,21,19,
+ 21,
+};
+
+static float _vq_quantthresh_res0_1024a_128_3[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_3[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_3 = {
+ _vq_quantthresh_res0_1024a_128_3,
+ _vq_quantmap_res0_1024a_128_3,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_128_3 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_128_3,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_128_3,
+ NULL,
+ &_vq_auxt_res0_1024a_128_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_4.vqh b/lib/books/res0_1024a_128_4.vqh
new file mode 100644
index 00000000..e4b49a58
--- /dev/null
+++ b/lib/books/res0_1024a_128_4.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_4_VQH_
+#define _V_res0_1024a_128_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_4[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_4[] = {
+ 5, 6, 8, 6, 8, 6, 6, 9, 6, 9, 8, 9,11, 9,11, 6,
+ 6, 9, 6, 9, 8, 9,11, 9,11, 6, 6, 9, 6, 9, 6, 7,
+ 10, 7,10, 9,10,12,10,12, 6, 7,10, 7,10, 9,10,12,
+ 10,12, 8, 9,11, 9,11, 9,10,12,10,13,11,12,15,13,
+ 15, 9,10,12,10,12,11,12,15,13,15, 6, 6, 9, 7, 9,
+ 6, 7,10, 7,10, 9,10,12,10,12, 6, 7,10, 7,10, 9,
+ 10,12,10,12, 8, 9,11, 9,11, 9,10,12,10,12,11,12,
+ 15,12,14, 9,10,13,10,12,11,13,15,12,15, 6, 7, 9,
+ 7, 9, 7, 7,10, 8,10, 9,10,12,10,12, 6, 7,10, 8,
+ 10, 9,10,12,10,12, 6, 8,10, 8,10, 7, 8,11, 9,11,
+ 10,11,13,11,14, 7, 9,11, 9,11,10,11,14,11,14, 9,
+ 10,13,10,12,10,11,13,11,14,13,13,15,14,16,10,11,
+ 14,11,14,12,13,17,14,16, 7, 8,10, 8,10, 7, 9,11,
+ 8,11,10,11,14,11,14, 7, 9,11, 9,11,10,11,14,11,
+ 14, 9,10,13,10,13,10,11,14,11,14,12,14,16,13,16,
+ 10,11,13,11,14,12,14,17,14,16, 8, 9,11, 9,11, 9,
+ 10,13,10,13,11,13,15,13,15, 9,10,12,10,12,11,13,
+ 15,13,15, 9,10,12,10,13,10,11,14,11,14,13,13,16,
+ 14,17,10,11,14,11,14,13,14,17,14,15,11,13,15,12,
+ 15,12,14,16,14,17,15,16,18,16,20,13,14,16,14,16,
+ 15,17, 0,16,20, 9,10,13,10,13,10,11,14,11,14,13,
+ 14,17,14,16,10,11,14,11,14,13,14,16,14,16,11,13,
+ 16,13,16,12,14,16,13,17,15,17,18,15,18,13,14,16,
+ 14,18,16,16,18,16,19, 6, 7, 9, 7, 9, 6, 7,10, 7,
+ 10, 9,10,12,10,12, 7, 8,10, 8,10, 9,10,12,10,12,
+ 6, 8,10, 7,10, 7, 9,11, 8,11,10,11,14,11,13, 7,
+ 9,11, 9,11,10,11,13,11,14, 9,10,13,10,12,10,11,
+ 14,11,14,13,14,17,14,16,10,11,14,11,14,12,13,16,
+ 14,16, 7, 7,10, 8,10, 7, 8,11, 9,11,10,11,14,11,
+ 14, 7, 9,11, 8,11,10,11,14,11,13, 9,10,13,10,13,
+ 10,11,14,11,14,13,14,17,14,16,10,11,14,11,14,12,
+ 14,17,13,15, 8, 9,11, 9,11, 9,10,13,10,13,11,13,
+ 15,13,15, 9,10,13,10,13,11,13,15,13,15, 9,10,13,
+ 10,13,10,11,14,11,14,13,14,17,14,17,10,11,14,11,
+ 14,13,14,16,14,17,11,13,15,13,15,13,14,16,14,16,
+ 15,16,19,18,19,12,13,18,14,17,15,15,17,17,19, 9,
+ 10,13,10,13,10,11,14,11,14,13,14,16,14,16,10,11,
+ 14,11,14,13,14,17,14,16,11,13,16,13,15,13,14,17,
+ 14,17,16,17,18,16,19,12,14,17,14,17,15,17,18,15,
+ 17,
+};
+
+static float _vq_quantthresh_res0_1024a_128_4[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_4[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_4 = {
+ _vq_quantthresh_res0_1024a_128_4,
+ _vq_quantmap_res0_1024a_128_4,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_128_4 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_128_4,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_128_4,
+ NULL,
+ &_vq_auxt_res0_1024a_128_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_5.vqh b/lib/books/res0_1024a_128_5.vqh
new file mode 100644
index 00000000..61a9f6ee
--- /dev/null
+++ b/lib/books/res0_1024a_128_5.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_5_VQH_
+#define _V_res0_1024a_128_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_5[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_5[] = {
+ 3, 5, 7, 7, 5, 7, 7, 5, 7, 9,10, 7, 9,10, 7, 9,
+ 11,12, 9,11,12, 7,10,12,14,10,12,14, 5, 7, 9,10,
+ 7, 9,10, 7, 9,12,12, 9,12,12, 7,10,12,14,10,12,
+ 14, 5, 7, 9,10, 7, 9,10, 7, 9,11,11, 9,11,11, 9,
+ 11,13,14,11,13,14,10,12,14,16,12,14,16, 7, 9,11,
+ 12, 9,11,11, 9,11,13,14,11,13,14,10,12,14,16,12,
+ 14,17, 7, 9,11,12, 9,11,12, 9,11,14,14,11,14,14,
+ 12,14,16,17,14,16,17,13,14,16,17,14,17,17, 9,11,
+ 14,14,11,13,14,12,14,16,17,14,16,16,13,15,16,18,
+ 14,17,20, 7,10,12,13,10,12,13,10,12,14,15,12,14,
+ 15,13,14,16,18,14,17,18,15,17,19, 0,16,18, 0,10,
+ 12,15,16,12,14,16,13,15,17,19,15,16, 0,15,16,18,
+ 18,17,19,19, 5, 7, 9,10, 7, 9, 9, 7, 9,11,11, 9,
+ 11,12, 9,11,13,14,11,13,14,10,12,14,16,12,14,16,
+ 7, 9,11,12, 9,11,12, 9,11,14,14,11,14,14,10,12,
+ 14,16,12,14,16, 7, 9,11,12, 9,11,12, 9,11,14,14,
+ 11,14,14,12,14,16,17,13,15,17,12,14,17,19,14,16,
+ 18, 9,11,14,14,11,14,14,12,14,16,17,14,16,17,13,
+ 15,17,20,14,16,18, 8,10,12,13,10,12,13,10,12,14,
+ 15,12,14,16,13,15,17,18,14,17,18,15,17,18,20,16,
+ 18,19,10,12,14,16,12,15,16,12,14,16,19,15,16,18,
+ 15,16,18, 0,16,18,20, 5, 7, 9,10, 7, 9,10, 7, 9,
+ 11,12, 9,11,12, 9,11,14,14,11,14,15,10,12,14,17,
+ 12,14,17, 7, 9,11,12, 9,11,12, 9,11,14,14,11,13,
+ 14,10,12,14,16,12,14,16, 7, 9,11,12, 9,11,12, 9,
+ 10,13,13,10,13,13,11,13,15,16,13,15,16,12,13,15,
+ 18,14,16,20, 9,11,13,13,10,13,14,11,13,15,16,13,
+ 15,16,12,14,16,17,13,16,19, 9,11,14,15,11,14,14,
+ 11,13,16,16,13,15,16,14,15,17,19,15,18,19,15,16,
+ 17,18,16,19,20,11,13,15,17,13,16,16,14,15,18,18,
+ 16,17,18,15,16,18,19,16,18, 0,10,12,14,17,12,14,
+ 16,12,14,16,18,13,16,19,15,16,19, 0,16,19,19,16,
+ 18,20,19,19,20, 0,12,14,17,19,14,16,17,15,16,19,
+ 0,17,19,18,17,18, 0, 0,19,20,20, 7, 9,11,12, 9,
+ 11,12, 9,10,13,13,10,13,14,11,13,15,16,13,15,16,
+ 12,13,16,18,13,16,17, 9,10,13,13,11,13,14,11,13,
+ 15,16,13,15,16,12,13,16,17,13,16,19,10,11,14,14,
+ 11,14,14,11,13,16,16,13,16,16,14,15,18,18,15,18,
+ 18,15,17,18, 0,16,17,19,11,13,15,16,13,15,16,14,
+ 15,18,19,15,18,18,15,16,20, 0,17,18, 0,10,12,14,
+ 17,12,14,16,12,14,16,19,14,17,19,15,16, 0, 0,16,
+ 18, 0,17,18,20, 0,17,20, 0,12,14,16,19,14,16,18,
+ 15,16,19,20,16,18,19,16,19, 0, 0,19,20, 0, 8,10,
+ 12,12,10,12,12, 9,11,14,15,11,14,14,12,14,16,17,
+ 14,16,17,12,15,19,19,15,17,18, 9,11,14,14,11,14,
+ 14,12,14,17,18,14,17,17,12,15,18,17,14,17, 0,10,
+ 11,14,14,11,14,14,11,13,16,17,13,16,17,14,16,18,
+ 18,15,18,18,15,16,18, 0,17,20,20,11,13,15,17,13,
+ 16,16,14,15,19,18,15,19,19,15,16,19,20,16,18, 0,
+ 12,14,16,17,14,16,18,14,15,19,19,16,18,20,16,17,
+ 20,18,17, 0, 0,17,17,19,20,19, 0, 0,14,15,18,20,
+ 16,17,20,16,19, 0,20,18,20, 0,18,19,18, 0,19, 0,
+ 0,13,15,17,19,15,19,19,15,16,19, 0,16,18,20,16,
+ 17,19, 0,18, 0, 0,18,18,20, 0, 0, 0, 0,15,17,19,
+ 19,17,18, 0,17,18,20, 0,19,20, 0,20, 0, 0, 0,20,
+ 0, 0,10,11,14,15,12,14,14,11,13,16,17,13,16,16,
+ 14,16,18,18,16,18,19,15,16,19,20,16,18, 0,11,13,
+ 17,17,13,15,16,14,16,17,19,16,19,20,15,16,19,19,
+ 17,19,18,12,14,16,18,14,17,17,13,15,20,17,16,17,
+ 18,16,17, 0,20,17,19,19,17,19,19, 0,18,18,18,14,
+ 15,20,20,16,19,20,16,18, 0,20,18,19, 0,17,19,20,
+ 20,20,20, 0,13,15,17,20,15,17,18,14,16,19, 0,16,
+ 19, 0,16,19,20, 0,17,19, 0,20, 0,20, 0,18,19, 0,
+ 15,16,18,20,17,18, 0,17,19,20, 0,19, 0, 0,19, 0,
+ 0, 0,19, 0, 0, 8,10,12,14,10,12,14,10,12,14,16,
+ 12,15,16,12,15,17,19,15,16,19,14,17,20, 0,16,18,
+ 0,10,12,15,16,12,15,16,12,15,17,19,14,18,19,14,
+ 16,19,20,17,19, 0,10,12,15,17,12,15,16,12,14,17,
+ 17,14,16,20,15,17,18,20,16,18, 0,17,19,19, 0,19,
+ 0, 0,12,14,16,19,14,16,18,15,17,20, 0,16,18, 0,
+ 16,19,20, 0,20,19, 0,13,15,17,19,15,17,19,15,16,
+ 19,19,16,20,19,17,19,19,20,19, 0, 0,20,20, 0,20,
+ 0, 0, 0,14,17,20, 0,16,18,20,17,19, 0, 0,19,19,
+ 19,20,20, 0, 0,17,20, 0,15,18,18, 0,18,20,20,16,
+ 20,20,20,18, 0, 0,18,19,20, 0, 0, 0, 0,19, 0, 0,
+ 0,20, 0, 0,17,18, 0, 0,19, 0, 0,18,20, 0, 0,19,
+ 20, 0,20, 0, 0, 0,20, 0, 0,10,12,15,17,12,15,17,
+ 12,14,17, 0,14,17,18,15,17,19,19,16,18,20,16,18,
+ 0,19,19, 0, 0,12,14,16,18,14,17,17,15,16,18, 0,
+ 16,19, 0,16,20, 0, 0,19, 0, 0,13,15,18,20,15,17,
+ 19,14,16,19, 0,16,19, 0,17,20,19,20,19,19,20,20,
+ 0, 0,20,20,19, 0,15,16,19, 0,16, 0,20,17,19,20,
+ 0,20, 0, 0,20,20,20, 0,20, 0, 0,15,17,19, 0,18,
+ 19,20,17,18, 0,20,18,20, 0,19,20, 0,20, 0,20, 0,
+ 19,19, 0, 0,20, 0, 0,18,19,20, 0,19, 0, 0,20, 0,
+ 0, 0, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 5, 7, 9,10,
+ 7, 9,10, 7, 9,11,12, 9,11,12, 9,11,14,14,11,14,
+ 14,10,12,14,17,12,14,16, 7, 9,11,12, 9,11,12, 9,
+ 11,14,14,11,14,14,10,12,14,17,12,14,17, 7, 9,11,
+ 12, 9,11,12, 9,10,13,13,10,13,13,11,13,15,16,13,
+ 15,15,12,14,16,18,14,16,18, 9,10,13,13,11,13,13,
+ 11,13,15,15,13,15,16,12,13,16,17,14,16,17,10,11,
+ 14,15,11,14,14,11,13,16,16,13,16,16,14,15,19,19,
+ 15,18,18,15,16,17,20,16,17,18,11,13,15,17,13,15,
+ 16,14,15,17,17,16,18,18,15,16,18,19,16,19,19,10,
+ 12,14,16,12,15,16,12,14,17,18,14,16,19,15,16,19,
+ 0,17,19,19,16,18,20, 0,20, 0, 0,12,14,16,19,14,
+ 16,18,15,16,20, 0,16,19,19,17,18,18,19,18,19, 0,
+ 7, 9,11,12, 9,11,12, 9,10,13,14,11,13,14,11,13,
+ 15,16,13,15,16,12,13,16,17,14,16,17, 9,10,13,13,
+ 10,13,13,11,13,15,16,13,15,15,12,14,16,18,14,16,
+ 18,10,11,14,14,11,14,14,11,13,15,16,13,16,17,14,
+ 15,19,18,16,19,18,15,16, 0,19,16,17,20,11,13,16,
+ 16,13,16,16,14,16,17,18,16,17,19,15,16,19, 0,16,
+ 17,18,10,12,15,17,12,15,16,12,14,16,18,14,17,18,
+ 15,17,17,20,16,18, 0,17,19,19, 0,19,20, 0,12,14,
+ 17,18,14,16,18,15,16,19,19,16,20,20,17,18,19,19,
+ 18,18,19, 8,10,12,12,10,12,12, 9,11,14,15,11,14,
+ 15,12,14,16,18,14,16,17,12,14,18,18,14,17, 0,10,
+ 11,14,14,11,14,14,12,14,16,17,14,16,17,12,15,17,
+ 20,15,18,19,10,11,14,15,12,14,15,12,13,16,16,13,
+ 16,16,14,16,18,18,16,18,18,15,16,19,20,17, 0,19,
+ 11,13,15,16,13,16,16,14,15,17,19,16,19,19,15,16,
+ 19,19,16,18,20,12,14,16,17,14,17,16,14,16,18,19,
+ 15,19,19,16,17, 0,20,17,20,19,18,19,20,20,19, 0,
+ 0,14,16,18,18,16,18,19,17,19, 0,18,17,20, 0,16,
+ 20,18,20,19, 0, 0,13,15,17,19,15,18,18,14,17, 0,
+ 0,16,19,20,17,20, 0, 0,19,20, 0,19, 0, 0, 0,20,
+ 0, 0,15,17,19,20,17,18, 0,17,17,19,20,19,20, 0,
+ 19,19, 0, 0, 0, 0, 0,10,11,14,14,12,14,14,11,13,
+ 16,16,13,16,16,14,16,18,18,16,18,18,14,17,19, 0,
+ 16,19,20,11,13,15,16,13,16,16,14,16,18,20,16,20,
+ 18,15,17,18, 0,17,19, 0,12,14,17,17,14,17,17,14,
+ 16,19,20,16,18,19,16,18, 0, 0,19,19, 0,17,19, 0,
+ 0, 0, 0, 0,14,16,20,18,15,17,18,16,19,20,19,17,
+ 19,19,17,18,19, 0,17,19, 0,13,15,19,20,15,18,19,
+ 15,17,19, 0,17,19, 0,17,19, 0,20,19, 0, 0, 0, 0,
+ 20, 0,20, 0, 0,14,16,18,20,17,20, 0,17,19, 0, 0,
+ 19, 0,20,18, 0, 0, 0,19, 0, 0, 8,10,12,14,10,12,
+ 14,10,12,15,16,12,14,17,12,15,17,19,15,18,19,14,
+ 17,18,19,16,19,19,10,12,14,16,12,15,17,12,15,16,
+ 20,15,17,19,14,17,19,20,17, 0, 0,10,12,15,16,12,
+ 15,16,12,14,17,19,14,16,18,15,17,19,20,16,19,19,
+ 17, 0,19, 0,18, 0, 0,12,14,17,17,14,17,18,15,16,
+ 18, 0,17,18,19,16,19,20,20, 0,20, 0,13,15,17,20,
+ 15,17,18,15,16,19, 0,17, 0, 0,17,20, 0, 0,18,20,
+ 0,20, 0, 0, 0,19, 0, 0,14,16,18,19,17,19,20,17,
+ 19,20, 0,20,20, 0,18,18, 0, 0,20, 0, 0,15,16,19,
+ 19,18,19, 0,17,20,19, 0,18, 0, 0,19,20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,19, 0, 0,
+ 18,20,20,19, 0, 0, 0, 0,20,19, 0,20, 0, 0,10,12,
+ 15,16,12,15,17,12,14,17,18,14,17,19,15,16,19,20,
+ 17,19, 0,16,20,19, 0,18,20, 0,12,14,16,18,14,16,
+ 19,15,16,18,19,16,17,20,17, 0, 0, 0,19, 0, 0,13,
+ 15,18,20,15,18,19,15,17,18,19,16,18, 0,17,18,19,
+ 0,19, 0, 0,19, 0,20, 0, 0, 0, 0,14,16,19, 0,17,
+ 18,20,17,18, 0, 0,18,19, 0, 0, 0, 0, 0,19, 0, 0,
+ 15,17,19,19,18,20, 0,18,19, 0,20,20, 0, 0,19, 0,
+ 0, 0, 0, 0, 0,20, 0, 0, 0, 0, 0, 0,17,19,18, 0,
+ 18, 0,20,19, 0, 0, 0,20,19, 0,20, 0, 0, 0,20,18,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_128_5[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_5[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_5 = {
+ _vq_quantthresh_res0_1024a_128_5,
+ _vq_quantmap_res0_1024a_128_5,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_1024a_128_5 = {
+ 4, 2401,
+ _vq_lengthlist_res0_1024a_128_5,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_128_5,
+ NULL,
+ &_vq_auxt_res0_1024a_128_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_6.vqh b/lib/books/res0_1024a_128_6.vqh
new file mode 100644
index 00000000..28fc5275
--- /dev/null
+++ b/lib/books/res0_1024a_128_6.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_6_VQH_
+#define _V_res0_1024a_128_6_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_6[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_6[] = {
+ 6, 7, 8, 9, 7, 8, 9, 7, 7, 9, 9, 7, 9,10, 8, 9,
+ 10,11, 9,10,11, 9,10,11,12,10,11,12, 7, 8, 9,10,
+ 7, 9,10, 8, 9,10,11, 9,10,11, 9,10,11,12,10,11,
+ 12, 7, 8, 9,10, 8, 9,10, 8, 8, 9,11, 8, 9,11, 9,
+ 10,11,12, 9,11,11,10,11,12,13,11,12,13, 7, 8,10,
+ 10, 8, 9,10, 9, 9,10,11,10,11,12,10,11,12,13,11,
+ 12,13, 8, 9,10,11, 9,11,12, 9,10,11,13,10,11,12,
+ 10,11,12,13,11,12,13,11,12,14,15,12,13,15, 9, 9,
+ 11,12, 9,11,12,10,11,12,14,11,12,13,11,12,14, 0,
+ 12,13,14, 9,10,12,13,10,12,14,10,11,13,15,11,13,
+ 14,11,12,14,16,13,14,15,13,15,16,15,14,15, 0,10,
+ 11,12,13,11,13,13,11,12,16,15,12,13,15,12,15,16,
+ 0,14,16,15, 7, 8, 9,10, 8, 9,10, 8, 8, 9,10, 8,
+ 10,11, 9, 9,11,12, 9,11,12,10,11,11,14,10,11,13,
+ 8, 8, 9,10, 8, 9,11, 9,10,11,11, 9,10,11,10,11,
+ 12,14,11,12,13, 8, 9,10,11, 9,10,11, 9,10,11,12,
+ 10,11,12,10,11,12,14,11,12,14,11,12,13,14,12,13,
+ 15, 9,10,11,12,10,11,13,10,11,12,14,11,12,13,11,
+ 12,14,14,12,13,15, 9,10,12,13,10,12,13,10,11,12,
+ 15,11,13,15,11,14,13,15,13,14,14,13,15,15, 0,15,
+ 15,15,10,11,13,14,11,14,13,12,12,14,15,12,15,16,
+ 13,14,16,16,15,14, 0, 7, 8, 9,10, 8, 9,10, 8, 8,
+ 9,11, 8,10,11, 9, 9,11,12, 9,11,12,10,11,12,13,
+ 11,12,13, 8, 8, 9,11, 8,10,11, 9, 9,11,12, 9,11,
+ 12,10,11,12,13,10,12,14, 8, 8,10,11, 8,10,11, 8,
+ 9,10,11, 9,10,12, 9,10,11,13,11,12,13,11,11,13,
+ 16,12,13,14, 8, 9,10,11, 9,10,12,10,11,11,13,10,
+ 12,12,11,12,13,15,12,13,15, 9,10,11,13,10,12,12,
+ 9,10,12,13,10,12,13,11,11,13,13,12,15,13,13,13,
+ 14,16,13,15, 0, 9,10,13,14,10,13,13,11,12,14, 0,
+ 12,13, 0,12,13,14,14,13,15,15,10,11,12,14,11,13,
+ 14,11,11,13,15,11,15,16,12,13,14,15,13,15,16,14,
+ 14,16,16,16,16, 0,11,12,14,14,12,14,16,12,14,14,
+ 16,14,13, 0,13, 0,16, 0,14, 0, 0, 8, 8,10,11, 8,
+ 10,11, 8, 9,10,11, 9,10,12,10,10,12,14,10,12,12,
+ 11,12,13,15,12,15,14, 8, 9,11,12, 9,11,12, 9,10,
+ 12,13,10,12,12,11,12,12,15,11,13,14, 9,10,11,12,
+ 10,12,12,10,10,12,13,10,12,12,11,12,13,15,11,13,
+ 14,12,13,16,15,13, 0,16, 9,11,12,13,10,12,15,11,
+ 13,13,14,12,13,15,12,13, 0, 0,13,16, 0,10,11,12,
+ 14,11,13,16,10,11,14,14,11,13,16,12,13,15,16,13,
+ 14,15,15,14,15, 0, 0,16,15,11,12,14,14,11,14,15,
+ 13,14,16, 0,13,14,15,14,15,14,16,15,14, 0, 8, 9,
+ 10,11, 9,10,11, 9,10,11,12,10,11,13,10,11,12,13,
+ 11,13,15,11,12,15,15,12,15,14, 9,10,11,12,10,11,
+ 12,10,11,14,13,11,13,14,12,12,15,15,12,15,15, 9,
+ 10,11,12,10,11,13,10,11,14,14,10,12,13,11,12,14,
+ 15,12,15,14,13,13,15,15,13,15,15,10,11,12,13,11,
+ 12,13,11,13,15,15,12,15,15,13,14,15, 0,14,15,15,
+ 10,11,14,15,11,13,15,11,12,14,15,12,15,14,13,12,
+ 14, 0,14,15, 0,15,15,15,16, 0, 0, 0,11,12,13,15,
+ 12,13,15,12,13,15,15,15,14,16,15,15,15, 0,14,14,
+ 16,12,14,15, 0,13,13,15,12,13,15, 0,13, 0, 0,14,
+ 14,16, 0,15,16, 0,15,15,16, 0, 0, 0, 0,12,15,16,
+ 16,14,14,16,15,16,16, 0,15,15, 0, 0, 0,16, 0, 0,
+ 0, 0, 9,10,12,13,10,11,12,10,10,12,13,11,12,14,
+ 11,12,15,16,12,14,16,13,13,15,15,13,15,15, 9,11,
+ 12,13,11,13,14,11,12,15, 0,12,13, 0,14,13,15, 0,
+ 14,15,16,10,11,13,15,12,13,16,11,12,13,16,12,14,
+ 15,13,15,15,16,13,15,16,14, 0,16,16,15, 0, 0,11,
+ 12,14,15,12,14, 0,12,14,14,16,16,15,16,14,15,16,
+ 0,15, 0,16,12,12,14, 0,13,14, 0,13,13,16,15,13,
+ 15, 0,15,16,16, 0,14,15,16, 0, 0, 0, 0,16,16, 0,
+ 12,12,15,14,14,16,16,14,15,16,16, 0, 0,16,15, 0,
+ 0,16, 0,16, 0,10,10,11,13,10,12,13,10,11,13,15,
+ 11,13,15,12,13,13, 0,13,13,16,13,14, 0, 0,13,16,
+ 0,11,11,14,13,11,13,15,11,12,16,15,13,14,14,13,
+ 15,15,16, 0, 0, 0,10,11,13,15,11,13,15,11,12,14,
+ 15,12,14,15,13,13,15, 0,14,14, 0,15,16, 0, 0,14,
+ 0,16,11,12,13,14,12,13,15,12,15,14, 0,14,16,15,
+ 14,13, 0, 0,15,16, 0,12,12,15,16,13, 0, 0,12,13,
+ 16, 0,14,15, 0,13,15,15,16,14,16, 0,16, 0,16, 0,
+ 16, 0, 0,13,13,15, 0,15,15,16,15,15, 0, 0, 0,16,
+ 0,16,15, 0, 0,15, 0, 0,12,14, 0, 0,15, 0, 0,14,
+ 14,16, 0,14,16, 0,16,16, 0,16, 0, 0, 0, 0,16, 0,
+ 16, 0, 0, 0,15, 0, 0, 0,15, 0, 0,15, 0, 0, 0,15,
+ 0, 0, 0,16, 0, 0, 0, 0, 0,10,12,13,14,11,12,15,
+ 11,13,14,16,11,15,16,13,14,16, 0,14,14,15,16, 0,
+ 0, 0,16, 0, 0,11,12,15,16,12,15,14,12,14,16,15,
+ 12,15,16,14,15,16, 0,16, 0,16,12,12,15,16,13,14,
+ 16,12,13,15, 0,14,15, 0,16,15, 0, 0,14,16, 0, 0,
+ 0,16, 0,16, 0, 0,13,12,16, 0,13,16, 0,14,16, 0,
+ 0,16,15, 0,16,16, 0, 0, 0, 0, 0,13,13, 0,16,15,
+ 16, 0,14,15,16,16,16,15, 0,15,16, 0, 0, 0,16, 0,
+ 15, 0, 0, 0, 0,16, 0,16,15, 0,16, 0,16, 0,16, 0,
+ 0,16, 0,16, 0,15, 0, 0, 0, 0, 0, 0, 7, 8, 9,10,
+ 8, 9,10, 8, 8, 9,12, 8, 9,10, 9, 9,11,12, 9,11,
+ 12,10,11,12,13,10,12,13, 8, 8, 9,11, 8,10,10, 9,
+ 10,11,12,10,11,12,10,11,12,13,11,12,14, 8, 8,10,
+ 11, 8,10,10, 8, 9,10,11, 9,10,11, 9,10,12,12,10,
+ 12,14,11,12,12,15,11,13,15, 8, 9,10,12, 9,10,11,
+ 10,10,12,12,10,12,13,11,12,13,14,11,12,16, 9,10,
+ 12,12,10,11,13, 9,10,12,13,10,12,14,11,12,14,13,
+ 12,13,16,12,13,14,15,13,15,16,10,10,12,13,10,12,
+ 14,11,11,12,16,12,13,15,12,12,14,15,13,16, 0,10,
+ 11,14,14,11,13,15,11,12,13, 0,12,13,14,12,12,16,
+ 16,14,14, 0,14,14,14, 0,14, 0, 0,11,12,13,15,12,
+ 14,15,13,13,14, 0,13,13,15,14,14,15, 0,15,14,16,
+ 8, 8,10,11, 8,10,11, 8, 9,10,13, 9,11,12,10,10,
+ 12,12,10,11,12,11,12,13, 0,11,14,14, 8, 9,10,11,
+ 9,10,11, 9,10,12,14,10,12,13,11,11,13,14,11,12,
+ 14, 9,10,11,12,10,12,13, 9,10,12,13,10,12,13,11,
+ 12,13,16,12,13,14,12,13,14,16,13,14,14,10,11,12,
+ 13,10,12,13,11,12,15,15,11,14,14,13,13,15, 0,12,
+ 13, 0,10,11,13,16,11,13,15,11,12,13,14,11,13,15,
+ 12,13,14, 0,14,15,16,13,16,16,16,16,14, 0,11,12,
+ 12,14,11,14,14,12,13,16, 0,13,16,15,14,14,15, 0,
+ 15,16, 0, 8, 9,10,11, 9,10,11, 9,10,12,12,10,11,
+ 12,11,11,13,13,11,13,14,12,12,13,14,13,13,15, 9,
+ 10,12,12,10,11,12,11,11,13,13,11,12,13,11,12,15,
+ 0,14,14, 0, 9,10,12,13,10,11,13,10,10,12,13,11,
+ 12,13,11,12,13,14,12,13,16,13,12,15,16,14,14, 0,
+ 10,10,12,13,10,12,14,11,12,14, 0,12,13,14,13,14,
+ 15, 0,14,15, 0,11,11,13,16,11,14,13,11,12,14,16,
+ 12,13,14,12,13,14, 0,13,15,16,14,14,16, 0,14, 0,
+ 0,11,13,14,15,12,15,13,12,13,14,16,14,14, 0,14,
+ 16,16,16, 0, 0, 0,11,13,16,16,12,14,16,13,14,16,
+ 0,13, 0,16,14,14, 0,16,14,16, 0,16, 0,16, 0, 0,
+ 0, 0,12,14, 0,16,14,15,16,14,14, 0,15,14,16, 0,
+ 0, 0, 0, 0,16, 0, 0, 9,10,11,12,10,11,13,10,11,
+ 12,13,11,13,13,11,12,14,14,12,13,14,13,13,14,14,
+ 14,14, 0, 9,11,12,14,10,12,12,11,12,14,14,12,13,
+ 14,13,12,16,16,13,14, 0,10,11,13,14,11,14,15,11,
+ 11,14,14,13,14,16,13,13, 0,15,13,16, 0,16,14,16,
+ 0,16,15, 0,11,12,14,15,12,13,16,12,14, 0, 0,14,
+ 16,16,13,15,15, 0,14,15,16,11,13,16, 0,13,14,15,
+ 12,14,15, 0,14,14,16,13,14,15, 0,14, 0, 0, 0, 0,
+ 0, 0,15,16, 0,12,13,14,16,13,14, 0,14,16, 0, 0,
+ 14,15,16, 0,16,16,16,15,16, 0,10,10,12,13,10,12,
+ 13,10,11,13,14,11,12,14,12,13,14,14,12,13, 0,13,
+ 14,15,16,13,14,16,10,11,13,14,12,13,14,12,12,14,
+ 16,13,14,15,13,15,14,15,14,15, 0,10,11,13,14,11,
+ 12,14,11,12,15,15,12,13,14,13,13,14,16,13,15, 0,
+ 14,14,16, 0, 0,14, 0,11,12,13,16,12,14,16,12,14,
+ 0,16,13,16,16,15,15, 0, 0,14, 0, 0,11,12,14,15,
+ 13,14,15,12,14,16, 0,14,14, 0,14,16,16, 0,15,15,
+ 0,14,16, 0, 0,15,16, 0,12,13,14, 0,13,14,15,14,
+ 14, 0, 0,15, 0, 0,14, 0, 0, 0, 0, 0, 0,13,14,16,
+ 16,15,15, 0,14,16, 0, 0,15, 0, 0,14, 0, 0, 0,15,
+ 16, 0, 0, 0, 0, 0, 0, 0, 0,13,14,16, 0,15, 0, 0,
+ 13,16, 0, 0,16, 0, 0,16, 0,16, 0, 0, 0, 0,10,11,
+ 13,14,11,14,14,11,11,14, 0,12,15,16,13,14,15, 0,
+ 14, 0,15,15,14,16, 0,15, 0,16,11,13,14,14,12,14,
+ 14,12,13,16, 0,13,15,16,15, 0, 0, 0,15,16, 0,12,
+ 13,14, 0,13,16,14,12,13,14,16,14,16,16,15,14,16,
+ 16, 0,16, 0,15, 0, 0, 0,16, 0, 0,12,14,15, 0,14,
+ 14,16,14,16,16, 0,14,16, 0,16, 0, 0, 0,16,16, 0,
+ 14,16,15, 0,16, 0,16,13,14, 0, 0, 0, 0,16, 0,15,
+ 0, 0, 0, 0, 0,16, 0,16, 0, 0, 0, 0,14,14, 0, 0,
+ 14, 0, 0,15, 0,15, 0, 0,16, 0,16, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_128_6[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_6[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_6 = {
+ _vq_quantthresh_res0_1024a_128_6,
+ _vq_quantmap_res0_1024a_128_6,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_1024a_128_6 = {
+ 4, 2401,
+ _vq_lengthlist_res0_1024a_128_6,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_128_6,
+ NULL,
+ &_vq_auxt_res0_1024a_128_6,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_7.vqh b/lib/books/res0_1024a_128_7.vqh
new file mode 100644
index 00000000..caf231a9
--- /dev/null
+++ b/lib/books/res0_1024a_128_7.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_7_VQH_
+#define _V_res0_1024a_128_7_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_7[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_7[] = {
+ 1, 4, 6, 7, 7, 8, 4, 6, 7, 7, 8, 4, 6, 8, 9, 9,
+ 10, 6, 8, 9, 9,10, 7, 8,10,11,11,12, 8,10,11,11,
+ 12, 8,10,11,12,12,13,10,11,12,12,13, 7,10,11,12,
+ 13,14,10,11,13,13,14, 9,11,13,14,14,15,11,13,14,
+ 14,15, 4, 6, 8, 9, 9,10, 6, 8, 9, 9,10, 7, 8,10,
+ 11,11,12, 8,10,11,11,12, 8,10,11,12,12,13,10,11,
+ 12,12,13, 8,10,11,13,13,14,10,11,13,13,14, 9,11,
+ 13,14,14,15,11,13,14,14,15,
+};
+
+static float _vq_quantthresh_res0_1024a_128_7[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_1024a_128_7[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_7 = {
+ _vq_quantthresh_res0_1024a_128_7,
+ _vq_quantmap_res0_1024a_128_7,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_1024a_128_7 = {
+ 2, 121,
+ _vq_lengthlist_res0_1024a_128_7,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_1024a_128_7,
+ NULL,
+ &_vq_auxt_res0_1024a_128_7,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_8.vqh b/lib/books/res0_1024a_128_8.vqh
new file mode 100644
index 00000000..cf1f6801
--- /dev/null
+++ b/lib/books/res0_1024a_128_8.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_8_VQH_
+#define _V_res0_1024a_128_8_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_8[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_8[] = {
+ 2, 4, 6, 7, 7, 7, 7, 8, 4, 6, 7, 7, 7, 7, 8, 5,
+ 6, 7, 8, 8, 9, 8, 9, 6, 7, 8, 8, 9, 8, 9, 6, 8,
+ 9, 9, 9, 9, 9,10, 8, 9, 9, 9, 9, 9,10, 7, 8, 9,
+ 10,10,10,10,11, 8, 9,10,10,10,10,11, 7, 9, 9,10,
+ 10,10,10,11, 9, 9,10,10,10,10,11, 7, 9,10,10,10,
+ 10,10,11, 9,10,10,10,10,10,11, 7, 9,10,11,10,11,
+ 11,12, 9,10,10,10,11,11,12, 8,10,11,11,11,11,12,
+ 12,10,11,11,11,11,12,12, 5, 6, 7, 8, 8, 8, 8, 9,
+ 6, 7, 8, 8, 9, 8, 9, 6, 8, 9, 9, 9, 9, 9,10, 8,
+ 9, 9, 9, 9, 9,10, 7, 8, 9,10,10,10,10,11, 8, 9,
+ 10,10,10,10,11, 7, 9, 9,10,10,10,10,11, 8, 9,10,
+ 10,10,10,11, 7, 9,10,10,10,10,10,11, 9,10,10,10,
+ 10,10,11, 7, 9,10,10,10,11,11,12, 9,10,11,10,11,
+ 11,12, 8,10,11,11,11,11,12,12,10,11,11,11,11,12,
+ 12,
+};
+
+static float _vq_quantthresh_res0_1024a_128_8[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_8[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_8 = {
+ _vq_quantthresh_res0_1024a_128_8,
+ _vq_quantmap_res0_1024a_128_8,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_1024a_128_8 = {
+ 2, 225,
+ _vq_lengthlist_res0_1024a_128_8,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_1024a_128_8,
+ NULL,
+ &_vq_auxt_res0_1024a_128_8,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_128_9.vqh b/lib/books/res0_1024a_128_9.vqh
new file mode 100644
index 00000000..f3a3de94
--- /dev/null
+++ b/lib/books/res0_1024a_128_9.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_128_9_VQH_
+#define _V_res0_1024a_128_9_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_128_9[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_128_9[] = {
+ 3, 5, 6, 7, 7, 7, 8, 8, 8,11,14,20, 5, 6, 7, 7,
+ 7, 8, 8, 8,11,15,18, 5, 6, 7, 8, 8, 8, 8, 9, 9,
+ 13,15,20, 6, 7, 8, 8, 8, 8, 9, 9,13,16,19, 6, 7,
+ 8, 8, 8, 9, 9,10,10,13,15, 0, 7, 8, 8, 8, 9, 9,
+ 10,10,13,16, 0, 7, 8, 9, 9, 9, 9,10,10,11,14,18,
+ 0, 8, 8, 9, 9, 9,10,10,11,14,16, 0, 7, 8, 9, 9,
+ 9, 9,10,10,11,15,18, 0, 8, 9, 9, 9, 9, 9,10,11,
+ 14,17,19, 7, 8, 9, 9, 9, 9,10,10,11,15,19, 0, 8,
+ 9, 9, 9, 9,10,10,11,16, 0, 0, 7, 9, 9,10,10,10,
+ 10,11,11,17,18, 0, 9, 9,10,10,10,10,11,11,16,19,
+ 0, 8, 9,10,10,10,10,11,11,12,16, 0, 0, 9,10,11,
+ 10,11,11,11,12,15, 0, 0, 8, 9,10,11,11,11,11,12,
+ 14,16, 0, 0,10,10,11,11,11,11,12,14,18, 0, 0,11,
+ 14,14,15,14,16,15,15,17, 0, 0, 0,13,14,14,14,15,
+ 15,15,19,19, 0, 0,14,17,18, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,16,19, 0, 0,19, 0, 0, 0, 0, 0, 0,18, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 8, 8, 8, 8, 9, 9,13,15,19,
+ 6, 7, 8, 8, 8, 8, 9, 9,13,17, 0, 6, 7, 8, 8, 8,
+ 9, 9,10,10,13,15,17, 7, 8, 8, 8, 9, 9,10,10,13,
+ 16, 0, 6, 8, 9, 9, 9, 9,10,10,11,14,15,19, 8, 9,
+ 9, 9, 9,10,10,11,14,17, 0, 7, 8, 9, 9, 9, 9,10,
+ 10,11,15,16, 0, 8, 9, 9, 9, 9,10,10,11,15,18, 0,
+ 7, 8, 9, 9, 9,10,10,10,11,15,19, 0, 8, 9, 9, 9,
+ 9,10,10,11,15, 0, 0, 7, 9, 9,10,10,10,10,11,11,
+ 15,19, 0, 9, 9,10,10,10,10,11,11,15,19,19, 8, 9,
+ 10,10,10,10,11,11,12,15, 0, 0, 9,10,10,10,10,11,
+ 11,12,16,19, 0, 8,10,10,11,11,11,11,12,14,19, 0,
+ 0,10,10,11,11,11,11,12,14,18, 0, 0,11,13,15,14,
+ 15,15,15,16,17, 0, 0, 0,13,15,15,14,14,16,15,17,
+ 0, 0, 0,14,19,17, 0, 0, 0, 0,19, 0, 0, 0, 0,17,
+ 18,19,18,19, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_128_9[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_1024a_128_9[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_128_9 = {
+ _vq_quantthresh_res0_1024a_128_9,
+ _vq_quantmap_res0_1024a_128_9,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_1024a_128_9 = {
+ 2, 529,
+ _vq_lengthlist_res0_1024a_128_9,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_1024a_128_9,
+ NULL,
+ &_vq_auxt_res0_1024a_128_9,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_1.vqh b/lib/books/res0_1024a_160_1.vqh
new file mode 100644
index 00000000..25231909
--- /dev/null
+++ b/lib/books/res0_1024a_160_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_1_VQH_
+#define _V_res0_1024a_160_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_1[] = {
+ 1, 4, 4, 4, 7, 7, 4, 7, 7, 5, 8, 8, 8,11,11, 8,
+ 11,11, 5, 8, 8, 8,11,11, 8,11,11, 5, 8, 8, 8,11,
+ 11, 8,11,11, 8,11,11,11,15,15,11,15,15, 8,11,11,
+ 11,15,15,12,15,15, 5, 8, 8, 8,11,11, 8,11,11, 8,
+ 11,11,11,15,15,11,15,15, 8,11,11,12,15,15,11,15,
+ 15,
+};
+
+static float _vq_quantthresh_res0_1024a_160_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_1 = {
+ _vq_quantthresh_res0_1024a_160_1,
+ _vq_quantmap_res0_1024a_160_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_1024a_160_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_1024a_160_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_1024a_160_1,
+ NULL,
+ &_vq_auxt_res0_1024a_160_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_2.vqh b/lib/books/res0_1024a_160_2.vqh
new file mode 100644
index 00000000..52d70eb6
--- /dev/null
+++ b/lib/books/res0_1024a_160_2.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_2_VQH_
+#define _V_res0_1024a_160_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_2[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_2[] = {
+ 3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 7, 6,
+ 7, 8, 5, 6, 6, 6, 7, 7, 6, 7, 7, 5, 6, 6, 6, 8,
+ 8, 6, 7, 7, 6, 8, 7, 7, 9, 9, 8, 9, 9, 6, 8, 8,
+ 7, 9, 9, 8, 9, 9, 5, 6, 6, 6, 7, 7, 6, 8, 8, 6,
+ 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 8, 8, 9, 9, 7, 9,
+ 9,
+};
+
+static float _vq_quantthresh_res0_1024a_160_2[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_2[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_2 = {
+ _vq_quantthresh_res0_1024a_160_2,
+ _vq_quantmap_res0_1024a_160_2,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_1024a_160_2 = {
+ 4, 81,
+ _vq_lengthlist_res0_1024a_160_2,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_1024a_160_2,
+ NULL,
+ &_vq_auxt_res0_1024a_160_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_3.vqh b/lib/books/res0_1024a_160_3.vqh
new file mode 100644
index 00000000..33f699ef
--- /dev/null
+++ b/lib/books/res0_1024a_160_3.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_3_VQH_
+#define _V_res0_1024a_160_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_3[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_3[] = {
+ 2, 5, 7, 5, 7, 5, 6, 9, 7, 9, 7, 9,13, 9,13, 5,
+ 6, 9, 7, 9, 7, 9,13, 9,13, 5, 7, 9, 7, 9, 7, 8,
+ 11, 8,11, 9,11,15,11,15, 7, 8,11, 8,11,10,11,14,
+ 11,15, 7, 9,13, 9,13, 9,12,15,11,15,13,15,18,15,
+ 18,10,11,15,12,15,13,16,19,16,18, 5, 7, 9, 7, 9,
+ 7, 8,11, 8,11,10,11,15,11,15, 7, 9,11, 8,11,10,
+ 11,15,11,15, 7, 9,13, 9,13,10,11,15,11,15,13,16,
+ 18,15,18,10,11,15,12,15,13,15,19,15,18, 5, 7, 9,
+ 7, 9, 7, 8,11, 9,11, 9,11,15,11,15, 7, 9,11, 9,
+ 11, 9,11,15,11,15, 7, 9,11, 9,11, 8,10,13,10,13,
+ 11,13,17,13,17, 9,11,13,10,13,12,14,18,13,17, 9,
+ 11,15,12,15,11,13,17,13,17,15,17,19,18, 0,12,14,
+ 18,13,17,16,17, 0,18,20, 7, 9,11, 9,11, 9,10,13,
+ 10,13,11,13,18,13,16, 9,11,13,11,13,11,13,19,13,
+ 17, 9,11,15,12,15,12,14,17,13,18,15,17,20,17,19,
+ 12,13,17,14,17,16,18,19,18, 0, 7, 9,13, 9,13, 9,
+ 12,15,11,15,13,16, 0,15,19, 9,12,15,12,15,13,15,
+ 19,15,20, 9,11,16,11,15,11,13,18,13,19,15,17, 0,
+ 17, 0,11,14,18,14,17,15,17, 0,17, 0,13,15,20,15,
+ 19,15,18,19,17,20,19,19, 0,20, 0,15,18,19,18,20,
+ 18, 0, 0, 0,20, 9,12,15,11,15,11,13,18,13,16,15,
+ 18, 0,17, 0,12,13,18,14,18,16,17, 0,17, 0,13,16,
+ 18,15,19,15,18, 0,18, 0,18, 0, 0,20, 0,16,18, 0,
+ 19, 0,19, 0, 0,20, 0, 5, 7, 9, 7, 9, 7, 8,11, 9,
+ 11, 9,11,15,12,15, 7, 9,11, 9,11, 9,12,15,11,15,
+ 7, 9,11, 9,11, 9,10,13,10,13,11,13,17,13,17, 9,
+ 10,13,11,13,11,13,17,14,18, 9,12,16,12,15,12,14,
+ 17,13,18,15,18, 0,17, 0,12,13,18,14,17,15,17, 0,
+ 17,20, 7, 9,11, 9,11, 9,10,13,11,13,12,13,17,14,
+ 17, 9,11,13,10,13,12,13,17,13,16,10,11,15,12,16,
+ 12,14,17,14,17,15,18,20,18, 0,11,14,17,14,18,16,
+ 18,20,17,20, 7, 9,13,10,13, 9,11,15,11,15,13,15,
+ 19,15, 0, 9,11,16,12,16,13,16, 0,16,18, 9,11,15,
+ 11,16,11,13,18,13,18,16,18, 0,17, 0,11,13,17,14,
+ 17,15,18,20,17, 0,13,16,20,16,18,15,19, 0,18, 0,
+ 19, 0, 0, 0, 0,15,17,20,16, 0,19,19, 0,20, 0, 9,
+ 11,15,11,16,11,13,17,14,19,16,17,20,18, 0,11,14,
+ 17,13,17,15,17,20,18,20,13,15,18,16,20,15,17, 0,
+ 18, 0, 0,20, 0, 0, 0,15,18, 0,17,19,19,20, 0,20,
+ 20,
+};
+
+static float _vq_quantthresh_res0_1024a_160_3[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_3[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_3 = {
+ _vq_quantthresh_res0_1024a_160_3,
+ _vq_quantmap_res0_1024a_160_3,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_160_3 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_160_3,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_160_3,
+ NULL,
+ &_vq_auxt_res0_1024a_160_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_4.vqh b/lib/books/res0_1024a_160_4.vqh
new file mode 100644
index 00000000..fd616551
--- /dev/null
+++ b/lib/books/res0_1024a_160_4.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_4_VQH_
+#define _V_res0_1024a_160_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_4[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_4[] = {
+ 6, 6, 8, 6, 8, 6, 7, 9, 7, 9, 8, 9,11, 9,11, 6,
+ 7, 9, 7, 9, 8, 9,11, 9,11, 6, 7, 9, 7, 9, 7, 7,
+ 9, 7, 9, 9, 9,11,10,12, 7, 7, 9, 7, 9, 9,10,11,
+ 10,12, 8, 9,11, 9,11, 9,10,12,10,12,11,12,14,12,
+ 14, 9,10,12,10,12,11,12,14,12,14, 6, 7, 9, 7, 9,
+ 7, 7, 9, 7, 9, 9,10,12, 9,11, 7, 7,10, 7, 9, 9,
+ 10,12, 9,11, 8, 9,11, 9,11, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,11,12,14,12,13, 6, 7, 9,
+ 7, 9, 7, 7, 9, 7,10, 9,10,12,10,12, 7, 7, 9, 7,
+ 10, 9,10,12,10,12, 7, 7,10, 7, 9, 7, 8,10, 8,10,
+ 10,10,12,10,12, 7, 8,10, 8,10,10,10,12,10,12, 9,
+ 10,12,10,12, 9,10,12,10,13,12,12,14,12,14,10,10,
+ 12,10,12,12,12,14,12,14, 7, 7, 9, 7,10, 7, 8,10,
+ 8,10,10,10,12,10,12, 7, 8,10, 8,10,10,10,12,10,
+ 12, 9,10,12,10,12,10,10,12,10,12,12,12,14,12,14,
+ 10,10,12,10,13,12,13,14,13,14, 8, 9,11, 9,11, 9,
+ 10,12,10,12,11,12,14,12,14, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,10,10,12,10,12,12,12,14,
+ 13,15,10,10,12,10,12,12,13,14,13,14,11,12,14,12,
+ 14,12,12,14,12,15,14,14,16,15,16,12,12,15,12,14,
+ 14,15,17,15,16, 9,10,12,10,12,10,10,12,10,12,12,
+ 12,15,12,14,10,10,12,10,12,12,12,14,12,14,11,12,
+ 14,12,14,12,12,14,12,14,13,14,17,14,16,12,12,14,
+ 12,15,14,15,16,14,16, 6, 7, 9, 7, 9, 7, 7, 9, 7,
+ 10, 9,10,12,10,12, 7, 7,10, 7,10, 9,10,12,10,12,
+ 7, 7,10, 7,10, 7, 8,10, 8,10,10,10,12,10,12, 7,
+ 8,10, 8,10,10,10,12,10,13, 9,10,12,10,12,10,10,
+ 12,10,12,12,12,14,12,14,10,10,12,10,12,12,12,14,
+ 12,15, 7, 7,10, 7,10, 7, 8,10, 8,10,10,10,12,10,
+ 12, 7, 8,10, 8,10,10,10,12,10,12, 9,10,12,10,12,
+ 10,10,12,10,13,12,13,14,13,14,10,10,13,10,12,12,
+ 12,14,12,14, 8, 9,11, 9,11, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,11,12,14,12,14, 9,10,12,
+ 10,12,10,10,13,10,12,12,13,14,12,15,10,10,12,10,
+ 13,12,12,14,13,14,11,12,14,12,14,12,13,14,12,14,
+ 13,15,16,14,16,12,12,14,13,14,14,14,16,15,16, 9,
+ 10,12,10,12,10,10,12,10,13,12,12,14,12,15,10,10,
+ 13,10,12,12,13,15,13,14,11,12,14,12,14,12,12,14,
+ 13,15,14,14,17,15,16,12,12,14,12,14,14,14,17,14,
+ 16,
+};
+
+static float _vq_quantthresh_res0_1024a_160_4[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_4[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_4 = {
+ _vq_quantthresh_res0_1024a_160_4,
+ _vq_quantmap_res0_1024a_160_4,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_160_4 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_160_4,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_160_4,
+ NULL,
+ &_vq_auxt_res0_1024a_160_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_5.vqh b/lib/books/res0_1024a_160_5.vqh
new file mode 100644
index 00000000..0915c2cc
--- /dev/null
+++ b/lib/books/res0_1024a_160_5.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_5_VQH_
+#define _V_res0_1024a_160_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_5[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_5[] = {
+ 4, 5, 7, 8, 6, 8, 8, 5, 7, 9,10, 7, 9,10, 8, 9,
+ 11,12, 9,11,12, 8,10,12,15,10,12,15, 6, 7, 9,10,
+ 7, 9,10, 8, 9,11,12, 9,11,12, 8,10,12,14,10,12,
+ 15, 6, 7, 9,10, 7, 9,10, 7, 8,10,11, 8,10,11, 9,
+ 10,12,13,10,12,14,10,11,14,16,11,14,16, 7, 8,10,
+ 11, 8,10,11, 9,10,12,13,10,13,14,10,11,14,16,11,
+ 14,17, 8, 9,11,12, 9,11,12, 9,10,13,13,10,12,14,
+ 11,12,15,16,13,15,16,13,14,15,19,14,17,20, 9,10,
+ 12,14,10,13,14,11,13,15,16,13,15,16,13,14,16,18,
+ 14,17, 0, 8,10,12,14,10,12,14,10,11,14,16,11,14,
+ 16,13,14,16,18,14,16,19,15,16,20,20,17,18, 0,10,
+ 11,14,16,11,14,16,13,14,16,18,14,16,19,16,16,20,
+ 20,17,19,20, 6, 7, 9,10, 7, 9,10, 7, 8,10,11, 8,
+ 10,11, 9,10,13,14,10,12,13,10,11,13,16,11,13,16,
+ 7, 8,10,11, 8,10,11, 9,10,13,14,10,13,14,10,11,
+ 13,16,11,14,17, 8, 9,11,12, 9,11,12, 9,10,12,14,
+ 10,13,13,12,13,15,17,13,15,16,13,14,16,19,14,16,
+ 19, 9,10,13,14,10,13,14,11,13,15,16,13,15,16,13,
+ 14,16,20,14,16,18, 8,10,12,14,10,12,14,10,11,14,
+ 16,12,14,16,13,14,16,19,14,17,20,16,16,19, 0,17,
+ 18, 0,10,12,14,16,11,14,16,13,14,16,19,14,16,19,
+ 15,16,19, 0,16, 0, 0, 6, 7, 9,10, 7, 9,10, 7, 8,
+ 10,11, 8,10,11, 9,10,13,14,10,13,14,10,11,14,16,
+ 12,14,16, 7, 8,10,11, 8,10,11, 9,10,13,14,10,12,
+ 14,10,11,14,16,11,14,17, 7, 8,10,11, 8,10,11, 8,
+ 9,11,12, 9,11,12,10,12,14,15,12,14,15,11,12,15,
+ 19,13,15,18, 8, 9,11,12, 9,11,12,10,11,14,15,12,
+ 14,15,11,13,15,18,13,15,18, 9,10,13,14,10,13,14,
+ 10,12,14,15,12,14,15,13,14,16,17,14,17,17,14,15,
+ 17,20,15,18,20,10,11,14,15,12,14,15,13,14,17,20,
+ 14,16,18,14,15,17,20,15,18, 0,10,12,14,16,12,14,
+ 16,11,13,16,18,13,15,18,14,15,16,19,15,17,20,16,
+ 17,20,20,20, 0, 0,11,13,15,19,13,16,17,14,15,18,
+ 19,15,17,19,16,18, 0, 0,17,18, 0, 7, 8,10,11, 8,
+ 10,11, 8, 9,12,12, 9,11,12,10,12,14,15,11,14,15,
+ 11,13,15,17,12,15,18, 8, 9,11,12, 9,12,13,10,12,
+ 14,15,11,14,15,11,13,15,18,13,16,19, 9,10,13,14,
+ 10,13,14,10,12,14,15,11,14,15,13,14,16,17,14,16,
+ 17,14,15,18, 0,15,16, 0,10,12,14,15,12,14,15,13,
+ 14,17,17,14,17,17,14,15,18,20,15,18, 0,10,12,14,
+ 16,12,14,16,11,13,15,18,13,15,18,14,15,17,19,15,
+ 17, 0,17,18,20, 0,18,19, 0,11,13,15,17,13,16,18,
+ 14,15,18,20,15,17, 0,17,17, 0, 0,18,20, 0, 8, 9,
+ 11,12, 9,11,12, 9,10,13,14,10,13,14,11,13,15,17,
+ 13,15,16,12,14,16,18,14,16,20, 9,10,13,14,10,13,
+ 14,11,13,15,17,13,16,16,12,14,17,18,14,16,20, 9,
+ 10,13,14,10,13,14,10,11,14,15,12,14,14,13,14,17,
+ 18,14,17,17,14,15,17,20,15,18, 0,10,12,14,15,12,
+ 14,15,13,14,17,18,14,17,18,14,15,18, 0,15,18, 0,
+ 11,13,15,16,13,15,16,13,14,16,19,14,16,18,15,16,
+ 19,19,16,19,20,16,17,18,20,17,19, 0,13,14,16,17,
+ 14,17,17,15,17,18, 0,17,19, 0,17,18, 0, 0,17,19,
+ 20,12,14,16,18,14,16,19,14,15,17,18,15,18, 0,16,
+ 17,20, 0,18, 0, 0,18,20,20, 0, 0, 0, 0,14,16,18,
+ 0,15,18, 0,16,18,19, 0,18,18, 0,19,20,20, 0, 0,
+ 0, 0, 9,10,13,13,10,13,14,10,12,14,15,12,14,15,
+ 13,14,17,18,14,17,18,14,16,18,20,15,18, 0,10,12,
+ 14,15,12,14,15,13,14,16,18,14,17,18,14,15,18,19,
+ 15,17,19,11,13,15,16,13,15,16,12,14,17,18,14,17,
+ 17,15,16,18,19,16,20,20,16,18,20, 0,18,19, 0,13,
+ 14,16,18,14,17,18,15,17,18,19,16,18,19,17,18,20,
+ 0,18,19, 0,13,14,16,19,14,17,18,14,15,17, 0,15,
+ 18,20,16,17,19, 0,16,20, 0,19,20, 0, 0,20, 0, 0,
+ 14,15,17, 0,15,18, 0,16,19,19, 0,19, 0, 0,18, 0,
+ 0, 0,20, 0, 0, 8,10,12,14,10,12,14,10,12,14,16,
+ 12,14,17,12,14,17,20,14,16,20,14,16,20, 0,16,20,
+ 0,10,12,14,16,11,14,16,12,14,16,18,14,17,19,14,
+ 17,19, 0,16,18, 0,10,11,14,16,11,14,17,11,13,15,
+ 17,13,16,19,14,15,18, 0,15,18,20,17,18,20, 0,19,
+ 20, 0,11,13,15,18,13,15,17,14,16,18, 0,15,18,20,
+ 17,18, 0, 0,18,19, 0,12,14,16,18,14,16,18,13,15,
+ 17, 0,15,18,20,16,16, 0, 0,17,19, 0,20,19, 0, 0,
+ 0, 0, 0,14,15,18, 0,15,18, 0,16,18,20, 0,18,20,
+ 0,19, 0, 0, 0,20,20,20,15,16,19,20,17,19,20,16,
+ 18,20, 0,17,20, 0,18, 0, 0, 0,20, 0, 0,20, 0, 0,
+ 0, 0, 0, 0,17,17, 0, 0,18,20, 0, 0, 0,20, 0, 0,
+ 0, 0, 0, 0, 0, 0,20, 0, 0,10,11,14,16,11,14,16,
+ 11,13,15,18,13,15,17,14,15,17,20,16,18, 0,17,18,
+ 0, 0,17,19, 0,11,13,15,18,13,15,18,14,15,17, 0,
+ 16,17,20,16,18, 0,20,19,20, 0,13,14,17,19,14,16,
+ 18,14,15,17,20,15,18,19,16,17,18, 0,17, 0,20,19,
+ 0,20, 0,20,20, 0,14,15,18, 0,15,17,20,16,18,19,
+ 0,18,20, 0,18,20, 0, 0,19, 0, 0,15,17,19, 0,17,
+ 18, 0,16,19,19, 0,17, 0, 0,18,20, 0, 0,20, 0, 0,
+ 0, 0, 0, 0,19, 0, 0,17,19,20, 0,18,19, 0,20, 0,
+ 0, 0,20, 0,20, 0, 0, 0, 0, 0, 0, 0, 6, 7, 9,10,
+ 7, 9,10, 7, 8,10,11, 8,10,11, 9,10,13,13,10,13,
+ 14,10,11,14,17,11,14,17, 7, 8,10,11, 8,10,11, 9,
+ 10,13,14,10,13,14,10,11,14,16,11,14,17, 7, 8,10,
+ 11, 8,10,11, 8, 9,12,12, 9,11,12,10,12,14,15,12,
+ 14,15,11,13,15,17,13,15,18, 8, 9,11,12, 9,12,12,
+ 10,12,14,15,12,14,15,11,13,15,18,13,15,18, 9,10,
+ 13,14,10,13,14,10,12,14,15,12,14,15,13,14,16,17,
+ 14,16,17,14,15,19,20,15,18,19,10,12,14,15,12,14,
+ 15,13,14,16,17,14,17,18,14,15,17,20,15,17, 0,10,
+ 11,14,16,12,14,16,11,13,15,18,13,15,18,14,16,18,
+ 19,15,18,19,16,18,20, 0,18, 0, 0,12,13,15,18,13,
+ 15,18,14,15,17,19,15,18,19,16,17,20, 0,19,19, 0,
+ 7, 8,10,11, 8,10,11, 8, 9,11,12, 9,12,12,10,11,
+ 13,15,12,14,15,11,13,15,17,12,15,17, 8, 9,12,13,
+ 9,12,12,10,12,14,15,12,14,15,12,13,15,18,13,15,
+ 18, 9,10,13,14,10,13,14,10,12,14,15,12,14,15,13,
+ 14,17,18,14,17,19,14,15,18,19,15,18, 0,10,12,14,
+ 15,12,14,15,13,14,18,17,14,16,18,14,16,18,20,15,
+ 17,20,10,12,14,17,12,14,16,11,13,15,18,13,16,18,
+ 14,16,17,20,15,17,20,17,19,20, 0,18, 0, 0,12,13,
+ 15, 0,13,15,17,14,15,18,20,15,17,19,17,18, 0, 0,
+ 18,19,20, 8, 9,11,12, 9,11,12, 9,10,13,14,11,13,
+ 14,11,13,15,16,13,15,17,12,14,17,20,14,16,18, 9,
+ 10,13,14,11,13,14,11,13,15,17,13,15,16,12,14,16,
+ 18,14,16,19, 9,10,13,14,10,13,14,10,12,14,15,12,
+ 14,15,13,14,17,18,14,17,18,14,15,17, 0,15,18,19,
+ 10,12,14,15,12,14,15,13,14,17,18,14,17,18,14,15,
+ 18,20,15,18,20,11,13,15,16,13,15,17,13,14,16,18,
+ 14,17,17,15,17,19, 0,17,19, 0,16,17, 0, 0,18,20,
+ 0,13,14,16,19,14,17,18,15,16,19,20,17,19, 0,16,
+ 17,19, 0,18,19, 0,13,13,16,20,14,16,19,14,15,17,
+ 20,15,18,19,17,19,20, 0,17,19,20,19, 0,20, 0,20,
+ 0, 0,14,15,18,20,15,18, 0,16,17,20, 0,18,20, 0,
+ 19, 0,20, 0, 0, 0, 0, 9,10,13,14,10,13,14,10,11,
+ 14,15,12,14,15,13,14,16,18,14,17,18,14,16,18, 0,
+ 15,18,19,10,12,14,15,12,14,15,13,14,16,18,14,16,
+ 18,14,15,18,19,15,18,19,11,13,15,16,13,15,16,13,
+ 14,17,17,14,17,18,15,16,18,20,17,20,19,17,18,20,
+ 0,19,20, 0,13,14,17,18,14,17,17,15,17,19,20,17,
+ 0,19,16,18,19, 0,18,20, 0,13,14,17,20,14,17,19,
+ 14,15,18,19,15,18,20,17,17,20, 0,18,19, 0,19, 0,
+ 0, 0, 0, 0, 0,14,15,18,19,15,17,19,16,18,20, 0,
+ 18,20, 0,20,20, 0, 0,20, 0, 0, 8,10,12,14,10,12,
+ 14,10,12,14,17,11,14,17,12,14,17,18,14,17,19,14,
+ 16,18, 0,17,20, 0,10,11,14,16,12,14,17,12,14,17,
+ 0,14,17,19,14,17,20,20,17,19, 0,10,11,14,16,11,
+ 14,16,11,13,15,18,13,15,18,14,15,18, 0,15,19,20,
+ 16,19,20, 0,18, 0, 0,11,12,15,18,13,15,18,14,15,
+ 17, 0,16,18,19,16,18,19, 0,18, 0, 0,12,14,17,18,
+ 14,16,20,14,15,18, 0,15,18, 0,16,18, 0, 0,18,20,
+ 0,18,20, 0, 0,20, 0, 0,14,15,18,20,15,18,20,16,
+ 18,18, 0,18,20, 0,19,20, 0, 0, 0,20, 0,15,17,19,
+ 0,16,19, 0,17,18,20, 0,18, 0, 0,18, 0,20, 0,20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,16,18,20,19,18, 0, 0,
+ 20,19, 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,11,
+ 14,17,12,14,17,11,13,15,17,13,16,18,14,15,18, 0,
+ 15,18,20,16,17,19, 0,18,19, 0,11,13,15,18,13,15,
+ 19,14,15,18, 0,15,19,20,17,18,20, 0,18,18, 0,13,
+ 14,16, 0,14,16,20,14,15,17,19,15,18,19,16,18,19,
+ 0,19, 0, 0, 0, 0, 0, 0,20, 0, 0,14,15,17, 0,15,
+ 17,20,16,17,20, 0,18,18,20,19,20, 0, 0,20, 0, 0,
+ 15,16,19,20,16,20, 0,16,18, 0,20,18,20, 0,18, 0,
+ 0, 0, 0, 0, 0, 0, 0,20, 0, 0, 0, 0,16,18, 0, 0,
+ 19,20, 0,18,20, 0, 0,19,20, 0, 0, 0, 0, 0,20, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_160_5[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_5[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_5 = {
+ _vq_quantthresh_res0_1024a_160_5,
+ _vq_quantmap_res0_1024a_160_5,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_1024a_160_5 = {
+ 4, 2401,
+ _vq_lengthlist_res0_1024a_160_5,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_160_5,
+ NULL,
+ &_vq_auxt_res0_1024a_160_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_6.vqh b/lib/books/res0_1024a_160_6.vqh
new file mode 100644
index 00000000..353d6ced
--- /dev/null
+++ b/lib/books/res0_1024a_160_6.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_6_VQH_
+#define _V_res0_1024a_160_6_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_6[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_6[] = {
+ 7, 8, 9,10, 8, 9,10, 8, 8, 9,10, 8, 9,10, 9, 9,
+ 10,12, 9,10,11,10,10,12,13,10,12,13, 8, 8, 9,10,
+ 8, 9,10, 9, 9,10,12, 9,10,11,10,10,12,13,10,12,
+ 13, 8, 8, 9,10, 8, 9,10, 8, 8, 9,11, 8, 9,11, 9,
+ 9,11,12, 9,11,12,10,11,12,14,11,12,14, 8, 8, 9,
+ 11, 8, 9,11, 9, 9,11,12, 9,11,12,10,11,12,14,11,
+ 12,14, 9, 9,10,12, 9,10,12, 9, 9,11,12, 9,11,12,
+ 10,11,12,13,11,12,13,12,12,13,15,12,13,15, 9, 9,
+ 11,12, 9,11,12,10,11,12,13,11,12,14,12,12,13,15,
+ 12,14,16,10,11,12,13,10,12,13,10,11,12,14,11,12,
+ 14,12,12,14,15,12,14,15,13,14,15,17,14,16,17,10,
+ 11,12,14,11,12,14,12,12,14,15,12,13,16,13,14,15,
+ 18,14,15,17, 8, 8, 9,10, 8, 9,10, 8, 8, 9,11, 8,
+ 9,11, 9, 9,11,12, 9,11,12,10,11,12,14,11,12,14,
+ 8, 8, 9,11, 8, 9,11, 9, 9,11,12, 9,11,12,10,11,
+ 12,14,11,12,13, 9, 9,10,11, 9,10,12, 9, 9,11,12,
+ 9,11,12,10,11,12,14,11,12,14,12,12,14,15,12,13,
+ 15, 9, 9,11,12, 9,11,12,10,11,12,14,11,12,13,12,
+ 12,14,15,12,13,15,10,10,12,13,11,12,13,10,11,12,
+ 14,11,12,14,12,12,13,15,12,14,16,13,14,16,17,14,
+ 15,17,11,11,12,14,11,12,14,12,12,14,16,12,13,15,
+ 13,14,16,17,14,15,17, 8, 8, 9,10, 8, 9,10, 8, 8,
+ 10,11, 8, 9,11, 9, 9,11,12, 9,11,12,10,11,12,14,
+ 11,12,14, 8, 8, 9,11, 8, 9,11, 9, 9,11,12, 9,11,
+ 12,10,11,12,14,11,12,14, 8, 8, 9,11, 8, 9,11, 8,
+ 9,10,11, 9,10,11, 9,10,11,13,10,11,13,11,11,13,
+ 14,11,13,15, 8, 9,10,11, 9,10,11,10,10,11,12,10,
+ 11,13,11,11,13,14,11,13,14, 9, 9,11,12, 9,11,12,
+ 9,10,11,13,10,11,13,11,11,13,14,11,13,14,12,13,
+ 14,15,13,15,15, 9,10,11,13,10,11,13,11,11,13,14,
+ 11,13,14,12,13,14,16,13,14,15,11,11,12,14,11,12,
+ 14,11,11,13,15,11,13,15,12,13,14,15,13,14,16,14,
+ 15,16,16,15,16,18,11,11,13,15,11,13,14,12,13,14,
+ 16,13,15,16,14,15,16,18,15,16,18, 8, 8, 9,11, 8,
+ 10,11, 8, 9,10,11, 9,10,11, 9,10,11,13,10,11,12,
+ 11,11,13,14,11,13,14, 8, 9,10,11, 9,10,11,10,10,
+ 11,13,10,11,13,11,11,13,14,11,13,14, 9, 9,11,12,
+ 10,11,12, 9,10,11,13,10,11,13,11,11,13,14,11,12,
+ 14,12,13,14,16,13,14,15, 9,10,11,13,10,11,13,11,
+ 11,12,14,11,13,14,12,13,14,16,13,15,16,10,11,12,
+ 14,11,13,14,11,12,13,14,11,13,14,12,13,14,16,13,
+ 14,15,14,14,17,18,14,15,16,11,12,13,15,12,13,15,
+ 12,13,14,17,13,14,16,14,14,16,17,15,16,17, 9, 9,
+ 10,12, 9,10,12, 9,10,11,12,10,11,12,10,11,12,13,
+ 11,12,14,12,12,14,15,12,14,16, 9, 9,11,12, 9,11,
+ 12,10,11,12,13,11,12,13,12,12,14,16,12,14,15, 9,
+ 10,11,12,10,11,12,10,10,11,13,10,11,13,11,11,13,
+ 14,11,13,14,12,13,14,16,13,14,16,10,10,11,13,10,
+ 11,13,11,11,13,14,11,13,14,12,13,15,16,13,14,16,
+ 10,11,12,14,11,12,14,11,11,13,14,11,13,15,12,12,
+ 14,16,13,14,16,13,14,15,17,14,16,17,11,11,13,14,
+ 11,13,14,12,13,14,16,13,14,16,13,15,16,18,14,15,
+ 18,12,12,14,16,12,14,16,12,13,14,16,13,14,16,13,
+ 14,15,17,15,15,18,15,15,17,18,16,16,20,12,13,14,
+ 17,13,14,16,14,14,15,18,14,15,18,16,16,18,20,17,
+ 19,18, 9,10,11,12,10,11,12, 9,10,11,13,10,11,13,
+ 11,12,13,14,11,13,14,12,13,14,16,13,14,16,10,10,
+ 11,13,10,11,13,11,11,13,14,11,13,14,12,13,14,16,
+ 13,14,16,10,11,12,14,11,12,14,11,11,13,14,11,13,
+ 14,12,13,14,16,12,14,15,13,14,15,17,14,15,16,11,
+ 11,13,14,11,13,14,12,13,14,16,13,14,15,14,14,16,
+ 17,14,15,17,12,12,14,16,13,14,15,12,13,14,16,13,
+ 14,16,13,14,15,17,14,15,17,15,16,18,18,15,17,18,
+ 12,13,14,16,13,14,16,14,14,15,18,15,16,17,16,17,
+ 17,20,16,17,19,10,10,12,14,11,12,13,11,11,12,14,
+ 11,12,15,12,12,14,16,12,14,16,13,14,16,17,14,16,
+ 18,10,11,12,14,11,12,15,12,12,14,15,12,14,16,14,
+ 14,15,17,14,16,18,11,11,12,14,11,12,14,11,11,13,
+ 15,12,13,15,12,13,14,16,13,14,16,14,15,16,17,15,
+ 16,18,11,11,13,15,12,13,15,12,13,14,16,13,14,16,
+ 14,15,16,20,15,16,18,12,12,14,15,12,14,15,12,13,
+ 14,16,13,14,16,14,14,16,17,14,15,18,15,16,18,18,
+ 17,17,20,12,13,14,16,13,14,16,14,15,17,17,14,16,
+ 18,16,17,18,18,17,18,19,14,14,16,17,14,16,17,14,
+ 15,15,17,15,15,20,15,16,17,18,16,18, 0,16,18,18,
+ 0,17,18,20,14,15,16,18,14,16,18,15,16,19,20,16,
+ 17,18,17,19,20,20,18,19, 0,10,11,12,14,11,12,14,
+ 11,12,13,15,11,13,15,12,13,14,16,13,14,17,15,15,
+ 16,17,15,16,20,11,11,13,15,11,13,14,12,13,14,17,
+ 13,14,16,14,15,16,18,15,17,17,12,12,14,16,12,14,
+ 15,12,13,14,17,13,14,16,14,14,15,17,14,16,17,15,
+ 16,19,20,16,17,17,12,13,14,16,13,14,16,13,14,15,
+ 18,15,15,17,16,16,18,20,16,18,19,14,14,15,18,14,
+ 16,18,14,15,15,17,15,16,18,15,16,17,20,16,17,18,
+ 17,19,19, 0,17,17, 0,14,14,16,18,15,17,17,15,16,
+ 19,18,16,19,18,18,17,19, 0,17,19,20, 8, 8, 9,10,
+ 8, 9,10, 8, 8, 9,11, 8, 9,11, 9, 9,11,12, 9,11,
+ 12,10,11,12,14,11,12,13, 8, 8, 9,11, 8, 9,11, 9,
+ 9,11,12, 9,11,12,11,11,12,14,11,12,14, 8, 8, 9,
+ 11, 8,10,11, 8, 9,10,11, 9,10,11, 9,10,11,13,10,
+ 11,12,11,11,13,14,11,13,14, 8, 9,10,11, 9,10,11,
+ 9,10,11,13,10,11,13,11,11,13,14,11,13,15, 9,10,
+ 11,12, 9,11,12, 9,10,11,13,10,11,13,11,11,13,15,
+ 11,13,14,12,13,14,16,13,14,15, 9,10,11,13,10,11,
+ 13,11,11,12,14,11,13,14,12,13,14,15,13,14,16,11,
+ 11,12,15,11,12,14,11,12,13,14,11,13,15,12,13,14,
+ 16,13,14,16,14,15,15,18,15,16,17,11,11,13,15,11,
+ 13,15,12,13,14,16,13,14,16,14,14,16,17,15,17,17,
+ 8, 8, 9,11, 8,10,11, 8, 9,10,11, 9,10,11, 9,10,
+ 11,13,10,11,13,11,11,13,15,11,13,15, 8, 9,10,11,
+ 9,10,11, 9,10,11,13,10,11,12,11,12,13,14,11,12,
+ 14, 9, 9,11,12,10,11,12,10,10,11,13,10,11,13,11,
+ 11,13,14,11,13,14,12,13,14,15,13,14,15, 9,10,11,
+ 13,10,11,13,11,11,13,14,11,13,14,12,13,14,16,12,
+ 14,16,10,11,12,14,11,12,14,11,11,13,15,12,13,15,
+ 12,13,14,16,13,15,16,14,15,17,17,14,17,17,11,12,
+ 13,15,11,13,15,12,13,14,16,13,14,16,14,15,16,18,
+ 14,15,17, 9, 9,10,12, 9,10,12, 9, 9,11,12,10,11,
+ 12,10,11,12,14,11,12,13,12,12,14,15,12,14,16, 9,
+ 10,11,12,10,11,12,10,11,12,14,11,12,13,12,12,14,
+ 15,13,14,16, 9,10,11,12, 9,11,12,10,10,11,13,10,
+ 11,13,11,11,13,14,11,13,14,12,13,14,16,13,14,16,
+ 10,10,11,13,10,11,13,11,11,13,14,11,13,14,12,13,
+ 14,15,13,14,17,10,11,12,14,11,12,13,11,11,13,14,
+ 11,12,14,12,13,14,16,13,14,15,14,14,15,17,14,16,
+ 17,11,11,13,14,11,13,14,12,13,14,15,13,14,16,14,
+ 14,15,17,14,16,18,12,12,14,16,12,14,15,12,13,14,
+ 17,13,14,17,14,14,16,17,14,16,18,16,16,17,20,16,
+ 17,17,12,13,14,16,13,14,16,14,14,15,16,14,15,17,
+ 16,15,17,17,16,17,18, 9,10,11,12,10,11,12,10,10,
+ 11,13,10,11,13,11,11,13,14,11,13,14,12,13,14,16,
+ 13,14,16,10,10,11,13,10,11,13,11,11,13,14,11,13,
+ 14,13,13,14,17,13,14,16,10,11,12,14,11,12,14,11,
+ 11,13,14,11,13,14,12,13,14,15,13,14,16,14,15,15,
+ 17,14,15,16,11,11,13,14,11,13,14,12,13,14,16,13,
+ 14,16,13,14,16,17,14,15,17,12,12,14,16,12,14,15,
+ 12,13,14,16,13,14,16,14,14,15,17,15,16,17,16,17,
+ 18,19,17,18,18,13,13,14,16,12,14,16,13,14,15,17,
+ 14,15,17,15,16,17,17,16,17,17,10,11,12,14,10,12,
+ 14,10,11,12,14,11,12,14,12,12,14,16,12,14,15,14,
+ 14,16,18,14,15,17,11,11,13,14,11,12,14,12,12,14,
+ 16,13,14,15,14,14,16,17,14,16,17,11,11,12,14,11,
+ 12,14,11,11,13,15,11,13,15,12,13,15,16,13,14,16,
+ 14,15,16,18,15,16,18,11,11,13,15,11,13,15,13,13,
+ 14,16,13,14,16,14,15,17,17,15,18,18,12,12,14,15,
+ 12,14,16,12,13,14,16,13,14,16,13,15,16,17,14,16,
+ 17,16,16,18,20,16,17,20,12,13,14,16,13,14,16,14,
+ 14,15,18,15,15,17,16,16,18, 0,16,17,20,13,14,15,
+ 17,14,15,17,14,14,17,18,15,16,17,15,16,18, 0,16,
+ 17,19,17,18,20,20,18,20, 0,14,14,17,19,15,16,18,
+ 16,16,17,20,16,18,18,17,18,18,20,18, 0, 0,11,11,
+ 12,14,11,12,14,11,11,13,15,11,13,15,12,13,14,16,
+ 13,14,16,14,15,15,18,15,16,17,11,11,13,14,11,13,
+ 15,12,13,15,16,13,14,16,14,15,16,18,15,16,17,12,
+ 12,14,15,12,14,16,12,13,14,17,13,14,16,14,14,16,
+ 17,14,16,17,16,17,18,18,16,17, 0,12,13,14,16,13,
+ 14,16,13,14,16,19,14,15,17,16,16,20, 0,16,17,18,
+ 13,14,15,17,14,16,18,14,14,16,19,15,16,20,16,16,
+ 18,18,16,17,20,18,18, 0,20,18,18,20,14,15,16,18,
+ 15,16,18,15,16,17,20,16,17,19,17,17, 0,19,17,17,
+ 18,
+};
+
+static float _vq_quantthresh_res0_1024a_160_6[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_6[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_6 = {
+ _vq_quantthresh_res0_1024a_160_6,
+ _vq_quantmap_res0_1024a_160_6,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_1024a_160_6 = {
+ 4, 2401,
+ _vq_lengthlist_res0_1024a_160_6,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_160_6,
+ NULL,
+ &_vq_auxt_res0_1024a_160_6,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_7.vqh b/lib/books/res0_1024a_160_7.vqh
new file mode 100644
index 00000000..70d1352a
--- /dev/null
+++ b/lib/books/res0_1024a_160_7.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_7_VQH_
+#define _V_res0_1024a_160_7_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_7[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_7[] = {
+ 2, 4, 5, 7, 7, 8, 4, 6, 7, 7, 8, 4, 5, 6, 8, 8,
+ 9, 5, 6, 8, 8, 9, 6, 7, 8, 9, 9,11, 7, 8, 9,10,
+ 11, 7, 8, 9,11,11,12, 8, 9,11,11,12, 7, 8,10,11,
+ 12,13, 8,10,11,12,13, 9,10,11,13,13,14,10,11,12,
+ 13,14, 4, 5, 6, 8, 8, 9, 5, 6, 8, 8, 9, 6, 7, 8,
+ 9, 9,11, 7, 8, 9,10,11, 7, 8, 9,11,11,12, 8, 9,
+ 11,11,12, 7, 8,10,11,12,13, 8,10,11,12,13, 9,10,
+ 11,13,13,14,10,11,12,13,14,
+};
+
+static float _vq_quantthresh_res0_1024a_160_7[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_1024a_160_7[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_7 = {
+ _vq_quantthresh_res0_1024a_160_7,
+ _vq_quantmap_res0_1024a_160_7,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_1024a_160_7 = {
+ 2, 121,
+ _vq_lengthlist_res0_1024a_160_7,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_1024a_160_7,
+ NULL,
+ &_vq_auxt_res0_1024a_160_7,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_8.vqh b/lib/books/res0_1024a_160_8.vqh
new file mode 100644
index 00000000..afa77872
--- /dev/null
+++ b/lib/books/res0_1024a_160_8.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_8_VQH_
+#define _V_res0_1024a_160_8_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_8[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_8[] = {
+ 3, 4, 6, 6, 7, 7, 7, 8, 4, 6, 6, 6, 7, 7, 8, 4,
+ 6, 7, 7, 8, 8, 8, 9, 5, 7, 7, 8, 8, 8, 9, 6, 7,
+ 8, 9, 9, 9, 9,10, 7, 8, 9, 9, 9, 9,10, 7, 8, 9,
+ 10,10,10,10,11, 8, 9,10,10,10,10,11, 7, 8, 9,10,
+ 10,10,10,11, 8, 9,10,10,10,10,11, 8, 9,10,10,10,
+ 10,11,11, 9,10,10,10,10,11,11, 8, 9,10,11,11,11,
+ 11,12, 9,10,11,11,11,11,12, 9,10,11,12,12,12,12,
+ 13,10,11,12,12,12,12,13, 4, 6, 7, 7, 8, 8, 8, 9,
+ 6, 7, 7, 8, 8, 8, 9, 6, 7, 8, 9, 9, 9, 9,10, 7,
+ 8, 9, 9, 9, 9,10, 7, 8, 9,10,10,10,10,11, 8, 9,
+ 10,10,10,10,11, 7, 8, 9,10,10,10,10,11, 8, 9,10,
+ 10,10,10,11, 8, 9,10,10,10,10,10,11, 9,10,10,10,
+ 10,11,11, 8, 9,10,11,11,11,11,12, 9,10,11,11,11,
+ 11,12, 9,10,11,12,12,12,12,13,10,11,12,12,12,12,
+ 13,
+};
+
+static float _vq_quantthresh_res0_1024a_160_8[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_8[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_8 = {
+ _vq_quantthresh_res0_1024a_160_8,
+ _vq_quantmap_res0_1024a_160_8,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_1024a_160_8 = {
+ 2, 225,
+ _vq_lengthlist_res0_1024a_160_8,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_1024a_160_8,
+ NULL,
+ &_vq_auxt_res0_1024a_160_8,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_160_9.vqh b/lib/books/res0_1024a_160_9.vqh
new file mode 100644
index 00000000..eb5eb1b9
--- /dev/null
+++ b/lib/books/res0_1024a_160_9.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_160_9_VQH_
+#define _V_res0_1024a_160_9_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_160_9[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_160_9[] = {
+ 3, 4, 6, 6, 7, 7, 7, 8, 7,11,14,18, 5, 6, 6, 7,
+ 7, 7, 8, 7,11,15,18, 5, 6, 7, 8, 8, 8, 8, 9, 9,
+ 13,16,19, 6, 7, 8, 8, 8, 8, 9, 9,13,16,19, 6, 7,
+ 8, 9, 9, 9, 9,10,10,13,17, 0, 7, 8, 9, 8, 9, 9,
+ 10,10,13,16, 0, 7, 8, 9, 9, 9, 9,10,10,11,15,17,
+ 0, 8, 9, 9, 9, 9,10,10,11,14,19, 0, 7, 8, 9, 9,
+ 9, 9,10,10,11,15,17, 0, 8, 9, 9, 9, 9,10,10,11,
+ 15,17,19, 7, 8, 9,10,10,10,10,11,11,15,19,19, 8,
+ 9,10,10,10,10,11,11,16,18, 0, 8, 9,10,10,10,10,
+ 11,11,12,16,18, 0, 9,10,10,10,10,11,11,12,16,19,
+ 18, 8, 9,10,11,11,11,11,12,12,16,19, 0, 9,10,11,
+ 11,11,11,12,12,15,19,19, 8,10,11,11,11,11,12,12,
+ 14,18, 0, 0,10,11,11,11,12,12,12,14,17,19, 0,11,
+ 13,15,16,15,15,16,16,17, 0, 0, 0,14,15,15,15,15,
+ 16,17,17, 0, 0, 0,15,18, 0,19,19, 0, 0, 0, 0, 0,
+ 0, 0,18, 0,19,19, 0, 0, 0, 0, 0, 0, 0,18, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 8, 8, 8, 8, 9, 9,12,15,19,
+ 6, 7, 8, 8, 8, 8, 9, 9,13,17, 0, 6, 7, 8, 9, 9,
+ 9, 9,10,10,13,16,19, 7, 8, 9, 9, 9, 9,10,10,13,
+ 18, 0, 7, 8, 9, 9, 9, 9,10,10,11,14,16,19, 8, 9,
+ 9, 9, 9,10,10,11,14,17, 0, 7, 8, 9, 9, 9, 9,10,
+ 10,11,14,16, 0, 8, 9, 9, 9, 9,10,10,11,15,19, 0,
+ 7, 8, 9,10,10,10,10,11,11,15,19,19, 8, 9,10,10,
+ 10,10,11,11,16,18, 0, 8, 9,10,10,10,10,11,11,12,
+ 16,18,18, 9,10,10,10,10,11,11,12,16,18, 0, 8, 9,
+ 10,11,11,11,11,12,12,16,19,19, 9,10,11,11,11,11,
+ 12,12,16,17,18, 8,10,11,12,11,11,12,12,14,18, 0,
+ 0,10,11,11,11,11,12,12,14,18, 0, 0,11,13,15,16,
+ 15,16,16,16,18, 0, 0, 0,13,15,15,15,15,16,16,17,
+ 0, 0, 0,15,18, 0, 0,18, 0, 0, 0, 0, 0, 0, 0,19,
+ 18, 0,19, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_160_9[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_1024a_160_9[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_160_9 = {
+ _vq_quantthresh_res0_1024a_160_9,
+ _vq_quantmap_res0_1024a_160_9,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_1024a_160_9 = {
+ 2, 529,
+ _vq_lengthlist_res0_1024a_160_9,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_1024a_160_9,
+ NULL,
+ &_vq_auxt_res0_1024a_160_9,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_192_1.vqh b/lib/books/res0_1024a_192_1.vqh
new file mode 100644
index 00000000..1d9916d9
--- /dev/null
+++ b/lib/books/res0_1024a_192_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_192_1_VQH_
+#define _V_res0_1024a_192_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_192_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_192_1[] = {
+ 1, 4, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
+ 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 7, 9,
+ 9, 8, 9, 9, 8, 9, 9, 9,11,11, 9,11,11, 8, 9, 9,
+ 9,11,11,10,11,11, 5, 7, 7, 8, 9, 9, 8, 9, 9, 8,
+ 9,10,10,11,11,10,11,11, 8,10,10,10,11,11,10,11,
+ 11,
+};
+
+static float _vq_quantthresh_res0_1024a_192_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_1024a_192_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_192_1 = {
+ _vq_quantthresh_res0_1024a_192_1,
+ _vq_quantmap_res0_1024a_192_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_1024a_192_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_1024a_192_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_1024a_192_1,
+ NULL,
+ &_vq_auxt_res0_1024a_192_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_192_2.vqh b/lib/books/res0_1024a_192_2.vqh
new file mode 100644
index 00000000..f192b654
--- /dev/null
+++ b/lib/books/res0_1024a_192_2.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_192_2_VQH_
+#define _V_res0_1024a_192_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_192_2[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_192_2[] = {
+ 4, 5, 7, 5, 7, 5, 6, 9, 6, 9, 7, 9,11, 9,11, 5,
+ 6, 9, 7, 9, 7, 9,11, 9,11, 5, 7, 9, 7, 9, 7, 8,
+ 10, 8,10, 9,10,12,10,12, 7, 8,10, 8,10, 9,10,12,
+ 10,12, 8, 9,11, 9,11, 9,10,12,10,12,11,12,14,12,
+ 14, 9,10,12,10,12,11,12,14,12,14, 5, 7, 9, 7, 9,
+ 7, 8,10, 8,10, 9,10,12,10,12, 7, 8,10, 8,10, 9,
+ 10,12,10,12, 8, 9,11, 9,11, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,11,12,14,12,14, 5, 7, 9,
+ 7, 9, 7, 8,10, 8,10, 9,10,12,10,12, 7, 8,10, 8,
+ 10, 9,10,12,10,12, 7, 8,10, 8,10, 8, 8,11, 9,11,
+ 10,11,12,11,13, 8, 9,11, 9,11,10,11,12,11,13, 9,
+ 10,12,10,12,10,11,13,11,13,12,13,14,13,15,10,11,
+ 13,11,13,12,13,14,13,15, 7, 8,10, 8,10, 8, 9,11,
+ 9,11,10,11,13,11,12, 8, 9,11, 9,11,10,11,13,11,
+ 13, 9,10,12,10,12,10,11,13,11,13,12,13,15,13,14,
+ 10,11,13,11,13,12,13,15,13,14, 8, 9,11, 9,11, 9,
+ 10,12,10,12,11,12,14,12,14, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,10,11,13,11,13,12,13,15,
+ 13,15,10,11,13,11,13,12,13,15,13,14,11,12,14,12,
+ 14,12,12,14,13,15,14,14,14,14,16,12,13,14,13,14,
+ 14,15,16,14,17, 9,10,12,10,12,10,11,13,11,13,12,
+ 13,15,13,14,10,11,13,11,13,12,13,14,13,15,11,12,
+ 14,12,14,12,13,15,13,15,14,15,16,14,16,12,13,15,
+ 13,15,14,14,16,14,16, 5, 7, 9, 7, 9, 7, 8,10, 8,
+ 10, 9,10,12,10,12, 7, 8,10, 8,10, 9,10,12,10,12,
+ 7, 8,10, 8,10, 8, 9,11, 9,11,10,11,13,11,13, 8,
+ 9,11, 9,11,10,11,13,11,13, 9,10,12,10,12,10,11,
+ 13,11,13,12,13,15,13,14,10,11,13,11,13,12,13,14,
+ 13,15, 7, 8,10, 8,10, 8, 9,11, 9,11,10,11,13,11,
+ 13, 8, 9,11, 9,11,10,11,13,11,12, 9,10,12,10,12,
+ 10,11,13,11,13,12,13,15,13,14,10,11,13,11,13,12,
+ 13,15,13,14, 8, 9,11, 9,11, 9,10,12,10,12,11,12,
+ 14,12,14, 9,10,12,10,12,11,12,14,12,14, 9,10,12,
+ 10,12,10,11,13,11,13,12,13,15,13,14,10,11,13,11,
+ 13,12,13,15,13,15,11,12,14,12,14,12,13,15,13,15,
+ 14,15,16,15,16,12,13,14,13,15,14,14,15,14,17, 9,
+ 10,12,10,12,10,11,13,11,13,12,13,14,13,15,10,11,
+ 13,11,13,12,13,14,13,14,11,12,14,12,14,12,13,15,
+ 13,14,14,14,16,15,16,12,13,14,13,14,14,14,16,14,
+ 14,
+};
+
+static float _vq_quantthresh_res0_1024a_192_2[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_192_2[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_192_2 = {
+ _vq_quantthresh_res0_1024a_192_2,
+ _vq_quantmap_res0_1024a_192_2,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_192_2 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_192_2,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_192_2,
+ NULL,
+ &_vq_auxt_res0_1024a_192_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_192_3.vqh b/lib/books/res0_1024a_192_3.vqh
new file mode 100644
index 00000000..b8514873
--- /dev/null
+++ b/lib/books/res0_1024a_192_3.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_192_3_VQH_
+#define _V_res0_1024a_192_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_192_3[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_192_3[] = {
+ 5, 6, 8, 9, 6, 8, 9, 6, 7, 9,10, 7, 9,10, 8, 9,
+ 11,12, 9,11,12, 9,10,12,13,10,12,14, 6, 7, 9,10,
+ 7, 9,10, 8, 9,11,12, 9,11,12, 9,10,12,14,10,12,
+ 14, 6, 7, 9,10, 8, 9,10, 8, 8,10,11, 8,10,11, 9,
+ 10,11,12,10,11,12,10,11,12,14,11,13,14, 8, 8,10,
+ 11, 8,10,11, 9,10,11,12,10,11,12,10,11,12,14,11,
+ 13,14, 8, 9,11,12, 9,11,12, 9,10,11,12,10,11,13,
+ 11,11,12,14,11,13,14,12,13,14,15,13,14,16, 9,10,
+ 11,12,10,11,13,11,11,12,14,11,13,14,12,12,14,15,
+ 13,14,15, 9,10,12,13,10,12,13,10,11,13,14,11,13,
+ 14,12,13,14,16,13,14,16,14,14,15,16,15,16,18,10,
+ 11,13,15,11,13,15,12,13,14,16,13,14,16,14,15,15,
+ 17,15,15,17, 6, 8, 9,10, 8, 9,10, 8, 8,10,11, 8,
+ 10,11, 9,10,11,12,10,11,12,10,11,13,14,11,12,14,
+ 8, 8,10,11, 8,10,11, 9,10,11,12,10,11,12,10,11,
+ 12,14,11,12,14, 8, 9,11,12, 9,11,12, 9,10,11,13,
+ 10,11,13,11,11,13,14,11,13,14,12,13,14,15,12,14,
+ 15, 9,10,11,13,10,11,12,11,11,12,14,11,12,14,12,
+ 13,14,15,13,14,15, 9,10,12,13,10,12,13,10,11,13,
+ 14,11,13,14,12,13,14,16,13,14,15,14,15,16,17,14,
+ 15,17,10,11,13,14,11,13,14,12,13,14,16,13,14,15,
+ 14,15,16,17,14,15,17, 6, 8, 9,10, 8, 9,10, 8, 8,
+ 10,11, 8,10,11, 9,10,11,13,10,11,13,10,11,13,15,
+ 11,12,14, 8, 8,10,11, 8,10,11, 9,10,11,12,10,11,
+ 13,10,11,12,14,11,13,14, 8, 8,10,11, 8,10,11, 8,
+ 9,10,12, 9,10,12,10,10,12,13,11,12,13,11,12,13,
+ 15,12,13,15, 8, 9,10,12, 9,10,12,10,10,12,13,10,
+ 12,13,11,12,13,15,12,13,15, 9,10,11,13,10,11,12,
+ 10,10,12,13,11,12,13,11,12,13,14,12,13,14,13,13,
+ 14,15,13,15,16,10,10,12,13,11,12,13,11,12,13,14,
+ 12,13,14,13,13,14,16,13,14,16,10,11,13,14,11,13,
+ 14,11,12,13,15,12,13,15,13,13,14,16,13,14,15,14,
+ 15,16,17,15,16,17,11,12,13,15,12,13,15,13,13,15,
+ 16,13,14,16,15,15,16,17,15,16,17, 8, 8,10,11, 8,
+ 10,11, 8, 9,10,12, 9,10,12,10,10,12,13,10,12,13,
+ 11,12,13,15,12,13,15, 8, 9,10,12, 9,10,12,10,11,
+ 12,13,11,12,13,11,12,13,15,12,13,15, 9,10,11,13,
+ 10,11,13,10,10,12,13,10,12,13,11,12,13,14,12,13,
+ 14,13,13,14,16,13,14,15,10,11,12,13,11,12,13,11,
+ 12,13,14,12,13,14,13,13,14,16,13,15,16,10,11,13,
+ 14,11,13,14,11,12,13,15,12,13,15,13,13,14,16,13,
+ 14,16,15,15,16,17,15,16,17,11,12,13,15,12,13,15,
+ 13,13,14,16,13,15,16,14,15,16,17,15,16,17, 8, 9,
+ 11,12, 9,11,12, 9,10,11,12,10,11,13,11,11,13,14,
+ 11,13,14,12,13,14,16,13,14,16, 9,10,11,13,10,11,
+ 13,11,11,13,14,11,13,14,12,13,14,15,13,14,16, 9,
+ 10,11,13,10,11,13,10,11,12,13,10,12,13,11,12,13,
+ 14,12,13,14,13,13,15,16,13,15,16,10,11,12,13,11,
+ 12,13,11,12,13,14,12,13,14,13,13,14,16,13,14,16,
+ 11,11,13,14,11,13,14,11,12,13,14,12,13,15,13,13,
+ 14,15,13,14,16,14,14,15,17,14,16,17,11,12,13,14,
+ 12,13,15,13,13,14,15,13,14,15,14,15,16,17,14,15,
+ 17,12,13,14,16,13,14,15,13,13,14,16,13,14,16,14,
+ 14,15,17,14,15,17,15,16,17,18,16,18,19,13,13,15,
+ 16,13,15,16,14,15,16,18,15,16,17,16,16,17,20,16,
+ 17,18, 9,10,11,13,10,11,13,10,11,12,13,10,12,13,
+ 11,12,13,15,12,13,14,13,13,15,16,13,14,16,10,10,
+ 12,13,11,12,13,11,12,13,14,12,13,15,13,13,14,16,
+ 13,15,16,11,11,12,14,11,13,14,11,12,13,14,12,13,
+ 14,13,13,14,15,13,14,15,14,14,16,17,14,15,16,11,
+ 12,13,14,12,13,14,13,13,14,15,13,14,15,14,15,15,
+ 17,15,15,17,12,13,14,16,13,14,16,13,13,14,16,13,
+ 14,16,13,14,15,17,14,15,16,15,16,17,19,16,16,18,
+ 13,13,14,16,13,15,16,14,14,15,17,15,16,18,16,16,
+ 17,18,16,18,19, 9,10,12,14,11,12,14,10,11,13,15,
+ 11,13,15,12,13,14,16,13,14,16,14,15,16,17,15,16,
+ 17,10,11,13,14,11,13,15,12,13,14,16,13,14,15,14,
+ 14,16,17,15,15,18,10,11,13,14,11,13,14,11,12,13,
+ 15,12,13,15,13,13,14,16,13,14,16,15,15,16,17,15,
+ 16,17,11,12,13,15,12,13,15,13,13,15,16,13,14,16,
+ 15,15,16,17,15,17,17,12,13,14,15,13,14,16,13,13,
+ 15,16,13,15,16,14,14,15,17,15,16,17,16,17,17,19,
+ 16,17,18,13,13,14,16,13,14,16,14,14,16,18,14,15,
+ 17,16,16,17,20,16,18,18,14,15,16,17,15,16,17,14,
+ 15,17,18,15,16,18,15,16,16,18,16,17,19,17,17,17,
+ 18,17,18, 0,14,15,16,18,15,16,18,16,16,17,19,16,
+ 17,18,17,18,19,21,18,20,19,10,11,13,14,11,13,14,
+ 11,12,13,15,12,13,15,13,13,14,16,13,14,16,14,15,
+ 16,17,15,17,19,11,12,13,15,12,13,15,13,13,14,16,
+ 14,14,16,15,15,16,18,15,16,18,12,13,14,15,13,14,
+ 16,12,13,14,16,13,14,16,14,14,15,18,14,15,18,16,
+ 16,16,18,16,17,18,13,13,14,16,13,15,16,14,14,16,
+ 17,15,16,17,16,16,17,18,16,17,19,14,15,16,17,15,
+ 16,18,14,15,16,19,15,16,18,15,16,17,20,16,17,17,
+ 17,17,19,20,18,17,19,15,15,16,18,15,16,18,16,16,
+ 17,18,16,17,18,18,17,19,20,17,18,19, 7, 8, 9,10,
+ 8, 9,10, 8, 8,10,11, 8,10,11, 9,10,11,12,10,11,
+ 13,10,11,13,14,11,13,14, 8, 8,10,11, 8,10,11, 9,
+ 10,11,13,10,11,13,10,11,13,14,11,13,14, 8, 8,10,
+ 11, 8,10,11, 8, 9,10,12, 9,10,12,10,10,12,13,10,
+ 12,13,11,12,13,15,12,13,15, 8, 9,10,12, 9,10,12,
+ 10,10,12,13,11,12,13,11,12,13,15,12,13,15, 9,10,
+ 11,13,10,11,13,10,11,12,13,10,12,13,11,12,13,14,
+ 12,13,14,13,13,14,16,13,14,16,10,10,12,13,11,12,
+ 13,11,12,13,14,12,13,14,13,13,14,15,13,14,16,10,
+ 11,13,14,11,13,14,11,12,13,15,12,13,15,13,13,15,
+ 16,13,15,16,15,15,16,17,15,16,18,11,12,13,15,12,
+ 13,15,13,13,14,15,13,14,16,15,15,16,17,15,16,18,
+ 8, 8,10,11, 8,10,11, 8, 9,10,12, 9,11,12,10,11,
+ 12,13,10,12,13,11,12,13,14,12,13,15, 8, 9,11,12,
+ 9,10,12,10,11,12,13,10,12,13,11,12,13,15,12,13,
+ 15, 9,10,11,13,10,11,13,10,10,12,13,11,12,13,11,
+ 12,13,14,12,13,14,13,13,14,16,13,14,16,10,11,12,
+ 13,11,12,13,11,12,13,14,12,13,14,13,13,14,16,13,
+ 14,16,10,11,13,15,11,13,14,11,12,13,15,12,13,15,
+ 13,13,14,16,13,15,16,15,15,16,18,15,16,17,11,12,
+ 13,15,12,13,15,13,13,15,16,13,14,16,14,15,16,17,
+ 15,16,17, 8, 9,11,12, 9,11,12, 9,10,11,13,10,11,
+ 13,11,11,12,14,11,12,14,12,13,14,15,13,14,15, 9,
+ 10,11,13,10,11,13,11,11,13,14,11,13,14,12,13,14,
+ 15,13,14,16, 9,10,11,13,10,11,13,10,11,12,13,11,
+ 12,13,11,12,13,14,12,13,14,13,13,14,16,13,14,16,
+ 10,11,12,13,11,12,13,11,12,13,14,12,13,15,13,13,
+ 14,16,13,14,16,11,11,13,14,11,13,14,11,12,13,15,
+ 12,13,14,13,13,14,16,13,14,15,14,14,16,17,14,15,
+ 17,11,12,13,14,12,13,14,13,13,14,16,13,14,16,14,
+ 14,15,16,14,16,17,12,13,14,16,13,14,16,13,13,14,
+ 16,13,15,16,14,14,16,17,15,16,17,16,16,17,18,16,
+ 17,19,13,13,14,16,13,15,16,14,14,15,17,14,16,17,
+ 15,16,16,17,16,17,19, 9,10,11,13,10,11,13,10,10,
+ 12,13,11,12,13,11,12,13,14,12,13,14,13,13,14,16,
+ 13,14,16,10,11,12,13,11,12,13,11,12,13,14,12,13,
+ 14,13,13,14,16,13,14,16,11,11,13,14,11,13,14,11,
+ 12,13,14,12,13,14,13,13,14,15,13,14,16,14,15,16,
+ 17,14,16,17,11,12,13,14,12,13,15,13,13,14,15,13,
+ 14,15,14,15,16,17,14,16,16,12,13,14,16,13,14,16,
+ 13,13,14,16,13,15,16,14,14,15,17,15,15,17,16,16,
+ 17,18,16,17,19,13,13,14,16,13,14,16,14,15,15,17,
+ 14,15,17,16,16,17,19,16,16,17, 9,10,12,14,10,12,
+ 14,10,11,13,14,11,13,14,12,13,14,16,13,14,16,14,
+ 15,16,17,15,16,17,10,11,13,15,11,13,15,12,13,14,
+ 16,13,14,16,14,15,16,17,15,16,18,10,11,13,14,11,
+ 13,14,11,12,13,15,12,13,15,13,13,14,16,13,15,16,
+ 15,15,17,18,15,16,18,11,12,13,15,12,13,15,13,13,
+ 14,16,14,15,17,15,15,16,17,15,16,17,12,13,14,16,
+ 13,14,16,13,13,15,16,13,15,16,14,15,15,17,14,15,
+ 17,16,16,17,18,16,17,18,12,13,14,16,13,15,16,14,
+ 14,15,17,14,16,17,16,16,16,17,16,18,19,14,15,16,
+ 17,15,16,17,15,15,16,17,15,16,17,16,16,17,19,16,
+ 17,18,18,17,18,19,17,19,20,14,15,16,18,15,16,18,
+ 15,15,17,18,16,17,18,17,17,17,19,18,19,20,10,11,
+ 13,14,11,13,15,11,12,13,15,12,13,15,13,13,14,16,
+ 13,15,16,15,15,17,18,15,16,17,11,12,13,15,12,13,
+ 15,13,13,15,16,13,15,16,14,15,16,17,15,16,17,12,
+ 13,14,16,13,14,16,13,13,14,16,13,15,17,14,15,16,
+ 17,14,16,17,16,16,17,21,16,17,20,13,13,15,16,13,
+ 14,16,14,15,16,17,14,15,17,16,17,18,19,16,17,18,
+ 14,15,16,18,15,16,17,14,15,16,17,15,16,18,16,16,
+ 17,18,16,17,18,17,19,18,20,18,18,20,15,15,17,18,
+ 15,16,18,16,16,17,18,16,16,18,17,17,19,19,17,18,
+ 19,
+};
+
+static float _vq_quantthresh_res0_1024a_192_3[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_1024a_192_3[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_192_3 = {
+ _vq_quantthresh_res0_1024a_192_3,
+ _vq_quantmap_res0_1024a_192_3,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_1024a_192_3 = {
+ 4, 2401,
+ _vq_lengthlist_res0_1024a_192_3,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_192_3,
+ NULL,
+ &_vq_auxt_res0_1024a_192_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_192_4.vqh b/lib/books/res0_1024a_192_4.vqh
new file mode 100644
index 00000000..04b81ea9
--- /dev/null
+++ b/lib/books/res0_1024a_192_4.vqh
@@ -0,0 +1,70 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_192_4_VQH_
+#define _V_res0_1024a_192_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_192_4[] = {
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 3,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_192_4[] = {
+ 3, 4, 5, 7, 7, 4, 5, 7, 7, 4, 5, 6, 7, 8, 5, 6,
+ 7, 8, 5, 6, 7, 8, 9, 6, 7, 8, 9, 7, 7, 8,10,10,
+ 7, 8,10,10, 7, 8, 9,10,11, 8, 9,10,11, 4, 5, 6,
+ 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 9, 6, 7, 8, 9, 7,
+ 7, 8, 9,10, 7, 8, 9,10, 7, 8, 9,10,11, 8, 9,10,
+ 11,
+};
+
+static float _vq_quantthresh_res0_1024a_192_4[] = {
+ -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
+};
+
+static long _vq_quantmap_res0_1024a_192_4[] = {
+ 8, 7, 6, 5, 0, 1, 2, 3,
+ 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_192_4 = {
+ _vq_quantthresh_res0_1024a_192_4,
+ _vq_quantmap_res0_1024a_192_4,
+ 9,
+ 9
+};
+
+static static_codebook _vq_book_res0_1024a_192_4 = {
+ 2, 81,
+ _vq_lengthlist_res0_1024a_192_4,
+ 1, -531628032, 1611661312, 4, 0,
+ _vq_quantlist_res0_1024a_192_4,
+ NULL,
+ &_vq_auxt_res0_1024a_192_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_192_5.vqh b/lib/books/res0_1024a_192_5.vqh
new file mode 100644
index 00000000..1dd6d395
--- /dev/null
+++ b/lib/books/res0_1024a_192_5.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_192_5_VQH_
+#define _V_res0_1024a_192_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_192_5[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_192_5[] = {
+ 3, 5, 6, 7, 7, 7, 8, 9,11,14,18,22, 5, 6, 7, 7,
+ 7, 8, 9,11,14,18, 0, 5, 6, 6, 7, 7, 8, 9,10,12,
+ 16,19,24, 6, 6, 7, 7, 8, 9,10,12,16,20,24, 6, 6,
+ 7, 8, 8, 9,10,11,13,17,20, 0, 6, 7, 8, 8, 9,10,
+ 11,13,17,20, 0, 7, 7, 8, 9, 9, 9,10,11,14,18,20,
+ 0, 7, 8, 9, 9, 9,10,11,14,17,21, 0, 7, 8, 8, 9,
+ 9, 9,10,11,14,18,23, 0, 8, 8, 9, 9, 9,10,11,14,
+ 18,21, 0, 7, 8, 9, 9,10,10,11,12,14,19, 0, 0, 8,
+ 9, 9,10,10,11,12,14,18,21, 0, 8, 9,10,11,11,11,
+ 11,12,14,18, 0,22, 9,10,11,11,11,11,12,14,18,22,
+ 0, 9,10,11,12,12,12,12,13,15,19,21,21,10,11,12,
+ 12,12,12,13,15,19,22,23,11,12,13,14,14,14,15,15,
+ 17,19, 0, 0,13,14,14,14,14,15,15,17,19, 0, 0,14,
+ 16,18,18,18,19,19,19,19, 0, 0, 0,17,17,18,18,18,
+ 19,19,20, 0, 0, 0,18,20,22,23, 0,23,23, 0, 0, 0,
+ 0, 0,22,22, 0, 0, 0,23,23, 0, 0, 0, 0,20, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 6, 7, 7, 8, 9,10,12,15,20,21,
+ 6, 6, 7, 7, 8, 9,10,12,16,19, 0, 6, 6, 7, 8, 8,
+ 9,10,11,13,17,19,21, 6, 7, 8, 8, 9,10,11,13,17,
+ 20,23, 7, 7, 8, 9, 9, 9,10,11,14,17,20,23, 7, 8,
+ 9, 9, 9,10,11,14,17,21, 0, 7, 8, 8, 9, 9, 9,10,
+ 11,14,17,20,22, 8, 8, 9, 9, 9,10,11,14,18, 0, 0,
+ 7, 8, 9, 9,10,10,11,12,14,19,21, 0, 8, 9, 9,10,
+ 10,11,12,14,18,22, 0, 8, 9,10,11,11,11,11,12,14,
+ 18,22,23, 9,10,11,11,11,11,12,14,19,22, 0, 9,10,
+ 11,12,12,12,12,13,15,18,21,23,10,11,12,12,12,12,
+ 13,15,19,22,23,11,12,14,14,14,14,15,15,17,20, 0,
+ 0,12,14,14,14,14,14,15,17,20,23, 0,14,16,18,19,
+ 18,18,19,19,20, 0, 0, 0,16,18,19,18,18,19,19,21,
+ 0, 0, 0,18, 0,23, 0,23, 0, 0, 0, 0, 0, 0, 0,21,
+ 0, 0, 0,22,22, 0, 0, 0, 0, 0,21, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_1024a_192_5[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_1024a_192_5[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_192_5 = {
+ _vq_quantthresh_res0_1024a_192_5,
+ _vq_quantmap_res0_1024a_192_5,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_1024a_192_5 = {
+ 2, 529,
+ _vq_lengthlist_res0_1024a_192_5,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_1024a_192_5,
+ NULL,
+ &_vq_auxt_res0_1024a_192_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_256_1.vqh b/lib/books/res0_1024a_256_1.vqh
new file mode 100644
index 00000000..dc6a3f49
--- /dev/null
+++ b/lib/books/res0_1024a_256_1.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_256_1_VQH_
+#define _V_res0_1024a_256_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_256_1[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_256_1[] = {
+ 2, 4, 8, 4, 8, 5, 7,10, 7,10, 9,10,12,10,12, 5,
+ 7,10, 7,10, 9,10,12,10,12, 5, 7,10, 7,10, 7, 8,
+ 11, 8,11,10,11,13,11,13, 7, 8,11, 8,11,10,11,13,
+ 11,13, 9,10,13,10,13,10,11,13,11,13,13,14,15,14,
+ 15,11,11,13,11,13,13,13,15,13,15, 5, 7,10, 7,10,
+ 7, 8,11, 8,11,10,11,13,11,13, 7, 8,11, 8,11,10,
+ 11,13,11,13, 9,10,12,10,13,10,11,13,11,13,13,14,
+ 15,14,15,11,11,13,11,13,13,14,15,13,15, 5, 7,10,
+ 7,10, 7, 8,11, 8,11,10,11,13,11,13, 7, 8,11, 8,
+ 11,10,11,13,11,13, 7, 8,11, 8,11, 9,10,12,10,12,
+ 11,12,14,12,14, 9,10,12,10,12,11,12,14,12,14,10,
+ 11,14,11,14,11,12,14,12,14,13,14,16,14,16,11,12,
+ 14,12,14,14,14,16,14,16, 7, 9,11, 9,11, 9,10,12,
+ 10,12,11,12,14,12,14, 9,10,12,10,12,11,12,14,12,
+ 14,11,12,13,11,14,11,12,14,12,14,14,14,16,14,15,
+ 12,12,14,12,14,14,14,16,14,16, 9,11,13,11,13,11,
+ 12,14,11,14,13,14,16,14,15,10,11,13,12,14,13,14,
+ 15,14,15,10,12,14,11,14,11,12,14,12,14,14,14,16,
+ 14,16,12,12,14,12,14,14,14,16,14,16,13,14,16,14,
+ 15,14,14,16,14,16,15,16,15,16,17,14,14,16,14,16,
+ 16,16,18,16,17,11,12,13,12,14,12,12,14,12,14,14,
+ 14,16,14,16,12,12,14,12,14,14,14,16,14,16,13,14,
+ 15,14,16,14,14,16,14,16,15,16,18,16,17,14,14,16,
+ 14,16,15,17,18,16,18, 5, 7,10, 7,10, 7, 8,11, 8,
+ 11,10,11,13,11,13, 7, 8,11, 8,11,10,11,13,11,13,
+ 7, 9,11, 9,11, 9,10,12,10,12,11,12,14,12,14, 9,
+ 10,12,10,12,12,12,14,12,14,10,11,13,11,14,11,12,
+ 14,12,14,14,14,16,14,16,11,12,14,12,14,14,14,15,
+ 14,16, 7, 9,11, 9,11, 9,10,12,10,12,12,12,14,12,
+ 14, 9,10,12,10,12,11,12,14,12,14,11,11,13,12,14,
+ 12,12,14,12,14,14,14,16,15,16,11,12,14,12,14,13,
+ 14,16,14,15, 9,11,13,11,13,11,11,14,11,14,13,13,
+ 15,14,15,11,11,14,12,14,13,14,15,14,15,11,12,14,
+ 12,14,11,12,14,12,14,14,14,16,15,16,12,12,14,12,
+ 14,14,14,16,14,16,13,14,15,14,16,14,14,16,15,16,
+ 15,16,18,16,17,14,14,16,14,16,16,15,17,16,18,10,
+ 11,14,12,14,12,12,14,12,14,14,14,16,15,16,12,12,
+ 14,12,14,14,14,16,14,16,13,14,16,14,15,14,15,16,
+ 15,16,16,16,17,16,17,13,14,16,14,16,16,16,17,15,
+ 16,
+};
+
+static float _vq_quantthresh_res0_1024a_256_1[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_256_1[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_256_1 = {
+ _vq_quantthresh_res0_1024a_256_1,
+ _vq_quantmap_res0_1024a_256_1,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_256_1 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_256_1,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_256_1,
+ NULL,
+ &_vq_auxt_res0_1024a_256_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_256_2.vqh b/lib/books/res0_1024a_256_2.vqh
new file mode 100644
index 00000000..64627b5d
--- /dev/null
+++ b/lib/books/res0_1024a_256_2.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_256_2_VQH_
+#define _V_res0_1024a_256_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_256_2[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_256_2[] = {
+ 3, 4, 6, 7, 7, 9, 4, 6, 7, 7, 9, 4, 5, 6, 7, 8,
+ 9, 5, 6, 7, 8, 9, 6, 6, 7, 8, 8,10, 6, 7, 8, 8,
+ 10, 7, 7, 8, 9, 9,10, 7, 8, 9, 9,10, 8, 8, 8, 9,
+ 9,10, 8, 9, 9,10,10, 9, 9,10,10,11,11, 9,10,10,
+ 11,11, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 6, 6, 7,
+ 8, 8,10, 6, 7, 8, 8,10, 7, 7, 8, 9, 9,10, 7, 8,
+ 9, 9,10, 8, 8, 9, 9, 9,10, 8, 9, 9,10,10, 9, 9,
+ 10,10,11,11, 9,10,10,11,11,
+};
+
+static float _vq_quantthresh_res0_1024a_256_2[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_1024a_256_2[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_256_2 = {
+ _vq_quantthresh_res0_1024a_256_2,
+ _vq_quantmap_res0_1024a_256_2,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_1024a_256_2 = {
+ 2, 121,
+ _vq_lengthlist_res0_1024a_256_2,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_1024a_256_2,
+ NULL,
+ &_vq_auxt_res0_1024a_256_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_256_3.vqh b/lib/books/res0_1024a_256_3.vqh
new file mode 100644
index 00000000..e88c9c80
--- /dev/null
+++ b/lib/books/res0_1024a_256_3.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_256_3_VQH_
+#define _V_res0_1024a_256_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_256_3[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_256_3[] = {
+ 5, 6, 6, 7, 7, 7, 8, 8, 6, 6, 7, 7, 7, 8, 9, 6,
+ 6, 7, 7, 7, 8, 8, 9, 6, 7, 7, 7, 8, 8, 9, 6, 7,
+ 7, 8, 7, 8, 8,10, 7, 7, 8, 7, 8, 8,10, 7, 7, 8,
+ 8, 8, 8, 9,10, 7, 8, 8, 8, 8, 9,10, 7, 7, 8, 8,
+ 8, 8, 9,10, 7, 8, 8, 8, 8, 9,10, 7, 8, 8, 8, 8,
+ 8, 9,10, 8, 8, 8, 8, 8, 9,10, 8, 8, 9, 9, 9, 9,
+ 10,11, 8, 9, 9, 9, 9,10,11, 9, 9,10,10,10,10,11,
+ 12, 9,10,10,10,10,11,12, 6, 6, 7, 7, 7, 8, 8, 9,
+ 6, 7, 7, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7,
+ 7, 8, 7, 8, 8,10, 7, 7, 8, 8, 8, 8, 9,10, 7, 8,
+ 8, 8, 8, 9,10, 7, 7, 8, 8, 8, 8, 9,10, 7, 7, 8,
+ 8, 8, 9,10, 7, 8, 8, 8, 8, 8, 9,10, 8, 8, 8, 8,
+ 8, 9,10, 8, 8, 9, 9, 9, 9,10,11, 8, 9, 9, 9, 9,
+ 10,11, 9, 9,10,10,10,10,11,12, 9,10,10,10,10,11,
+ 12,
+};
+
+static float _vq_quantthresh_res0_1024a_256_3[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_1024a_256_3[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_256_3 = {
+ _vq_quantthresh_res0_1024a_256_3,
+ _vq_quantmap_res0_1024a_256_3,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_1024a_256_3 = {
+ 2, 225,
+ _vq_lengthlist_res0_1024a_256_3,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_1024a_256_3,
+ NULL,
+ &_vq_auxt_res0_1024a_256_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_256_4.vqh b/lib/books/res0_1024a_256_4.vqh
new file mode 100644
index 00000000..89e2a792
--- /dev/null
+++ b/lib/books/res0_1024a_256_4.vqh
@@ -0,0 +1,100 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_256_4_VQH_
+#define _V_res0_1024a_256_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_256_4[] = {
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 29,
+ 31,
+ 34,
+ 39,
+ 46,
+ 22,
+ 21,
+ 20,
+ 19,
+ 17,
+ 15,
+ 12,
+ 7,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_256_4[] = {
+ 4, 5, 6, 7, 7, 7, 8, 8, 8,10, 5, 6, 7, 7, 7, 8,
+ 8, 8,10, 5, 6, 7, 8, 8, 8, 8, 9, 9,11, 6, 7, 8,
+ 8, 8, 8, 9, 9,11, 6, 7, 8, 8, 8, 8, 9, 9, 9,12,
+ 7, 8, 8, 8, 8, 9, 9, 9,12, 7, 8, 8, 9, 9, 9, 9,
+ 10,10,13, 8, 8, 9, 9, 9, 9,10,10,13, 7, 8, 8, 9,
+ 9, 9, 9,10,10,13, 8, 8, 9, 9, 9, 9,10,10,13, 7,
+ 8, 9, 9, 9, 9, 9,10,10,13, 8, 9, 9, 9, 9, 9,10,
+ 10,13, 8, 8, 9, 9, 9, 9,10,10,11,14, 9, 9, 9, 9,
+ 9,10,10,11,13, 8, 9,10,10,10,10,10,11,11,14, 9,
+ 10,10,10,10,10,11,11,14, 8, 9,10,10,10,11,11,11,
+ 13,15, 9,10,10,10,11,11,11,12,15,11,12,13,14,14,
+ 14,15,15,15,17,12,13,14,14,14,14,14,15,17, 5, 6,
+ 7, 8, 8, 8, 8, 9, 9,11, 6, 7, 8, 8, 8, 8, 9, 9,
+ 11, 6, 7, 8, 8, 8, 8, 9, 9, 9,12, 7, 8, 8, 8, 8,
+ 9, 9, 9,12, 7, 8, 8, 9, 9, 9, 9,10,10,13, 8, 8,
+ 9, 9, 9, 9,10,10,13, 7, 8, 8, 9, 9, 9, 9,10,10,
+ 13, 8, 8, 9, 9, 9, 9,10,10,13, 8, 8, 9, 9, 9, 9,
+ 9,10,10,13, 8, 9, 9, 9, 9, 9,10,10,13, 8, 8, 9,
+ 9, 9, 9,10,10,11,13, 9, 9, 9, 9, 9,10,10,11,13,
+ 8, 9,10,10,10,10,10,11,11,14, 9,10,10,10,10,10,
+ 11,11,14, 8, 9,10,10,10,11,11,11,12,15, 9,10,10,
+ 10,11,11,11,12,15,11,12,13,14,14,14,14,15,15,17,
+ 12,13,14,14,14,14,14,15,17,
+};
+
+static float _vq_quantthresh_res0_1024a_256_4[] = {
+ -19.5, -13.5, -9.5, -7, -5, -3.5, -2.5, -1.5,
+ -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9.5,
+ 13.5, 19.5,
+};
+
+static long _vq_quantmap_res0_1024a_256_4[] = {
+ 18, 17, 16, 15, 14, 13, 12, 11,
+ 10, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_256_4 = {
+ _vq_quantthresh_res0_1024a_256_4,
+ _vq_quantmap_res0_1024a_256_4,
+ 19,
+ 19
+};
+
+static static_codebook _vq_book_res0_1024a_256_4 = {
+ 2, 361,
+ _vq_lengthlist_res0_1024a_256_4,
+ 1, -526974976, 1611661312, 6, 0,
+ _vq_quantlist_res0_1024a_256_4,
+ NULL,
+ &_vq_auxt_res0_1024a_256_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_256_5.vqh b/lib/books/res0_1024a_256_5.vqh
new file mode 100644
index 00000000..19e00ae4
--- /dev/null
+++ b/lib/books/res0_1024a_256_5.vqh
@@ -0,0 +1,133 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_256_5_VQH_
+#define _V_res0_1024a_256_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_256_5[] = {
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 94,
+ 96,
+ 99,
+ 104,
+ 111,
+ 120,
+ 133,
+ 151,
+ 176,
+ 87,
+ 86,
+ 85,
+ 84,
+ 82,
+ 80,
+ 77,
+ 72,
+ 65,
+ 56,
+ 43,
+ 25,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_256_5[] = {
+ 3, 5, 6, 7, 7, 7, 7, 8, 9,10, 8,10,12,11, 5, 6,
+ 6, 7, 7, 8, 8, 9,10, 7,11,12,12, 5, 6, 7, 8, 8,
+ 8, 8, 9,10,12, 9,13,15,15, 6, 7, 8, 8, 8, 9, 9,
+ 10,12, 9,12,14,13, 6, 7, 8, 9, 9, 9,10,10,11,12,
+ 10,13,15,15, 7, 8, 9, 9, 9,10,10,10,13,10,13,16,
+ 15, 7, 8, 9,10, 9,10,10,10,11,14,11,14, 0,16, 8,
+ 9,10, 9,10,10,10,11,14,11,14,16, 0, 7, 8, 9,10,
+ 10,10,10,10,11,14,11,14,15,15, 8, 9, 9, 9,10,10,
+ 10,11,14,11,14, 0,16, 7, 9, 9,10,10,10,10,10,11,
+ 14,11,14,14, 0, 8, 9,10,10,10,10,10,11,13,11,14,
+ 16,16, 8, 9,10,11,10,10,10,10,11,14,11,14,15,16,
+ 9,10,10,10,10,10,10,12,14,11,14,15,15, 8, 9,10,
+ 11,10,10,11,11,12,14,11,13,15,15, 9,10,11,10,11,
+ 11,11,12,14,11,13,14,15, 9,10,11,12,12,12,12,12,
+ 12,14,12,13,14,16,10,11,12,12,12,13,12,13,15,12,
+ 14,14,15, 9,12,13,15,15,14,14,16,15, 0,13,15,16,
+ 16,12,15,16,16,14,14,16, 0,16,15, 0, 0,16, 7, 9,
+ 10,12,12,12,13,12,13,14,16, 0, 0,15, 9,11,12,12,
+ 12,13,12,13,14,16, 0, 0,15, 9,12,13,15, 0,16,16,
+ 16, 0,16,16, 0, 0,16,12,14,15,16,15,16,16, 0, 0,
+ 16, 0, 0, 0,11,12,15,16, 0,16,16,15,15,16,16, 0,
+ 0,16,13,15, 0,16, 0, 0, 0, 0, 0,16, 0, 0,15,11,
+ 14,14, 0,15, 0,16, 0,15,16,15, 0, 0,16,13,15, 0,
+ 16, 0,15, 0,15,15,16, 0, 0,16, 5, 6, 7, 8, 8, 8,
+ 9, 9,10,12, 9,12,14,14, 6, 7, 8, 8, 8, 9, 9,10,
+ 12, 9,13,13,15, 6, 7, 8, 9, 9, 9, 9, 9,11,13,10,
+ 13,15,15, 7, 8, 9, 9, 9, 9,10,11,13,10,13,16,14,
+ 7, 8, 9, 9, 9,10,10,10,11,13,11,14,16, 0, 8, 9,
+ 9, 9,10,10,10,11,14,11,15,16,15, 7, 8, 9, 9,10,
+ 10,10,10,12,13,11,15,16,16, 8, 9, 9, 9,10,10,10,
+ 11,14,10,15, 0,16, 8, 8, 9,10,10,10,10,10,11,14,
+ 11,13,16,15, 9, 9,10,10,10,10,10,11,14,10,14, 0,
+ 15, 8, 9,10,11,10,10,10,11,12,13,11,14,15,15, 9,
+ 10,10,10,10,10,11,11,14,11,14,16,16, 8, 9,10,11,
+ 10,11,11,11,12,14,11,13,15,14, 9,10,11,10,10,11,
+ 10,12,15,11,13,15,14, 9,10,11,12,12,12,12,12,14,
+ 15,12,15,14,16,10,11,12,11,12,12,12,13,15,12,14,
+ 14,16,10,12,14,15,14,14,15, 0, 0,16,13,15,15, 0,
+ 12,13,14,15,14,14,15, 0,15,14,16,16,16, 7,10,11,
+ 12,11,13,13,14,12,16, 0, 0, 0, 0,10,11,12,12,12,
+ 13,13,13,15,15,15, 0,16,10,11,13,13, 0, 0, 0,16,
+ 0,16, 0, 0, 0, 0,12,14,16,15, 0, 0,16, 0, 0, 0,
+ 0, 0,16,11,12,15, 0,16, 0,16, 0, 0, 0, 0, 0, 0,
+ 0,12, 0, 0,15,16,16,16, 0, 0,16, 0, 0, 0,11,15,
+ 16, 0,14, 0, 0, 0,15, 0,16, 0, 0,15,14,14,15,15,
+ 15, 0, 0, 0,16,16, 0,16,16,
+};
+
+static float _vq_quantthresh_res0_1024a_256_5[] = {
+ -75.5, -54, -38.5, -27.5, -19.5, -13.5, -9.5, -7,
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5, 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+ 54, 75.5,
+};
+
+static long _vq_quantmap_res0_1024a_256_5[] = {
+ 26, 25, 24, 23, 22, 21, 20, 19,
+ 18, 17, 16, 15, 14, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_256_5 = {
+ _vq_quantthresh_res0_1024a_256_5,
+ _vq_quantmap_res0_1024a_256_5,
+ 27,
+ 27
+};
+
+static static_codebook _vq_book_res0_1024a_256_5 = {
+ 2, 729,
+ _vq_lengthlist_res0_1024a_256_5,
+ 1, -522846208, 1611661312, 8, 0,
+ _vq_quantlist_res0_1024a_256_5,
+ NULL,
+ &_vq_auxt_res0_1024a_256_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_350_1.vqh b/lib/books/res0_1024a_350_1.vqh
new file mode 100644
index 00000000..d9e36dcb
--- /dev/null
+++ b/lib/books/res0_1024a_350_1.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_350_1_VQH_
+#define _V_res0_1024a_350_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_350_1[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_350_1[] = {
+ 2, 5, 8, 5, 8, 5, 7, 9, 7, 9, 9,10,12,10,11, 5,
+ 7, 9, 7, 9, 9,10,12,10,12, 5, 7, 9, 7,10, 7, 8,
+ 10, 8,10,10,11,12,11,12, 7, 8,10, 8,10,10,10,12,
+ 11,12, 9,10,12,10,12,10,11,12,11,13,12,13,14,13,
+ 14,10,11,13,11,13,12,12,14,13,14, 6, 7, 9, 7,10,
+ 7, 8,10, 8,10,10,11,12,10,12, 7, 8,10, 8,10,10,
+ 11,12,11,12, 9,10,12,10,12,10,11,13,11,13,12,13,
+ 14,13,14,10,11,13,11,13,13,13,15,13,14, 5, 7,10,
+ 7,10, 7, 8,11, 8,10,10,11,13,11,13, 7, 8,10, 8,
+ 11,10,11,12,11,12, 7, 8,11, 8,10, 8, 9,11, 9,11,
+ 11,12,13,12,13, 8, 9,11, 9,11,11,11,13,12,13,10,
+ 11,13,11,12,11,12,13,12,14,13,13,13,14,15,11,12,
+ 13,12,13,13,13,15,13,15, 7, 8,11, 8,11, 8, 9,11,
+ 9,11,11,12,13,12,13, 8, 9,11, 9,11,11,12,13,12,
+ 13,10,11,13,11,13,11,12,13,12,13,13,14,15,13,14,
+ 11,12,13,12,13,13,13,15,13,16, 9,10,12,10,12,10,
+ 11,13,11,13,12,13,15,13,15,10,11,13,11,13,12,13,
+ 14,13,14,10,11,13,11,13,11,12,14,12,13,13,14,15,
+ 14,15,11,12,14,12,13,13,14,15,14,15,12,13,15,13,
+ 14,13,13,16,13,15,14,13,14,15,16,13,14,16,14,14,
+ 15,16,16,16,16,10,11,13,11,13,11,12,13,12,14,13,
+ 14,15,13,14,11,12,13,12,13,13,13,15,13,15,12,13,
+ 14,13,15,12,13,15,13,16,14,15,16,14,14,13,14,15,
+ 14,15,15,15,16,16,17, 5, 7,10, 7,10, 7, 8,10, 8,
+ 10,10,11,12,11,12, 7, 8,10, 8,11,10,11,13,11,13,
+ 7, 8,11, 8,11, 9, 9,11, 9,11,11,11,13,12,13, 8,
+ 9,11,10,11,11,12,13,12,13,10,11,13,11,13,11,12,
+ 13,12,13,13,14,15,13,15,11,12,14,12,13,13,13,13,
+ 14,15, 7, 8,11, 9,11, 9, 9,11,10,11,11,12,14,11,
+ 13, 8,10,12, 9,11,11,12,13,12,12,10,11,12,11,13,
+ 11,12,13,12,14,13,13,15,14,15,11,12,14,12,14,13,
+ 13,15,13,14, 9,10,12,10,12,10,11,13,11,13,12,13,
+ 15,13,14,10,11,13,11,13,12,13,15,13,15,10,11,13,
+ 11,13,11,12,14,12,13,13,13,15,13,15,11,12,13,12,
+ 13,13,14,15,14,15,13,13,14,13,14,13,14,15,14,15,
+ 15,16,16,16,16,12,13,15,13,16,15,14,15,15,17,10,
+ 11,13,11,13,11,12,13,12,14,13,13,14,14,15,11,12,
+ 14,12,13,13,14,15,14,15,12,13,14,13,15,13,14,15,
+ 14,14,15,15,16,15,17,13,13,15,13,15,15,15,17,14,
+ 14,
+};
+
+static float _vq_quantthresh_res0_1024a_350_1[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_1024a_350_1[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_350_1 = {
+ _vq_quantthresh_res0_1024a_350_1,
+ _vq_quantmap_res0_1024a_350_1,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_1024a_350_1 = {
+ 4, 625,
+ _vq_lengthlist_res0_1024a_350_1,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_1024a_350_1,
+ NULL,
+ &_vq_auxt_res0_1024a_350_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_350_2.vqh b/lib/books/res0_1024a_350_2.vqh
new file mode 100644
index 00000000..9e8990fe
--- /dev/null
+++ b/lib/books/res0_1024a_350_2.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_350_2_VQH_
+#define _V_res0_1024a_350_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_350_2[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_350_2[] = {
+ 4, 5, 6, 6, 7, 8, 5, 6, 6, 7, 8, 5, 5, 6, 7, 7,
+ 8, 5, 6, 7, 7, 8, 6, 6, 7, 7, 7, 9, 6, 6, 7, 8,
+ 9, 7, 7, 7, 8, 8, 9, 7, 7, 8, 8, 9, 7, 7, 8, 8,
+ 8, 9, 7, 8, 8, 8, 9, 8, 8, 9, 9, 9,10, 8, 9, 9,
+ 9,10, 5, 5, 6, 7, 7, 8, 5, 6, 7, 7, 8, 6, 6, 7,
+ 7, 8, 9, 6, 7, 7, 8, 9, 7, 7, 7, 8, 8, 9, 7, 7,
+ 8, 8, 9, 7, 7, 8, 8, 8, 9, 7, 8, 8, 8, 9, 8, 8,
+ 9, 9, 9,10, 8, 9, 9, 9,10,
+};
+
+static float _vq_quantthresh_res0_1024a_350_2[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_1024a_350_2[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_350_2 = {
+ _vq_quantthresh_res0_1024a_350_2,
+ _vq_quantmap_res0_1024a_350_2,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_1024a_350_2 = {
+ 2, 121,
+ _vq_lengthlist_res0_1024a_350_2,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_1024a_350_2,
+ NULL,
+ &_vq_auxt_res0_1024a_350_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_350_3.vqh b/lib/books/res0_1024a_350_3.vqh
new file mode 100644
index 00000000..d7790b07
--- /dev/null
+++ b/lib/books/res0_1024a_350_3.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_350_3_VQH_
+#define _V_res0_1024a_350_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_350_3[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_350_3[] = {
+ 5, 6, 6, 7, 7, 7, 8, 9, 6, 7, 7, 7, 7, 8, 9, 6,
+ 6, 7, 7, 7, 8, 8,10, 6, 7, 7, 7, 8, 8, 9, 7, 7,
+ 7, 7, 7, 8, 9,10, 7, 7, 7, 7, 8, 9,10, 7, 7, 7,
+ 8, 8, 8, 9,10, 7, 7, 8, 8, 8, 9,10, 7, 7, 7, 8,
+ 8, 8, 9,10, 7, 7, 8, 8, 8, 9,10, 7, 8, 8, 8, 8,
+ 8, 9,10, 8, 8, 8, 8, 8, 9,10, 8, 8, 9, 9, 9, 9,
+ 10,11, 8, 9, 9, 9, 9,10,11, 9,10,10,10,10,10,11,
+ 12,10,10,10,10,10,11,12, 6, 6, 7, 7, 7, 8, 8, 9,
+ 6, 7, 7, 7, 8, 8, 9, 7, 7, 7, 7, 7, 8, 9,10, 7,
+ 7, 7, 7, 8, 9,10, 7, 7, 7, 8, 8, 8, 9,10, 7, 7,
+ 8, 8, 8, 9,10, 7, 7, 7, 8, 8, 8, 9,10, 7, 7, 8,
+ 8, 8, 9,10, 8, 8, 8, 8, 8, 8, 9,10, 8, 8, 8, 8,
+ 8, 9,10, 8, 8, 9, 9, 9, 9,10,11, 8, 9, 9, 9, 9,
+ 10,11, 9,10,10,10,10,10,11,12,10,10,10,10,10,11,
+ 12,
+};
+
+static float _vq_quantthresh_res0_1024a_350_3[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_1024a_350_3[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_350_3 = {
+ _vq_quantthresh_res0_1024a_350_3,
+ _vq_quantmap_res0_1024a_350_3,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_1024a_350_3 = {
+ 2, 225,
+ _vq_lengthlist_res0_1024a_350_3,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_1024a_350_3,
+ NULL,
+ &_vq_auxt_res0_1024a_350_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_350_4.vqh b/lib/books/res0_1024a_350_4.vqh
new file mode 100644
index 00000000..292d7b5c
--- /dev/null
+++ b/lib/books/res0_1024a_350_4.vqh
@@ -0,0 +1,100 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_350_4_VQH_
+#define _V_res0_1024a_350_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_350_4[] = {
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 29,
+ 31,
+ 34,
+ 39,
+ 46,
+ 22,
+ 21,
+ 20,
+ 19,
+ 17,
+ 15,
+ 12,
+ 7,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_350_4[] = {
+ 5, 6, 7, 7, 7, 8, 8, 8, 8,10, 6, 7, 7, 7, 7, 8,
+ 8, 8,10, 6, 6, 7, 8, 8, 8, 8, 8, 9,11, 6, 7, 8,
+ 8, 8, 8, 8, 9,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,11,
+ 7, 8, 8, 8, 8, 9, 9, 9,11, 7, 8, 8, 8, 8, 8, 9,
+ 9,10,12, 8, 8, 9, 8, 9, 9, 9,10,12, 7, 8, 8, 8,
+ 8, 8, 9, 9, 9,12, 8, 8, 8, 8, 8, 9, 9, 9,12, 8,
+ 8, 8, 9, 8, 8, 9, 9,10,12, 8, 8, 9, 8, 8, 9, 9,
+ 10,12, 8, 8, 9, 9, 9, 9, 9, 9,10,12, 8, 9, 9, 9,
+ 9, 9, 9,10,12, 8, 9, 9, 9, 9, 9, 9,10,10,12, 9,
+ 9, 9, 9, 9, 9,10,10,12, 9, 9, 9,10,10,10,10,10,
+ 11,13, 9,10,10,10,10,10,10,11,13,10,11,12,12,12,
+ 12,13,13,13,15,11,12,12,12,13,13,13,13,15, 6, 6,
+ 7, 8, 8, 8, 8, 9, 9,11, 6, 7, 8, 8, 8, 8, 9, 9,
+ 11, 7, 7, 8, 8, 8, 8, 9, 9, 9,11, 7, 8, 8, 8, 8,
+ 9, 9, 9,11, 7, 8, 8, 8, 8, 9, 9, 9,10,12, 8, 8,
+ 9, 8, 9, 9, 9,10,12, 7, 8, 8, 8, 8, 8, 9, 9, 9,
+ 12, 8, 8, 8, 8, 8, 9, 9, 9,12, 8, 8, 8, 9, 8, 8,
+ 9, 9,10,12, 8, 8, 9, 8, 8, 9, 9,10,12, 8, 8, 9,
+ 9, 9, 9, 9, 9,10,12, 8, 9, 9, 9, 9, 9, 9,10,12,
+ 8, 9, 9, 9, 9, 9, 9,10,10,12, 9, 9, 9, 9, 9, 9,
+ 10,10,12, 9, 9, 9,10,10,10,10,10,11,13, 9, 9,10,
+ 10,10,10,10,11,13,10,11,12,12,12,12,13,13,13,15,
+ 11,12,12,12,12,13,13,13,15,
+};
+
+static float _vq_quantthresh_res0_1024a_350_4[] = {
+ -19.5, -13.5, -9.5, -7, -5, -3.5, -2.5, -1.5,
+ -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9.5,
+ 13.5, 19.5,
+};
+
+static long _vq_quantmap_res0_1024a_350_4[] = {
+ 18, 17, 16, 15, 14, 13, 12, 11,
+ 10, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_350_4 = {
+ _vq_quantthresh_res0_1024a_350_4,
+ _vq_quantmap_res0_1024a_350_4,
+ 19,
+ 19
+};
+
+static static_codebook _vq_book_res0_1024a_350_4 = {
+ 2, 361,
+ _vq_lengthlist_res0_1024a_350_4,
+ 1, -526974976, 1611661312, 6, 0,
+ _vq_quantlist_res0_1024a_350_4,
+ NULL,
+ &_vq_auxt_res0_1024a_350_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_1024a_350_5.vqh b/lib/books/res0_1024a_350_5.vqh
new file mode 100644
index 00000000..bdc68bf7
--- /dev/null
+++ b/lib/books/res0_1024a_350_5.vqh
@@ -0,0 +1,133 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_1024a_350_5_VQH_
+#define _V_res0_1024a_350_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_1024a_350_5[] = {
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 94,
+ 96,
+ 99,
+ 104,
+ 111,
+ 120,
+ 133,
+ 151,
+ 176,
+ 87,
+ 86,
+ 85,
+ 84,
+ 82,
+ 80,
+ 77,
+ 72,
+ 65,
+ 56,
+ 43,
+ 25,
+ 0,
+};
+
+static long _vq_lengthlist_res0_1024a_350_5[] = {
+ 4, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9,10,11,10, 6, 7,
+ 7, 7, 8, 8, 8, 8, 9, 9,10,11,10, 6, 7, 7, 8, 8,
+ 8, 8, 8, 9,10, 9,11,12,11, 7, 8, 8, 8, 8, 8, 8,
+ 9,10, 9,11,12,11, 7, 8, 8, 9, 9, 9, 9, 9, 9,10,
+ 10,12,13,12, 8, 8, 9, 9, 9, 9, 9, 9,10,10,12,12,
+ 12, 7, 8, 9, 9, 9, 9, 9, 9,10,11,11,12,13,12, 8,
+ 9, 9, 9, 9, 9, 9,10,11,10,12,13,12, 7, 8, 9, 9,
+ 9, 9, 9, 9, 9,10,10,12,13,12, 8, 9, 9, 9, 9, 9,
+ 9, 9,10,10,12,12,12, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+ 10,10,12,13,12, 8, 9, 9, 9, 9, 9, 9, 9,10,10,11,
+ 12,11, 8, 9, 9, 9, 9, 9, 9, 9, 9,11,10,12,13,13,
+ 9, 9, 9, 9, 9, 9, 9, 9,11,10,12,12,12, 8, 9, 9,
+ 9, 9, 9, 9, 9,10,10,10,12,13,13, 9, 9, 9, 9, 9,
+ 9, 9, 9,11,10,11,12,12, 9, 9,10,10,10,10,10,10,
+ 10,11,11,13,14,13, 9,10,10,10,10,10,10,10,11,11,
+ 12,13,13,10,10,11,11,11,11,11,12,12,13,12,14,15,
+ 14,10,11,11,11,11,11,12,12,13,13,14,14,14, 9,10,
+ 11,12,12,12,12,12,12,13,14,15,17,15,10,11,12,12,
+ 12,12,12,12,13,15,16,16,15,11,12,13,14,14,14,14,
+ 15,15,15,17,18,18,15,12,13,14,14,15,15,15,15,16,
+ 18,18,17,15,11,13,14,16,15,15,16,16,18,18,18,20,
+ 18,16,13,14,15,15,15,17,17,17,20,19,20,20,15,10,
+ 12,13,13,13,13,13,14,14,15,15,15,15,12,12,13,13,
+ 13,13,13,14,15,15,15,15,16,12, 6, 7, 7, 8, 8, 8,
+ 8, 8, 9,10, 9,11,12,11, 7, 8, 8, 8, 8, 8, 8, 9,
+ 10, 9,11,12,11, 7, 8, 8, 9, 9, 9, 9, 9, 9,10,10,
+ 12,13,12, 8, 8, 9, 8, 9, 9, 9, 9,10,10,12,12,12,
+ 7, 8, 9, 9, 9, 9, 9, 9,10,11,11,12,13,12, 8, 9,
+ 9, 9, 9, 9, 9,10,11,10,12,13,12, 8, 8, 9, 9, 9,
+ 9, 9, 9, 9,10,10,12,13,12, 8, 9, 9, 9, 9, 9, 9,
+ 9,11,10,11,12,12, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,
+ 10,12,13,12, 8, 9, 9, 9, 9, 9, 9, 9,10,10,11,12,
+ 12, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,12,13,13, 9,
+ 9, 9, 9, 9, 9, 9, 9,11,10,12,12,12, 8, 9, 9, 9,
+ 9, 9, 9, 9,10,11,10,12,13,13, 9, 9, 9, 9, 9, 9,
+ 9,10,11,10,12,12,12, 9, 9,10,10,10,10,10,10,10,
+ 11,11,13,13,13, 9,10,10,10,10,10,10,10,11,11,12,
+ 13,13,10,10,11,11,11,11,11,12,12,13,13,14,15,14,
+ 10,11,11,11,11,12,11,12,13,12,13,14,14, 9,10,11,
+ 12,12,12,12,12,12,13,14,16,17,15,10,11,12,12,12,
+ 12,12,12,13,15,16,16,15,11,12,13,14,14,14,14,15,
+ 15,16,16,17,18,15,12,13,14,14,14,14,15,15,16,16,
+ 18,20,15,12,13,15,15,15,15,16,17,18,18,18,18,19,
+ 16,13,14,16,16,16,17,17,16,18, 0,19,20,15,10,11,
+ 13,13,12,13,13,14,14,15,16,16,16,12,12,12,13,13,
+ 13,13,14,14,15,15,16,16,12,
+};
+
+static float _vq_quantthresh_res0_1024a_350_5[] = {
+ -75.5, -54, -38.5, -27.5, -19.5, -13.5, -9.5, -7,
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5, 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+ 54, 75.5,
+};
+
+static long _vq_quantmap_res0_1024a_350_5[] = {
+ 26, 25, 24, 23, 22, 21, 20, 19,
+ 18, 17, 16, 15, 14, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_1024a_350_5 = {
+ _vq_quantthresh_res0_1024a_350_5,
+ _vq_quantmap_res0_1024a_350_5,
+ 27,
+ 27
+};
+
+static static_codebook _vq_book_res0_1024a_350_5 = {
+ 2, 729,
+ _vq_lengthlist_res0_1024a_350_5,
+ 1, -522846208, 1611661312, 8, 0,
+ _vq_quantlist_res0_1024a_350_5,
+ NULL,
+ &_vq_auxt_res0_1024a_350_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_128_1.vqh b/lib/books/res0_128a_128_1.vqh
new file mode 100644
index 00000000..ca49a377
--- /dev/null
+++ b/lib/books/res0_128a_128_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_128_1_VQH_
+#define _V_res0_128a_128_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_128_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_128_1[] = {
+ 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9,10, 7,
+ 9,10, 5, 7, 8, 7,10, 9, 7,10, 9, 5, 8, 8, 8,10,
+ 10, 7,10,10, 7,10,10,10,12,13,10,12,13, 8,10,10,
+ 9,13,12,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
+ 10,10,10,12,12,10,12,13, 8,10,10,10,13,13,10,13,
+ 12,
+};
+
+static float _vq_quantthresh_res0_128a_128_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_128a_128_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_128_1 = {
+ _vq_quantthresh_res0_128a_128_1,
+ _vq_quantmap_res0_128a_128_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_128a_128_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_128a_128_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_128a_128_1,
+ NULL,
+ &_vq_auxt_res0_128a_128_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_128_2.vqh b/lib/books/res0_128a_128_2.vqh
new file mode 100644
index 00000000..81da6151
--- /dev/null
+++ b/lib/books/res0_128a_128_2.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_128_2_VQH_
+#define _V_res0_128a_128_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_128_2[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_128_2[] = {
+ 2, 5, 6, 4, 6, 4, 7, 9, 7, 9, 7, 9,14, 9,13, 5,
+ 7, 9, 7, 9, 7, 9,13, 9,13, 5, 7, 9, 7,10, 7, 9,
+ 12, 9,12, 9,11,15,12, 0, 7, 9,11, 9,11, 9,12,16,
+ 11,15, 7, 9,14,10,14, 9,12,16,12, 0,12, 0, 0,15,
+ 16, 9,11, 0,12, 0,13,16,15,16, 0, 5, 7, 9, 7, 9,
+ 7, 9,11, 9,11, 9,12,15,11,16, 7, 9,11, 9,12, 9,
+ 12, 0,12, 0, 7,10,14,10, 0, 9,11, 0,12,16,14,15,
+ 0,15, 0, 9,12,15,12,15,14,16, 0,16, 0, 5, 7,10,
+ 7,10, 7, 9,12, 9,12,10,12, 0,12,16, 7, 9,12, 9,
+ 13,10,12,16,12,14, 7, 9,12, 9,11, 9,12,14,11,14,
+ 12,14, 0,14, 0, 9,11,13,11,16,12,14, 0,16, 0, 9,
+ 12,16,12,15,11,14,16,13, 0,15,16, 0, 0, 0,11,13,
+ 0,14, 0, 0, 0, 0, 0,16, 7, 9,11, 9,12, 9,11,13,
+ 11,13,12,15, 0,14,16, 9,11,14,11,13,12,14, 0,15,
+ 0,10,12, 0,12, 0,11,16, 0,13,16, 0, 0, 0, 0, 0,
+ 12,14,16,14, 0,16, 0, 0, 0, 0, 7,10,13,10,16,10,
+ 12,16,13,16,14, 0, 0,16, 0,10,12, 0,12, 0,15, 0,
+ 0, 0, 0, 9,12, 0,12, 0,12,15, 0,14, 0, 0,16, 0,
+ 16, 0,11,14,15,13, 0,16,16, 0, 0, 0,14,15, 0,16,
+ 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,10,12,15,13,16,12,14, 0,13, 0, 0,
+ 0, 0,16, 0,12,14, 0,14, 0,15, 0, 0,16, 0,14,15,
+ 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16,15, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 7,10, 7,10, 7, 9,12, 9,
+ 13,10,13,16,12,16, 7, 9,12, 9,12,10,13,16,12,15,
+ 7, 9,13, 9,12, 9,11,15,11,15,12,16, 0,15,16, 9,
+ 11,14,12,14,11,14,16, 0,16,10,12,16,11, 0,12,13,
+ 0,15, 0,16, 0, 0, 0, 0,12,13, 0,14,16, 0,15, 0,
+ 0, 0, 7,10,12, 9,12, 9,11,15,11,14,12,14, 0,14,
+ 15, 9,11,16,11,15,12,15,16,14, 0,10,13, 0,13, 0,
+ 12,14, 0,15,16, 0,16, 0, 0, 0,12,15, 0,16, 0,14,
+ 0, 0, 0, 0, 7,10, 0,10,14,10,12,16,12,16,15,16,
+ 0,16,16,10,12,14,12, 0,15, 0, 0, 0, 0,10,12, 0,
+ 13, 0,12,14, 0, 0, 0,16, 0, 0,16, 0,12,14, 0,14,
+ 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,15, 0, 0,15, 0,
+ 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 13, 0,12,16,12,14, 0,14,16, 0, 0, 0, 0, 0,13,14,
+ 0,15, 0,16, 0, 0, 0, 0,14, 0, 0,16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,14,16, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_128_2[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128a_128_2[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_128_2 = {
+ _vq_quantthresh_res0_128a_128_2,
+ _vq_quantmap_res0_128a_128_2,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128a_128_2 = {
+ 4, 625,
+ _vq_lengthlist_res0_128a_128_2,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_128_2,
+ NULL,
+ &_vq_auxt_res0_128a_128_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_128_3.vqh b/lib/books/res0_128a_128_3.vqh
new file mode 100644
index 00000000..3dcc0105
--- /dev/null
+++ b/lib/books/res0_128a_128_3.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_128_3_VQH_
+#define _V_res0_128a_128_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_128_3[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_128_3[] = {
+ 2, 5, 7, 6, 5, 6, 6, 5, 7, 8, 8, 7, 8, 9, 8,10,
+ 12,12,10,10,11, 8,10,13,14,10,13,13, 5, 7, 9, 9,
+ 7, 9, 9, 8, 9,11,13, 9,12,11, 7,10,13,14,10,13,
+ 13, 5, 7, 9, 9, 7, 9, 9, 7, 9,11,11, 9,11,11,10,
+ 11,12, 0,11, 0,14,10, 0, 0,14,12, 0, 0, 7, 9,12,
+ 11, 8,10,10,11,12, 0,14,11,14,14,10,12, 0, 0,12,
+ 14,13, 8,10,12,14,11,12,12,10,11,13,14,11,14,13,
+ 12,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,12,
+ 0,12,12,14,12,13,14, 0, 0,13, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 8,10, 0, 0,11, 0,14,11,13, 0, 0,13, 0,
+ 0,13, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,11,
+ 12,14, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0,13, 0, 0,
+ 0, 0, 0, 0, 5, 7, 9, 9, 7, 9, 9, 7, 9,10,11, 9,
+ 10,11,10,11,14,14,11,14,14,10,12,13,14,12, 0, 0,
+ 7, 8,11,11, 9,11,10,10,12,14,12,11, 0,14,11,13,
+ 13,12,13,14,13, 8,10,14,13,10,14,13,10,13,14, 0,
+ 13,12, 0, 0,14, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0,
+ 0,10,11,12,14,11, 0,13,12,14, 0, 0,14, 0, 0,14,
+ 14, 0, 0, 0, 0, 0, 8,11, 0, 0,11,14,14,10,12, 0,
+ 14,14, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,10,14,14, 0,12, 0, 0,14, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 7, 9, 9, 7, 9,10, 8,10,
+ 10,10, 9,11,10,11,13,11, 0,12,14, 0,11,14, 0, 0,
+ 0,14, 0, 8, 9,11,11, 9,12,11,11,13,12,14,11,14,
+ 0,10,14,13,14,12, 0, 0, 8, 9,11,12,10,11,11, 9,
+ 11,13,12,11,12,13, 0, 0, 0, 0,13,14, 0,13, 0, 0,
+ 0, 0, 0, 0, 9,12,12,13,11,14, 0,14,14,14, 0, 0,
+ 0, 0,14, 0, 0, 0, 0, 0, 0,11,11, 0, 0,13, 0,13,
+ 12, 0, 0, 0,14, 0, 0, 0,14, 0,14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,13, 0, 0, 0, 0,
+ 0,11, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,10,11,11,10,
+ 11,11, 9,12,13,12,12,12,14,11, 0, 0,13,13, 0, 0,
+ 12,14, 0, 0, 0, 0, 0, 9,12,12,12,11,14,12,13,14,
+ 0,14, 0, 0, 0,12, 0, 0,14, 0, 0, 0,11,13, 0, 0,
+ 14, 0, 0,13,14, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0,14, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,11, 0,
+ 0,12, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,11,
+ 14, 0,11,14,14,11,12,14, 0,12, 0,13,13, 0, 0, 0,
+ 14, 0, 0,14, 0, 0, 0, 0, 0, 0,11,13, 0,14,13,14,
+ 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0,10,
+ 11, 0, 0,12,14, 0,12, 0, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,14, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, 0, 0, 0,14, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,10,12, 0, 0,14,14,14,11,14,13, 0,13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,14,14,
+ 14,14, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 8,10,14,14,11, 0,14,13,14,13, 0,
+ 14, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,10,12, 0, 0,13, 0, 0,14,14, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,12, 0, 0, 0,14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,13, 0, 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0, 0, 0,14,14, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 9, 9,
+ 8, 9, 9, 8, 9,11,11, 9,11,14,11,11,14,14,11, 0,
+ 13,11, 0,14, 0,12,14, 0, 8, 9,11,14,10,11,10,11,
+ 12,14,14,14, 0,12,10,12, 0, 0,12, 0,13, 7, 9,10,
+ 11, 9,11,11,10,11,12,14,11,13,12,13, 0,14,14,14,
+ 0,14,14, 0,13, 0, 0, 0, 0,10,11,14,12,11,14,12,
+ 12,14,13,14, 0,14, 0,13,14, 0, 0,14, 0, 0,11,13,
+ 12, 0, 0,14, 0,12, 0,14, 0, 0, 0,13,13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,14,14, 0,14, 0,
+ 0, 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0,10,
+ 14, 0,12,14, 0, 0,14,12, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0,
+ 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8,10,11,11, 9,12,10, 9,12,13, 0,13, 0, 0,12,14,
+ 13, 0,12, 0, 0,14, 0, 0, 0,14, 0, 0, 9,11,13,14,
+ 11,14,12,14, 0, 0, 0,14,14, 0,13, 0, 0, 0,14,14,
+ 0,11,13, 0, 0,13, 0, 0,13, 0, 0, 0,14, 0, 0,14,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,13, 0,
+ 0, 0, 0,14, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,12,14, 0, 0,12, 0, 0,14, 0, 0, 0, 0, 0, 0,
+ 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8,10,13, 0,10,13,13,10,13, 0, 0,14,14,
+ 14, 0, 0, 0, 0,14, 0, 0, 0,14, 0, 0, 0, 0, 0,10,
+ 13, 0,12,13, 0,14, 0, 0, 0, 0, 0, 0, 0, 0,14, 0,
+ 0, 0, 0, 0,11,12,14, 0, 0,14,14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13,14, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,14,13, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,10,14,14, 0,12,13,14,13,14,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,14, 0, 0, 0,14, 0, 0,13,14, 0, 0,14, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,11, 0, 0,10,14,
+ 0,11,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,
+ 0, 0, 0, 0, 0, 0,12, 0, 0, 0,14,14, 0,13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0, 0, 0, 0,
+ 14,14,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,14,
+ 0, 0, 0, 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_128_3[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_128a_128_3[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_128_3 = {
+ _vq_quantthresh_res0_128a_128_3,
+ _vq_quantmap_res0_128a_128_3,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_128a_128_3 = {
+ 4, 2401,
+ _vq_lengthlist_res0_128a_128_3,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_128_3,
+ NULL,
+ &_vq_auxt_res0_128a_128_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_128_4.vqh b/lib/books/res0_128a_128_4.vqh
new file mode 100644
index 00000000..23ec1803
--- /dev/null
+++ b/lib/books/res0_128a_128_4.vqh
@@ -0,0 +1,70 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_128_4_VQH_
+#define _V_res0_128a_128_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_128_4[] = {
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 3,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_128_4[] = {
+ 2, 3, 5, 6, 6, 3, 5, 6, 5, 4, 5, 7, 8, 7, 6, 7,
+ 8, 7, 7, 9,11,13,11, 9,10,11,11, 9,11,13,13,14,
+ 11,13,13,15, 8,11,13,13,15,11,14, 0,15, 4, 5, 7,
+ 8, 7, 5, 7, 8, 7, 7, 9,11,11,10, 9,11,13,11, 9,
+ 11,14,13,13,11,13,13,13, 8,11,14,15,13,12,14, 0,
+ 14,
+};
+
+static float _vq_quantthresh_res0_128a_128_4[] = {
+ -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
+};
+
+static long _vq_quantmap_res0_128a_128_4[] = {
+ 8, 7, 6, 5, 0, 1, 2, 3,
+ 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_128_4 = {
+ _vq_quantthresh_res0_128a_128_4,
+ _vq_quantmap_res0_128a_128_4,
+ 9,
+ 9
+};
+
+static static_codebook _vq_book_res0_128a_128_4 = {
+ 2, 81,
+ _vq_lengthlist_res0_128a_128_4,
+ 1, -531628032, 1611661312, 4, 0,
+ _vq_quantlist_res0_128a_128_4,
+ NULL,
+ &_vq_auxt_res0_128a_128_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_128_5.vqh b/lib/books/res0_128a_128_5.vqh
new file mode 100644
index 00000000..36a69ac0
--- /dev/null
+++ b/lib/books/res0_128a_128_5.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_128_5_VQH_
+#define _V_res0_128a_128_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_128_5[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_128_5[] = {
+ 2, 3, 5, 6, 7, 6, 7, 7, 9,14,19, 0, 3, 5, 6, 6,
+ 6, 7, 7, 9,13, 0, 0, 4, 6, 7, 8, 8, 8, 9, 9,11,
+ 15, 0, 0, 6, 7, 8, 8, 8, 8, 9,11,15, 0, 0, 8, 9,
+ 11,11,12,12,12,12,14, 0, 0, 0, 9,10,12,12,12,12,
+ 13,15,19, 0, 0,11,12,13,14,14,15,15,16,18, 0, 0,
+ 0,12,13,15,15,14,14,15,17, 0, 0, 0,12,14,15,15,
+ 17,15,18,18,18, 0, 0, 0,14,15,17,17,16,18,16, 0,
+ 0, 0, 0,12,15,16,15, 0,18,18, 0, 0, 0, 0, 0,15,
+ 16,17,17, 0, 0, 0, 0, 0, 0, 0,13,16,17,17, 0,18,
+ 18, 0, 0, 0, 0, 0,18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,14,18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,16,18, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 6, 7, 8, 8, 8, 9, 9,11,18, 0, 0,
+ 6, 7, 8, 8, 8, 8, 9,11,15, 0, 0, 8, 9,11,12,12,
+ 12,12,12,15, 0, 0, 0, 9,11,11,12,12,12,13,15,18,
+ 0, 0,11,12,13,14,14,14,14,15,18, 0, 0, 0,12,14,
+ 15,14,15,15,15,18, 0, 0, 0,12,14,16,15,17,16,18,
+ 17, 0, 0, 0, 0,14,15,17,15,15,17,17,17, 0, 0, 0,
+ 12,15,17,17,17,18, 0, 0, 0, 0, 0, 0,15,17,18,18,
+ 17, 0, 0, 0, 0, 0, 0,13, 0,18, 0, 0,18, 0, 0, 0,
+ 0, 0, 0,17, 0,18,18, 0, 0, 0, 0, 0, 0, 0,14, 0,
+ 0,18, 0,18, 0, 0, 0, 0, 0, 0,17, 0,18, 0, 0, 0,
+ 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_128_5[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_128a_128_5[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_128_5 = {
+ _vq_quantthresh_res0_128a_128_5,
+ _vq_quantmap_res0_128a_128_5,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_128a_128_5 = {
+ 2, 529,
+ _vq_lengthlist_res0_128a_128_5,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_128a_128_5,
+ NULL,
+ &_vq_auxt_res0_128a_128_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_160_1.vqh b/lib/books/res0_128a_160_1.vqh
new file mode 100644
index 00000000..5393e8b5
--- /dev/null
+++ b/lib/books/res0_128a_160_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_160_1_VQH_
+#define _V_res0_128a_160_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_160_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_160_1[] = {
+ 2, 4, 4, 4, 6, 6, 4, 6, 6, 5, 7, 6, 6, 7, 8, 6,
+ 7, 8, 5, 6, 7, 6, 8, 7, 6, 8, 7, 6, 7, 7, 7, 8,
+ 9, 7, 8, 8, 7, 9, 8, 8, 9,10, 9,10, 9, 7, 8, 9,
+ 8,10, 9, 9,10,10, 6, 7, 7, 7, 8, 8, 7, 9, 9, 7,
+ 9, 8, 9,10, 9, 8, 9,10, 7, 8, 9, 9,10,10, 8,10,
+ 9,
+};
+
+static float _vq_quantthresh_res0_128a_160_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_128a_160_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_160_1 = {
+ _vq_quantthresh_res0_128a_160_1,
+ _vq_quantmap_res0_128a_160_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_128a_160_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_128a_160_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_128a_160_1,
+ NULL,
+ &_vq_auxt_res0_128a_160_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_160_2.vqh b/lib/books/res0_128a_160_2.vqh
new file mode 100644
index 00000000..f62117b5
--- /dev/null
+++ b/lib/books/res0_128a_160_2.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_160_2_VQH_
+#define _V_res0_128a_160_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_160_2[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_160_2[] = {
+ 4, 5, 7, 5, 7, 5, 6, 8, 6, 8, 7, 9,11, 9,11, 5,
+ 6, 8, 6, 8, 8, 9,11, 9,11, 5, 6, 9, 6, 9, 6, 7,
+ 10, 8,10, 9,10,13,10,13, 6, 7,10, 7,10, 9,10,13,
+ 10,13, 8, 9,12, 9,12, 9,10,13,10,13,12,13, 0,13,
+ 16, 9,10,13,10,13,12,13,17,13,16, 5, 6, 9, 6, 9,
+ 6, 7,10, 7,10, 9,10,13,10,12, 6, 7,10, 8,10, 9,
+ 10,13,10,12, 8, 9,12, 9,12, 9,10,13,10,13,12,13,
+ 16,13,14, 9,10,14,10,13,12,13,17,13,15, 6, 7, 9,
+ 7, 9, 7, 8,11, 8,10, 9,10,13,10,14, 7, 8,10, 8,
+ 10, 9,10,12,10,13, 7, 8,10, 8,10, 8, 9,11, 9,12,
+ 11,11,13,11,13, 8, 9,11, 9,11,10,12,14,11,14, 9,
+ 11,13,11,13,10,11,14,12,14,13,13,17,15, 0,11,12,
+ 15,12,16,13,15,17,14,17, 7, 8,10, 8,10, 8, 9,11,
+ 9,11,10,12,15,11,13, 8, 9,11, 9,12,10,11,14,11,
+ 14, 9,10,13,10,14,10,11,14,11,14,13,14,17,13,16,
+ 10,12,14,12,15,13,14,16,14, 0, 8,10,13, 9,12,10,
+ 11,13,11,14,13,14, 0,14,17,10,10,13,11,13,12,14,
+ 15,13,15,10,11,13,11,14,11,11,16,12,14,15,14,17,
+ 15, 0,11,12,14,12,13,13,16,17,14, 0,13,14,17,13,
+ 16,13,14,16,14,16,17,15, 0,16,17,13,14, 0,16,16,
+ 17,16,17,17, 0,10,11,14,11,14,11,12,14,11,14,14,
+ 15, 0,14,16,11,12,15,11,15,15,15,17,15,15,13,13,
+ 16,13,16,13,15,16,14,17,17,17, 0,16,17,14,16, 0,
+ 14, 0,17,17, 0,17, 0, 6, 7, 9, 7, 9, 7, 8,10, 8,
+ 10, 9,10,13,10,13, 7, 8,10, 8,10, 9,10,13,10,13,
+ 7, 8,10, 8,10, 8, 9,12, 9,11,10,11,14,12,14, 8,
+ 9,11, 9,12,10,11,13,11,14, 9,11,13,10,13,11,11,
+ 14,12,16,13,15,17,14,17,11,11,14,12,14,13,13,16,
+ 15,16, 7, 8,10, 8,10, 8, 9,11, 9,12,10,12,13,12,
+ 14, 8, 9,12, 9,11,10,12,15,11,14, 9,10,14,11,14,
+ 11,12,14,12,14,13,14,17,14,17,10,12,15,11,14,13,
+ 14,16,13,15, 9,10,12, 9,13,10,11,14,11,14,12,13,
+ 16,13,15,10,11,14,10,14,13,13,16,14,17, 9,11,14,
+ 10,14,11,12,15,12,15,13,15,17,15, 0,11,12,14,12,
+ 15,14,14, 0,15, 0,12,14,16,13,16,14,14,17,15,16,
+ 17,16, 0,16,17,13,15, 0,16,16,16,15, 0,16, 0,10,
+ 11,13,11,13,11,12,15,12,14,13,15, 0,15,17,11,12,
+ 14,12,14,13,16,17,14, 0,13,14,15,13,16,14,14,16,
+ 14,15,17,17, 0, 0, 0,13,15, 0,14, 0,14, 0,17,15,
+ 17,
+};
+
+static float _vq_quantthresh_res0_128a_160_2[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128a_160_2[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_160_2 = {
+ _vq_quantthresh_res0_128a_160_2,
+ _vq_quantmap_res0_128a_160_2,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128a_160_2 = {
+ 4, 625,
+ _vq_lengthlist_res0_128a_160_2,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_160_2,
+ NULL,
+ &_vq_auxt_res0_128a_160_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_160_3.vqh b/lib/books/res0_128a_160_3.vqh
new file mode 100644
index 00000000..7e9a27b6
--- /dev/null
+++ b/lib/books/res0_128a_160_3.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_160_3_VQH_
+#define _V_res0_128a_160_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_160_3[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_160_3[] = {
+ 4, 5, 7, 7, 5, 7, 7, 5, 7, 9, 9, 7, 9, 9, 7, 9,
+ 11,11, 9,10,13, 8,10,12,15,10,12, 0, 6, 7, 9, 9,
+ 7, 9, 9, 8, 9,11,11, 9,11,13, 8,10,12,14,10,11,
+ 14, 6, 7, 9,10, 7, 9,10, 7, 8,10,11, 8,10,11, 9,
+ 10,13,12,10,13,13,10,11,14,15,11,13,14, 7, 8,10,
+ 11, 8,10,11, 9,10,12,12,10,13, 0,10,11,12,15,11,
+ 13,15, 8, 9,11,13, 9,12,13, 9,10,13,14,10,14,13,
+ 11,12,15, 0,12,15,14,13,13,15,15,13,15, 0, 9,10,
+ 13,14,11,12,14,11,12,13,15,14,14, 0,13,14,14, 0,
+ 15, 0, 0, 9,10,13,15,10,14,15,10,11,13, 0,12,14,
+ 0,13,15, 0,15,13, 0, 0,15,15, 0, 0, 0, 0, 0,10,
+ 11,14,15,11,14,14,12,14,15, 0,13,15, 0,15,15, 0,
+ 0, 0, 0, 0, 6, 7, 9,10, 7, 9, 9, 7, 8,10,11, 8,
+ 10,11, 9,11,12,13,10,12,13,10,11,13,14,11,14,14,
+ 7, 8,10,11, 8,10,11, 9,10,13,13,10,12,13,10,11,
+ 13,15,11,13,15, 8, 9,12,12, 9,11,13, 9,11,13,14,
+ 11,12,14,11,12,14, 0,12,14, 0,12,14, 0, 0,14,14,
+ 15, 9,10,14,15,10,13,14,12,13,15,15,13, 0, 0,12,
+ 14, 0, 0,14,15,15, 9,10,13,14,10,13, 0,10,12,15,
+ 0,11,13, 0,12,14, 0, 0,14,15, 0,15,15, 0, 0,14,
+ 15, 0,10,12,14, 0,11,13, 0,12,13,15, 0,14,15,15,
+ 0,15, 0, 0,14, 0, 0, 6, 7, 9,10, 7,10,10, 7, 8,
+ 10,11, 8,11,11, 9,10,12,14,10,13,13,10,11,14,14,
+ 11,13, 0, 7, 8,10,11, 8,10,11, 9,11,12,13,11,13,
+ 13,10,11,15, 0,11,13, 0, 7, 8,10,12, 8,10,11, 8,
+ 9,11,13, 9,12,13,10,12,14,13,12,12,15,12,12,15,
+ 0,12,15,15, 8, 9,12,13, 9,12,12,11,12,14,14,11,
+ 13,13,11,12, 0,14,12, 0,14, 9,11,12,14,10,13,13,
+ 10,11,13,15,12,14, 0,13,13,15,15,13,14, 0,14,14,
+ 14, 0, 0, 0, 0,10,11,13,15,12,13,15,13,14,15, 0,
+ 0,15, 0,13, 0, 0, 0,15, 0, 0,10,11,14, 0,11,13,
+ 15,11,12, 0, 0,12,15, 0,13,14, 0, 0,13, 0, 0, 0,
+ 0, 0, 0,14, 0, 0,12,13,14, 0,13, 0, 0,15,14, 0,
+ 0, 0,15, 0,14, 0, 0, 0, 0, 0, 0, 7, 8,11,11, 8,
+ 11,11, 8,10,11,12,10,11,12,10,11,14,14,11,14,14,
+ 11,13, 0, 0,12,14,15, 8, 9,12,13, 9,12,13,10,11,
+ 13,15,12,13,15,11,12,14,14,12,13, 0,10,10,12,14,
+ 10,15,14,10,11,13,14,11,14,14,12,13, 0, 0,13,15,
+ 15,14,14, 0, 0,14, 0, 0,11,11,14,15,12,14,14,13,
+ 13,15, 0,14, 0, 0,13,15, 0, 0,15,15, 0,10,12,15,
+ 14,11,14,15,12,12, 0, 0,14,14, 0,13, 0, 0, 0,14,
+ 0, 0,14, 0, 0, 0, 0, 0, 0,12,13,14, 0,13,15, 0,
+ 13,14, 0, 0,15, 0, 0, 0, 0, 0, 0,15, 0, 0, 8,10,
+ 13,13,10,11,14,10,11,14,14,11,13,13,12,12,14,14,
+ 12,14, 0,13,15,14, 0,14,15, 0,10,10,12,13,11,13,
+ 14,12,13,14,15,13,15, 0,14,15, 0, 0,14, 0, 0, 9,
+ 11,13,14,11,12,13,11,12,13,15,12,15, 0,14,14, 0,
+ 0, 0, 0, 0,12,14, 0, 0,15, 0, 0,11,12,14,14,11,
+ 14,14,12,13,15, 0,13,14, 0,14,14, 0, 0,15, 0, 0,
+ 12,12,13,15,12, 0,14,12,14, 0, 0,13,15, 0,14,15,
+ 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,14,15, 0,
+ 15,15, 0,15,14, 0, 0, 0,15, 0, 0,15,15, 0, 0, 0,
+ 0,13,12, 0, 0,13,15, 0,14,14,15, 0,15, 0,15, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0,15,
+ 0, 0, 0, 0,14, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,10,11,13,15,11,12,15,11,12,13,14,12,13,14,
+ 14, 0,15, 0,13, 0, 0,14, 0, 0, 0,15,14, 0,10,11,
+ 12,14,11,14,14,14,14, 0, 0,14, 0, 0,13,15,15, 0,
+ 0, 0, 0,12,13,14,15,12,15, 0,12,14,15, 0,14, 0,
+ 0,14, 0, 0, 0,15, 0, 0, 0, 0, 0, 0,15, 0, 0,13,
+ 15, 0,15,14, 0,15,13,15, 0, 0,15, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,13, 0, 0, 0,14, 0, 0,14, 0, 0, 0,14,
+ 0, 0,14, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14,14, 0, 0, 0, 0, 0,15, 0,15, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9,10,13, 0,11,13, 0,10,12,14,14,
+ 12,14, 0,12, 0,14, 0,14, 0, 0,14, 0, 0, 0,15, 0,
+ 0,10,11,15,15,12,14,15,13,13, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0, 0, 0,10,12,14, 0,11,14,15,11,13, 0,
+ 15,13,14,15,13, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0,
+ 0, 0,12,12,15, 0,12,15, 0,13,15, 0,14,15, 0, 0,
+ 15, 0, 0, 0, 0, 0, 0,13,13, 0, 0,13,15, 0,13,15,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,14,15,15, 0,15, 0, 0, 0,15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,15,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,10,11,14, 0,12, 0, 0,
+ 12,13,14,15,13, 0, 0,13, 0, 0, 0, 0,15, 0,15, 0,
+ 0, 0, 0, 0, 0,12,13,14, 0,13, 0, 0,13,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,15, 0, 0,13,14,15, 0,15, 0,
+ 0,14,14,15, 0, 0, 0, 0, 0, 0,15, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,15,14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0,
+ 0, 0,14, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,10,10,
+ 7, 9,10, 7, 8,11,11, 8,10,12, 9,10,12,13,10,12,
+ 15,10,12,13,14,12,15, 0, 7, 8,10,11, 8,11,12, 9,
+ 10,13,13,10,12,13,10,12,13,15,11,15, 0, 7, 8,11,
+ 11, 8,11,11, 8, 9,11,12, 9,11,12,10,12,14,15,12,
+ 13, 0,12,13,14,15,14, 0, 0, 8, 9,11,13, 9,12,13,
+ 10,12,13,14,11,15,15,12,12,13,14,14,14, 0,10,11,
+ 12,15,10,12,14,10,13,15,15,11,15,14,13,13,14, 0,
+ 13,13, 0,13,15, 0, 0, 0, 0, 0,10,11,13,14,11,15,
+ 14,12,15, 0, 0,14,15, 0,14,15,15, 0,14,15, 0,10,
+ 12, 0, 0,11,14, 0,11,12, 0, 0,12,14, 0,15, 0,14,
+ 0,14, 0, 0,15, 0, 0, 0, 0, 0, 0,12,13, 0, 0,13,
+ 15, 0,13, 0,15, 0,14,15, 0,14,14, 0, 0, 0, 0, 0,
+ 7, 8,11,11, 8,10,11, 8, 9,12,12,10,11,12,10,12,
+ 13,13,12,15,14,11,12,15, 0,12,14, 0, 8, 9,12,14,
+ 9,12,12,11,12,14,14,11,13,15,12,13,14,14,12,14,
+ 0, 9,10,13,15,10,13,15,11,11,14,14,12,14,15,12,
+ 14, 0,15,15, 0, 0,12,14, 0, 0,15, 0, 0,11,12,13,
+ 0,11,14,13,13,13, 0,15,13,14, 0,15, 0, 0, 0,14,
+ 15, 0,11,12, 0, 0,12,15, 0,12,14, 0,14,13, 0,15,
+ 13,14, 0, 0,15, 0,15,15, 0, 0, 0, 0, 0, 0,12,14,
+ 14,15,13,14, 0,14, 0, 0, 0,13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 9,12,14, 9,11,13, 9,10,13,15,10,13,
+ 13,12,13,15, 0,13, 0, 0,14,13, 0, 0,15,15,15, 9,
+ 11,13,14,10,13,13,11,13,14,15,13,15, 0,13,13, 0,
+ 15,15,15, 0,10,11,12,14,11,13,15,11,12,15,15,12,
+ 14, 0,12,15,15, 0,15,15, 0,13,14, 0, 0,15,15, 0,
+ 11,11, 0, 0,12,14, 0,14,13,15, 0,15,15, 0,14,14,
+ 0, 0, 0, 0, 0,12,13, 0, 0,15,14,14,12,14, 0, 0,
+ 14,15, 0,14,15, 0, 0,15,14, 0,15,15, 0, 0, 0, 0,
+ 0,14,13,14, 0,14, 0, 0,14,15, 0, 0, 0, 0, 0,15,
+ 0, 0, 0,15, 0, 0,12,15, 0, 0,13,15, 0,15, 0, 0,
+ 0,13, 0, 0,14, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,14,15, 0, 0,13,15, 0,15,14, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,10,11,13, 0,11,13,15,11,12,
+ 13, 0,12,14, 0,12,14,15, 0,13, 0,15,13, 0, 0, 0,
+ 15, 0, 0,11,12,13,14,12,14, 0,13,14,14, 0,13,14,
+ 0, 0,15, 0,15, 0, 0, 0,12,13,14, 0,12, 0, 0,12,
+ 0,15, 0,14,15, 0,14,15, 0, 0,15, 0, 0, 0, 0, 0,
+ 0,15, 0, 0,13,14,15, 0,13,15,15,14,14, 0, 0,15,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0,14, 0, 0,
+ 14, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0,
+ 0, 0, 0, 0, 0,13,15, 0, 0,14, 0, 0,14, 0, 0, 0,
+ 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,11,14, 0,10,13,
+ 0,10,12,14, 0,11,14, 0,14,15,15,14,14, 0, 0,14,
+ 0, 0, 0,15, 0, 0,10,11,14,14,12,14,14,13,14,15,
+ 0,14,15, 0,15, 0, 0, 0,14, 0, 0,10,12,14, 0,12,
+ 14, 0,12,13,15, 0,13,15, 0,13, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0,14,12, 0, 0,13,15, 0,14, 0,
+ 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,14, 0, 0,
+ 14,15, 0,13,14, 0, 0,15, 0, 0,15,15, 0, 0,15, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0,
+ 0,14, 0, 0, 0,15, 0, 0,14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,12,
+ 15, 0,12,14,15,12,13,15, 0,12, 0, 0,14,15, 0, 0,
+ 14, 0, 0,15, 0, 0, 0, 0, 0, 0,12,13,15, 0,13,15,
+ 15,14, 0, 0, 0, 0,15, 0,14, 0, 0, 0,15, 0, 0,14,
+ 13,15, 0,13, 0, 0,15,14, 0, 0,15, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,14, 0, 0,14,
+ 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,15, 0, 0, 0,
+ 15,15, 0, 0,15, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_160_3[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_128a_160_3[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_160_3 = {
+ _vq_quantthresh_res0_128a_160_3,
+ _vq_quantmap_res0_128a_160_3,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_128a_160_3 = {
+ 4, 2401,
+ _vq_lengthlist_res0_128a_160_3,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_160_3,
+ NULL,
+ &_vq_auxt_res0_128a_160_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_160_4.vqh b/lib/books/res0_128a_160_4.vqh
new file mode 100644
index 00000000..1e33866a
--- /dev/null
+++ b/lib/books/res0_128a_160_4.vqh
@@ -0,0 +1,70 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_160_4_VQH_
+#define _V_res0_128a_160_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_160_4[] = {
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 3,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_160_4[] = {
+ 2, 4, 5, 7, 6, 3, 5, 7, 6, 4, 5, 7, 9, 8, 5, 7,
+ 8, 8, 6, 7, 8,10, 9, 7, 9,10,10, 7, 8,10,11,12,
+ 9,11,12,12, 7, 8,11,14,14, 8,11,12,13, 4, 5, 7,
+ 8, 8, 5, 7, 8, 8, 6, 7, 9,10,10, 7, 9,10,10, 8,
+ 8,10,12,11, 9,11,13,12, 7, 8,10,13,13, 9,11,12,
+ 13,
+};
+
+static float _vq_quantthresh_res0_128a_160_4[] = {
+ -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
+};
+
+static long _vq_quantmap_res0_128a_160_4[] = {
+ 8, 7, 6, 5, 0, 1, 2, 3,
+ 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_160_4 = {
+ _vq_quantthresh_res0_128a_160_4,
+ _vq_quantmap_res0_128a_160_4,
+ 9,
+ 9
+};
+
+static static_codebook _vq_book_res0_128a_160_4 = {
+ 2, 81,
+ _vq_lengthlist_res0_128a_160_4,
+ 1, -531628032, 1611661312, 4, 0,
+ _vq_quantlist_res0_128a_160_4,
+ NULL,
+ &_vq_auxt_res0_128a_160_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_160_5.vqh b/lib/books/res0_128a_160_5.vqh
new file mode 100644
index 00000000..e5c7ffd3
--- /dev/null
+++ b/lib/books/res0_128a_160_5.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_160_5_VQH_
+#define _V_res0_128a_160_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_160_5[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_160_5[] = {
+ 3, 4, 5, 6, 6, 6, 6, 7, 9,14,18, 0, 4, 5, 6, 6,
+ 6, 6, 7, 9,13,17, 0, 5, 5, 6, 7, 7, 7, 7, 8,10,
+ 13, 0, 0, 5, 6, 7, 7, 7, 7, 8,10,14,18, 0, 7, 7,
+ 8, 9, 9, 9, 9, 9,12,15, 0, 0, 7, 8, 9, 9, 9, 9,
+ 9,11,16, 0, 0, 9, 9,10,11,10,10,11,12,14, 0, 0,
+ 0, 9,10,10,11,11,11,11,13,18, 0, 0,10,10,11,12,
+ 12,12,12,13,14,18, 0, 0,10,11,12,12,12,12,13,16,
+ 0, 0, 0,11,12,13,14,14,14,14,17,17, 0, 0, 0,12,
+ 13,14,14,14,14,15,16,18, 0, 0,12,14,15,15,16,15,
+ 16,17, 0, 0, 0, 0,14,15,17,16,16,18,17, 0, 0, 0,
+ 0,13,17, 0, 0,18, 0, 0, 0,18, 0, 0, 0,16,17,17,
+ 18, 0,18, 0, 0, 0, 0, 0,14,17,18,18, 0, 0, 0, 0,
+ 0, 0, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,
+ 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 5, 6, 7, 7, 7, 7, 8,10,14, 0, 0,
+ 5, 6, 7, 7, 7, 7, 8,10,14,18, 0, 7, 7, 8, 9, 9,
+ 9, 9, 9,11,15, 0, 0, 7, 8, 9, 9, 9, 9, 9,11,17,
+ 0, 0, 9, 9,10,11,10,11,11,11,14,17, 0, 0, 9,10,
+ 10,11,11,11,11,14, 0, 0, 0,10,11,11,12,12,12,12,
+ 13,15,18, 0, 0,11,11,12,12,12,12,13,15, 0, 0, 0,
+ 11,12,13,14,14,14,14,16,17, 0, 0, 0,12,13,14,13,
+ 15,14,15,16, 0, 0, 0,12,14,15,16,16,17,15, 0,18,
+ 0, 0, 0,14,16,17,16,16,16,18, 0, 0, 0, 0,14,17,
+ 16,18, 0, 0,16, 0, 0, 0, 0, 0,15,18,17,18,18, 0,
+ 0, 0, 0, 0, 0,14,17, 0,18, 0,18, 0, 0, 0, 0, 0,
+ 0,17,18,18, 0, 0, 0, 0, 0, 0, 0, 0,15,17, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_160_5[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_128a_160_5[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_160_5 = {
+ _vq_quantthresh_res0_128a_160_5,
+ _vq_quantmap_res0_128a_160_5,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_128a_160_5 = {
+ 2, 529,
+ _vq_lengthlist_res0_128a_160_5,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_128a_160_5,
+ NULL,
+ &_vq_auxt_res0_128a_160_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_192_1.vqh b/lib/books/res0_128a_192_1.vqh
new file mode 100644
index 00000000..7b7718c6
--- /dev/null
+++ b/lib/books/res0_128a_192_1.vqh
@@ -0,0 +1,63 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_192_1_VQH_
+#define _V_res0_128a_192_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_192_1[] = {
+ 1,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_192_1[] = {
+ 1, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 7,
+ 8, 8, 5, 7, 7, 7, 8, 8, 7, 9, 8, 7, 8, 8, 9,10,
+ 10, 8, 9, 9, 9,10, 9,10, 9,11,10,11,11, 9, 9,10,
+ 10,11,10,10,11,11, 7, 8, 8, 8, 9, 9, 9,10,10, 9,
+ 10, 9,10,11,11,10,10,11, 9,10,10,10,11,11, 9,11,
+ 8,
+};
+
+static float _vq_quantthresh_res0_128a_192_1[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_128a_192_1[] = {
+ 2, 0, 1,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_192_1 = {
+ _vq_quantthresh_res0_128a_192_1,
+ _vq_quantmap_res0_128a_192_1,
+ 3,
+ 3
+};
+
+static static_codebook _vq_book_res0_128a_192_1 = {
+ 4, 81,
+ _vq_lengthlist_res0_128a_192_1,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_128a_192_1,
+ NULL,
+ &_vq_auxt_res0_128a_192_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_192_2.vqh b/lib/books/res0_128a_192_2.vqh
new file mode 100644
index 00000000..ca3f9628
--- /dev/null
+++ b/lib/books/res0_128a_192_2.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_192_2_VQH_
+#define _V_res0_128a_192_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_192_2[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_192_2[] = {
+ 4, 5, 6, 5, 6, 5, 6, 7, 6, 7, 7, 8,10, 8,10, 5,
+ 6, 7, 6, 7, 7, 8,10, 8,10, 6, 7, 8, 6, 8, 7, 7,
+ 9, 7, 9, 9, 9,11, 9,11, 7, 7, 9, 7, 9, 9, 9,11,
+ 10,11, 9, 9,11, 9,11, 9,10,12,10,12,11,11,13,12,
+ 13, 9,10,11,10,11,11,11,13,12,13, 6, 6, 8, 7, 8,
+ 7, 7, 9, 7, 9, 9, 9,11, 9,11, 7, 7, 9, 7, 9, 9,
+ 9,11, 9,10, 8, 9,11, 9,11, 9,10,11,10,12,11,12,
+ 13,12,13, 9,10,11,10,11,11,12,13,11,13, 7, 7, 9,
+ 7, 9, 8, 8,10, 8,10,10,10,12,10,11, 7, 8, 9, 8,
+ 10, 9,10,11,10,12, 8, 8,10, 8,10, 8, 9,10, 9,10,
+ 10,10,12,11,13, 8, 9,10, 9,10,10,11,12,10,12,10,
+ 11,12,10,12,10,11,12,11,12,12,11,13,12,14,10,11,
+ 13,11,13,13,13,15,12,16, 8, 8,10, 8,10, 8, 9,11,
+ 9,10,10,11,12,10,12, 8, 9,10, 9,11,10,11,12,11,
+ 12,10,11,12,11,12,10,11,12,11,13,12,14,15,11,12,
+ 11,11,12,11,12,12,12,14,13,13, 9,10,12,10,12,10,
+ 11,12,11,13,12,13,14,13,15,10,11,12,11,12,12,12,
+ 14,12,14,10,11,13,11,12,11,11,13,11,13,13,13,15,
+ 13,14,11,12,13,12,12,13,13,14,13,14,12,13,15,13,
+ 13,12,13,14,12,15,14,13,14,14,15,12,13,14,14,15,
+ 14,15,18,15,18,10,11,13,11,12,11,11,13,12,13,13,
+ 14,15,13,14,11,11,13,11,13,13,13,15,14,14,12,12,
+ 14,13,14,12,12,16,12,15,14,15,15,13,15,13,13,15,
+ 14,15,14,14,16,15,17, 7, 7, 9, 7, 9, 7, 8, 9, 8,
+ 9, 9,10,11,10,11, 8, 8,10, 8,10, 9,10,11,10,12,
+ 8, 8,10, 8,10, 9, 9,11, 9,10,10,10,12,10,12, 8,
+ 9,10, 9,10,10,10,11,11,13,10,10,12,10,12,11,11,
+ 13,11,12,12,12,14,12,14,10,11,12,11,12,12,11,12,
+ 13,14, 8, 8,10, 8,10, 8, 9,10, 9,11,10,11,12,10,
+ 12, 8, 9,11, 9,10,10,11,12,11,11,10,10,12,11,12,
+ 11,11,12,11,13,12,12,14,13,14,10,11,12,10,12,12,
+ 12,14,11,12,10,10,12,10,12,11,11,12,11,13,12,12,
+ 14,12,13,11,11,12,11,12,12,13,14,13,14,10,11,13,
+ 10,11,11,11,13,11,12,13,13,15,13,14,11,11,13,11,
+ 13,13,13,14,13,14,12,12,15,13,13,13,13,16,12,14,
+ 14,15,15,15,15,12,12,14,13,14,13,13,14,15,15,10,
+ 11,12,11,13,11,12,12,11,13,12,13,15,13,16,11,11,
+ 13,11,13,12,13,14,13,14,13,13,14,13,14,14,13,14,
+ 13,14,14,14,16,15,16,12,13,14,13,13,13,14,16,14,
+ 16,
+};
+
+static float _vq_quantthresh_res0_128a_192_2[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128a_192_2[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_192_2 = {
+ _vq_quantthresh_res0_128a_192_2,
+ _vq_quantmap_res0_128a_192_2,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128a_192_2 = {
+ 4, 625,
+ _vq_lengthlist_res0_128a_192_2,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_192_2,
+ NULL,
+ &_vq_auxt_res0_128a_192_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_192_3.vqh b/lib/books/res0_128a_192_3.vqh
new file mode 100644
index 00000000..def392f2
--- /dev/null
+++ b/lib/books/res0_128a_192_3.vqh
@@ -0,0 +1,212 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_192_3_VQH_
+#define _V_res0_128a_192_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_192_3[] = {
+ 3,
+ 4,
+ 5,
+ 6,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_192_3[] = {
+ 5, 6, 7, 8, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 8, 9,
+ 10,11, 9,10,11, 9,10,11,13,10,11,13, 6, 7, 8, 9,
+ 7, 8, 9, 8, 8,10,11, 9,10,11, 9,10,11,13,10,11,
+ 13, 7, 7, 9,10, 7, 9, 9, 7, 8, 9,10, 8, 9,10, 9,
+ 9,11,11, 9,11,12,10,10,12,14,11,12,14, 7, 8, 9,
+ 10, 8, 9,10, 9, 9,10,11, 9,10,12,10,11,12,13,11,
+ 12,14, 9, 9,11,12, 9,11,12, 9,10,11,12,10,11,12,
+ 10,10,12,14,11,12,13,12,12,13,15,12,14,15, 9,10,
+ 11,12,10,11,12,10,10,12,13,11,12,14,11,12,14,14,
+ 12,15,16,11,11,12,14,11,12,14,11,11,13,15,11,12,
+ 17,12,12,13,16,12,13, 0,14,14,15,16,15,16,17,11,
+ 11,13,15,11,13,15,12,12,13,16,13,14,16,14,14,16,
+ 17,14,15,16, 7, 7, 9, 9, 7, 9, 9, 8, 8, 9,10, 8,
+ 9,10, 9, 9,11,12, 9,10,11,10,11,12,13,11,12,13,
+ 8, 8, 9,10, 8, 9,10, 9, 9,11,12, 9,10,12,10,11,
+ 12,14,11,12,12, 9, 9,10,11,10,11,11, 9,10,11,12,
+ 10,11,12,10,11,12,13,11,12,14,12,12,14,15,12,13,
+ 14, 9,10,11,12,10,11,13,10,11,12,13,11,12,13,12,
+ 12,13,15,12,13,15,10,11,12,14,11,12,14,11,11,12,
+ 14,11,12,14,12,12,13,17,13,14,16,14,14,15,16,14,
+ 15, 0,11,11,13,14,11,13,15,12,13,14,16,12,14,14,
+ 15,14,15,15,15,17,15, 7, 8, 9,10, 8, 9,10, 8, 9,
+ 10,11, 8,10,11, 9,10,11,12,10,11,12,10,12,13,14,
+ 11,12,14, 8, 8,10,11, 8, 9,11, 9, 9,11,12,10,11,
+ 12,10,11,12,14,11,12,13, 8, 9,10,11, 9,10,11, 8,
+ 9,10,11, 9,10,11,10,10,11,12,10,11,13,11,12,13,
+ 14,12,13,15, 9, 9,10,11, 9,10,11,10,10,11,12,10,
+ 11,12,11,11,12,14,12,13,14,10,10,11,12,10,11,12,
+ 10,10,11,13,10,12,13,11,11,12,13,11,12,15,13,13,
+ 13,15,13,15,16,10,10,12,13,10,11,13,11,11,12,14,
+ 12,13,14,12,12,14,16,13,15,17,11,12,12,15,12,12,
+ 14,12,12,13,15,12,13,15,12,13,14,14,13,14,16,14,
+ 14,15, 0,15,16,17,12,12,13,15,11,14,16,12,14,14,
+ 16,13,14,15,15,14, 0,16,16,16,17, 8, 9,10,10, 9,
+ 10,11, 8, 9,10,11, 9,10,11,10,10,11,12,10,11,12,
+ 11,12,12,15,11,12,15, 9, 9,10,11, 9,10,11,10,10,
+ 11,12,10,11,13,11,11,12,14,12,12,14,10,10,11,12,
+ 10,11,13,10,10,11,12,10,11,12,11,11,12,15,11,12,
+ 13,13,13,15,16,12,14,15,10,10,11,13,10,11,13,11,
+ 11,13,14,11,13,14,13,13,15, 0,13,15,16,11,11,13,
+ 15,12,13,15,11,12,13,15,12,14,15,12,14,14,15,12,
+ 13,16,14,14,16,17,14,15,16,12,12,13,15,12,13,17,
+ 13,13,14,17,13,14,15,14,16,16, 0,15,16, 0,10,10,
+ 11,12,10,11,12,10,10,11,12,10,12,12,11,11,13,14,
+ 11,13,13,13,13,15,15,13,14,15,10,10,11,12,10,11,
+ 13,11,11,12,14,12,12,13,12,13,14,15,13,14,15,10,
+ 10,11,13,10,11,13,10,11,12,14,11,12,13,11,12,13,
+ 14,12,13,16,13,13,14,16,14,15,16,10,11,12,13,11,
+ 12,13,11,12,13,13,11,12,14,12,13,14,16,14,14,15,
+ 11,12,13,14,11,13,13,12,11,13,14,11,13,15,12,12,
+ 14,14,13,14,16,15,14,15, 0,14,15,16,12,12,13,15,
+ 12,12,14,12,13,14,17,13,14,16,14,14,15,17,15,16,
+ 15,12,13,15,14,13,13,16,13,13,15,15,13,16,15,14,
+ 14,14,16,14,15,17,16,15,15,17,16,16, 0,13,13,14,
+ 15,13,15,16,14,14,16,17,15,14,17,16,15,16,17,17,
+ 17, 0,10,11,12,13,11,12,13,10,11,12,13,11,12,13,
+ 11,12,13,14,12,12,14,13,13,14,17,14,14,15,10,11,
+ 12,13,11,11,13,12,11,13,15,12,13,15,13,13,14,16,
+ 14,14,16,11,11,13,14,12,12,15,11,12,13,14,12,13,
+ 14,12,13,14,16,13,13,15,14,15,15, 0,14,15, 0,12,
+ 12,12,14,12,13,15,12,14,13,14,13,14,15,15,16,16,
+ 17,14,15, 0,12,13,14,15,13,14, 0,13,14,15,16,13,
+ 14, 0,14,14,16,17,13,15,16,17,16, 0,17,15,15,17,
+ 13,13,15,16,13,15,16,15,15, 0,15,14,16, 0,16,17,
+ 0, 0,16, 0, 0,11,12,13,14,12,12,14,12,12,13,15,
+ 12,13,14,13,13,15,16,13,14,16,15,15, 0, 0,14,15,
+ 0,12,12,13,15,12,14,14,12,12,14,16,13,14,15,14,
+ 14,17,17,14,16,17,12,12,14,16,12,13,15,12,13,14,
+ 15,12,14,15,13,13,15,15,14,15,16,15,16,17,17,16,
+ 16, 0,12,12,13,15,13,13,16,13,14,15,16,13,14,15,
+ 14,16, 0,16,16,16,17,13,13,14,15,14,15,15,13,13,
+ 15,17,13,15,15,15,15,15,17,16,17,17,16,17,16, 0,
+ 17, 0, 0,13,14,15, 0,14,15,17,14,15,15,16,15,16,
+ 0,15,17,16,17,16, 0, 0,16,15, 0,17,15,15,17,15,
+ 14,16,16,16,16,17,17,16,15, 0,15,16, 0, 0, 0,17,
+ 0, 0, 0, 0,15,15,15,17,15,16, 0,15,16, 0, 0, 0,
+ 16, 0,17, 0, 0, 0, 0, 0, 0,12,13,14,14,12,13,14,
+ 12,12,13, 0,12,13,15,14,14,14,15,14,16,16,15,16,
+ 17, 0,15,16,16,12,13,13,15,13,13,15,14,13,14,17,
+ 14,15,17,14,14,15,17,16,16,17,13,13,14,15,14,14,
+ 16,13,13,15,15,13,14,16,14,15,16,17,15,15,16,15,
+ 16, 0, 0,16,16,17,13,13,15,16,13,15,16,15,14,16,
+ 0,15,16,17,16,16,17,17,16, 0, 0,14,15,16,16,15,
+ 15, 0,16,15,16,17,16,15, 0,16,17,16, 0,17, 0, 0,
+ 0,16,17, 0,16,17,17,15,15,16,17,16,16, 0,16,17,
+ 17, 0,17,17, 0,17,16, 0, 0,17, 0, 0, 7, 8, 9,10,
+ 8, 9,10, 8, 8,10,10, 8, 9,11, 9,10,11,12,10,11,
+ 12,11,11,12,14,11,12,13, 8, 8,10,11, 9,10,11,10,
+ 10,11,12,10,11,12,11,11,12,15,11,12,14, 8, 9,10,
+ 11, 9,10,11, 9, 9,10,11, 9,10,11,10,10,11,13,10,
+ 11,13,11,11,13,15,12,13,14, 9, 9,10,11, 9,10,11,
+ 10,10,11,12,10,11,12,11,11,13,15,12,13,14,10,10,
+ 11,12,10,11,12,10,11,12,13,10,11,13,11,12,13,15,
+ 12,13,14,13,13,14,16,13,15,16,10,10,12,12,10,11,
+ 13,11,11,12,14,11,12,14,13,12,13,15,13,14,16,11,
+ 12,13,15,11,13,14,12,12,13,15,12,13,15,12,13,14,
+ 16,13,15,17,14,15,16, 0,15,15,17,12,12,13,15,11,
+ 13,15,13,13,15,15,13,14,15,14,14,15,17,16,17,17,
+ 8, 8,10,11, 9,10,11, 9, 9,10,11, 9,10,11,10,10,
+ 11,12,10,12,12,11,12,13,14,12,13,14, 8, 9,10,11,
+ 9,10,11,10,11,11,13,10,11,13,11,12,13,14,11,13,
+ 15,10,10,11,12,10,11,13,10,10,11,13,11,12,13,11,
+ 11,12,15,11,12,14,13,13,14,15,13,13,16,10,10,11,
+ 12,10,11,13,11,12,13,14,11,12,14,12,14,14,15,13,
+ 13,15,12,12,13,14,12,12,15,11,12,13,14,12,14,15,
+ 12,13,14,17,13,15,16,14,15,16,17,15,15, 0,11,12,
+ 13,14,12,13,14,13,13,14,17,12,14,15,14,15,16, 0,
+ 14,15, 0, 9,10,11,12,10,11,12,10,10,11,12,10,11,
+ 13,11,11,12,15,11,12,13,13,12,14,16,13,14,16,10,
+ 10,11,13,10,11,13,11,11,13,14,12,13,14,12,13,14,
+ 14,12,15,15,10,10,12,13,10,11,13,10,11,11,13,11,
+ 12,14,12,12,13,13,12,12,14,13,13,14,15,13,14,15,
+ 10,11,12,13,11,12,13,12,12,13,14,13,13,14,13,13,
+ 14,17,14,15,17,11,11,13,14,12,12,13,11,12,13,15,
+ 12,13,13,13,13,14,15,13,14,15,14,14,15, 0,14,15,
+ 17,12,12,13,15,12,13,14,13,13,13,15,13,14,15,14,
+ 14,15,17,15,16,17,13,13,14,15,13,14,15,13,14,15,
+ 17,13,14,15,15,15,15, 0,15,15, 0,16,17, 0, 0,16,
+ 0,17,13,13,15,15,14,14,16,14,14,14,16,15,16,17,
+ 15,15,15,17,16,16, 0,10,10,12,13,11,12,13,10,11,
+ 12,13,11,12,14,11,11,12,14,12,13,14,13,13,14,16,
+ 13,15,15,10,11,11,13,10,12,13,12,12,13,15,12,13,
+ 14,13,13,15,16,13,15,16,11,12,12,14,12,12,14,12,
+ 12,13,14,12,13,14,13,14,14,15,13,14,16,14,15,15,
+ 17,15,16,17,11,12,13,15,11,13,14,13,13,15,16,12,
+ 14,14,13,14,16,17,15,15,16,14,15,15,16,13,15,16,
+ 14,14,15,17,14,15,17,14,14,15,15,14,16,15,15,17,
+ 0,16,16,16, 0,13,14,15,16,13,14,15,14,15,16,17,
+ 13,14, 0,15,17,17, 0,17,15, 0,11,12,13,14,12,13,
+ 14,12,12,13,16,12,13,14,13,13,13,15,13,14,17, 0,
+ 14,15,17,14,15,17,12,12,12,14,12,15,16,13,13,14,
+ 0,13,14,16,15,16,16,17,16,16,16,12,13,13,15,12,
+ 13,15,12,12,13,15,12,13,15,13,14,14,17,13,14,17,
+ 16,15,15,16,16, 0, 0,12,13,14,16,12,13,15,13,14,
+ 15,15,13,16,17,15,15,15,17,15,17, 0,13,13,15,17,
+ 14,15,15,13,13,14, 0,14,14,16,14,14,17, 0,15,15,
+ 16,15,16, 0, 0,16, 0,17,13,13,14,17,14,15,15,14,
+ 15,14,16,14,17,17,16,15,16,16,17, 0, 0,14,15,15,
+ 0,15,16, 0,14,16,16,17,15,16, 0,16,15,17, 0,16,
+ 17, 0,17,17, 0, 0, 0,17, 0,15,14,16,17,15,16,16,
+ 17,15, 0, 0, 0, 0,17,16,16, 0, 0, 0, 0, 0,12,12,
+ 13,14,12,13,14,12,12,13,14,13,14,16,14,13,14,16,
+ 13,15,17,15,14,17, 0,15,15,16,12,13,14,15,13,13,
+ 15,14,14,15,15,13,14,17,16,15,17,17,15,16, 0,13,
+ 13,15,15,14,15,15,14,14,14,15,15,15,16,15,14,16,
+ 16,16,16,17, 0,17,16, 0,16, 0, 0,14,14,14,17,13,
+ 15,15,15,15,17,17,15,16,16,15,15, 0, 0,15, 0, 0,
+ 14,15,16, 0,15, 0, 0,16,17,16, 0,15,16,17,16, 0,
+ 0,17,17, 0, 0, 0,16, 0,17,17, 0, 0,14,16,15, 0,
+ 15, 0,17,15,16,16,17,15, 0, 0, 0,17, 0, 0, 0,15,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_192_3[] = {
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+};
+
+static long _vq_quantmap_res0_128a_192_3[] = {
+ 6, 5, 4, 0, 1, 2, 3,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_192_3 = {
+ _vq_quantthresh_res0_128a_192_3,
+ _vq_quantmap_res0_128a_192_3,
+ 7,
+ 7
+};
+
+static static_codebook _vq_book_res0_128a_192_3 = {
+ 4, 2401,
+ _vq_lengthlist_res0_128a_192_3,
+ 1, -533200896, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_192_3,
+ NULL,
+ &_vq_auxt_res0_128a_192_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_192_4.vqh b/lib/books/res0_128a_192_4.vqh
new file mode 100644
index 00000000..f0b1e548
--- /dev/null
+++ b/lib/books/res0_128a_192_4.vqh
@@ -0,0 +1,70 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_192_4_VQH_
+#define _V_res0_128a_192_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_192_4[] = {
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 3,
+ 2,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_192_4[] = {
+ 3, 4, 5, 6, 6, 4, 5, 6, 7, 4, 5, 6, 7, 7, 5, 6,
+ 7, 7, 6, 6, 7, 8, 9, 6, 7, 8, 9, 7, 7, 8,10,10,
+ 7, 8,10,10, 7, 8, 9,11,12, 8, 9,10,12, 4, 5, 6,
+ 7, 7, 5, 6, 7, 7, 6, 6, 7, 8, 9, 6, 7, 8, 9, 7,
+ 7, 8,10,10, 7, 8,10,10, 8, 8, 9,11,12, 8, 9,10,
+ 12,
+};
+
+static float _vq_quantthresh_res0_128a_192_4[] = {
+ -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5,
+};
+
+static long _vq_quantmap_res0_128a_192_4[] = {
+ 8, 7, 6, 5, 0, 1, 2, 3,
+ 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_192_4 = {
+ _vq_quantthresh_res0_128a_192_4,
+ _vq_quantmap_res0_128a_192_4,
+ 9,
+ 9
+};
+
+static static_codebook _vq_book_res0_128a_192_4 = {
+ 2, 81,
+ _vq_lengthlist_res0_128a_192_4,
+ 1, -531628032, 1611661312, 4, 0,
+ _vq_quantlist_res0_128a_192_4,
+ NULL,
+ &_vq_auxt_res0_128a_192_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_192_5.vqh b/lib/books/res0_128a_192_5.vqh
new file mode 100644
index 00000000..058c9fde
--- /dev/null
+++ b/lib/books/res0_128a_192_5.vqh
@@ -0,0 +1,115 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_192_5_VQH_
+#define _V_res0_128a_192_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_192_5[] = {
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 51,
+ 53,
+ 56,
+ 61,
+ 68,
+ 77,
+ 90,
+ 44,
+ 43,
+ 42,
+ 41,
+ 39,
+ 37,
+ 34,
+ 29,
+ 22,
+ 13,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_192_5[] = {
+ 5, 5, 6, 6, 6, 7, 7, 8,10,13,17, 0, 5, 6, 6, 6,
+ 7, 7, 8,10,13,16,20, 5, 6, 6, 7, 7, 7, 7, 8,10,
+ 14,17, 0, 6, 6, 7, 7, 7, 7, 8,10,13,17, 0, 6, 7,
+ 7, 7, 7, 7, 8, 8,10,14,20,20, 7, 7, 7, 7, 7, 8,
+ 8,10,14,19, 0, 7, 8, 8, 8, 8, 8, 9, 9,11,15,20,
+ 0, 8, 8, 8, 8, 8, 8, 9,11,15, 0, 0, 8, 8, 9, 9,
+ 9, 9, 9,10,12,15,18, 0, 9, 9, 9, 9, 9, 9,10,12,
+ 15,18, 0, 9,10,10,11,10,10,11,11,13,16, 0, 0, 9,
+ 10,11,10,10,11,11,13,15,18, 0,11,11,12,13,12,12,
+ 12,13,14,18,18, 0,11,12,12,12,12,13,13,14,18,19,
+ 0,13,13,14,14,14,14,14,15,16,19, 0, 0,13,14,14,
+ 14,14,14,14,16,19, 0, 0,14,15,15,16,17,19,18,17,
+ 19, 0, 0, 0,15,16,16,16,16,18,17,18,19, 0, 0,15,
+ 16,19,18, 0, 0, 0, 0, 0, 0, 0, 0,16,17,18,19,18,
+ 19,19, 0, 0, 0, 0,18,17, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 6, 7, 7, 7, 7, 8,10,13,17, 0,
+ 6, 6, 7, 7, 7, 7, 8,10,13,19, 0, 6, 7, 7, 7, 7,
+ 7, 8, 8,10,14, 0, 0, 7, 7, 7, 7, 7, 8, 8,10,14,
+ 19, 0, 7, 8, 8, 8, 8, 8, 9, 9,11,15,19, 0, 8, 8,
+ 8, 8, 8, 9, 9,11,15,18, 0, 8, 8, 9, 9, 9, 9, 9,
+ 10,12,16,19, 0, 9, 9, 9, 9, 9, 9,10,12,14,19, 0,
+ 9,10,10,11,10,10,11,11,13,16,18, 0, 9,10,11,10,
+ 10,11,11,13,15,19, 0,11,11,12,13,12,12,13,13,14,
+ 18, 0, 0,11,12,13,12,12,12,13,15,17, 0, 0,13,13,
+ 14,14,13,14,14,14,16,19, 0, 0,13,14,15,14,14,15,
+ 14,16,18, 0, 0,15,15,16,18,16,17,17,17,19, 0, 0,
+ 0,15,16,16,16,16,18,19,18, 0, 0, 0,16,17,18, 0,
+ 0,18, 0,19, 0, 0, 0, 0,16,18,19,19, 0,19,19, 0,
+ 0, 0, 0,16,17,19,19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,19,19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_192_5[] = {
+ -38.5, -27.5, -19.5, -13.5, -9.5, -7, -5, -3.5,
+ -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 5,
+ 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+};
+
+static long _vq_quantmap_res0_128a_192_5[] = {
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ 14, 13, 12, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_192_5 = {
+ _vq_quantthresh_res0_128a_192_5,
+ _vq_quantmap_res0_128a_192_5,
+ 23,
+ 23
+};
+
+static static_codebook _vq_book_res0_128a_192_5 = {
+ 2, 529,
+ _vq_lengthlist_res0_128a_192_5,
+ 1, -524910592, 1611661312, 7, 0,
+ _vq_quantlist_res0_128a_192_5,
+ NULL,
+ &_vq_auxt_res0_128a_192_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_256_1.vqh b/lib/books/res0_128a_256_1.vqh
new file mode 100644
index 00000000..c3093e90
--- /dev/null
+++ b/lib/books/res0_128a_256_1.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_256_1_VQH_
+#define _V_res0_128a_256_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_256_1[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_256_1[] = {
+ 2, 3, 6, 3, 6, 5, 6, 8, 6, 8, 9, 9,11, 9,11, 5,
+ 6, 8, 6, 8, 9, 9,10, 9,10, 6, 7, 9, 7, 8, 7, 8,
+ 9, 8,10,10,11,11,10,12, 7, 8, 9, 8,10,10,10,12,
+ 11,13,10,11,12,10,12,11,11,12,11,12,12,13,14,13,
+ 16,11,12,13,11,13,12,12,14,12,14, 6, 7, 8, 7, 9,
+ 7, 8,10, 8, 9,10,11,12,10,12, 7, 8,10, 8,10,10,
+ 10,12,10,11,10,11,12,11,12,10,11,13,12,12,13,13,
+ 13,13, 0,11,12,12,11,12,12,13,13,14,14, 7, 8,11,
+ 8,10, 9, 9,11, 9,11,12,12,13,12,13, 8, 9,11, 9,
+ 10,12,11,13,12,12, 9,10,12,10,11,10, 9,11,11,12,
+ 12,12,12,14,14,10,11,12,10,11,13,12,13,13,13,12,
+ 12,13,13,14,13,13,14,12,14, 0,14,13,16,16,13,13,
+ 15,13,14,14,16,15,13,14, 9,10,11,10,12,10,11,12,
+ 10,11,12,13,13,12,13,10,10,11,11,12,13,15,13,12,
+ 15,12,12,13,12,13,12,13,14,13,14,14,14, 0,14,14,
+ 13,13,14,13,14,14,14,16,16,15,11,13,15,14,13,13,
+ 13,16,12,16,14,16,16,14,16,13,15,16,13,14,16,16,
+ 15,15, 0,13,13,15,13,16,13,14,15,16,14, 0,15, 0,
+ 0, 0,15,14,15,15,15,14,16, 0,15,16,15,16,16,16,
+ 16,16,15,16, 0,16,16,16,14,15, 0,16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,13,13,15,13,15,14,14,16,14, 0, 0,
+ 16, 0, 0,16,14,13,15,14,15,14,16, 0, 0, 0,14,14,
+ 0, 0,15,16,16,15,16, 0, 0,15, 0,15,16, 0, 0,16,
+ 16, 0, 0, 0, 0, 0,16, 7, 8,10, 8,10, 9,10,11, 9,
+ 11,11,12,12,12,12, 9,10,11,10,11,11,12,14,12,12,
+ 9,10,11, 9,11,10,11,12,11,12,13,12,13,12,13,10,
+ 10,12,11,13,13,12,13,14,14,12,12,14,12,14,12,13,
+ 14,12,14,14,16,15,15,16,12,13,16,12,16,13,13,14,
+ 14,16, 9,10,11,10,11,10,11,12,10,12,12,13,14,13,
+ 13,10,11,12, 9,10,12,13,14,12,12,14,12,13,12,16,
+ 12,13,14,13,14,13,16,14,15, 0,13,14,14,13,15,14,
+ 14,16,13,14,11,12,16,13,14,13,14,13,13,14,15,14,
+ 16,15,15,13,13,14,13,14,15, 0, 0,15, 0,13,14,15,
+ 16,15,13,15,16,13,15,16,14, 0,16,15,14,14,16,15,
+ 0,16,16, 0,16, 0,16,14, 0,15, 0,16, 0, 0,15,15,
+ 0, 0,15,16, 0,16, 0, 0,15, 0,16,16, 0, 0, 0,12,
+ 14,16,13, 0,13,14,13,16, 0, 0,16, 0,14, 0,16,14,
+ 0,16,16,16, 0, 0,16, 0,16,16, 0,16, 0,16,15, 0,
+ 0, 0,15, 0, 0, 0, 0,16,15, 0,15, 0, 0, 0, 0,14,
+ 14,
+};
+
+static float _vq_quantthresh_res0_128a_256_1[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128a_256_1[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_256_1 = {
+ _vq_quantthresh_res0_128a_256_1,
+ _vq_quantmap_res0_128a_256_1,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128a_256_1 = {
+ 4, 625,
+ _vq_lengthlist_res0_128a_256_1,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_256_1,
+ NULL,
+ &_vq_auxt_res0_128a_256_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_256_2.vqh b/lib/books/res0_128a_256_2.vqh
new file mode 100644
index 00000000..c0003e00
--- /dev/null
+++ b/lib/books/res0_128a_256_2.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_256_2_VQH_
+#define _V_res0_128a_256_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_256_2[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_256_2[] = {
+ 3, 4, 5, 6, 6, 7, 4, 5, 6, 6, 7, 5, 5, 6, 6, 7,
+ 8, 5, 6, 6, 7, 8, 6, 7, 7, 8, 8, 9, 7, 7, 8, 8,
+ 9, 8, 8, 8, 9, 9,10, 8, 8, 9, 9,10, 9, 9, 9,10,
+ 10,10, 9, 9,10,10,10,10,11,11,11,11,12,11,11,11,
+ 11,12, 5, 5, 6, 6, 7, 8, 5, 6, 6, 7, 8, 6, 6, 7,
+ 8, 8, 9, 6, 7, 8, 8, 9, 8, 8, 8, 9, 9,10, 8, 8,
+ 9, 9,10, 9, 9, 9,10,10,10, 9, 9,10,10,10,10,10,
+ 11,11,11,12,10,11,11,11,12,
+};
+
+static float _vq_quantthresh_res0_128a_256_2[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_128a_256_2[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_256_2 = {
+ _vq_quantthresh_res0_128a_256_2,
+ _vq_quantmap_res0_128a_256_2,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_128a_256_2 = {
+ 2, 121,
+ _vq_lengthlist_res0_128a_256_2,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_128a_256_2,
+ NULL,
+ &_vq_auxt_res0_128a_256_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_256_3.vqh b/lib/books/res0_128a_256_3.vqh
new file mode 100644
index 00000000..69ddeda3
--- /dev/null
+++ b/lib/books/res0_128a_256_3.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_256_3_VQH_
+#define _V_res0_128a_256_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_256_3[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_256_3[] = {
+ 6, 6, 6, 7, 7, 7, 7, 8, 6, 6, 7, 7, 7, 7, 8, 6,
+ 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7,
+ 7, 8, 7, 7, 8, 9, 7, 7, 8, 7, 7, 8, 9, 8, 8, 8,
+ 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8,
+ 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8,
+ 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8,
+ 9, 9, 9, 9, 9, 8, 8, 9, 9, 9,10,10,10, 9, 9, 9,
+ 10,10,10,10, 9, 9,10,10, 6, 7, 7, 7, 7, 7, 7, 8,
+ 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 8, 7, 7, 8, 9, 7,
+ 7, 8, 7, 7, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8,
+ 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8,
+ 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8,
+ 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 8,
+ 9, 9, 9, 9,10,10, 9, 9,10,10,10,10,10, 9, 9,10,
+ 10,
+};
+
+static float _vq_quantthresh_res0_128a_256_3[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_128a_256_3[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_256_3 = {
+ _vq_quantthresh_res0_128a_256_3,
+ _vq_quantmap_res0_128a_256_3,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_128a_256_3 = {
+ 2, 225,
+ _vq_lengthlist_res0_128a_256_3,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_128a_256_3,
+ NULL,
+ &_vq_auxt_res0_128a_256_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_256_4.vqh b/lib/books/res0_128a_256_4.vqh
new file mode 100644
index 00000000..f68f49a1
--- /dev/null
+++ b/lib/books/res0_128a_256_4.vqh
@@ -0,0 +1,100 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_256_4_VQH_
+#define _V_res0_128a_256_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_256_4[] = {
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 29,
+ 31,
+ 34,
+ 39,
+ 46,
+ 22,
+ 21,
+ 20,
+ 19,
+ 17,
+ 15,
+ 12,
+ 7,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_256_4[] = {
+ 7, 7, 8, 8, 8, 7, 8, 8, 8,11, 7, 8, 8, 7, 7, 8,
+ 8, 8,11, 8, 8, 8, 8, 8, 8, 8, 8, 8,11, 8, 8, 8,
+ 8, 8, 8, 8, 8,11, 8, 8, 8, 8, 8, 8, 8, 8, 9,12,
+ 8, 8, 8, 8, 8, 8, 8, 9,11, 8, 8, 8, 9, 8, 8, 8,
+ 8, 9,11, 8, 8, 9, 8, 8, 8, 8, 9,12, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8,11, 8, 8, 8, 8, 8, 8, 8, 9,11, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,11, 8, 8, 8, 8, 8, 8, 8,
+ 8,11, 8, 8, 8, 9, 8, 8, 8, 8, 9,12, 8, 8, 9, 8,
+ 8, 8, 8, 9,11, 9, 9, 9, 9, 9, 8, 8, 8, 9,12, 9,
+ 9, 9, 9, 8, 8, 8, 9,12,10,10,10,10,10, 9,10,10,
+ 11,13,10,10,10,10, 9, 9,10,11,13,13,12,13,13,12,
+ 12,12,12,13,16,12,13,13,12,12,13,12,13,15, 8, 8,
+ 8, 8, 8, 8, 8, 8, 9,11, 8, 8, 8, 8, 8, 8, 8, 8,
+ 11, 8, 8, 8, 8, 8, 8, 8, 8, 9,12, 8, 8, 8, 8, 8,
+ 8, 8, 9,11, 8, 8, 8, 8, 8, 8, 8, 8, 9,12, 8, 8,
+ 8, 8, 8, 8, 8, 9,11, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+ 11, 8, 8, 8, 8, 8, 8, 8, 8,11, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8,11, 8, 8, 8, 8, 7, 8, 8, 8,11, 8, 8, 8,
+ 9, 8, 8, 8, 8, 9,11, 8, 8, 8, 8, 8, 8, 8, 9,11,
+ 9, 9, 9, 9, 9, 8, 8, 8, 9,12, 9, 9, 9, 8, 8, 8,
+ 8, 9,12,10,10,10,10,10, 9,10,10,11,13,10,10,10,
+ 10, 9, 9,10,11,13,12,12,12,13,13,12,12,12,13,14,
+ 12,13,13,12,12,12,13,13,16,
+};
+
+static float _vq_quantthresh_res0_128a_256_4[] = {
+ -19.5, -13.5, -9.5, -7, -5, -3.5, -2.5, -1.5,
+ -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9.5,
+ 13.5, 19.5,
+};
+
+static long _vq_quantmap_res0_128a_256_4[] = {
+ 18, 17, 16, 15, 14, 13, 12, 11,
+ 10, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_256_4 = {
+ _vq_quantthresh_res0_128a_256_4,
+ _vq_quantmap_res0_128a_256_4,
+ 19,
+ 19
+};
+
+static static_codebook _vq_book_res0_128a_256_4 = {
+ 2, 361,
+ _vq_lengthlist_res0_128a_256_4,
+ 1, -526974976, 1611661312, 6, 0,
+ _vq_quantlist_res0_128a_256_4,
+ NULL,
+ &_vq_auxt_res0_128a_256_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_256_5.vqh b/lib/books/res0_128a_256_5.vqh
new file mode 100644
index 00000000..354835a1
--- /dev/null
+++ b/lib/books/res0_128a_256_5.vqh
@@ -0,0 +1,133 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_256_5_VQH_
+#define _V_res0_128a_256_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_256_5[] = {
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 94,
+ 96,
+ 99,
+ 104,
+ 111,
+ 120,
+ 133,
+ 151,
+ 176,
+ 87,
+ 86,
+ 85,
+ 84,
+ 82,
+ 80,
+ 77,
+ 72,
+ 65,
+ 56,
+ 43,
+ 25,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_256_5[] = {
+ 6, 7, 7, 7, 7, 7, 7, 7, 8,11, 9,11,13, 0, 6, 7,
+ 8, 7, 7, 7, 7, 8,11, 9,12,15,13, 7, 7, 7, 8, 8,
+ 8, 8, 8, 9,11, 9,13,15, 0, 7, 7, 8, 8, 8, 8, 8,
+ 9,11, 9,13,13, 0, 7, 8, 8, 9, 8, 8, 9, 8, 9,11,
+ 10,12,14, 0, 8, 8, 9, 8, 8, 8, 8, 9,11,10,12, 0,
+ 0, 8, 9, 9, 9, 9, 9, 9, 9, 9,11,11,12, 0, 0, 9,
+ 8, 9, 9, 8, 9, 9,10,12,10,13, 0, 0, 8, 8, 8, 8,
+ 8, 8, 8, 8, 9,12,10, 0, 0, 0, 8, 8, 9, 8, 8, 8,
+ 8,10,11,10, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 9,
+ 12,11,14,14, 0, 8, 8, 9, 9, 8, 8, 9, 9,11,10,13,
+ 0, 0, 9, 8, 9, 9, 9, 9, 9, 8,10,14,12,14, 0, 0,
+ 8, 9, 9, 8, 8, 9, 9,10,13,10,13, 0, 0, 9, 9, 9,
+ 10, 9, 9, 9, 9,10,13,11,13, 0, 0, 9, 9,10, 9, 9,
+ 9, 9,10,13,11,14, 0, 0, 9,10,10,10,10,10,10,10,
+ 11, 0,11,14, 0, 0,10,10,10,10,10,10,10,11,13,11,
+ 0, 0, 0,10,11,11,13,11,11,12,13,12, 0,14, 0, 0,
+ 0,11,11,13,12,12,12,11, 0,14,14, 0, 0, 0,10,10,
+ 11,10,10,10,10,10,13,13, 0, 0, 0, 0,10,10,11,10,
+ 10,11,11,11,13, 0, 0, 0, 0,11,12,13,14, 0, 0,14,
+ 14, 0, 0, 0, 0, 0, 0,13,11,13,13, 0, 0,14,14,14,
+ 0, 0, 0, 0,12,14,14,14, 0,14, 0,14, 0, 0, 0, 0,
+ 0, 0,13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,14, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 8, 8, 8,
+ 8, 8, 9,10,10,14, 0, 0, 7, 8, 8, 8, 8, 8, 8, 9,
+ 11,10,12, 0, 0, 8, 7, 8, 8, 8, 8, 8, 8, 9,11,10,
+ 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 9,11,11,14,14, 0,
+ 8, 8, 8, 9, 8, 8, 8, 9,10,11,10,14, 0, 0, 8, 8,
+ 9, 9, 8, 9, 9, 9,11,11, 0, 0, 0, 8, 8, 8, 9, 8,
+ 8, 8, 8, 9,13,10, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8,
+ 10,11,10,14,13, 0, 8, 8, 9, 8, 8, 8, 9, 9, 9,12,
+ 11, 0, 0, 0, 9, 8, 9, 8, 8, 8, 9, 9,13,11,14, 0,
+ 0, 8, 8, 9, 9, 9, 8, 9, 8,10,12,11,14, 0, 0, 8,
+ 9, 9, 9, 9,10, 9,10,12,10,14, 0, 0, 8, 9, 9, 9,
+ 9, 9, 9, 9,10,13,11, 0, 0, 0, 9, 9, 9, 9, 9, 9,
+ 9,10,12,10, 0, 0, 0, 9,10,10,11,10,10,10,10,12,
+ 13,12, 0, 0, 0, 9, 9,10,12,10,10,10,12,14,12, 0,
+ 0, 0,10,11,11,12,11,12,12,13,13,13,13, 0, 0, 0,
+ 11,13,11,11,12,12,12,13,14,13,13, 0, 0,10,10,11,
+ 10,11,10,11,10,12,13, 0, 0, 0, 0,10,10,10,11,12,
+ 10,11,11,13, 0, 0, 0, 0,10,13,13,13,14, 0,14,12,
+ 0, 0, 0, 0, 0, 0,10,12,13, 0,13,13,12,14,14, 0,
+ 0, 0, 0,12,12,14, 0,14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,12,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,
+ 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh_res0_128a_256_5[] = {
+ -75.5, -54, -38.5, -27.5, -19.5, -13.5, -9.5, -7,
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5, 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+ 54, 75.5,
+};
+
+static long _vq_quantmap_res0_128a_256_5[] = {
+ 26, 25, 24, 23, 22, 21, 20, 19,
+ 18, 17, 16, 15, 14, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_256_5 = {
+ _vq_quantthresh_res0_128a_256_5,
+ _vq_quantmap_res0_128a_256_5,
+ 27,
+ 27
+};
+
+static static_codebook _vq_book_res0_128a_256_5 = {
+ 2, 729,
+ _vq_lengthlist_res0_128a_256_5,
+ 1, -522846208, 1611661312, 8, 0,
+ _vq_quantlist_res0_128a_256_5,
+ NULL,
+ &_vq_auxt_res0_128a_256_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_350_1.vqh b/lib/books/res0_128a_350_1.vqh
new file mode 100644
index 00000000..b3332ef3
--- /dev/null
+++ b/lib/books/res0_128a_350_1.vqh
@@ -0,0 +1,99 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_350_1_VQH_
+#define _V_res0_128a_350_1_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_350_1[] = {
+ 2,
+ 3,
+ 4,
+ 1,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_350_1[] = {
+ 2, 5,10, 5,10, 5, 7, 0, 7, 9,10, 8, 0,10, 0, 5,
+ 7, 8, 7,10, 8,10, 0,10, 0, 5, 8, 0, 9,10, 7, 0,
+ 10, 8, 9,10, 0, 0,10, 0, 6, 7, 0,10,10, 8, 8, 0,
+ 10, 0,10,10, 0, 9,10,10,10, 0, 0, 0,10, 0, 0, 0,
+ 0, 0, 0, 0,10,10,10, 0, 0, 0, 0, 6, 7, 9, 8, 9,
+ 6,10,10, 7,10, 9,10, 0,10, 0, 9, 8,10,10,10, 8,
+ 0, 0,10, 0, 9,10,10, 0,10, 9, 0,10,10, 0,10, 0,
+ 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9,
+ 8, 0, 7, 8, 0, 0, 0, 9,10,10, 0, 0, 8,10, 0, 9,
+ 0,10, 0, 0, 0, 0, 8,10, 0, 9, 0, 0, 0, 0,10, 0,
+ 0, 0, 0, 0, 0, 8,10, 0, 7, 0,10, 0, 0, 9, 0, 0,
+ 0, 0,10, 0, 0,10, 0, 9, 0, 0, 9, 0,10, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 8, 0, 7, 0, 0,
+ 8, 0,10,10, 0, 0, 0, 9,10, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0,10,10, 0, 0, 9, 8, 0, 0, 0,10, 0, 0, 0, 0,
+ 10, 0,10, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0,10, 0, 9,10, 0, 0,10, 8, 9,
+ 0, 0, 0, 9, 0, 0, 0, 0,10, 0, 0, 0, 0,10,10, 0,
+ 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0,10, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
+ 10, 0, 0,10, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5,10, 0, 8, 0, 8,10,10, 8,
+ 0, 0, 0, 0, 0, 0, 9, 9, 0,10, 0, 0, 0, 9, 9, 0,
+ 6, 8, 0, 9, 0, 7, 0, 0, 7, 9, 9, 0, 9, 8, 0, 7,
+ 7, 0, 9, 9, 0, 0, 0, 9, 0, 9, 0, 0, 8, 9, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 9, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 8, 8, 0, 0, 0, 8, 0, 0, 0,
+ 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 9, 9, 8,
+ 0, 0, 0, 0, 8, 9, 9, 0, 0, 9, 0, 0, 0, 0, 8, 0,
+ 0, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128a_350_1[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128a_350_1[] = {
+ 4, 3, 0, 1, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_350_1 = {
+ _vq_quantthresh_res0_128a_350_1,
+ _vq_quantmap_res0_128a_350_1,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128a_350_1 = {
+ 4, 625,
+ _vq_lengthlist_res0_128a_350_1,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128a_350_1,
+ NULL,
+ &_vq_auxt_res0_128a_350_1,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_350_2.vqh b/lib/books/res0_128a_350_2.vqh
new file mode 100644
index 00000000..5ed17536
--- /dev/null
+++ b/lib/books/res0_128a_350_2.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_350_2_VQH_
+#define _V_res0_128a_350_2_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_350_2[] = {
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 12,
+ 5,
+ 4,
+ 3,
+ 2,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_350_2[] = {
+ 5, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7,
+ 7, 6, 6, 6, 7, 7, 6, 6, 7, 7, 7, 8, 6, 7, 7, 7,
+ 8, 7, 7, 8, 8, 8, 8, 7, 7, 8, 8, 8, 7, 7, 8, 8,
+ 8, 8, 7, 8, 8, 8, 9, 8, 8, 8, 9, 9, 8, 8, 8, 9,
+ 9, 9, 6, 6, 6, 6, 7, 7, 6, 6, 7, 7, 7, 6, 6, 7,
+ 7, 7, 8, 7, 7, 7, 7, 8, 7, 7, 8, 8, 8, 8, 7, 7,
+ 8, 8, 8, 7, 7, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8,
+ 9, 9, 9, 9, 8, 8, 9, 8, 9,
+};
+
+static float _vq_quantthresh_res0_128a_350_2[] = {
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5,
+};
+
+static long _vq_quantmap_res0_128a_350_2[] = {
+ 10, 9, 8, 7, 6, 0, 1, 2,
+ 3, 4, 5,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_350_2 = {
+ _vq_quantthresh_res0_128a_350_2,
+ _vq_quantmap_res0_128a_350_2,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_128a_350_2 = {
+ 2, 121,
+ _vq_lengthlist_res0_128a_350_2,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_128a_350_2,
+ NULL,
+ &_vq_auxt_res0_128a_350_2,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_350_3.vqh b/lib/books/res0_128a_350_3.vqh
new file mode 100644
index 00000000..38d64029
--- /dev/null
+++ b/lib/books/res0_128a_350_3.vqh
@@ -0,0 +1,86 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_350_3_VQH_
+#define _V_res0_128a_350_3_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_350_3[] = {
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 17,
+ 19,
+ 22,
+ 10,
+ 9,
+ 8,
+ 7,
+ 5,
+ 3,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_350_3[] = {
+ 6, 6, 7, 7, 7, 7, 7, 8, 6, 7, 7, 7, 7, 7, 8, 7,
+ 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 8, 7, 7,
+ 7, 8, 7, 7, 8, 9, 7, 7, 8, 7, 7, 8, 9, 8, 8, 8,
+ 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 7, 8, 8, 8,
+ 7, 8, 8, 9, 7, 8, 8, 7, 8, 8, 9, 8, 8, 8, 8, 8,
+ 8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 9, 8, 8,
+ 9,10, 8, 9, 9, 8, 8, 9,10, 9, 9,10,10, 9, 9,10,
+ 10, 9,10,10, 9, 9,10,10, 7, 7, 7, 7, 7, 7, 8, 8,
+ 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 8, 7, 7, 8, 9, 7,
+ 7, 8, 7, 7, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8,
+ 8, 8, 8, 8, 9, 7, 8, 8, 8, 7, 8, 8, 9, 7, 8, 8,
+ 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8,
+ 8, 8, 9, 8, 8, 9, 9, 8, 8, 9,10, 8, 8, 9, 8, 8,
+ 9,10, 9, 9,10,10, 9, 9,10,10, 9,10,10, 9, 9,10,
+ 10,
+};
+
+static float _vq_quantthresh_res0_128a_350_3[] = {
+ -9.5, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5,
+ 1.5, 2.5, 3.5, 5, 7, 9.5,
+};
+
+static long _vq_quantmap_res0_128a_350_3[] = {
+ 14, 13, 12, 11, 10, 9, 8, 0,
+ 1, 2, 3, 4, 5, 6, 7,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_350_3 = {
+ _vq_quantthresh_res0_128a_350_3,
+ _vq_quantmap_res0_128a_350_3,
+ 15,
+ 15
+};
+
+static static_codebook _vq_book_res0_128a_350_3 = {
+ 2, 225,
+ _vq_lengthlist_res0_128a_350_3,
+ 1, -529137664, 1611661312, 5, 0,
+ _vq_quantlist_res0_128a_350_3,
+ NULL,
+ &_vq_auxt_res0_128a_350_3,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_350_4.vqh b/lib/books/res0_128a_350_4.vqh
new file mode 100644
index 00000000..72215cd4
--- /dev/null
+++ b/lib/books/res0_128a_350_4.vqh
@@ -0,0 +1,100 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_350_4_VQH_
+#define _V_res0_128a_350_4_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_350_4[] = {
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 29,
+ 31,
+ 34,
+ 39,
+ 46,
+ 22,
+ 21,
+ 20,
+ 19,
+ 17,
+ 15,
+ 12,
+ 7,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_350_4[] = {
+ 7, 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8,
+ 8, 8,10, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8,
+ 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8, 8, 8, 9,10,
+ 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 9, 8, 8, 8,
+ 8, 9,10, 8, 8, 9, 8, 8, 8, 8, 9,10, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8, 8, 8,10, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8, 8,
+ 8,10, 8, 9, 9, 9, 8, 8, 8, 8, 8,10, 9, 9, 9, 8,
+ 8, 8, 8, 8,10, 9, 9, 9, 9, 9, 8, 8, 8, 9,10, 9,
+ 9, 9, 9, 8, 8, 8, 9,10,10,10,10,10,10, 9, 9, 9,
+ 10,11,10,10,10,10, 9, 9, 9,10,11,12,12,12,12,12,
+ 12,12,12,12,13,12,12,12,12,12,12,12,12,13, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8, 8, 8,
+ 10, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8,
+ 8, 8, 8,10, 8, 8, 8, 9, 8, 8, 8, 8, 9,10, 8, 8,
+ 9, 8, 8, 8, 8, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 10, 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8,10, 8, 8, 8, 8, 8, 8, 8, 8,10, 8, 9, 9,
+ 9, 8, 8, 8, 8, 8,10, 9, 9, 9, 8, 8, 8, 8, 8,10,
+ 9, 9, 9, 9, 9, 8, 8, 8, 9,10, 9, 9, 9, 9, 8, 8,
+ 8, 9,10,10,10,10,10,10, 9, 9, 9,10,11,10,10,10,
+ 10,10, 9, 9,10,11,12,12,12,12,12,12,12,12,12,13,
+ 12,12,12,12,12,12,12,12,13,
+};
+
+static float _vq_quantthresh_res0_128a_350_4[] = {
+ -19.5, -13.5, -9.5, -7, -5, -3.5, -2.5, -1.5,
+ -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9.5,
+ 13.5, 19.5,
+};
+
+static long _vq_quantmap_res0_128a_350_4[] = {
+ 18, 17, 16, 15, 14, 13, 12, 11,
+ 10, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_350_4 = {
+ _vq_quantthresh_res0_128a_350_4,
+ _vq_quantmap_res0_128a_350_4,
+ 19,
+ 19
+};
+
+static static_codebook _vq_book_res0_128a_350_4 = {
+ 2, 361,
+ _vq_lengthlist_res0_128a_350_4,
+ 1, -526974976, 1611661312, 6, 0,
+ _vq_quantlist_res0_128a_350_4,
+ NULL,
+ &_vq_auxt_res0_128a_350_4,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/res0_128a_350_5.vqh b/lib/books/res0_128a_350_5.vqh
new file mode 100644
index 00000000..c8c5dff4
--- /dev/null
+++ b/lib/books/res0_128a_350_5.vqh
@@ -0,0 +1,133 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128a_350_5_VQH_
+#define _V_res0_128a_350_5_VQH_
+#include "vorbis/codebook.h"
+
+static long _vq_quantlist_res0_128a_350_5[] = {
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 94,
+ 96,
+ 99,
+ 104,
+ 111,
+ 120,
+ 133,
+ 151,
+ 176,
+ 87,
+ 86,
+ 85,
+ 84,
+ 82,
+ 80,
+ 77,
+ 72,
+ 65,
+ 56,
+ 43,
+ 25,
+ 0,
+};
+
+static long _vq_lengthlist_res0_128a_350_5[] = {
+ 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9,11,11,11, 7, 8,
+ 8, 8, 8, 8, 8, 8, 9, 9,11,13,12, 7, 8, 8, 9, 8,
+ 8, 8, 8, 8,10,10,12,13,14, 8, 8, 8, 8, 8, 8, 8,
+ 8, 9, 9,12,13,14, 8, 8, 9, 9, 8, 8, 8, 8, 8,10,
+ 10,12,15,14, 8, 9, 9, 8, 8, 8, 8, 8,10,10,12,14,
+ 13, 9, 9, 9, 9, 9, 8, 8, 8, 9,10,10,13,14,15, 9,
+ 9, 9, 9, 8, 9, 8, 9,10,10,12,15,16, 8, 8, 9, 9,
+ 8, 8, 8, 8, 8,10,10,12,14,14, 8, 9, 9, 8, 8, 8,
+ 8, 8,10, 9,12,14,17, 8, 8, 9, 9, 8, 8, 8, 8, 8,
+ 10,10,12,14,16, 9, 9, 9, 8, 8, 8, 8, 8,10, 9,12,
+ 14, 0, 9, 9, 9, 9, 8, 8, 8, 8, 8,10,10,13,14,15,
+ 9, 9, 9, 9, 8, 8, 8, 8,10, 9,12,15,16, 9, 9, 9,
+ 9, 9, 9, 8, 8, 9,10,10,12,14,15, 9, 9, 9, 9, 8,
+ 8, 8, 9,10,10,12,14, 0,10,10,10,10,10, 9,10, 9,
+ 10,11,11,14, 0, 0,10,10,10,10, 9,10, 9,10,11,11,
+ 13,17, 0,11,11,11,12,12,11,11,11,11,13,12,14,16,
+ 17,11,12,11,12,11,12,11,12,12,12,15,17, 0,11,11,
+ 11,12,12,11,12,11,12,13,14,16, 0, 0,11,12,12,12,
+ 11,11,11,12,13,14,17, 0, 0,12,13,13,13,14,14,14,
+ 14,14,14, 0, 0, 0, 0,13,13,13,14,13,14,14,13,15,
+ 16,16, 0, 0,13,15,16,17,15,17,17,16, 0,17, 0, 0,
+ 0, 0,13,15,15,15,15,16,15,16,17, 0,16, 0, 0,12,
+ 14,15, 0, 0,17,16,15,16, 0, 0, 0, 0, 0,14,16,17,
+ 16,16,15,15,15,17,17, 0, 0, 0, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8,10,10,12,13,14, 8, 8, 9, 8, 8, 8, 8, 8,
+ 9, 9,12,14,14, 8, 8, 9, 9, 8, 8, 8, 8, 8,10,10,
+ 12,14,14, 8, 9, 9, 8, 8, 8, 8, 8,10,10,12,14,15,
+ 9, 9, 9, 9, 9, 9, 8, 8, 9,10,10,13,14,17, 9, 9,
+ 9, 8, 8, 8, 8, 9,10,10,12,15,16, 8, 8, 9, 9, 8,
+ 8, 8, 8, 8,10,10,12,14,16, 8, 9, 9, 8, 8, 8, 8,
+ 8,10, 9,12,14,16, 8, 8, 9, 9, 8, 8, 8, 8, 8,10,
+ 10,12,15,15, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,11,14,
+ 16, 9, 9, 9, 9, 9, 8, 8, 8, 8,10,10,12,15,16, 9,
+ 9, 9, 9, 8, 8, 8, 8,10,10,12,14,15, 9, 9, 9, 9,
+ 9, 8, 8, 8, 9,10,10,12,14,16, 9, 9, 9, 9, 8, 8,
+ 8, 9,10,10,12,15,15,10,10,10,10,10, 9, 9, 9,10,
+ 11,11,13,15,17,10,10,10,10, 9, 9, 9,10,11,11,13,
+ 17,17,11,11,12,11,12,11,11,11,12,13,13,15,17, 0,
+ 11,11,12,11,11,11,11,11,12,12,15,17,17,11,12,11,
+ 12,11,11,11,11,12,13,15, 0, 0, 0,11,12,12,12,11,
+ 12,12,12,12,14,16, 0, 0,13,13,13,13,15,14,14,14,
+ 14,14,16,17, 0, 0,13,14,15,14,14,14,14,14,15,16,
+ 0, 0, 0,13,14,16,15,15, 0,17,15,17,17, 0, 0, 0,
+ 0,15,15,16,15,15,16,16,16,17,17,17, 0, 0,13,15,
+ 17,17,16,15,17,16,16, 0, 0, 0, 0, 0,14,16,15,16,
+ 16,15,15,14,17,16, 0, 0, 0,
+};
+
+static float _vq_quantthresh_res0_128a_350_5[] = {
+ -75.5, -54, -38.5, -27.5, -19.5, -13.5, -9.5, -7,
+ -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5,
+ 3.5, 5, 7, 9.5, 13.5, 19.5, 27.5, 38.5,
+ 54, 75.5,
+};
+
+static long _vq_quantmap_res0_128a_350_5[] = {
+ 26, 25, 24, 23, 22, 21, 20, 19,
+ 18, 17, 16, 15, 14, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128a_350_5 = {
+ _vq_quantthresh_res0_128a_350_5,
+ _vq_quantmap_res0_128a_350_5,
+ 27,
+ 27
+};
+
+static static_codebook _vq_book_res0_128a_350_5 = {
+ 2, 729,
+ _vq_lengthlist_res0_128a_350_5,
+ 1, -522846208, 1611661312, 8, 0,
+ _vq_quantlist_res0_128a_350_5,
+ NULL,
+ &_vq_auxt_res0_128a_350_5,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_1024a_128.vqh b/lib/books/resaux0_1024a_128.vqh
new file mode 100644
index 00000000..d458b846
--- /dev/null
+++ b/lib/books/resaux0_1024a_128.vqh
@@ -0,0 +1,42 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_1024a_128_VQH_
+#define _V_resaux0_1024a_128_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_1024a_128[] = {
+ 2, 6,12,10,14,11,18,11,13,15, 5, 3, 5, 6, 8, 8,
+ 12, 8,10,12,10, 5, 4, 5, 7, 8,12, 9,12,15, 9, 5,
+ 5, 5, 6, 6,11, 7,10,13,13, 7, 7, 6, 7, 8,11, 9,
+ 12,16,10, 7, 7, 6, 8, 7,11, 7, 9,13,17,12,12,11,
+ 11,11,14,12,15,18, 9, 7, 8, 6, 8, 6,11, 6, 7,11,
+ 10, 9, 9, 8, 9, 7,10, 6, 7,10,12,11,12,10,10, 8,
+ 11, 7, 8,11,
+};
+
+static static_codebook _huff_book_resaux0_1024a_128 = {
+ 2, 100,
+ _huff_lengthlist_resaux0_1024a_128,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_1024a_160.vqh b/lib/books/resaux0_1024a_160.vqh
new file mode 100644
index 00000000..9764826a
--- /dev/null
+++ b/lib/books/resaux0_1024a_160.vqh
@@ -0,0 +1,42 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_1024a_160_VQH_
+#define _V_resaux0_1024a_160_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_1024a_160[] = {
+ 2, 6,13,11,15,11,16,11,13,15, 5, 4, 7, 7, 9, 9,
+ 12, 9,11,13,11, 6, 6, 7, 7, 9,10,10,13,15, 9, 6,
+ 7, 6, 7, 8, 9, 8,10,13,13, 8, 6, 6, 4, 6, 6, 7,
+ 11,14,10, 8, 8, 7, 6, 7, 7, 6,10,13,16,11, 9, 9,
+ 6, 7, 7, 6,10,14, 9, 8, 9, 7, 6, 6, 6, 4, 6,10,
+ 10, 9,11, 9, 9, 8, 9, 5, 5, 7,12,11,13,11,12,11,
+ 11, 8, 6, 8,
+};
+
+static static_codebook _huff_book_resaux0_1024a_160 = {
+ 2, 100,
+ _huff_lengthlist_resaux0_1024a_160,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_1024a_192.vqh b/lib/books/resaux0_1024a_192.vqh
new file mode 100644
index 00000000..f6e0e58e
--- /dev/null
+++ b/lib/books/resaux0_1024a_192.vqh
@@ -0,0 +1,38 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_1024a_192_VQH_
+#define _V_resaux0_1024a_192_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_1024a_192[] = {
+ 2, 6,11,11,11,11, 5, 3, 6, 8, 9, 9, 9, 5, 4, 5,
+ 7, 8,10, 7, 5, 5, 5, 7,10, 7, 6, 5, 5, 5, 9, 8,
+ 7, 6, 5, 3,
+};
+
+static static_codebook _huff_book_resaux0_1024a_192 = {
+ 2, 36,
+ _huff_lengthlist_resaux0_1024a_192,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_1024a_256.vqh b/lib/books/resaux0_1024a_256.vqh
new file mode 100644
index 00000000..cffc25c5
--- /dev/null
+++ b/lib/books/resaux0_1024a_256.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_1024a_256_VQH_
+#define _V_resaux0_1024a_256_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_1024a_256[] = {
+ 3, 9,12,12,13,16, 9, 9,13,14,16,17,11,15,17,18,
+ 18,20,12,14,17,17,20,19,14,13,16,16,17,19,19,19,
+ 19,18,18,17, 8,11,16,18,18,18,10, 9,13,16,17,18,
+ 14,15,15,16,18,19,13,16,17,18,18,19,14,16,17,18,
+ 18,19,17,18,18,19,19,19,14,17,19,18,18,19,15,16,
+ 16,18,19,19,16,17,15,17,18,19,15,17,17,17,18,19,
+ 14,18,18,19,18,19,18,19,19,19,19,19,14,18,17,19,
+ 19,19,15,17,17,17,18,19,19,18,19,17,19,19,16,18,
+ 19,19,19,19,16,19,19,19,19,19,19,19,19,19,19,19,
+ 13,17,17,19,19,19,16,19,19,19,18,19,16,19,19,19,
+ 19,19,17,19,19,19,19,19,17,19,19,19,19,19,19,19,
+ 19,19,19,19,16,19,19,19,19,19,18,19,19,19,19,19,
+ 18,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,
+ 19,19,17,19,19,19,19,19, 6,10,13,15,15,16, 8, 9,
+ 14,17,16,19,12,15,15,18,17,19,13,15,17,18,19,19,
+ 15,14,16,18,19,19,19,19,19,19,19,19, 6, 8,15,15,
+ 16,16, 5, 4, 8,13,13,17,11, 8, 9,12,15,19,10,11,
+ 13,13,14,18,12,13,15,14,16,19,16,18,19,19,19,19,
+ 12,14,17,18,19,19,11, 8,10,13,16,19,15, 9, 8,11,
+ 15,19,14,13,11,12,14,19,15,14,14,14,16,19,18,18,
+ 19,19,19,19,13,16,18,16,17,19,14,12,13,14,16,19,
+ 16,12,12,13,15,19,16,15,12,12,15,19,16,16,14,15,
+ 17,19,18,19,19,19,19,19,14,16,17,17,18,19,14,13,
+ 14,15,17,19,15,16,15,14,16,19,16,15,15,15,17,19,
+ 17,16,16,18,19,19,19,19,19,19,19,19,17,19,18,18,
+ 19,19,18,17,18,19,19,19,16,19,18,19,19,19,17,17,
+ 18,19,19,19,19,17,19,19,19,19,19,19,19,19,19,19,
+ 12,13,17,17,18,19,13,13,16,18,19,19,18,17,16,19,
+ 19,19,19,18,18,19,19,19,19,19,19,19,19,19,19,19,
+ 19,19,19,19,10,12,16,18,17,18, 9, 6, 9,13,15,17,
+ 13, 8, 8,12,15,19,13,12,12,13,15,19,13,13,13,15,
+ 18,19,15,16,17,19,19,19,11,14,17,17,19,18,11, 6,
+ 8,12,14,16,14, 6, 4, 8,12,19,14,10, 7, 8,11,18,
+ 14,12,10,11,13,16,17,17,16,18,19,19,14,16,17,17,
+ 16,19,14,10,11,12,14,18,15, 9, 7, 8,11,18,15,11,
+ 7, 6,10,18,16,13,10,10,12,19,18,19,18,18,18,19,
+ 17,18,18,18,18,19,16,12,12,13,16,19,16,12,10,11,
+ 12,16,17,13,10, 9,12,18,18,14,12,12,14,19,17,19,
+ 19,19,18,19,19,19,19,19,19,19,18,18,16,19,19,19,
+ 19,18,16,16,16,19,18,17,17,17,18,19,19,18,18,18,
+ 18,19,19,19,19,19,19,19,11,14,18,19,19,19,15,13,
+ 18,19,19,19,16,17,18,18,19,19,19,17,18,19,19,19,
+ 19,19,19,19,19,19,19,19,19,19,19,19,14,14,17,19,
+ 19,19,13, 9,11,14,16,19,15,11,10,12,15,19,15,13,
+ 12,12,14,19,16,15,14,14,16,19,17,18,19,18,19,19,
+ 12,14,17,17,19,19,13, 9,10,12,14,17,13, 8, 6, 7,
+ 11,16,13,11, 7, 6,10,17,14,13,10, 9,11,16,19,17,
+ 16,16,15,19,12,15,16,16,17,19,13,10,10,11,12,17,
+ 15, 9, 6, 6, 9,16,14, 9, 5, 3, 7,14,16,11, 8, 6,
+ 8,14,18,17,15,15,15,17,13,14,17,18,19,19,15,12,
+ 13,13,15,18,18,12,10, 9,11,15,19,11, 8, 6, 8,15,
+ 18,12,10, 8, 9,14,18,18,15,14,14,17,19,18,19,19,
+ 19,19,19,17,16,18,19,19,19,19,16,15,17,19,19,18,
+ 15,15,15,19,19,16,15,15,15,19,19,19,18,17,18,19,
+ 11,13,19,19,19,19,17,13,19,18,19,19,16,18,18,17,
+ 19,19,18,18,19,19,19,19,19,19,19,19,19,19,19,19,
+ 19,19,19,19,15,16,19,18,19,19,16,12,13,14,16,19,
+ 18,13,12,12,14,19,17,15,13,12,13,17,17,16,15,13,
+ 14,19,19,16,17,16,17,19,13,15,16,18,19,19,16,11,
+ 11,13,15,18,14,11, 9,10,12,18,14,13,10, 8,10,18,
+ 15,14,11,10,11,16,19,18,17,15,15,18,11,14,18,18,
+ 18,19,13,11,12,13,13,17,15,11, 9, 9,10,16,15,11,
+ 8, 5, 7,14,17,12, 9, 6, 7,13,19,17,15,14,13,17,
+ 11,15,18,19,19,19,14,13,14,14,15,18,17,12,11,10,
+ 11,16,17,11, 9, 6, 7,13,19,12,10, 6, 6,12,19,16,
+ 14,13,13,17,16,15,19,19,19,19,17,14,16,17,18,19,
+ 19,18,16,14,16,17,19,16,15,13,14,19,19,15,14,13,
+ 13,18,19,17,16,17,16,19,15,15,19,19,19,19,19,13,
+ 13,19,19,19,19,18,14,16,19,19,19,19,19,19,19,19,
+ 19,19,19,19,19,19,19,19,19,19,19,19,18,19,19,19,
+ 19,19,19,17,18,18,19,19,19,19,15,14,18,19,19,19,
+ 16,14,17,19,19,17,18,15,16,19,19,17,19,19,18,19,
+ 16,18,19,19,19,19,19,16,17,18,19,19,19,17,17,15,
+ 17,19,17,17,15,12,15,19,18,15,14,14,15,19,19,19,
+ 17,16,18,18,13,15,19,19,19,19,18,16,17,17,16,19,
+ 19,16,15,15,15,18,18,16,14,11,12,17,18,15,14,12,
+ 12,16,19,19,17,17,17,19,14,16,19,19,19,19,18,17,
+ 18,18,19,19,18,16,18,15,15,18,19,16,14,11,12,17,
+ 19,16,13,11,11,15,19,18,16,17,16,19,18,19,19,19,
+ 19,19,19,18,19,19,19,19,19,19,19,17,18,19,19,18,
+ 17,17,18,19,19,18,15,18,17,19,19,19,18,19,19,19,
+};
+
+static static_codebook _huff_book_resaux0_1024a_256 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_1024a_256,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_1024a_350.vqh b/lib/books/resaux0_1024a_350.vqh
new file mode 100644
index 00000000..ead2c9d2
--- /dev/null
+++ b/lib/books/resaux0_1024a_350.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_1024a_350_VQH_
+#define _V_resaux0_1024a_350_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_1024a_350[] = {
+ 6,17,20,20,19,17,18,16,18,19,19,19,16,16,19,19,
+ 19,19,17,17,19,19,19,19,19,17,19,19,19,19,19,15,
+ 19,19,19,19,15,17,19,19,18,16,17,13,16,19,19,19,
+ 17,14,16,19,19,18,19,18,19,19,19,19,19,16,19,19,
+ 19,19,18,15,17,19,19,18,18,19,19,19,19,17,19,15,
+ 17,18,18,16,19,17,18,18,19,18,19,19,19,19,19,19,
+ 19,19,19,19,18,19,19,17,19,18,19,18,19,19,18,19,
+ 19,18,19,18,18,18,19,17,19,18,19,19,19,19,19,18,
+ 19,19,19,19,18,19,19,19,19,18,18,19,19,19,19,18,
+ 18,18,17,19,19,19,17,17,18,19,18,19,17,19,19,19,
+ 19,19,19,19,19,19,19,19,19,19,19,19,19,18,19,18,
+ 19,19,18,18,16,14,17,19,19,19,18,16,18,19,19,19,
+ 17,16,19,19,19,19,18,17,19,19,19,19,19,19,19,19,
+ 19,19,19,19,19,19,19,19,14,15,17,19,18,15,18,15,
+ 19,19,19,17,16,17,19,19,19,18,17,17,19,19,19,18,
+ 19,18,19,19,19,18,19,16,17,19,19,18,14,15,18,18,
+ 18,16,15,10,12,14,15,13,16,13,11,14,14,15,12,15,
+ 15,15,16,17,11,13,15,17,17,19,15,13,14,17,17,16,
+ 16,19,19,19,18,17,17,14,13,14,15,14,17,13,10,11,
+ 12,15,16,15,12,12,13,18,15,14,13,14,15,19,16,15,
+ 14,15,16,16,19,19,19,17,19,19,18,15,14,14,14,18,
+ 17,14,12,13,15,19,18,14,13,12,14,19,15,15,15,14,
+ 17,18,16,17,16,16,18,16,18,19,18,18,18,19,16,14,
+ 14,14,16,19,16,15,13,14,16,19,18,16,14,14,16,19,
+ 18,15,15,16,18,19,17,16,17,17,18,17,19,18,16,17,
+ 18,19,16,14,14,18,18,19,15,15,16,16,19,19,16,16,
+ 16,16,18,19,16,15,17,17,18,18,17,15,16,16,18,17,
+ 17,16,17,19,17,19,19,17,17,18,18,19,18,19,19,19,
+ 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
+ 19,19,19,19,17,17,19,18,19,16,16,12,13,14,14,13,
+ 15,13,11,12,13,16,13,13,12,12,14,18,11,11,12,14,
+ 16,18,16,12,14,17,19,16,14,16,19,18,19,19,13, 9,
+ 11,13,14,13,14, 8, 5, 6, 9,12,16, 9, 6, 6, 9,15,
+ 13,10, 8, 9,11,14,16,12,11,12,16,15,15,16,18,19,
+ 18,18,13,10,12,12,14,16,14, 8, 6, 6,10,14,17,10,
+ 6, 5, 8,15,18,13, 9, 9,10,15,18,15,13,14,17,17,
+ 17,19,18,17,17,18,16,13,12,13,14,18,17,12, 9, 9,
+ 11,15,19,13, 9, 8,10,15,19,14,11,11,12,16,18,16,
+ 15,17,17,18,19,18,18,18,18,19,17,14,14,16,19,19,
+ 16,15,13,14,15,18,18,15,15,14,15,18,19,15,16,16,
+ 17,19,16,15,15,17,17,19,17,18,19,19,18,19,19,16,
+ 18,18,18,19,18,19,19,19,19,19,19,19,19,19,19,19,
+ 19,18,18,19,19,19,19,18,19,19,19,19,18,18,19,19,
+ 19,17,16,12,13,14,15,15,19,14,12,12,14,16,18,14,
+ 12,12,14,19,18,14,14,14,16,19,18,15,17,19,18,19,
+ 12,15,19,19,19,17,11, 8,11,12,13,14,14, 7, 5, 6,
+ 10,13,18,10, 6, 5, 9,14,19,12, 9, 9,11,15,17,14,
+ 13,13,15,17,12,15,19,18,18,18,10, 8,11,11,13,16,
+ 13, 7, 5, 5, 8,13,16, 9, 4, 3, 6,13,19,13, 8, 6,
+ 8,14,17,15,12,13,14,16,14,19,19,18,18,19,12,12,
+ 13,12,13,17,18,12, 8, 8,10,14,17,13, 8, 5, 7,14,
+ 17,14, 9, 7, 8,14,19,15,13,13,14,16,19,19,19,19,
+ 19,19,18,17,15,17,19,19,16,17,13,14,15,17,18,17,
+ 14,14,14,16,18,18,14,13,13,17,17,16,15,15,14,18,
+ 16,19,19,19,19,19,19,18,19,19,18,19,19,19,19,19,
+ 18,19,19,18,18,19,19,19,19,19,19,19,19,19,19,19,
+ 19,19,19,19,15,17,19,19,19,19,14,13,14,16,15,18,
+ 15,14,13,13,15,19,19,15,13,14,15,19,19,17,15,14,
+ 14,16,19,18,17,17,15,18,13,16,19,19,19,19,12,10,
+ 13,13,13,18,15,11, 9, 9,11,16,18,13, 9, 8,10,16,
+ 19,15,11,10,11,15,19,16,14,14,14,17,12,16,19,18,
+ 17,18,10,10,13,12,13,16,15,11, 8, 8,10,13,18,12,
+ 7, 5, 7,11,19,13, 9, 6, 7,12,19,14,12,11,12,15,
+ 14,17,19,17,19,19,11,12,14,13,14,18,16,13,10, 9,
+ 10,13,17,14, 9, 6, 6,11,17,13, 9, 6, 5, 9,18,15,
+ 12,10, 9,13,19,19,19,19,19,19,17,15,17,18,18,19,
+ 17,17,15,14,14,17,19,17,13,11,11,14,18,15,12,10,
+ 8,12,19,15,14,12,11,14,14,17,19,19,19,19,17,17,
+ 19,19,19,19,16,19,19,19,19,19,18,19,19,19,19,19,
+ 19,19,19,19,19,19,19,19,19,19,19,19,14,16,19,19,
+ 19,19,16,13,14,18,18,19,17,15,14,16,18,19,18,17,
+ 17,16,17,19,19,19,18,16,15,16,19,17,16,18,17,17,
+ 17,19,19,19,19,19,19,15,16,16,16,18,17,16,11,13,
+ 16,18,18,17,13,11,14,17,17,16,14,12,13,16,19,18,
+ 15,14,14,17,17,18,19,19,19,19,16,16,17,16,17,19,
+ 18,16,13,13,14,15,18,17,12, 8,10,11,18,15,13, 9,
+ 9,12,19,16,12,11,12,14,18,18,19,18,19,19,15,17,
+ 17,17,18,19,19,17,16,14,13,14,19,17,13, 8, 8,11,
+ 18,15,12, 7, 6,10,19,14,13,11, 9,12,17,16,19,18,
+ 19,19,15,13,17,18,19,19,16,16,15,12,13,16,17,16,
+ 13, 9,11,14,18,16,13,10, 9,11,17,15,14,13,11,14,
+};
+
+static static_codebook _huff_book_resaux0_1024a_350 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_1024a_350,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_128a_128.vqh b/lib/books/resaux0_128a_128.vqh
new file mode 100644
index 00000000..12651bf1
--- /dev/null
+++ b/lib/books/resaux0_128a_128.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_128a_128_VQH_
+#define _V_resaux0_128a_128_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_128a_128[] = {
+ 6,15,15,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,10,13,14,14,
+ 14,14,10,11,13,14,14,14,14,13,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 10,13,14,14,14,14,13,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14, 9,13,14,14,14,14, 9, 8,11,14,14,14,
+ 14,11,13,14,14,14,14,13,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,11,
+ 14,14,14,14,13,13,13,14,14,14,13,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,13,14,14,14,14,14,13,14,14,14,14,14,
+ 14,14,14,14,14,14,13,13,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,14,14,14,13,14,14,14,13,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,10,13,14,14,14,14,12,13,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14, 9,13,14,14,
+ 14,14, 7, 7,10,14,14,13,11,10,13,14,14,14,14,13,
+ 13,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,
+ 11,14,13,14,14,14,10,10,14,14,14,14,13,11,13,14,
+ 14,14,14,13,14,14,14,14,14,14,14,14,14,14,12,14,
+ 14,14,14,14,14,14,14,14,14,14,13,12,14,14,14,14,
+ 13,14,14,14,14,14,13,14,14,14,14,14,13,13,14,14,
+ 14,14,13,14,14,14,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,13,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,13,14,14,14,14,14,13,13,14,14,
+ 14,14,12,13,14,14,14,14,14,13,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,13,
+ 9,14,14,14,14,14,12,12,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14, 8,11,14,14,14,14, 6, 5, 9,12,13,13,
+ 10, 8,11,14,14,13,12,12,13,14,14,14,13,13,14,14,
+ 14,14,13,13,14,14,14,14,11,13,14,14,14,14, 8, 8,
+ 10,13,14,14,10,10,12,14,14,14,13,12,14,13,14,13,
+ 12,14,13,13,14,14,10,13,14,14,14,14,13,14,14,14,
+ 14,14,11,11,13,14,14,14,12,13,13,14,14,14,12,13,
+ 14,14,14,13,14,14,14,14,14,14,12,13,14,14,14,14,
+ 14,13,14,14,14,14,13,12,13,14,14,14,12,13,12,14,
+ 14,14,12,13,13,14,14,14,12,13,14,14,14,14,12,14,
+ 14,14,14,14,13,14,14,14,14,14,12,12,13,14,14,14,
+ 13,12,13,14,13,14,13,14,14,14,14,14,13,14,14,14,
+ 14,14,12,12,14,14,14,14, 5,12,14,14,14,14,10,10,
+ 14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14, 4, 9,12,14,
+ 13,14, 3, 2, 5, 9, 9,10, 6, 5, 7,10,12,13, 9, 9,
+ 11,12,13,14,11,11,12,13,14,14,12,12,14,14,14,14,
+ 7,11,12,13,13,13, 4, 4, 7,10,12,14, 6, 6, 9,12,
+ 14,14, 9,10,12,13,12,13,11,11,13,13,14,14,11,12,
+ 14,14,14,14, 9,12,13,13,13,14, 7, 8,11,12,13,12,
+ 8, 9,11,14,14,14,10,12,14,14,14,14,11,12,14,14,
+ 14,14,10,12,13,14,14,14,10,14,14,13,12,13, 9,10,
+ 12,12,12,12,10,11,12,14,14,14,11,12,12,14,14,14,
+ 11,14,13,13,14,14,10,13,14,14,14,14,11,14,14,14,
+ 14,13,10,11,13,13,13,13,11,13,14,13,14,14,13,12,
+ 13,13,14,14,12,13,14,14,14,14,12,14,14,14,14,14,
+};
+
+static static_codebook _huff_book_resaux0_128a_128 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_128a_128,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_128a_160.vqh b/lib/books/resaux0_128a_160.vqh
new file mode 100644
index 00000000..9d560617
--- /dev/null
+++ b/lib/books/resaux0_128a_160.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_128a_160_VQH_
+#define _V_resaux0_128a_160_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_128a_160[] = {
+ 6,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,14,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,14,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,14,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,14,15,15,15,15,15,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,13,12,13,14,14,14,
+ 14,12,12,14,14,14,14,13,14,14,14,14,14,13,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,11,
+ 11,13,14,14,12,10,10,14,14,14,14,13,13,14,14,14,
+ 13,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,11,12,13,13,14,14,12,12,13,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,13,13,14,14,14,14,
+ 14,14,14,14,14,14,12,12,14,13,14,14,14,13,13,14,
+ 13,14,13,13,13,14,14,14,13,14,14,14,13,14,13,14,
+ 14,14,14,14,14,14,14,14,14,14,13,13,13,14,14,14,
+ 12,14,13,14,14,14,14,14,13,14,14,14,12,13,14,14,
+ 14,14,12,13,14,14,14,14, 5,14,14,14,14,14,11,14,
+ 13,14,14,14,14,13,12,14,14,14,14,14,13,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14, 5,10,14,14,
+ 14,14, 5, 5, 7,10,14,14, 8, 6, 6, 9,11,13,11, 9,
+ 10,11,14,14,12,12,13,13,14,14,14,13,14,13,14,14,
+ 6,11,13,14,14,14, 3, 4, 5, 8,10,12, 5, 3, 4, 7,
+ 10,12, 7, 6, 7,10,11,13, 9, 9,10,11,14,13,10,11,
+ 12,13,13,14, 8,13,13,14,13,13, 5, 6, 8,10,12,12,
+ 5, 5, 7, 9,11,11, 7, 7, 9,11,12,13, 9, 9,11,12,
+ 12,14,10,12,14,14,14,14, 9,14,14,14,13,13, 6, 7,
+ 10,11,11,12, 7, 7, 9,11,12,13, 8, 9,11,12,12,14,
+ 9,10,13,13,14,14, 9,11,13,14,14,14,10,14,14,14,
+ 14,13, 8, 9,12,13,13,12, 8, 9,10,11,12,13, 9,10,
+ 13,12,14,13,10,10,13,13,14,14, 9,11,11,13,13,14,
+};
+
+static static_codebook _huff_book_resaux0_128a_160 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_128a_160,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_128a_192.vqh b/lib/books/resaux0_128a_192.vqh
new file mode 100644
index 00000000..d06722e1
--- /dev/null
+++ b/lib/books/resaux0_128a_192.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_128a_192_VQH_
+#define _V_resaux0_128a_192_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_128a_192[] = {
+ 7,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,14,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,14,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,14,14,15,15,
+ 15,15,13,14,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,14,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,14,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,14,15,15,15,15,15,14,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,13,13,15,15,15,15,12,14,15,15,15,15,
+ 15,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,
+ 15,15,15,15,15,13,15,15,15,15,15,15,14,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,14,15,15,14,15,15,15,14,
+ 13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,14,15,13,15,
+ 15,15,15,15,14,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,14,15,15,15,15, 9,15,15,15,15,15,15,15,
+ 15,15,15,15,15,14,15,15,15,15,15,15,14,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,12,15,14,15,
+ 15,15,13,11,13,15,15,15,13,12,12,12,13,15,15,15,
+ 12,13,15,15,15,15,14,15,15,15,15,15,15,15,15,15,
+ 14,15,15,15,15,15, 8, 9,12,13,15,15, 8, 7, 7, 9,
+ 12,15,10, 8, 7, 9,13,13,10,10,10,11,13,14,12,12,
+ 13,13,15,15,13,14,15,14,15,15, 6, 7,10,12,13,13,
+ 5, 4, 5, 6, 9,12, 6, 5, 5, 6, 9,12, 7, 7, 7, 8,
+ 10,12, 9,10,10,11,13,14,12,15,15,15,13,13, 5, 7,
+ 10,12,11,12, 4, 4, 5, 7, 9,12, 5, 5, 5, 7, 9,11,
+ 6, 6, 7, 8, 9,12, 8, 8, 9,10,12,12,10,12,12,13,
+ 15,14, 6, 8,11,12,12,11, 5, 5, 7, 9,10,11, 5, 5,
+ 7, 8, 9,11, 6, 6, 7, 8,10,12, 7, 7, 8,10,11,13,
+};
+
+static static_codebook _huff_book_resaux0_128a_192 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_128a_192,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_128a_256.vqh b/lib/books/resaux0_128a_256.vqh
new file mode 100644
index 00000000..4acc2d46
--- /dev/null
+++ b/lib/books/resaux0_128a_256.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_128a_256_VQH_
+#define _V_resaux0_128a_256_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_128a_256[] = {
+ 6,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,12,13,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,13,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,13,
+ 14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,12,14,14,14,
+ 14,14,14,13,14,14,14,14,14,13,13,14,14,14,14,14,
+ 13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,11,12,14,14,14,14,12,10,14,
+ 14,14,13,13,12,14,14,14,13,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,11,11,14,14,14,14,
+ 9, 7, 7,11,14,14,10, 7, 6, 8,11,14,11,11,10, 9,
+ 12,14,14,14,13,14,14,14,14,14,14,14,14,14,12,11,
+ 14,14,14,14,10, 8, 9,12,13,14,10, 7, 7, 9,11,14,
+ 12,10, 9,10,11,14,14,14,14,13,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,13,
+ 13,14,13,14,14,13,13,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,
+ 14,14,10,12,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,10,
+ 12,14,14,14,14,10, 8,13,14,14,14,11, 9,12,13,14,
+ 13,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
+ 14,14, 7, 8,11,13,14,14, 5, 4, 5, 8,11,13, 6, 4,
+ 3, 5, 8,14, 9, 7, 6, 7, 9,13,14,14,13,12,13,14,
+ 13,14,14,14,14,14, 7, 8,14,13,13,14, 5, 4, 6, 9,
+ 11,14, 6, 4, 4, 5, 8,13, 9, 6, 6, 7, 9,13,13,11,
+ 11,12,13,14,14,14,14,14,14,14,12,12,13,14,13,14,
+ 10,10,11,12,13,14,11,10,10,12,14,14,14,12,11,12,
+ 13,14,13,11,14,13,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,12,14,14,14,14,13,11,14,14,14,14,14,
+ 13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,13,14,14,14,14,13,13,13,
+ 14,14,13,14,12,12,14,14,14,14,14,14,14,14,14,14,
+ 14,14,14,14,14,14,14,14,14,14,10,12,14,11,10,14,
+ 9, 8,10,13,13,14,10, 8, 8,11,12,13,11,10,11,12,
+ 13,14,13,13,14,14,14,14,13,14,14,14,14,14,10,10,
+ 14,13,14,14, 8, 8,10,13,13,14,10, 8, 8,11,13,14,
+ 11,10, 9,12,14,14,13,13,14,14,14,14,14,14,14,14,
+ 14,14,12,14,14,14,14,14,13,13,13,13,14,14,14,13,
+ 13,14,14,14,14,12,13,14,14,14,14,12,14,14,14,14,
+};
+
+static static_codebook _huff_book_resaux0_128a_256 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_128a_256,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/books/resaux0_128a_350.vqh b/lib/books/resaux0_128a_350.vqh
new file mode 100644
index 00000000..06cb1d78
--- /dev/null
+++ b/lib/books/resaux0_128a_350.vqh
@@ -0,0 +1,116 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
+ * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by huff/huffbuld
+
+ ********************************************************************/
+
+#ifndef _V_resaux0_128a_350_VQH_
+#define _V_resaux0_128a_350_VQH_
+#include "vorbis/codebook.h"
+
+static long _huff_lengthlist_resaux0_128a_350[] = {
+ 7,16,16,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,14,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,14,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,14,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,14,12,15,15,15,15,15,13,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,15,
+ 15,15,15,12,15,15,15,15,15,13,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,14,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,13,13,14,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,13, 9,11,15,15,15,
+ 7, 3, 6,14,15,15, 7, 4, 6,13,15,14,11, 9,12,14,
+ 15,15,15,15,15,15,15,15,15,15,15,13,15,15,13, 9,
+ 9,13,15,15, 6, 3, 5,10,15,14, 5, 3, 5,10,14,12,
+ 8, 7, 9,12,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,13,14,14,15,15,11, 8,10,13,15,14, 9, 7,
+ 9,12,15,11, 9, 9,11,13, 9,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,14,14,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+ 15,15,15,15,15,15,15,14,15,15,15,15,15,15,14,15,
+ 15,15,15,15,13,13,15,15,15,15,15,15,15,15,15,13,
+ 14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,
+ 15,15,12,10,12,13,15,15, 8, 4, 7,12,15,15, 8, 5,
+ 8,14,14,12,11,11,12,15,15,15,15,15,15,15,15,15,
+ 15,15,15,11,15,15,13,10,11,10,15,15, 8, 4, 6,11,
+ 15,13, 7, 4, 6,11,13,10, 9, 9, 9,12,15,15,15,15,
+ 15,15,15,15,15,15,15,13,15,15,15,12,14,11,15,15,
+ 11, 9,11,14,15,15,10, 8,10,13,15,12, 9,10,11,13,
+};
+
+static static_codebook _huff_book_resaux0_128a_350 = {
+ 4, 1296,
+ _huff_lengthlist_resaux0_128a_350,
+ 0, 0, 0, 0, 0,
+ NULL,
+ NULL,
+ NULL,
+};
+
+
+#endif
diff --git a/lib/codebook.c b/lib/codebook.c
index c4939fa7..18e75ec6 100644
--- a/lib/codebook.c
+++ b/lib/codebook.c
@@ -12,7 +12,7 @@
********************************************************************
function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c,v 1.18.2.1 2000/10/20 06:19:40 jack Exp $
+ last mod: $Id: codebook.c,v 1.18.2.2 2000/11/03 10:05:47 xiphmont Exp $
********************************************************************/
@@ -21,10 +21,8 @@
#include <math.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
-#include "vorbis/codebook.h"
+#include "codebook.h"
#include "scales.h"
-#include "sharedbook.h"
-#include "bookinternal.h"
#include "misc.h"
#include "os.h"
@@ -150,6 +148,7 @@ int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
long i,j;
memset(s,0,sizeof(static_codebook));
+ s->allocedp=1;
/* make sure alignment is correct */
if(oggpack_read(opb,24)!=0x564342)goto _eofout;
diff --git a/lib/codebook.h b/lib/codebook.h
new file mode 100644
index 00000000..d0c94797
--- /dev/null
+++ b/lib/codebook.h
@@ -0,0 +1,157 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: codebook.h,v 1.1.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_CODEBOOK_H_
+#define _V_CODEBOOK_H_
+
+/* This structure encapsulates huffman and VQ style encoding books; it
+ doesn't do anything specific to either.
+
+ valuelist/quantlist are nonNULL (and q_* significant) only if
+ there's entry->value mapping to be done.
+
+ If encode-side mapping must be done (and thus the entry needs to be
+ hunted), the auxiliary encode pointer will point to a decision
+ tree. This is true of both VQ and huffman, but is mostly useful
+ with VQ.
+
+*/
+
+typedef struct static_codebook{
+ long dim; /* codebook dimensions (elements per vector) */
+ long entries; /* codebook entries */
+ long *lengthlist; /* codeword lengths in bits */
+
+ /* mapping ***************************************************************/
+ int maptype; /* 0=none
+ 1=implicitly populated values from map column
+ 2=listed arbitrary values */
+
+ /* The below does a linear, single monotonic sequence mapping. */
+ long q_min; /* packed 32 bit float; quant value 0 maps to minval */
+ long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */
+ int q_quant; /* bits: 0 < quant <= 16 */
+ int q_sequencep; /* bitflag */
+
+ long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map
+ map == 2: list of dim*entries quantized entry vals
+ */
+
+ /* encode helpers ********************************************************/
+ struct encode_aux_nearestmatch *nearest_tree;
+ struct encode_aux_threshmatch *thresh_tree;
+ struct encode_aux_pigeonhole *pigeon_tree;
+
+ int allocedp;
+} static_codebook;
+
+/* this structures an arbitrary trained book to quickly find the
+ nearest cell match */
+typedef struct encode_aux_nearestmatch{
+ /* pre-calculated partitioning tree */
+ long *ptr0;
+ long *ptr1;
+
+ long *p; /* decision points (each is an entry) */
+ long *q; /* decision points (each is an entry) */
+ long aux; /* number of tree entries */
+ long alloc;
+} encode_aux_nearestmatch;
+
+/* assumes a maptype of 1; encode side only, so that's OK */
+typedef struct encode_aux_threshmatch{
+ float *quantthresh;
+ long *quantmap;
+ int quantvals;
+ int threshvals;
+} encode_aux_threshmatch;
+
+typedef struct encode_aux_pigeonhole{
+ float min;
+ float del;
+
+ int mapentries;
+ int quantvals;
+ long *pigeonmap;
+
+ long fittotal;
+ long *fitlist;
+ long *fitmap;
+ long *fitlength;
+} encode_aux_pigeonhole;
+
+typedef struct decode_aux{
+ long *tab;
+ int *tabl;
+ int tabn;
+
+ long *ptr0;
+ long *ptr1;
+ long aux; /* number of tree entries */
+} decode_aux;
+
+typedef struct codebook{
+ long dim; /* codebook dimensions (elements per vector) */
+ long entries; /* codebook entries */
+ const static_codebook *c;
+
+ float *valuelist; /* list of dim*entries actual entry values */
+ long *codelist; /* list of bitstream codewords for each entry */
+ struct decode_aux *decode_tree;
+
+} codebook;
+
+extern void vorbis_staticbook_clear(static_codebook *b);
+extern void vorbis_staticbook_destroy(static_codebook *b);
+extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
+extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
+extern void vorbis_book_clear(codebook *b);
+
+extern float *_book_unquantize(const static_codebook *b);
+extern float *_book_logdist(const static_codebook *b,float *vals);
+extern float _float32_unpack(long val);
+extern long _float32_pack(float val);
+extern int _best(codebook *book, float *a, int step);
+extern int _ilog(unsigned int v);
+extern long _book_maptype1_quantvals(const static_codebook *b);
+
+extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
+extern long vorbis_book_codeword(codebook *book,int entry);
+extern long vorbis_book_codelen(codebook *book,int entry);
+
+
+
+extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
+extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
+
+extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
+extern int vorbis_book_errorv(codebook *book, float *a);
+extern int vorbis_book_encodev(codebook *book, int best,float *a,
+ oggpack_buffer *b);
+extern int vorbis_book_encodevs(codebook *book, float *a, oggpack_buffer *b,
+ int step,int stagetype);
+
+extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
+extern long vorbis_book_decodevs(codebook *book, float *a, oggpack_buffer *b,
+ int step,int stagetype);
+extern long s_vorbis_book_decodevs(codebook *book, float *a, oggpack_buffer *b,
+ int step,int stagetype);
+
+
+
+#endif
diff --git a/lib/codec_internal.h b/lib/codec_internal.h
new file mode 100644
index 00000000..842a1dd6
--- /dev/null
+++ b/lib/codec_internal.h
@@ -0,0 +1,112 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: libvorbis codec headers
+ last mod: $Id: codec_internal.h,v 1.1.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_CODECI_H_
+#define _V_CODECI_H_
+
+#include "envelope.h"
+#include "codebook.h"
+#include "psy.h"
+
+typedef void vorbis_look_time;
+typedef void vorbis_look_mapping;
+typedef void vorbis_look_floor;
+typedef void vorbis_look_residue;
+typedef void vorbis_look_transform;
+
+typedef struct backend_lookup_state {
+ /* local lookup storage */
+ envelope_lookup *ve; /* envelope lookup */
+ float **window[2][2][2]; /* block, leadin, leadout, type */
+ vorbis_look_transform **transform[2]; /* block, type */
+ codebook *fullbooks;
+
+ /* backend lookups are tied to the mode, not the backend or naked mapping */
+ int modebits;
+ vorbis_look_mapping **mode;
+
+ /* local storage, only used on the encoding side. This way the
+ application does not need to worry about freeing some packets'
+ memory and not others'; packet storage is always tracked.
+ Cleared next call to a _dsp_ function */
+ unsigned char *header;
+ unsigned char *header1;
+ unsigned char *header2;
+
+} backend_lookup_state;
+
+/* mode ************************************************************/
+typedef struct {
+ int blockflag;
+ int windowtype;
+ int transformtype;
+ int mapping;
+} vorbis_info_mode;
+
+typedef void vorbis_info_time;
+typedef void vorbis_info_floor;
+typedef void vorbis_info_residue;
+typedef void vorbis_info_mapping;
+
+/* vorbis_info contains all the setup information specific to the
+ specific compression/decompression mode in progress (eg,
+ psychoacoustic settings, channel setup, options, codebook
+ etc).
+*********************************************************************/
+
+typedef struct codec_setup_info {
+
+ /* Vorbis supports only short and long blocks, but allows the
+ encoder to choose the sizes */
+
+ long blocksizes[2];
+
+ /* modes are the primary means of supporting on-the-fly different
+ blocksizes, different channel mappings (LR or mid-side),
+ different residue backends, etc. Each mode consists of a
+ blocksize flag and a mapping (along with the mapping setup */
+
+ int modes;
+ int maps;
+ int times;
+ int floors;
+ int residues;
+ int books;
+ int psys; /* encode only */
+
+ vorbis_info_mode *mode_param[64];
+ int map_type[64];
+ vorbis_info_mapping *map_param[64];
+ int time_type[64];
+ vorbis_info_time *time_param[64];
+ int floor_type[64];
+ vorbis_info_floor *floor_param[64];
+ int residue_type[64];
+ vorbis_info_residue *residue_param[64];
+ static_codebook *book_param[256];
+ vorbis_info_psy *psy_param[64]; /* encode only */
+
+ /* for block long/sort tuning; encode only */
+ int envelopesa;
+ float preecho_thresh;
+ float preecho_clamp;
+ float preecho_minenergy;
+
+} codec_setup_info;
+
+#endif
diff --git a/lib/envelope.c b/lib/envelope.c
new file mode 100644
index 00000000..58e234fd
--- /dev/null
+++ b/lib/envelope.c
@@ -0,0 +1,218 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: PCM data envelope analysis and manipulation
+ last mod: $Id: envelope.c,v 1.23.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ Preecho calculation.
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+
+#include "os.h"
+#include "scales.h"
+#include "envelope.h"
+#include "misc.h"
+
+/* We use a Chebyshev bandbass for the preecho trigger bandpass; it's
+ close enough for sample rates 32000-48000 Hz (corner frequencies at
+ 6k/14k assuming sample rate of 44.1kHz) */
+
+/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher
+ Command line: /www/usr/fisher/helpers/mkfilter -Ch \
+ -6.0000000000e+00 -Bp -o 5 -a 1.3605442177e-01 3.1746031746e-01 -l */
+
+#if 0
+static int cheb_bandpass_stages=10;
+static float cheb_bandpass_gain=5.589612458e+01;
+static float cheb_bandpass_B[]={-1.,0.,5.,0.,-10.,0.,10.,0.,-5.,0.,1};
+static float cheb_bandpass_A[]={
+ -0.1917409386,
+ 0.0078657069,
+ -0.7126903444,
+ 0.0266343467,
+ -1.4047174730,
+ 0.0466964232,
+ -1.9032773429,
+ 0.0451493360,
+ -1.4471447397,
+ 0.0303413711};
+#endif
+
+static int cheb_highpass_stages=10;
+static float cheb_highpass_gain= 5.291963434e+01;
+/* z^-stage, z^-stage+1... */
+static float cheb_highpass_B[]={1,-10,45,-120,210,-252,210,-120,45,-10,1};
+static float cheb_highpass_A[]={
+ -0.1247628029,
+ 0.1334086523,
+ -0.3997715614,
+ 0.3213011089,
+ -1.1131924119,
+ 1.7692446626,
+ -3.6241199038,
+ 4.1950871291,
+ -4.2771757867,
+ 2.3920318913};
+
+void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi){
+ codec_setup_info *ci=vi->codec_setup;
+ int ch=vi->channels;
+ int window=ci->envelopesa;
+ int i;
+ e->winlength=window;
+ e->minenergy=fromdB(ci->preecho_minenergy);
+ e->iir=calloc(ch,sizeof(IIR_state));
+ e->filtered=calloc(ch,sizeof(float *));
+ e->ch=ch;
+ e->storage=128;
+ for(i=0;i<ch;i++){
+ IIR_init(e->iir+i,cheb_highpass_stages,cheb_highpass_gain,
+ cheb_highpass_A,cheb_highpass_B);
+ e->filtered[i]=calloc(e->storage,sizeof(float));
+ }
+
+ drft_init(&e->drft,window);
+ e->window=malloc(e->winlength*sizeof(float));
+ /* We just use a straight sin(x) window for this */
+ for(i=0;i<e->winlength;i++)
+ e->window[i]=sin((i+.5)/e->winlength*M_PI);
+}
+
+void _ve_envelope_clear(envelope_lookup *e){
+ int i;
+ for(i=0;i<e->ch;i++){
+ IIR_clear((e->iir+i));
+ free(e->filtered[i]);
+ }
+ drft_clear(&e->drft);
+ free(e->window);
+ free(e->filtered);
+ memset(e,0,sizeof(envelope_lookup));
+}
+
+static float _ve_deltai(envelope_lookup *ve,IIR_state *iir,
+ float *pre,float *post){
+ long n2=ve->winlength*2;
+ long n=ve->winlength;
+
+ float *workA=alloca(sizeof(float)*n2),A=0.;
+ float *workB=alloca(sizeof(float)*n2),B=0.;
+ long i;
+
+ /*_analysis_output("A",granulepos,pre,n,0,0);
+ _analysis_output("B",granulepos,post,n,0,0);*/
+
+ for(i=0;i<n;i++){
+ workA[i]=pre[i]*ve->window[i];
+ workB[i]=post[i]*ve->window[i];
+ }
+
+ /*_analysis_output("Awin",granulepos,workA,n,0,0);
+ _analysis_output("Bwin",granulepos,workB,n,0,0);*/
+
+ drft_forward(&ve->drft,workA);
+ drft_forward(&ve->drft,workB);
+
+ /* we want to have a 'minimum bar' for energy, else we're just
+ basing blocks on quantization noise that outweighs the signal
+ itself (for low power signals) */
+ {
+ float min=ve->minenergy;
+ for(i=0;i<n;i++){
+ if(fabs(workA[i])<min)workA[i]=min;
+ if(fabs(workB[i])<min)workB[i]=min;
+ }
+ }
+
+ /*_analysis_output("Afft",granulepos,workA,n,0,0);
+ _analysis_output("Bfft",granulepos,workB,n,0,0);*/
+
+ for(i=0;i<n;i++){
+ A+=workA[i]*workA[i];
+ B+=workB[i]*workB[i];
+ }
+
+ A=todB(A);
+ B=todB(B);
+
+ return(B-A);
+}
+
+long _ve_envelope_search(vorbis_dsp_state *v,long searchpoint){
+ vorbis_info *vi=v->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve;
+ long i,j;
+
+ /* make sure we have enough storage to match the PCM */
+ if(v->pcm_storage>ve->storage){
+ ve->storage=v->pcm_storage;
+ for(i=0;i<ve->ch;i++)
+ ve->filtered[i]=realloc(ve->filtered[i],ve->storage*sizeof(float));
+ }
+
+ /* catch up the highpass to match the pcm */
+ for(i=0;i<ve->ch;i++){
+ float *filtered=ve->filtered[i];
+ float *pcm=v->pcm[i];
+ IIR_state *iir=ve->iir+i;
+
+ for(j=ve->current;j<v->pcm_current;j++)
+ filtered[j]=IIR_filter(iir,pcm[j]);
+ }
+ ve->current=v->pcm_current;
+
+ /* Now search through our cached highpass data for breaking points */
+ /* starting point */
+ if(v->W)
+ j=v->centerW+ci->blocksizes[1]/4-ci->blocksizes[0]/4;
+ else
+ j=v->centerW;
+
+ while(j+ve->winlength<=v->pcm_current){
+ for(i=0;i<ve->ch;i++){
+ float *filtered=ve->filtered[i]+j;
+ IIR_state *iir=ve->iir+i;
+ float m=_ve_deltai(ve,iir,filtered-ve->winlength,filtered);
+
+ if(m>ci->preecho_thresh){
+ /*granulepos++;*/
+ return(0);
+ }
+ /*granulepos++;*/
+ }
+
+ j+=ci->blocksizes[0]/2;
+ if(j>=searchpoint)return(1);
+ }
+
+ return(-1);
+}
+
+void _ve_envelope_shift(envelope_lookup *e,long shift){
+ int i;
+ for(i=0;i<e->ch;i++)
+ memmove(e->filtered[i],e->filtered[i]+shift,(e->current-shift)*
+ sizeof(float));
+ e->current-=shift;
+}
+
+
diff --git a/lib/floor0.c b/lib/floor0.c
new file mode 100644
index 00000000..b5d308ab
--- /dev/null
+++ b/lib/floor0.c
@@ -0,0 +1,400 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: floor backend 0 implementation
+ last mod: $Id: floor0.c,v 1.25.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "codebook.h"
+#include "scales.h"
+#include "misc.h"
+#include "os.h"
+
+#include "misc.h"
+#include <stdio.h>
+
+typedef struct {
+ long n;
+ int ln;
+ int m;
+ int *linearmap;
+
+ vorbis_info_floor0 *vi;
+ lpc_lookup lpclook;
+ float *lsp_look;
+
+} vorbis_look_floor0;
+
+/* infrastructure for finding fit */
+static long _f0_fit(codebook *book,
+ float *orig,
+ float *workfit,
+ int cursor){
+ int dim=book->dim;
+ float norm,base=0.;
+ int i,best=0;
+ float *lsp=workfit+cursor;
+
+ if(cursor)base=workfit[cursor-1];
+ norm=orig[cursor+dim-1]-base;
+
+ for(i=0;i<dim;i++)
+ lsp[i]=(orig[i+cursor]-base);
+ best=_best(book,lsp,1);
+
+ memcpy(lsp,book->valuelist+best*dim,dim*sizeof(float));
+ for(i=0;i<dim;i++)
+ lsp[i]+=base;
+ return(best);
+}
+
+/***********************************************/
+
+static vorbis_info_floor *floor0_copy_info (vorbis_info_floor *i){
+ vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+ vorbis_info_floor0 *ret=malloc(sizeof(vorbis_info_floor0));
+ memcpy(ret,info,sizeof(vorbis_info_floor0));
+ return(ret);
+}
+
+static void floor0_free_info(vorbis_info_floor *i){
+ if(i){
+ memset(i,0,sizeof(vorbis_info_floor0));
+ free(i);
+ }
+}
+
+static void floor0_free_look(vorbis_look_floor *i){
+ vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+ if(i){
+ if(look->linearmap)free(look->linearmap);
+ if(look->lsp_look)free(look->lsp_look);
+ lpc_clear(&look->lpclook);
+ memset(look,0,sizeof(vorbis_look_floor0));
+ free(look);
+ }
+}
+
+static void floor0_pack (vorbis_info_floor *i,oggpack_buffer *opb){
+ vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+ int j;
+ oggpack_write(opb,info->order,8);
+ oggpack_write(opb,info->rate,16);
+ oggpack_write(opb,info->barkmap,16);
+ oggpack_write(opb,info->ampbits,6);
+ oggpack_write(opb,info->ampdB,8);
+ oggpack_write(opb,info->numbooks-1,4);
+ for(j=0;j<info->numbooks;j++)
+ oggpack_write(opb,info->books[j],8);
+}
+
+static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
+ codec_setup_info *ci=vi->codec_setup;
+ int j;
+
+ vorbis_info_floor0 *info=malloc(sizeof(vorbis_info_floor0));
+ info->order=oggpack_read(opb,8);
+ info->rate=oggpack_read(opb,16);
+ info->barkmap=oggpack_read(opb,16);
+ info->ampbits=oggpack_read(opb,6);
+ info->ampdB=oggpack_read(opb,8);
+ info->numbooks=oggpack_read(opb,4)+1;
+
+ if(info->order<1)goto err_out;
+ if(info->rate<1)goto err_out;
+ if(info->barkmap<1)goto err_out;
+ if(info->numbooks<1)goto err_out;
+
+ for(j=0;j<info->numbooks;j++){
+ info->books[j]=oggpack_read(opb,8);
+ if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
+ }
+ return(info);
+
+ err_out:
+ floor0_free_info(info);
+ return(NULL);
+}
+
+/* initialize Bark scale and normalization lookups. We could do this
+ with static tables, but Vorbis allows a number of possible
+ combinations, so it's best to do it computationally.
+
+ The below is authoritative in terms of defining scale mapping.
+ Note that the scale depends on the sampling rate as well as the
+ linear block and mapping sizes */
+
+static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
+ vorbis_info_floor *i){
+ int j;
+ float scale;
+ vorbis_info *vi=vd->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+ vorbis_look_floor0 *look=calloc(1,sizeof(vorbis_look_floor0));
+ look->m=info->order;
+ look->n=ci->blocksizes[mi->blockflag]/2;
+ look->ln=info->barkmap;
+ look->vi=info;
+
+ if(vd->analysisp)
+ lpc_init(&look->lpclook,look->ln,look->m);
+
+ /* we choose a scaling constant so that:
+ floor(bark(rate/2-1)*C)=mapped-1
+ floor(bark(rate/2)*C)=mapped */
+ scale=look->ln/toBARK(info->rate/2.);
+
+ /* the mapping from a linear scale to a smaller bark scale is
+ straightforward. We do *not* make sure that the linear mapping
+ does not skip bark-scale bins; the decoder simply skips them and
+ the encoder may do what it wishes in filling them. They're
+ necessary in some mapping combinations to keep the scale spacing
+ accurate */
+ look->linearmap=malloc((look->n+1)*sizeof(int));
+ for(j=0;j<look->n;j++){
+ int val=floor( toBARK((info->rate/2.)/look->n*j)
+ *scale); /* bark numbers represent band edges */
+ if(val>look->ln)val=look->ln; /* guard against the approximation */
+ look->linearmap[j]=val;
+ }
+ look->linearmap[j]=-1;
+
+ look->lsp_look=malloc(look->ln*sizeof(float));
+ for(j=0;j<look->ln;j++)
+ look->lsp_look[j]=2*cos(M_PI/look->ln*j);
+
+ return look;
+}
+
+/* less efficient than the decode side (written for clarity). We're
+ not bottlenecked here anyway */
+
+float _curve_to_lpc(float *curve,float *lpc,
+ vorbis_look_floor0 *l){
+ /* map the input curve to a bark-scale curve for encoding */
+
+ int mapped=l->ln;
+ float *work=alloca(sizeof(float)*mapped);
+ int i,j,last=0;
+ int bark=0;
+
+ memset(work,0,sizeof(float)*mapped);
+
+ /* Only the decode side is behavior-specced; for now in the encoder,
+ we select the maximum value of each band as representative (this
+ helps make sure peaks don't go out of range. In error terms,
+ selecting min would make more sense, but the codebook is trained
+ numerically, so we don't actually lose. We'd still want to
+ use the original curve for error and noise estimation */
+
+ for(i=0;i<l->n;i++){
+ bark=l->linearmap[i];
+ if(work[bark]<curve[i])work[bark]=curve[i];
+ if(bark>last+1){
+ /* If the bark scale is climbing rapidly, some bins may end up
+ going unused. This isn't a waste actually; it keeps the
+ scale resolution even so that the LPC generator has an easy
+ time. However, if we leave the bins empty we lose energy.
+ So, fill 'em in. The decoder does not do anything with he
+ unused bins, so we can fill them anyway we like to end up
+ with a better spectral curve */
+
+ /* we'll always have a bin zero, so we don't need to guard init */
+ long span=bark-last;
+ for(j=1;j<span;j++){
+ float del=(float)j/span;
+ work[j+last]=work[bark]*del+work[last]*(1.-del);
+ }
+ }
+ last=bark;
+ }
+
+ /* If we're over-ranged to avoid edge effects, fill in the end of spectrum gap */
+ for(i=bark+1;i<mapped;i++)
+ work[i]=work[i-1];
+
+ return vorbis_lpc_from_curve(work,lpc,&(l->lpclook));
+}
+
+/* generate the whole freq response curve of an LSP IIR filter */
+static int floor0_forward(vorbis_block *vb,vorbis_look_floor *i,
+ float *in,float *out){
+ long j;
+ vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+ vorbis_info_floor0 *info=look->vi;
+ float *work=alloca((look->ln+look->n)*sizeof(float));
+ float amp;
+ long bits=0;
+
+#ifdef TRAIN_LSP
+ FILE *of;
+ FILE *ef;
+ char buffer[80];
+
+#if 1
+ sprintf(buffer,"lsp0coeff_%d.vqd",vb->mode);
+ of=fopen(buffer,"a");
+#endif
+
+ sprintf(buffer,"lsp0ent_%d.vqd",vb->mode);
+ ef=fopen(buffer,"a");
+#endif
+
+ /* our floor comes in on a linear scale; go to a [-Inf...0] dB
+ scale. The curve has to be positive, so we offset it. */
+
+ for(j=0;j<look->n;j++)
+ work[j]=todB(in[j])+info->ampdB;
+
+ /* use 'out' as temp storage */
+ /* Convert our floor to a set of lpc coefficients */
+ amp=sqrt(_curve_to_lpc(work,out,look));
+
+ /* amp is in the range (0. to ampdB]. Encode that range using
+ ampbits bits */
+
+ {
+ long maxval=(1L<<info->ampbits)-1;
+
+ long val=rint(amp/info->ampdB*maxval);
+
+ if(val<0)val=0; /* likely */
+ if(val>maxval)val=maxval; /* not bloody likely */
+
+ oggpack_write(&vb->opb,val,info->ampbits);
+ if(val>0)
+ amp=(float)val/maxval*info->ampdB;
+ else
+ amp=0;
+ }
+
+ if(amp>0){
+
+ /* the spec supports using one of a number of codebooks. Right
+ now, encode using this lib supports only one */
+ backend_lookup_state *be=vb->vd->backend_state;
+ codebook *b=be->fullbooks+info->books[0];
+ oggpack_write(&vb->opb,0,_ilog(info->numbooks));
+
+ /* LSP <-> LPC is orthogonal and LSP quantizes more stably */
+ vorbis_lpc_to_lsp(out,out,look->m);
+
+#if 1
+#ifdef TRAIN_LSP
+ {
+ float last=0.;
+ for(j=0;j<look->m;j++){
+ fprintf(of,"%.12g, ",out[j]-last);
+ last=out[j];
+ }
+ }
+ fprintf(of,"\n");
+ fclose(of);
+#endif
+#endif
+
+ /* code the spectral envelope, and keep track of the actual
+ quantized values; we don't want creeping error as each block is
+ nailed to the last quantized value of the previous block. */
+
+ for(j=0;j<look->m;j+=b->dim){
+ int entry=_f0_fit(b,out,work,j);
+ bits+=vorbis_book_encode(b,entry,&vb->opb);
+
+#ifdef TRAIN_LSP
+ fprintf(ef,"%d,\n",entry);
+#endif
+
+ }
+
+#ifdef ANALYSIS
+ {
+ float last=0;
+ for(j=0;j<look->m;j++){
+ out[j]=work[j]-last;
+ last=work[j];
+ }
+ }
+
+#endif
+
+#ifdef TRAIN_LSP
+ fclose(ef);
+#endif
+
+ /* take the coefficients back to a spectral envelope curve */
+ vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln,
+ work,look->m,amp,info->ampdB);
+ return(1);
+ }
+
+ memset(out,0,sizeof(float)*look->n);
+ return(0);
+}
+
+static int floor0_inverse(vorbis_block *vb,vorbis_look_floor *i,float *out){
+ vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+ vorbis_info_floor0 *info=look->vi;
+ int j,k;
+
+ int ampraw=oggpack_read(&vb->opb,info->ampbits);
+ if(ampraw>0){ /* also handles the -1 out of data case */
+ long maxval=(1<<info->ampbits)-1;
+ float amp=(float)ampraw/maxval*info->ampdB;
+ int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
+ float *lsp=alloca(sizeof(float)*look->m);
+
+ if(booknum!=-1){
+ backend_lookup_state *be=vb->vd->backend_state;
+ codebook *b=be->fullbooks+info->books[booknum];
+ float last=0.;
+
+ memset(out,0,sizeof(double)*look->m);
+
+ for(j=0;j<look->m;j+=b->dim)
+ if(vorbis_book_decodevs(b,lsp+j,&vb->opb,1,-1)==-1)goto eop;
+ for(j=0;j<look->m;){
+ for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
+ last=lsp[j-1];
+ }
+
+ /* take the coefficients back to a spectral envelope curve */
+ vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln,
+ lsp,look->m,amp,info->ampdB);
+ return(1);
+ }
+ }
+
+ eop:
+ memset(out,0,sizeof(float)*look->n);
+ return(0);
+}
+
+/* export hooks */
+vorbis_func_floor floor0_exportbundle={
+ &floor0_pack,&floor0_unpack,&floor0_look,&floor0_copy_info,&floor0_free_info,
+ &floor0_free_look,&floor0_forward,&floor0_inverse
+};
+
+
diff --git a/lib/info.c b/lib/info.c
index 0a2d4516..4d9f650e 100644
--- a/lib/info.c
+++ b/lib/info.c
@@ -12,7 +12,7 @@
********************************************************************
function: maintain the info structure, info <-> header packets
- last mod: $Id: info.c,v 1.31.2.2 2000/10/31 00:10:37 xiphmont Exp $
+ last mod: $Id: info.c,v 1.31.2.3 2000/11/03 10:05:47 xiphmont Exp $
********************************************************************/
@@ -24,9 +24,9 @@
#include <ctype.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
-#include "vorbis/backends.h"
-#include "sharedbook.h"
-#include "bookinternal.h"
+#include "backends.h"
+#include "codec_internal.h"
+#include "codebook.h"
#include "registry.h"
#include "window.h"
#include "psy.h"
@@ -141,54 +141,52 @@ void vorbis_comment_clear(vorbis_comment *vc){
/* used by synthesis, which has a full, alloced vi */
void vorbis_info_init(vorbis_info *vi){
memset(vi,0,sizeof(vorbis_info));
+ vi->codec_setup=calloc(1,sizeof(codec_setup_info));
}
void vorbis_info_clear(vorbis_info *vi){
+ codec_setup_info *ci=vi->codec_setup;
int i;
- for(i=0;i<vi->modes;i++)
- if(vi->mode_param[i])free(vi->mode_param[i]);
- /*if(vi->mode_param)free(vi->mode_param);*/
-
- for(i=0;i<vi->maps;i++) /* unpack does the range checking */
- _mapping_P[vi->map_type[i]]->free_info(vi->map_param[i]);
- /*if(vi->map_param)free(vi->map_param);*/
-
- for(i=0;i<vi->times;i++) /* unpack does the range checking */
- _time_P[vi->time_type[i]]->free_info(vi->time_param[i]);
- /*if(vi->time_param)free(vi->time_param);*/
-
- for(i=0;i<vi->floors;i++) /* unpack does the range checking */
- _floor_P[vi->floor_type[i]]->free_info(vi->floor_param[i]);
- /*if(vi->floor_param)free(vi->floor_param);*/
+ if(ci){
+
+ for(i=0;i<ci->modes;i++)
+ if(ci->mode_param[i])free(ci->mode_param[i]);
+
+ for(i=0;i<ci->maps;i++) /* unpack does the range checking */
+ _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
+
+ for(i=0;i<ci->times;i++) /* unpack does the range checking */
+ _time_P[ci->time_type[i]]->free_info(ci->time_param[i]);
+
+ for(i=0;i<ci->floors;i++) /* unpack does the range checking */
+ _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
- for(i=0;i<vi->residues;i++) /* unpack does the range checking */
- _residue_P[vi->residue_type[i]]->free_info(vi->residue_param[i]);
- /*if(vi->residue_param)free(vi->residue_param);*/
-
- /* the static codebooks *are* freed if you call info_clear, because
- decode side does alloc a 'static' codebook. Calling clear on the
- full codebook does not clear the static codebook (that's our
- responsibility) */
- for(i=0;i<vi->books;i++){
- /* just in case the decoder pre-cleared to save space */
- if(vi->book_param[i]){
- vorbis_staticbook_clear(vi->book_param[i]);
- free(vi->book_param[i]);
+ for(i=0;i<ci->residues;i++) /* unpack does the range checking */
+ _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
+
+ for(i=0;i<ci->books;i++){
+ if(ci->book_param[i]){
+ /* knows if the book was not alloced */
+ vorbis_staticbook_destroy(ci->book_param[i]);
+ }
}
+
+ for(i=0;i<ci->psys;i++)
+ _vi_psy_free(ci->psy_param[i]);
+
+ free(ci);
}
- /*if(vi->book_param)free(vi->book_param);*/
- for(i=0;i<vi->psys;i++)
- _vi_psy_free(vi->psy_param[i]);
- /*if(vi->psy_param)free(vi->psy_param);*/
-
memset(vi,0,sizeof(vorbis_info));
}
/* Header packing/unpacking ********************************************/
static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
+ codec_setup_info *ci=vi->codec_setup;
+ if(!ci)return(OV_EFAULT);
+
vi->version=oggpack_read(opb,32);
if(vi->version!=0)return(OV_EVERSION);
@@ -199,13 +197,13 @@ static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
vi->bitrate_nominal=oggpack_read(opb,32);
vi->bitrate_lower=oggpack_read(opb,32);
- vi->blocksizes[0]=1<<oggpack_read(opb,4);
- vi->blocksizes[1]=1<<oggpack_read(opb,4);
+ ci->blocksizes[0]=1<<oggpack_read(opb,4);
+ ci->blocksizes[1]=1<<oggpack_read(opb,4);
if(vi->rate<1)goto err_out;
if(vi->channels<1)goto err_out;
- if(vi->blocksizes[0]<8)goto err_out;
- if(vi->blocksizes[1]<vi->blocksizes[0])goto err_out;
+ if(ci->blocksizes[0]<8)goto err_out;
+ if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
@@ -244,73 +242,75 @@ static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){
/* all of the real encoding details are here. The modes, books,
everything */
static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){
+ codec_setup_info *ci=vi->codec_setup;
int i;
+ if(!ci)return(OV_EFAULT);
/* codebooks */
- vi->books=oggpack_read(opb,8)+1;
- /*vi->book_param=calloc(vi->books,sizeof(static_codebook *));*/
- for(i=0;i<vi->books;i++){
- vi->book_param[i]=calloc(1,sizeof(static_codebook));
- if(vorbis_staticbook_unpack(opb,vi->book_param[i]))goto err_out;
+ ci->books=oggpack_read(opb,8)+1;
+ /*ci->book_param=calloc(ci->books,sizeof(static_codebook *));*/
+ for(i=0;i<ci->books;i++){
+ ci->book_param[i]=calloc(1,sizeof(static_codebook));
+ if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
}
/* time backend settings */
- vi->times=oggpack_read(opb,6)+1;
- /*vi->time_type=malloc(vi->times*sizeof(int));*/
- /*vi->time_param=calloc(vi->times,sizeof(void *));*/
- for(i=0;i<vi->times;i++){
- vi->time_type[i]=oggpack_read(opb,16);
- if(vi->time_type[i]<0 || vi->time_type[i]>=VI_TIMEB)goto err_out;
- vi->time_param[i]=_time_P[vi->time_type[i]]->unpack(vi,opb);
- if(!vi->time_param[i])goto err_out;
+ ci->times=oggpack_read(opb,6)+1;
+ /*ci->time_type=malloc(ci->times*sizeof(int));*/
+ /*ci->time_param=calloc(ci->times,sizeof(void *));*/
+ for(i=0;i<ci->times;i++){
+ ci->time_type[i]=oggpack_read(opb,16);
+ if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out;
+ ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb);
+ if(!ci->time_param[i])goto err_out;
}
/* floor backend settings */
- vi->floors=oggpack_read(opb,6)+1;
- /*vi->floor_type=malloc(vi->floors*sizeof(int));*/
- /*vi->floor_param=calloc(vi->floors,sizeof(void *));*/
- for(i=0;i<vi->floors;i++){
- vi->floor_type[i]=oggpack_read(opb,16);
- if(vi->floor_type[i]<0 || vi->floor_type[i]>=VI_FLOORB)goto err_out;
- vi->floor_param[i]=_floor_P[vi->floor_type[i]]->unpack(vi,opb);
- if(!vi->floor_param[i])goto err_out;
+ ci->floors=oggpack_read(opb,6)+1;
+ /*ci->floor_type=malloc(ci->floors*sizeof(int));*/
+ /*ci->floor_param=calloc(ci->floors,sizeof(void *));*/
+ for(i=0;i<ci->floors;i++){
+ ci->floor_type[i]=oggpack_read(opb,16);
+ if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out;
+ ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb);
+ if(!ci->floor_param[i])goto err_out;
}
/* residue backend settings */
- vi->residues=oggpack_read(opb,6)+1;
- /*vi->residue_type=malloc(vi->residues*sizeof(int));*/
- /*vi->residue_param=calloc(vi->residues,sizeof(void *));*/
- for(i=0;i<vi->residues;i++){
- vi->residue_type[i]=oggpack_read(opb,16);
- if(vi->residue_type[i]<0 || vi->residue_type[i]>=VI_RESB)goto err_out;
- vi->residue_param[i]=_residue_P[vi->residue_type[i]]->unpack(vi,opb);
- if(!vi->residue_param[i])goto err_out;
+ ci->residues=oggpack_read(opb,6)+1;
+ /*ci->residue_type=malloc(ci->residues*sizeof(int));*/
+ /*ci->residue_param=calloc(ci->residues,sizeof(void *));*/
+ for(i=0;i<ci->residues;i++){
+ ci->residue_type[i]=oggpack_read(opb,16);
+ if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out;
+ ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb);
+ if(!ci->residue_param[i])goto err_out;
}
/* map backend settings */
- vi->maps=oggpack_read(opb,6)+1;
- /*vi->map_type=malloc(vi->maps*sizeof(int));*/
- /*vi->map_param=calloc(vi->maps,sizeof(void *));*/
- for(i=0;i<vi->maps;i++){
- vi->map_type[i]=oggpack_read(opb,16);
- if(vi->map_type[i]<0 || vi->map_type[i]>=VI_MAPB)goto err_out;
- vi->map_param[i]=_mapping_P[vi->map_type[i]]->unpack(vi,opb);
- if(!vi->map_param[i])goto err_out;
+ ci->maps=oggpack_read(opb,6)+1;
+ /*ci->map_type=malloc(ci->maps*sizeof(int));*/
+ /*ci->map_param=calloc(ci->maps,sizeof(void *));*/
+ for(i=0;i<ci->maps;i++){
+ ci->map_type[i]=oggpack_read(opb,16);
+ if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out;
+ ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb);
+ if(!ci->map_param[i])goto err_out;
}
/* mode settings */
- vi->modes=oggpack_read(opb,6)+1;
+ ci->modes=oggpack_read(opb,6)+1;
/*vi->mode_param=calloc(vi->modes,sizeof(void *));*/
- for(i=0;i<vi->modes;i++){
- vi->mode_param[i]=calloc(1,sizeof(vorbis_info_mode));
- vi->mode_param[i]->blockflag=oggpack_read(opb,1);
- vi->mode_param[i]->windowtype=oggpack_read(opb,16);
- vi->mode_param[i]->transformtype=oggpack_read(opb,16);
- vi->mode_param[i]->mapping=oggpack_read(opb,8);
-
- if(vi->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
- if(vi->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
- if(vi->mode_param[i]->mapping>=vi->maps)goto err_out;
+ for(i=0;i<ci->modes;i++){
+ ci->mode_param[i]=calloc(1,sizeof(vorbis_info_mode));
+ ci->mode_param[i]->blockflag=oggpack_read(opb,1);
+ ci->mode_param[i]->windowtype=oggpack_read(opb,16);
+ ci->mode_param[i]->transformtype=oggpack_read(opb,16);
+ ci->mode_param[i]->mapping=oggpack_read(opb,8);
+
+ if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
+ if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
+ if(ci->mode_param[i]->mapping>=ci->maps)goto err_out;
}
if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
@@ -385,6 +385,9 @@ int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op)
/* pack side **********************************************************/
static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
+ codec_setup_info *ci=vi->codec_setup;
+ if(!ci)return(OV_EFAULT);
+
/* preamble */
oggpack_write(opb,0x01,8);
_v_writestring(opb,"vorbis");
@@ -398,8 +401,8 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
oggpack_write(opb,vi->bitrate_nominal,32);
oggpack_write(opb,vi->bitrate_lower,32);
- oggpack_write(opb,ilog2(vi->blocksizes[0]),4);
- oggpack_write(opb,ilog2(vi->blocksizes[1]),4);
+ oggpack_write(opb,ilog2(ci->blocksizes[0]),4);
+ oggpack_write(opb,ilog2(ci->blocksizes[1]),4);
oggpack_write(opb,1,1);
return(0);
@@ -436,50 +439,53 @@ static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
}
static int _vorbis_pack_books(oggpack_buffer *opb,vorbis_info *vi){
+ codec_setup_info *ci=vi->codec_setup;
int i;
+ if(!ci)return(OV_EFAULT);
+
oggpack_write(opb,0x05,8);
_v_writestring(opb,"vorbis");
/* books */
- oggpack_write(opb,vi->books-1,8);
- for(i=0;i<vi->books;i++)
- if(vorbis_staticbook_pack(vi->book_param[i],opb))goto err_out;
+ oggpack_write(opb,ci->books-1,8);
+ for(i=0;i<ci->books;i++)
+ if(vorbis_staticbook_pack(ci->book_param[i],opb))goto err_out;
/* times */
- oggpack_write(opb,vi->times-1,6);
- for(i=0;i<vi->times;i++){
- oggpack_write(opb,vi->time_type[i],16);
- _time_P[vi->time_type[i]]->pack(vi->time_param[i],opb);
+ oggpack_write(opb,ci->times-1,6);
+ for(i=0;i<ci->times;i++){
+ oggpack_write(opb,ci->time_type[i],16);
+ _time_P[ci->time_type[i]]->pack(ci->time_param[i],opb);
}
/* floors */
- oggpack_write(opb,vi->floors-1,6);
- for(i=0;i<vi->floors;i++){
- oggpack_write(opb,vi->floor_type[i],16);
- _floor_P[vi->floor_type[i]]->pack(vi->floor_param[i],opb);
+ oggpack_write(opb,ci->floors-1,6);
+ for(i=0;i<ci->floors;i++){
+ oggpack_write(opb,ci->floor_type[i],16);
+ _floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb);
}
/* residues */
- oggpack_write(opb,vi->residues-1,6);
- for(i=0;i<vi->residues;i++){
- oggpack_write(opb,vi->residue_type[i],16);
- _residue_P[vi->residue_type[i]]->pack(vi->residue_param[i],opb);
+ oggpack_write(opb,ci->residues-1,6);
+ for(i=0;i<ci->residues;i++){
+ oggpack_write(opb,ci->residue_type[i],16);
+ _residue_P[ci->residue_type[i]]->pack(ci->residue_param[i],opb);
}
/* maps */
- oggpack_write(opb,vi->maps-1,6);
- for(i=0;i<vi->maps;i++){
- oggpack_write(opb,vi->map_type[i],16);
- _mapping_P[vi->map_type[i]]->pack(vi,vi->map_param[i],opb);
+ oggpack_write(opb,ci->maps-1,6);
+ for(i=0;i<ci->maps;i++){
+ oggpack_write(opb,ci->map_type[i],16);
+ _mapping_P[ci->map_type[i]]->pack(vi,ci->map_param[i],opb);
}
/* modes */
- oggpack_write(opb,vi->modes-1,6);
- for(i=0;i<vi->modes;i++){
- oggpack_write(opb,vi->mode_param[i]->blockflag,1);
- oggpack_write(opb,vi->mode_param[i]->windowtype,16);
- oggpack_write(opb,vi->mode_param[i]->transformtype,16);
- oggpack_write(opb,vi->mode_param[i]->mapping,8);
+ oggpack_write(opb,ci->modes-1,6);
+ for(i=0;i<ci->modes;i++){
+ oggpack_write(opb,ci->mode_param[i]->blockflag,1);
+ oggpack_write(opb,ci->mode_param[i]->windowtype,16);
+ oggpack_write(opb,ci->mode_param[i]->transformtype,16);
+ oggpack_write(opb,ci->mode_param[i]->mapping,8);
}
oggpack_write(opb,1,1);
@@ -493,8 +499,15 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
ogg_packet *op,
ogg_packet *op_comm,
ogg_packet *op_code){
+ int ret=OV_EIMPL;
vorbis_info *vi=v->vi;
oggpack_buffer opb;
+ backend_lookup_state *b=v->backend_state;
+
+ if(!b){
+ ret=OV_EFAULT;
+ goto err_out;
+ }
/* first header packet **********************************************/
@@ -502,10 +515,10 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
if(_vorbis_pack_info(&opb,vi))goto err_out;
/* build the packet */
- if(v->header)free(v->header);
- v->header=malloc(oggpack_bytes(&opb));
- memcpy(v->header,opb.buffer,oggpack_bytes(&opb));
- op->packet=v->header;
+ if(b->header)free(b->header);
+ b->header=malloc(oggpack_bytes(&opb));
+ memcpy(b->header,opb.buffer,oggpack_bytes(&opb));
+ op->packet=b->header;
op->bytes=oggpack_bytes(&opb);
op->b_o_s=1;
op->e_o_s=0;
@@ -516,10 +529,10 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
oggpack_reset(&opb);
if(_vorbis_pack_comment(&opb,vc))goto err_out;
- if(v->header1)free(v->header1);
- v->header1=malloc(oggpack_bytes(&opb));
- memcpy(v->header1,opb.buffer,oggpack_bytes(&opb));
- op_comm->packet=v->header1;
+ if(b->header1)free(b->header1);
+ b->header1=malloc(oggpack_bytes(&opb));
+ memcpy(b->header1,opb.buffer,oggpack_bytes(&opb));
+ op_comm->packet=b->header1;
op_comm->bytes=oggpack_bytes(&opb);
op_comm->b_o_s=0;
op_comm->e_o_s=0;
@@ -530,10 +543,10 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
oggpack_reset(&opb);
if(_vorbis_pack_books(&opb,vi))goto err_out;
- if(v->header2)free(v->header2);
- v->header2=malloc(oggpack_bytes(&opb));
- memcpy(v->header2,opb.buffer,oggpack_bytes(&opb));
- op_code->packet=v->header2;
+ if(b->header2)free(b->header2);
+ b->header2=malloc(oggpack_bytes(&opb));
+ memcpy(b->header2,opb.buffer,oggpack_bytes(&opb));
+ op_code->packet=b->header2;
op_code->bytes=oggpack_bytes(&opb);
op_code->b_o_s=0;
op_code->e_o_s=0;
@@ -547,12 +560,12 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
memset(op_comm,0,sizeof(ogg_packet));
memset(op_code,0,sizeof(ogg_packet));
- if(v->header)free(v->header);
- if(v->header1)free(v->header1);
- if(v->header2)free(v->header2);
- v->header=NULL;
- v->header1=NULL;
- v->header2=NULL;
- return(OV_EIMPL);
+ if(b->header)free(b->header);
+ if(b->header1)free(b->header1);
+ if(b->header2)free(b->header2);
+ b->header=NULL;
+ b->header1=NULL;
+ b->header2=NULL;
+ return(ret);
}
diff --git a/lib/lsp.c b/lib/lsp.c
index 6e474900..a5156ddd 100644
--- a/lib/lsp.c
+++ b/lib/lsp.c
@@ -12,7 +12,7 @@
********************************************************************
function: LSP (also called LSF) conversion routines
- last mod: $Id: lsp.c,v 1.10.2.2 2000/10/19 21:56:40 jack Exp $
+ last mod: $Id: lsp.c,v 1.10.2.3 2000/11/03 10:05:47 xiphmont Exp $
The LSP generation code is taken (with minimal modification) from
"On the Computation of the LSP Frequencies" by Joseph Rothweiler
@@ -72,7 +72,7 @@ void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
i=0;
while(i<n){
- int j,k=map[i];
+ int k=map[i];
int qexp;
float p=.7071067812;
float q=.7071067812;
diff --git a/lib/mapping0.c b/lib/mapping0.c
new file mode 100644
index 00000000..fc594b8b
--- /dev/null
+++ b/lib/mapping0.c
@@ -0,0 +1,393 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: channel mapping 0 implementation
+ last mod: $Id: mapping0.c,v 1.16.2.1 2000/11/03 10:05:47 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "codebook.h"
+#include "registry.h"
+#include "psy.h"
+#include "misc.h"
+
+/* simplistic, wasteful way of doing this (unique lookup for each
+ mode/submapping); there should be a central repository for
+ identical lookups. That will require minor work, so I'm putting it
+ off as low priority.
+
+ Why a lookup for each backend in a given mode? Because the
+ blocksize is set by the mode, and low backend lookups may require
+ parameters from other areas of the mode/mapping */
+
+typedef struct {
+ vorbis_info_mode *mode;
+ vorbis_info_mapping0 *map;
+
+ vorbis_look_time **time_look;
+ vorbis_look_floor **floor_look;
+
+ vorbis_look_residue **residue_look;
+ vorbis_look_psy *psy_look;
+
+ vorbis_func_time **time_func;
+ vorbis_func_floor **floor_func;
+ vorbis_func_residue **residue_func;
+
+ int ch;
+ float **decay;
+ long lastframe; /* if a different mode is called, we need to
+ invalidate decay */
+} vorbis_look_mapping0;
+
+static vorbis_info_mapping *mapping0_copy_info(vorbis_info_mapping *vm){
+ vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
+ vorbis_info_mapping0 *ret=malloc(sizeof(vorbis_info_mapping0));
+ memcpy(ret,info,sizeof(vorbis_info_mapping0));
+ return(ret);
+}
+
+static void mapping0_free_info(vorbis_info_mapping *i){
+ if(i){
+ memset(i,0,sizeof(vorbis_info_mapping0));
+ free(i);
+ }
+}
+
+static void mapping0_free_look(vorbis_look_mapping *look){
+ int i;
+ vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look;
+ if(l){
+ for(i=0;i<l->map->submaps;i++){
+ l->time_func[i]->free_look(l->time_look[i]);
+ l->floor_func[i]->free_look(l->floor_look[i]);
+ l->residue_func[i]->free_look(l->residue_look[i]);
+ if(l->psy_look)_vp_psy_clear(l->psy_look+i);
+ }
+
+ if(l->decay){
+ for(i=0;i<l->ch;i++){
+ if(l->decay[i])free(l->decay[i]);
+ }
+ free(l->decay);
+ }
+
+ free(l->time_func);
+ free(l->floor_func);
+ free(l->residue_func);
+ free(l->time_look);
+ free(l->floor_look);
+ free(l->residue_look);
+ if(l->psy_look)free(l->psy_look);
+ memset(l,0,sizeof(vorbis_look_mapping0));
+ free(l);
+ }
+}
+
+static vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm,
+ vorbis_info_mapping *m){
+ int i;
+ vorbis_info *vi=vd->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ vorbis_look_mapping0 *look=calloc(1,sizeof(vorbis_look_mapping0));
+ vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m;
+ look->mode=vm;
+
+ look->time_look=calloc(info->submaps,sizeof(vorbis_look_time *));
+ look->floor_look=calloc(info->submaps,sizeof(vorbis_look_floor *));
+
+ look->residue_look=calloc(info->submaps,sizeof(vorbis_look_residue *));
+ if(ci->psys)look->psy_look=calloc(info->submaps,sizeof(vorbis_look_psy));
+
+ look->time_func=calloc(info->submaps,sizeof(vorbis_func_time *));
+ look->floor_func=calloc(info->submaps,sizeof(vorbis_func_floor *));
+ look->residue_func=calloc(info->submaps,sizeof(vorbis_func_residue *));
+
+ for(i=0;i<info->submaps;i++){
+ int timenum=info->timesubmap[i];
+ int floornum=info->floorsubmap[i];
+ int resnum=info->residuesubmap[i];
+
+ look->time_func[i]=_time_P[ci->time_type[timenum]];
+ look->time_look[i]=look->time_func[i]->
+ look(vd,vm,ci->time_param[timenum]);
+ look->floor_func[i]=_floor_P[ci->floor_type[floornum]];
+ look->floor_look[i]=look->floor_func[i]->
+ look(vd,vm,ci->floor_param[floornum]);
+ look->residue_func[i]=_residue_P[ci->residue_type[resnum]];
+ look->residue_look[i]=look->residue_func[i]->
+ look(vd,vm,ci->residue_param[resnum]);
+
+ if(ci->psys && vd->analysisp){
+ int psynum=info->psysubmap[i];
+ _vp_psy_init(look->psy_look+i,ci->psy_param[psynum],
+ ci->blocksizes[vm->blockflag]/2,vi->rate);
+ }
+ }
+
+ look->ch=vi->channels;
+ if(ci->psys){
+ look->decay=calloc(vi->channels,sizeof(float *));
+ for(i=0;i<vi->channels;i++)
+ look->decay[i]=calloc(ci->blocksizes[vm->blockflag]/2,sizeof(float));
+ }
+
+ return(look);
+}
+
+static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm,oggpack_buffer *opb){
+ int i;
+ vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
+
+ oggpack_write(opb,info->submaps-1,4);
+ /* we don't write the channel submappings if we only have one... */
+ if(info->submaps>1){
+ for(i=0;i<vi->channels;i++)
+ oggpack_write(opb,info->chmuxlist[i],4);
+ }
+ for(i=0;i<info->submaps;i++){
+ oggpack_write(opb,info->timesubmap[i],8);
+ oggpack_write(opb,info->floorsubmap[i],8);
+ oggpack_write(opb,info->residuesubmap[i],8);
+ }
+}
+
+/* also responsible for range checking */
+static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
+ int i;
+ vorbis_info_mapping0 *info=calloc(1,sizeof(vorbis_info_mapping0));
+ codec_setup_info *ci=vi->codec_setup;
+ memset(info,0,sizeof(vorbis_info_mapping0));
+
+ info->submaps=oggpack_read(opb,4)+1;
+
+ if(info->submaps>1){
+ for(i=0;i<vi->channels;i++){
+ info->chmuxlist[i]=oggpack_read(opb,4);
+ if(info->chmuxlist[i]>=info->submaps)goto err_out;
+ }
+ }
+ for(i=0;i<info->submaps;i++){
+ info->timesubmap[i]=oggpack_read(opb,8);
+ if(info->timesubmap[i]>=ci->times)goto err_out;
+ info->floorsubmap[i]=oggpack_read(opb,8);
+ if(info->floorsubmap[i]>=ci->floors)goto err_out;
+ info->residuesubmap[i]=oggpack_read(opb,8);
+ if(info->residuesubmap[i]>=ci->residues)goto err_out;
+ }
+
+ return info;
+
+ err_out:
+ mapping0_free_info(info);
+ return(NULL);
+}
+
+#include "os.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "envelope.h"
+#include "mdct.h"
+#include "psy.h"
+#include "scales.h"
+
+/* no time mapping implementation for now */
+static long seq=0;
+static int mapping0_forward(vorbis_block *vb,vorbis_look_mapping *l){
+ vorbis_dsp_state *vd=vb->vd;
+ vorbis_info *vi=vd->vi;
+ backend_lookup_state *b=vb->vd->backend_state;
+ vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l;
+ vorbis_info_mapping0 *info=look->map;
+ vorbis_info_mode *mode=look->mode;
+ int n=vb->pcmend;
+ int i,j;
+ float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype];
+
+ float **pcmbundle=alloca(sizeof(float *)*vi->channels);
+ int *nonzero=alloca(sizeof(int)*vi->channels);
+
+ /* time domain pre-window: NONE IMPLEMENTED */
+
+ /* window the PCM data: takes PCM vector, vb; modifies PCM vector */
+
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ for(j=0;j<n;j++)
+ pcm[j]*=window[j];
+ }
+
+ /* time-domain post-window: NONE IMPLEMENTED */
+
+ /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
+ /* only MDCT right now.... */
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ mdct_forward(b->transform[vb->W][0],pcm,pcm);
+ }
+
+ {
+ float *floor=_vorbis_block_alloc(vb,n*sizeof(float)/2);
+
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ float *decay=look->decay[i];
+ int submap=info->chmuxlist[i];
+
+ /* if some other mode/mapping was called last frame, our decay
+ accumulator is out of date. Clear it. */
+ if(look->lastframe+1 != vb->sequence)
+ memset(decay,0,n*sizeof(float)/2);
+
+ /* perform psychoacoustics; do masking */
+ _vp_compute_mask(look->psy_look+submap,pcm,floor,decay);
+
+ _analysis_output("decay",seq,decay,n/2,0,1);
+ _analysis_output("mdct",seq,pcm,n/2,0,1);
+ _analysis_output("lmdct",seq,pcm,n/2,0,0);
+ _analysis_output("prefloor",seq,floor,n/2,0,1);
+
+ /* perform floor encoding */
+ nonzero[i]=look->floor_func[submap]->
+ forward(vb,look->floor_look[submap],floor,floor);
+
+ _analysis_output("floor",seq,floor,n/2,0,1);
+
+ /* apply the floor, do optional noise levelling */
+ _vp_apply_floor(look->psy_look+submap,pcm,floor);
+
+ _analysis_output("res",seq++,pcm,n/2,0,0);
+
+#ifdef TRAIN_RES
+ if(nonzero[i]){
+ FILE *of;
+ char buffer[80];
+ int i;
+
+ sprintf(buffer,"residue_%d.vqd",vb->mode);
+ of=fopen(buffer,"a");
+ for(i=0;i<n/2;i++)
+ fprintf(of,"%.2f, ",pcm[i]);
+ fprintf(of,"\n");
+ fclose(of);
+ }
+#endif
+
+ }
+
+ /* perform residue encoding with residue mapping; this is
+ multiplexed. All the channels belonging to one submap are
+ encoded (values interleaved), then the next submap, etc */
+
+ for(i=0;i<info->submaps;i++){
+ int ch_in_bundle=0;
+ for(j=0;j<vi->channels;j++){
+ if(info->chmuxlist[j]==i && nonzero[j]==1){
+ pcmbundle[ch_in_bundle++]=vb->pcm[j];
+ }
+ }
+
+ look->residue_func[i]->forward(vb,look->residue_look[i],
+ pcmbundle,ch_in_bundle);
+ }
+ }
+
+ look->lastframe=vb->sequence;
+ return(0);
+}
+
+static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
+ vorbis_dsp_state *vd=vb->vd;
+ vorbis_info *vi=vd->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ backend_lookup_state *b=vd->backend_state;
+ vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l;
+ vorbis_info_mapping0 *info=look->map;
+ vorbis_info_mode *mode=look->mode;
+ int i,j;
+ long n=vb->pcmend=ci->blocksizes[vb->W];
+
+ float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype];
+ float **pcmbundle=alloca(sizeof(float *)*vi->channels);
+ int *nonzero=alloca(sizeof(int)*vi->channels);
+
+ /* time domain information decode (note that applying the
+ information would have to happen later; we'll probably add a
+ function entry to the harness for that later */
+ /* NOT IMPLEMENTED */
+
+ /* recover the spectral envelope; store it in the PCM vector for now */
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ int submap=info->chmuxlist[i];
+ nonzero[i]=look->floor_func[submap]->
+ inverse(vb,look->floor_look[submap],pcm);
+ _analysis_output("ifloor",seq+i,pcm,n/2,0,1);
+ }
+
+ /* recover the residue, apply directly to the spectral envelope */
+
+ for(i=0;i<info->submaps;i++){
+ int ch_in_bundle=0;
+ for(j=0;j<vi->channels;j++){
+ if(info->chmuxlist[j]==i && nonzero[j])
+ pcmbundle[ch_in_bundle++]=vb->pcm[j];
+ }
+
+ look->residue_func[i]->inverse(vb,look->residue_look[i],pcmbundle,ch_in_bundle);
+ }
+
+ /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
+ /* only MDCT right now.... */
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ _analysis_output("out",seq+i,pcm,n/2,0,1);
+ mdct_backward(b->transform[vb->W][0],pcm,pcm);
+ }
+
+ /* now apply the decoded pre-window time information */
+ /* NOT IMPLEMENTED */
+
+ /* window the data */
+ for(i=0;i<vi->channels;i++){
+ float *pcm=vb->pcm[i];
+ if(nonzero[i])
+ for(j=0;j<n;j++)
+ pcm[j]*=window[j];
+ else
+ for(j=0;j<n;j++)
+ pcm[j]=0.;
+ _analysis_output("final",seq++,pcm,n,0,0);
+ }
+
+ /* now apply the decoded post-window time information */
+ /* NOT IMPLEMENTED */
+
+ /* all done! */
+ return(0);
+}
+
+/* export hooks */
+vorbis_func_mapping mapping0_exportbundle={
+ &mapping0_pack,&mapping0_unpack,&mapping0_look,&mapping0_copy_info,
+ &mapping0_free_info,&mapping0_free_look,&mapping0_forward,&mapping0_inverse
+};
+
+
+
diff --git a/lib/modes/mode_A.h b/lib/modes/mode_A.h
new file mode 100644
index 00000000..6f844b2f
--- /dev/null
+++ b/lib/modes/mode_A.h
@@ -0,0 +1,205 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: mode_A.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_MODES_A_H_
+#define _V_MODES_A_H_
+
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "vorbis/book/lsp12_0.vqh"
+#include "vorbis/book/lsp30_0.vqh"
+
+#include "vorbis/book/resaux0_128a_128.vqh"
+#include "vorbis/book/resaux0_1024a_128.vqh"
+
+#include "vorbis/book/res0_128a_128_1.vqh"
+#include "vorbis/book/res0_128a_128_2.vqh"
+#include "vorbis/book/res0_128a_128_3.vqh"
+#include "vorbis/book/res0_128a_128_4.vqh"
+#include "vorbis/book/res0_128a_128_5.vqh"
+#include "vorbis/book/res0_1024a_128_1.vqh"
+#include "vorbis/book/res0_1024a_128_2.vqh"
+#include "vorbis/book/res0_1024a_128_3.vqh"
+#include "vorbis/book/res0_1024a_128_4.vqh"
+#include "vorbis/book/res0_1024a_128_5.vqh"
+#include "vorbis/book/res0_1024a_128_6.vqh"
+#include "vorbis/book/res0_1024a_128_7.vqh"
+#include "vorbis/book/res0_1024a_128_8.vqh"
+#include "vorbis/book/res0_1024a_128_9.vqh"
+
+static vorbis_info_psy _psy_set_A={
+ 1,/*athp*/
+ 1,/*decayp*/
+ 1,/*smoothp*/
+ 0,.1,
+
+ -100.,
+ -140.,
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ 1,/* tonemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*63*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*88*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*125*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*175*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*250*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*350*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*500*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*700*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1000*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1400*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2000*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2800*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*4000*/
+ {-30.,-30.,-35.,-37.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*5600*/
+ {-20.,-25.,-30.,-35.,-35.,-50.,-60.,-70.,-80.,-90.,-100.}, /*8000*/
+ {-20.,-25.,-30.,-33.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*11500*/
+ {-20.,-24.,-26.,-32.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*16000*/
+ },
+
+ 1,/* peakattp */
+ {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*63*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*88*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*125*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-16.,-17.}, /*8000*/
+ { -6., -7., -9., -9., -9., -9.,-10.,-11.,-12.,-13.,-14.}, /*11500*/
+ { -6., -6., -9., -9., -9., -9., -9., -9.,-10.,-11.,-12.}, /*16000*/
+ },
+
+ 1,/*noisemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*63*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*88*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*125*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*175*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*250*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*350*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*500*/
+ { 6., 6., 6., 2., 2., 2., 2., 2., 2., 1., 0.}, /*700*/
+
+ { 6., 6., 6., 5., 5., 5., 5., 5., 5., 4., 3.}, /*1000*/
+ { 6., 6., 6., 5., 5., 5., 5., 5., 5., 4., 3.}, /*1400*/
+ { 6., 6., 6., 5., 5., 5., 5., 5., 5., 4., 3.}, /*2000*/
+ { 6., 6., 6., 5., 5., 5., 5., 5., 5., 4., 3.}, /*2800*/
+ { 6., 6., 6., 5., 5., 5., 5., 5., 5., 4., 3.}, /*4000*/
+ { 10., 10., 10., 10., 10., 10., 8., 8., 6., 6., 6.}, /*5600*/
+ { 10., 10., 10., 10., 10., 10., 8., 8., 8., 8., 8.}, /*8000*/
+ { 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.}, /*11500*/
+ { 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.}, /*16000*/
+ },
+
+ 100.,
+
+ -0., -.004 /* attack/decay control */
+};
+
+
+/* with GNUisms, this could be short and readable. Oh well */
+static vorbis_info_time0 _time_set0A={0};
+static vorbis_info_floor0 _floor_set0A={12, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1A={30, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0A={0,128, 32,6,2,
+ {0,1,1,1,1,1},
+ {4,5,6,7,8},
+
+ {0,99999,9999,9999,9999},
+ {99,1.5,2.5,3.5,5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_residue0 _residue_set1A={0,1024, 32,10,3,
+ {0,1,1,1,1,1,1,1,1,1},
+ {9,10,11,12,13,14,15,16,17},
+
+ {0,9,9999,17,9999,
+ 27,9999,9999,9999},
+ {99,1.5,1.5,2.5,2.5,3.5,3.5,7,13},
+ {5,5,5,5,5,5,5,5,5},
+ {99,99,99,99,99,99,99,99,99}};
+
+static vorbis_info_mapping0 _mapping_set0A={1, {0,0}, {0}, {0}, {0}, {0}};
+static vorbis_info_mapping0 _mapping_set1A={1, {0,0}, {0}, {1}, {1}, {0}};
+static vorbis_info_mode _mode_set0A={0,0,0,0};
+static vorbis_info_mode _mode_set1A={1,0,0,1};
+
+/* CD quality stereo, no channel coupling */
+codec_setup_info info_A={
+
+ /* smallblock, largeblock */
+ {256, 2048},
+ /* modes,maps,times,floors,residues,books,psys */
+ 2, 2, 1, 2, 2, 18, 1,
+ /* modes */
+ {&_mode_set0A,&_mode_set1A},
+ /* maps */
+ {0,0},{&_mapping_set0A,&_mapping_set1A},
+ /* times */
+ {0,0},{&_time_set0A},
+ /* floors */
+ {0,0},{&_floor_set0A,&_floor_set1A},
+ /* residue */
+ {0,0},{&_residue_set0A,&_residue_set1A},
+ /* books */
+ {&_vq_book_lsp12_0, /* 0 */
+ &_vq_book_lsp30_0, /* 1 */
+
+ &_huff_book_resaux0_128a_128,
+ &_huff_book_resaux0_1024a_128,
+
+ &_vq_book_res0_128a_128_1,
+ &_vq_book_res0_128a_128_2,
+ &_vq_book_res0_128a_128_3,
+ &_vq_book_res0_128a_128_4,
+ &_vq_book_res0_128a_128_5,
+ &_vq_book_res0_1024a_128_1,
+ &_vq_book_res0_1024a_128_2,
+ &_vq_book_res0_1024a_128_3,
+ &_vq_book_res0_1024a_128_4,
+ &_vq_book_res0_1024a_128_5,
+ &_vq_book_res0_1024a_128_6,
+ &_vq_book_res0_1024a_128_7,
+ &_vq_book_res0_1024a_128_8,
+ &_vq_book_res0_1024a_128_9,
+
+ },
+ /* psy */
+ {&_psy_set_A},
+ /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+ 256, 32, 6, -96.
+};
+
+#define PREDEF_INFO_MAX 0
+
+#endif
diff --git a/lib/modes/mode_B.h b/lib/modes/mode_B.h
new file mode 100644
index 00000000..aa2e625e
--- /dev/null
+++ b/lib/modes/mode_B.h
@@ -0,0 +1,204 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: mode_B.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_MODES_B_H_
+#define _V_MODES_B_H_
+
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "vorbis/book/lsp12_0.vqh"
+#include "vorbis/book/lsp30_0.vqh"
+
+#include "vorbis/book/resaux0_128a_160.vqh"
+#include "vorbis/book/resaux0_1024a_160.vqh"
+
+#include "vorbis/book/res0_128a_160_1.vqh"
+#include "vorbis/book/res0_128a_160_2.vqh"
+#include "vorbis/book/res0_128a_160_3.vqh"
+#include "vorbis/book/res0_128a_160_4.vqh"
+#include "vorbis/book/res0_128a_160_5.vqh"
+#include "vorbis/book/res0_1024a_160_1.vqh"
+#include "vorbis/book/res0_1024a_160_2.vqh"
+#include "vorbis/book/res0_1024a_160_3.vqh"
+#include "vorbis/book/res0_1024a_160_4.vqh"
+#include "vorbis/book/res0_1024a_160_5.vqh"
+#include "vorbis/book/res0_1024a_160_6.vqh"
+#include "vorbis/book/res0_1024a_160_7.vqh"
+#include "vorbis/book/res0_1024a_160_8.vqh"
+#include "vorbis/book/res0_1024a_160_9.vqh"
+
+static vorbis_info_psy _psy_set_B={
+ 1,/*athp*/
+ 1,/*decayp*/
+ 1,/*smoothp*/
+ 0,.1,
+
+ -100.,
+ -140.,
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ 1,/* tonemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*63*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*88*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*125*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*175*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*250*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*350*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*500*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*700*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1000*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1400*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2000*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2800*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*4000*/
+ {-30.,-30.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*5600*/
+ {-30.,-30.,-35.,-35.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*8000*/
+ {-30.,-30.,-35.,-33.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*11500*/
+ {-30.,-28.,-30.,-32.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*16000*/
+ },
+
+ 1,/* peakattp */
+ {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*63*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*88*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*125*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-16.,-17.}, /*8000*/
+ { -6., -7., -9., -9., -9., -9.,-10.,-11.,-12.,-13.,-14.}, /*11500*/
+ { -6., -6., -9., -9., -9., -9., -9., -9.,-10.,-11.,-12.}, /*16000*/
+ },
+
+ 1,/*noisemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*63*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*88*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*125*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*175*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*250*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*350*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*500*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*700*/
+
+ { 4., 4., 4., 4., 4., 2., 1., 0., -1., -2., -3.}, /*1000*/
+ { 4., 4., 4., 4., 4., 2., 1., 0., 0., -2., -3.}, /*1400*/
+ { 4., 4., 4., 4., 2., 2., 1., 0., 0., -2., -3.}, /*2000*/
+ { 4., 4., 4., 4., 2., 2., 1., 0., 0., -2., -3.}, /*2800*/
+ { 4., 4., 4., 4., 4., 4., 2., 0., 0., 0., 0.}, /*4000*/
+ { 4., 4., 4., 4., 4., 4., 2., 2., 2., 2., 2.}, /*5600*/
+ { 6., 6., 6., 6., 4., 4., 4., 4., 4., 2., 2.}, /*8000*/
+ { 8., 8., 8., 8., 6., 6., 6., 6., 6., 4., 4.}, /*11500*/
+ { 8., 8., 8., 8., 8., 8., 8., 6., 6., 6., 4.}, /*16000*/
+ },
+
+ 110.,
+
+ -0., -.004 /* attack/decay control */
+};
+
+/* with GNUisms, this could be short and readable. Oh well */
+static vorbis_info_time0 _time_set0B={0};
+static vorbis_info_floor0 _floor_set0B={12, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1B={30, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0B={0,128, 32,6,2,
+ {0,1,1,1,1,1},
+ {4,5,6,7,8},
+
+ {0,99999,9999,9999,9999},
+ {99,1.5,2.5,3.5,5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_residue0 _residue_set1B={0,1024, 32,10,3,
+ {0,1,1,1,1,1,1,1,1,1},
+ {9,10,11,12,13,14,15,16,17},
+
+ {0,9,9999,17,9999,
+ 27,9999,9999,9999},
+ {99,1.5,1.5,2.5,2.5,3.5,3.5,7,13},
+ {5,5,5,5,5,5,5,5,5},
+ {99,99,99,99,99,99,99,99,99}};
+
+static vorbis_info_mapping0 _mapping_set0B={1, {0,0}, {0}, {0}, {0}, {0}};
+static vorbis_info_mapping0 _mapping_set1B={1, {0,0}, {0}, {1}, {1}, {0}};
+static vorbis_info_mode _mode_set0B={0,0,0,0};
+static vorbis_info_mode _mode_set1B={1,0,0,1};
+
+/* CD quality stereo, no channel coupling */
+codec_setup_info info_B={
+
+ /* smallblock, largeblock */
+ {256, 2048},
+ /* modes,maps,times,floors,residues,books,psys */
+ 2, 2, 1, 2, 2, 18, 1,
+ /* modes */
+ {&_mode_set0B,&_mode_set1B},
+ /* maps */
+ {0,0},{&_mapping_set0B,&_mapping_set1B},
+ /* times */
+ {0,0},{&_time_set0B},
+ /* floors */
+ {0,0},{&_floor_set0B,&_floor_set1B},
+ /* residue */
+ {0,0},{&_residue_set0B,&_residue_set1B},
+ /* books */
+ {&_vq_book_lsp12_0, /* 0 */
+ &_vq_book_lsp30_0, /* 1 */
+
+ &_huff_book_resaux0_128a_160,
+ &_huff_book_resaux0_1024a_160,
+
+ &_vq_book_res0_128a_160_1,
+ &_vq_book_res0_128a_160_2,
+ &_vq_book_res0_128a_160_3,
+ &_vq_book_res0_128a_160_4,
+ &_vq_book_res0_128a_160_5,
+ &_vq_book_res0_1024a_160_1,
+ &_vq_book_res0_1024a_160_2,
+ &_vq_book_res0_1024a_160_3,
+ &_vq_book_res0_1024a_160_4,
+ &_vq_book_res0_1024a_160_5,
+ &_vq_book_res0_1024a_160_6,
+ &_vq_book_res0_1024a_160_7,
+ &_vq_book_res0_1024a_160_8,
+ &_vq_book_res0_1024a_160_9,
+
+ },
+ /* psy */
+ {&_psy_set_B},
+ /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+ 256, 32, 6, -96.
+};
+
+#define PREDEF_INFO_MAX 0
+
+#endif
diff --git a/lib/modes/mode_C.h b/lib/modes/mode_C.h
new file mode 100644
index 00000000..8085e787
--- /dev/null
+++ b/lib/modes/mode_C.h
@@ -0,0 +1,195 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: mode_C.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_MODES_C_H_
+#define _V_MODES_C_H_
+
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "vorbis/book/lsp12_0.vqh"
+#include "vorbis/book/lsp30_0.vqh"
+
+#include "vorbis/book/resaux0_128a_192.vqh"
+#include "vorbis/book/resaux0_1024a_192.vqh"
+
+#include "vorbis/book/res0_128a_192_1.vqh"
+#include "vorbis/book/res0_128a_192_2.vqh"
+#include "vorbis/book/res0_128a_192_3.vqh"
+#include "vorbis/book/res0_128a_192_4.vqh"
+#include "vorbis/book/res0_128a_192_5.vqh"
+#include "vorbis/book/res0_1024a_192_1.vqh"
+#include "vorbis/book/res0_1024a_192_2.vqh"
+#include "vorbis/book/res0_1024a_192_3.vqh"
+#include "vorbis/book/res0_1024a_192_4.vqh"
+#include "vorbis/book/res0_1024a_192_5.vqh"
+
+static vorbis_info_psy _psy_set_C={
+ 1,/*athp*/
+ 0,/*decayp*/
+ 1,/*smoothp*/
+ 0,.1,
+
+ -100.,
+ -140.,
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ 1,/* tonemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*63*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*88*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*125*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*175*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*250*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*350*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*500*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*700*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1000*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1400*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2000*/
+ {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2800*/
+ {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*4000*/
+ {-30.,-30.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*5600*/
+ {-30.,-30.,-35.,-35.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*8000*/
+ {-30.,-30.,-35.,-33.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*11500*/
+ {-30.,-28.,-30.,-32.,-35.,-45.,-55.,-65.,-75.,-90.,-100.}, /*16000*/
+ },
+
+ 1,/* peakattp */
+ {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*63*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*88*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*125*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-18.,-20.}, /*8000*/
+ { -7., -8., -9.,-10.,-10.,-11.,-12.,-13.,-15.,-16.,-17.}, /*8000*/
+ { -6., -7., -9., -9., -9., -9.,-10.,-11.,-12.,-13.,-14.}, /*11500*/
+ { -6., -6., -9., -9., -9., -9., -9., -9.,-10.,-11.,-12.}, /*16000*/
+ },
+
+ 1,/*noisemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*63*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*88*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*125*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*175*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*250*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*350*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*500*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*700*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*1000*/
+ {-99.,-99.,-99.,-99.,-99.,-99.,-99.,-199.,-199.,-199.,-199.}, /*1400*/
+
+ { 0., -4., -4., -4., -6., -6., -6., -6., -6., -6., -6.}, /*2000*/
+ { 0., -3., -4., -4., -4., -5., -6., -6., -6., -6., -6.}, /*2800*/
+ { 0., -2., -2., -2., -2., -2., -2., -2., -4., -4., -4.}, /*4000*/
+ { 0., -0., -0., -0., -0., -2., -2., -2., -2., -2., -2.}, /*5600*/
+ { 0., 0., 0., 0., 0., 0., 0., 0., 0., -2., -4.}, /*8000*/
+ { 2., 2., 2., 2., 2., 2., 0., 0., 0., 0., 0.}, /*11500*/
+ { 2., 2., 2., 2., 2., 4., 4., 4., 4., 4., 4.}, /*16000*/
+ },
+
+ 100.,
+
+ -0., -.004 /* attack/decay control */
+};
+
+/* with GNUisms, this could be short and readable. Oh well */
+static vorbis_info_time0 _time_set0C={0};
+static vorbis_info_floor0 _floor_set0C={12, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1C={30, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0C={0,128, 32,6,2,
+ {0,1,1,1,1,1},
+ {4,5,6,7,8},
+
+ {0,99999,9999,9999,9999},
+ {99,1.5,2.5,3.5,5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_residue0 _residue_set1C={0,1024, 32,6,3,
+ {0,1,1,1,1,1},
+ {9,10,11,12,13},
+
+ {0,99999,9999,9999,9999},
+ {99,1.5,2.5,3.5,5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_mapping0 _mapping_set0C={1, {0,0}, {0}, {0}, {0}, {0}};
+static vorbis_info_mapping0 _mapping_set1C={1, {0,0}, {0}, {1}, {1}, {0}};
+static vorbis_info_mode _mode_set0C={0,0,0,0};
+static vorbis_info_mode _mode_set1C={1,0,0,1};
+
+/* CD quality stereo, no channel coupling */
+codec_setup_info info_C={
+
+ /* smallblock, largeblock */
+ {256, 2048},
+ /* modes,maps,times,floors,residues,books,psys */
+ 2, 2, 1, 2, 2, 14, 1,
+ /* modes */
+ {&_mode_set0C,&_mode_set1C},
+ /* maps */
+ {0,0},{&_mapping_set0C,&_mapping_set1C},
+ /* times */
+ {0,0},{&_time_set0C},
+ /* floors */
+ {0,0},{&_floor_set0C,&_floor_set1C},
+ /* residue */
+ {0,0},{&_residue_set0C,&_residue_set1C},
+ /* books */
+ {&_vq_book_lsp12_0, /* 0 */
+ &_vq_book_lsp30_0, /* 1 */
+
+ &_huff_book_resaux0_128a_192,
+ &_huff_book_resaux0_1024a_192,
+
+ &_vq_book_res0_128a_192_1,
+ &_vq_book_res0_128a_192_2,
+ &_vq_book_res0_128a_192_3,
+ &_vq_book_res0_128a_192_4,
+ &_vq_book_res0_128a_192_5,
+ &_vq_book_res0_1024a_192_1,
+ &_vq_book_res0_1024a_192_2,
+ &_vq_book_res0_1024a_192_3,
+ &_vq_book_res0_1024a_192_4,
+ &_vq_book_res0_1024a_192_5,
+
+ },
+ /* psy */
+ {&_psy_set_C},
+ /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+ 256, 24, 6, -96.
+};
+
+#define PREDEF_INFO_MAX 0
+
+#endif
diff --git a/lib/modes/mode_D.h b/lib/modes/mode_D.h
new file mode 100644
index 00000000..f47f935d
--- /dev/null
+++ b/lib/modes/mode_D.h
@@ -0,0 +1,178 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: mode_D.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+/* this is really a freeform VBR mode. It roughly centers on 256 kbps stereo */
+
+#ifndef _V_MODES_D_H_
+#define _V_MODES_D_H_
+
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "vorbis/book/lsp12_0.vqh"
+#include "vorbis/book/lsp30_0.vqh"
+
+#include "vorbis/book/resaux0_128a_256.vqh"
+#include "vorbis/book/resaux0_1024a_256.vqh"
+
+#include "vorbis/book/res0_128a_256_1.vqh"
+#include "vorbis/book/res0_128a_256_2.vqh"
+#include "vorbis/book/res0_128a_256_3.vqh"
+#include "vorbis/book/res0_128a_256_4.vqh"
+#include "vorbis/book/res0_128a_256_5.vqh"
+#include "vorbis/book/res0_1024a_256_1.vqh"
+#include "vorbis/book/res0_1024a_256_2.vqh"
+#include "vorbis/book/res0_1024a_256_3.vqh"
+#include "vorbis/book/res0_1024a_256_4.vqh"
+#include "vorbis/book/res0_1024a_256_5.vqh"
+
+static vorbis_info_psy _psy_set_256 ={
+ 1,/*athp*/
+ 0,/*decayp*/
+ 1,/*smoothp*/
+ 0,.1,
+
+ -100.,
+ -140.,
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ 1,/* tonemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*63*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*125*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*175*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*250*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*350*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*500*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*700*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*1000*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*1400*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*2000*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*2800*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*4000*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*5600*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*8000*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*11500*/
+ {-40.,-40.,-40.,-45.,-45.,-55.,-65.,-75.,-85.,-95.,-105.}, /*16000*/
+ },
+
+ 1,/* peakattp */
+ {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*63*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*88*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*125*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*175*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*250*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*350*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*500*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*700*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*1000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*1400*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*2000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*2800*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*4000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*5600*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*8000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*11500*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-22.,-22.}, /*16000*/
+ },
+
+ 0,/*noisemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{0}},
+
+ 110.,
+
+ -0., -.004 /* attack/decay control */
+};
+
+/* with GNUisms, this could be short and readable. Oh well */
+static vorbis_info_time0 _time_set0_256={0};
+static vorbis_info_floor0 _floor_set0_256={12, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1_256={30, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0_256={0,128, 32,6,2,
+ {0,1,1,1,1,1},
+ {4,5,6,7,8},
+
+ {0,9999,9999,9999,9999},
+ {99,2.5,7,13.5,27.5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_residue0 _residue_set1_256={0,1024, 32,6,3,
+ {0,1,1,1,1,1},
+ {9,10,11,12,13},
+
+ {0,9999,9999,9999,9999},
+ {99,2.5,7,13.5,27.5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_mapping0 _mapping_set0_256={1, {0,0}, {0}, {0}, {0}, {0}};
+static vorbis_info_mapping0 _mapping_set1_256={1, {0,0}, {0}, {1}, {1}, {0}};
+static vorbis_info_mode _mode_set0_256={0,0,0,0};
+static vorbis_info_mode _mode_set1_256={1,0,0,1};
+
+/* CD quality stereo, no channel coupling */
+codec_setup_info info_D={
+
+ /* smallblock, largeblock */
+ {256, 2048},
+ /* modes,maps,times,floors,residues,books,psys */
+ 2, 2, 1, 2, 2, 14, 1,
+ /* modes */
+ {&_mode_set0_256,&_mode_set1_256},
+ /* maps */
+ {0,0},{&_mapping_set0_256,&_mapping_set1_256},
+ /* times */
+ {0,0},{&_time_set0_256},
+ /* floors */
+ {0,0},{&_floor_set0_256,&_floor_set1_256},
+ /* residue */
+ {0,0},{&_residue_set0_256,&_residue_set1_256},
+ /* books */
+ {&_vq_book_lsp12_0, /* 0 */
+ &_vq_book_lsp30_0, /* 1 */
+
+ &_huff_book_resaux0_128a_256,
+ &_huff_book_resaux0_1024a_256,
+
+ &_vq_book_res0_128a_256_1,
+ &_vq_book_res0_128a_256_2,
+ &_vq_book_res0_128a_256_3,
+ &_vq_book_res0_128a_256_4,
+ &_vq_book_res0_128a_256_5,
+ &_vq_book_res0_1024a_256_1,
+ &_vq_book_res0_1024a_256_2,
+ &_vq_book_res0_1024a_256_3,
+ &_vq_book_res0_1024a_256_4,
+ &_vq_book_res0_1024a_256_5,
+
+ },
+ /* psy */
+ {&_psy_set_256},
+ /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+ 256, 24, 6, -96.
+};
+
+#define PREDEF_INFO_MAX 0
+
+#endif
diff --git a/lib/modes/mode_E.h b/lib/modes/mode_E.h
new file mode 100644
index 00000000..44d05a90
--- /dev/null
+++ b/lib/modes/mode_E.h
@@ -0,0 +1,162 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: mode_E.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+/* this is really a freeform VBR mode. It roughly centers on 350 kbps stereo */
+
+#ifndef _V_MODES_E_H_
+#define _V_MODES_E_H_
+
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "vorbis/book/lsp12_0.vqh"
+#include "vorbis/book/lsp30_0.vqh"
+
+#include "vorbis/book/resaux0_128a_350.vqh"
+#include "vorbis/book/resaux0_1024a_350.vqh"
+
+#include "vorbis/book/res0_128a_350_1.vqh"
+#include "vorbis/book/res0_128a_350_2.vqh"
+#include "vorbis/book/res0_128a_350_3.vqh"
+#include "vorbis/book/res0_128a_350_4.vqh"
+#include "vorbis/book/res0_128a_350_5.vqh"
+#include "vorbis/book/res0_1024a_350_1.vqh"
+#include "vorbis/book/res0_1024a_350_2.vqh"
+#include "vorbis/book/res0_1024a_350_3.vqh"
+#include "vorbis/book/res0_1024a_350_4.vqh"
+#include "vorbis/book/res0_1024a_350_5.vqh"
+
+static vorbis_info_psy _psy_set_E ={
+ 1,/*athp*/
+ 0,/*decayp*/
+ 1,/*smoothp*/
+ 0,.1,
+
+ -140.,
+ -180.,
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ 0,/* tonemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{0}},
+
+ 1,/* peakattp */
+ {{-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*63*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*88*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*125*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*175*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*250*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*350*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*500*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*700*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*1000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*1400*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*2000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*2800*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*4000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*5600*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*8000*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*11500*/
+ {-14.,-16.,-18.,-19.,-20.,-21.,-22.,-22.,-22.,-24.,-24.}, /*16000*/
+ },
+
+ 0,/*noisemaskp */
+ /* 0 10 20 30 40 50 60 70 80 90 100 */
+ {{0}},
+
+ 110.,
+
+ -0., -.004 /* attack/decay control */
+};
+
+/* with GNUisms, this could be short and readable. Oh well */
+static vorbis_info_time0 _time_set0_E={0};
+static vorbis_info_floor0 _floor_set0_E={12, 44100, 64, 12,150, 1, {0} };
+static vorbis_info_floor0 _floor_set1_E={30, 44100, 256, 12,150, 1, {1} };
+static vorbis_info_residue0 _residue_set0_E={0,128, 32,6,2,
+ {0,1,1,1,1,1},
+ {4,5,6,7,8},
+
+ {0,9999,9999,9999,9999},
+ {99,2.5,7,13.5,27.5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_residue0 _residue_set1_E={0,1024, 32,6,3,
+ {0,1,1,1,1,1},
+ {9,10,11,12,13},
+
+ {0,9999,9999,9999,9999},
+ {99,2.5,7,13.5,27.5},
+ {5,5,5,5,5},
+ {99,99,99,99,99}};
+
+static vorbis_info_mapping0 _mapping_set0_E={1, {0,0}, {0}, {0}, {0}, {0}};
+static vorbis_info_mapping0 _mapping_set1_E={1, {0,0}, {0}, {1}, {1}, {0}};
+static vorbis_info_mode _mode_set0_E={0,0,0,0};
+static vorbis_info_mode _mode_set1_E={1,0,0,1};
+
+/* CD quality stereo, no channel coupling */
+codec_setup_info info_E={
+
+ /* smallblock, largeblock */
+ {256, 2048},
+ /* modes,maps,times,floors,residues,books,psys */
+ 2, 2, 1, 2, 2, 14, 1,
+ /* modes */
+ {&_mode_set0_E,&_mode_set1_E},
+ /* maps */
+ {0,0},{&_mapping_set0_E,&_mapping_set1_E},
+ /* times */
+ {0,0},{&_time_set0_E},
+ /* floors */
+ {0,0},{&_floor_set0_E,&_floor_set1_E},
+ /* residue */
+ {0,0},{&_residue_set0_E,&_residue_set1_E},
+ /* books */
+ {&_vq_book_lsp12_0, /* 0 */
+ &_vq_book_lsp30_0, /* 1 */
+
+ &_huff_book_resaux0_128a_350,
+ &_huff_book_resaux0_1024a_350,
+
+ &_vq_book_res0_128a_350_1,
+ &_vq_book_res0_128a_350_2,
+ &_vq_book_res0_128a_350_3,
+ &_vq_book_res0_128a_350_4,
+ &_vq_book_res0_128a_350_5,
+ &_vq_book_res0_1024a_350_1,
+ &_vq_book_res0_1024a_350_2,
+ &_vq_book_res0_1024a_350_3,
+ &_vq_book_res0_1024a_350_4,
+ &_vq_book_res0_1024a_350_5,
+
+ },
+ /* psy */
+ {&_psy_set_E},
+ /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+ 256, 24, 6, -96.
+};
+
+#define PREDEF_INFO_MAX 0
+
+#endif
diff --git a/lib/modes/modes.h b/lib/modes/modes.h
new file mode 100644
index 00000000..ca0658ac
--- /dev/null
+++ b/lib/modes/modes.h
@@ -0,0 +1,28 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: predefined encoding modes
+ last mod: $Id: modes.h,v 1.1.2.1 2000/11/03 10:06:06 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_MODES_H_
+#define _V_MODES_H_
+
+#include "modes/mode_A.h"
+#include "modes/mode_B.h"
+#include "modes/mode_C.h"
+#include "modes/mode_D.h"
+#include "modes/mode_E.h"
+
+#endif
diff --git a/lib/psy.c b/lib/psy.c
new file mode 100644
index 00000000..23d88446
--- /dev/null
+++ b/lib/psy.c
@@ -0,0 +1,709 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: psychoacoustics not including preecho
+ last mod: $Id: psy.c,v 1.29.2.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include "vorbis/codec.h"
+
+#include "masking.h"
+#include "psy.h"
+#include "os.h"
+#include "lpc.h"
+#include "smallft.h"
+#include "scales.h"
+#include "misc.h"
+
+/* Why Bark scale for encoding but not masking computation? Because
+ masking has a strong harmonic dependancy */
+
+/* the beginnings of real psychoacoustic infrastructure. This is
+ still not tightly tuned */
+void _vi_psy_free(vorbis_info_psy *i){
+ if(i){
+ memset(i,0,sizeof(vorbis_info_psy));
+ free(i);
+ }
+}
+
+vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i){
+ vorbis_info_psy *ret=malloc(sizeof(vorbis_info_psy));
+ memcpy(ret,i,sizeof(vorbis_info_psy));
+ return(ret);
+}
+
+/* Set up decibel threshhold slopes on a Bark frequency scale */
+/* ATH is the only bit left on a Bark scale. No reason to change it
+ right now */
+static void set_curve(float *ref,float *c,int n, float crate){
+ int i,j=0;
+
+ for(i=0;i<MAX_BARK-1;i++){
+ int endpos=rint(fromBARK(i+1)*2*n/crate);
+ float base=ref[i];
+ if(j<endpos){
+ float delta=(ref[i+1]-base)/(endpos-j);
+ for(;j<endpos && j<n;j++){
+ c[j]=base;
+ base+=delta;
+ }
+ }
+ }
+}
+
+static void min_curve(float *c,
+ float *c2){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
+}
+static void max_curve(float *c,
+ float *c2){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
+}
+
+static void attenuate_curve(float *c,float att){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ c[i]+=att;
+}
+
+static void linear_curve(float *c){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ if(c[i]<=-200.)
+ c[i]=0.;
+ else
+ c[i]=fromdB(c[i]);
+}
+
+static void interp_curve(float *c,float *c1,float *c2,float del){
+ int i;
+ for(i=0;i<EHMER_MAX;i++)
+ c[i]=c2[i]*del+c1[i]*(1.-del);
+}
+
+static void setup_curve(float **c,
+ int band,
+ float *curveatt_dB){
+ int i,j;
+ float ath[EHMER_MAX];
+ float tempc[P_LEVELS][EHMER_MAX];
+
+ memcpy(c[0],c[4],sizeof(float)*EHMER_MAX);
+ memcpy(c[2],c[4],sizeof(float)*EHMER_MAX);
+
+ /* we add back in the ATH to avoid low level curves falling off to
+ -infinity and unneccessarily cutting off high level curves in the
+ curve limiting (last step). But again, remember... a half-band's
+ settings must be valid over the whole band, and it's better to
+ mask too little than too much, so be pessimal. */
+
+ for(i=0;i<EHMER_MAX;i++){
+ float oc_min=band*.5-1+(i-EHMER_OFFSET)*.125;
+ float oc_max=band*.5-1+(i-EHMER_OFFSET+1)*.125;
+ float bark=toBARK(fromOC(oc_min));
+ int ibark=floor(bark);
+ float del=bark-ibark;
+ float ath_min,ath_max;
+
+ if(ibark<26)
+ ath_min=ATH_Bark_dB[ibark]*(1.-del)+ATH_Bark_dB[ibark+1]*del;
+ else
+ ath_min=200.;
+
+ bark=toBARK(fromOC(oc_max));
+ ibark=floor(bark);
+ del=bark-ibark;
+
+ if(ibark<26)
+ ath_max=ATH_Bark_dB[ibark]*(1.-del)+ATH_Bark_dB[ibark+1]*del;
+ else
+ ath_max=200.;
+
+ ath[i]=min(ath_min,ath_max);
+ }
+
+ /* The c array is comes in as dB curves at 20 40 60 80 100 dB.
+ interpolate intermediate dB curves */
+ for(i=1;i<P_LEVELS;i+=2){
+ interp_curve(c[i],c[i-1],c[i+1],.5);
+ }
+
+ /* normalize curves so the driving amplitude is 0dB */
+ /* make temp curves with the ATH overlayed */
+ for(i=0;i<P_LEVELS;i++){
+ attenuate_curve(c[i],curveatt_dB[i]);
+ memcpy(tempc[i],ath,EHMER_MAX*sizeof(float));
+ attenuate_curve(tempc[i],-i*10.);
+ max_curve(tempc[i],c[i]);
+ }
+
+ /* Now limit the louder curves.
+
+ the idea is this: We don't know what the playback attenuation
+ will be; 0dB SL moves every time the user twiddles the volume
+ knob. So that means we have to use a single 'most pessimal' curve
+ for all masking amplitudes, right? Wrong. The *loudest* sound
+ can be in (we assume) a range of ...+100dB] SL. However, sounds
+ 20dB down will be in a range ...+80], 40dB down is from ...+60],
+ etc... */
+
+ for(i=P_LEVELS-1;i>0;i--){
+ for(j=0;j<i;j++)
+ min_curve(c[i],tempc[j]);
+ }
+
+ /* take things out of dB domain into linear amplitude */
+ for(i=0;i<P_LEVELS;i++)
+ linear_curve(c[i]);
+
+}
+
+void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,int n,long rate){
+ long i,j;
+ memset(p,0,sizeof(vorbis_look_psy));
+ p->ath=malloc(n*sizeof(float));
+ p->octave=malloc(n*sizeof(int));
+ p->bark=malloc(n*sizeof(float));
+ p->vi=vi;
+ p->n=n;
+
+ /* set up the lookups for a given blocksize and sample rate */
+ /* Vorbis max sample rate is limited by 26 Bark (54kHz) */
+ set_curve(ATH_Bark_dB, p->ath,n,rate);
+ for(i=0;i<n;i++)
+ p->ath[i]=fromdB(p->ath[i]);
+ for(i=0;i<n;i++)
+ p->bark[i]=toBARK(rate/(2*n)*i);
+
+ for(i=0;i<n;i++){
+ int oc=toOC((i+.5)*rate/(2*n))*2.+2; /* half octaves, actually */
+ if(oc<0)oc=0;
+ if(oc>=P_BANDS)oc=P_BANDS-1;
+ p->octave[i]=oc;
+ }
+
+ p->tonecurves=malloc(P_BANDS*sizeof(float **));
+ p->noiseatt=malloc(P_BANDS*sizeof(float **));
+ p->peakatt=malloc(P_BANDS*sizeof(float *));
+ for(i=0;i<P_BANDS;i++){
+ p->tonecurves[i]=malloc(P_LEVELS*sizeof(float *));
+ p->noiseatt[i]=malloc(P_LEVELS*sizeof(float));
+ p->peakatt[i]=malloc(P_LEVELS*sizeof(float));
+ }
+
+ for(i=0;i<P_BANDS;i++)
+ for(j=0;j<P_LEVELS;j++){
+ p->tonecurves[i][j]=malloc(EHMER_MAX*sizeof(float));
+ }
+
+ /* OK, yeah, this was a silly way to do it */
+ memcpy(p->tonecurves[0][4],tone_125_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[0][6],tone_125_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[0][8],tone_125_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[0][10],tone_125_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[2][4],tone_125_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[2][6],tone_125_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[2][8],tone_125_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[2][10],tone_125_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[4][4],tone_250_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[4][6],tone_250_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[4][8],tone_250_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[4][10],tone_250_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[6][4],tone_500_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[6][6],tone_500_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[6][8],tone_500_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[6][10],tone_500_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[8][4],tone_1000_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[8][6],tone_1000_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[8][8],tone_1000_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[8][10],tone_1000_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[10][4],tone_2000_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[10][6],tone_2000_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[10][8],tone_2000_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[10][10],tone_2000_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[12][4],tone_4000_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[12][6],tone_4000_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[12][8],tone_4000_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[12][10],tone_4000_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[14][4],tone_8000_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[14][6],tone_8000_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[14][8],tone_8000_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[14][10],tone_8000_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ memcpy(p->tonecurves[16][4],tone_8000_40dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[16][6],tone_8000_60dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[16][8],tone_8000_80dB_SL,sizeof(float)*EHMER_MAX);
+ memcpy(p->tonecurves[16][10],tone_8000_100dB_SL,sizeof(float)*EHMER_MAX);
+
+ /* interpolate curves between */
+ for(i=1;i<P_BANDS;i+=2)
+ for(j=4;j<P_LEVELS;j+=2){
+ memcpy(p->tonecurves[i][j],p->tonecurves[i-1][j],EHMER_MAX*sizeof(float));
+ /*interp_curve(p->tonecurves[i][j],
+ p->tonecurves[i-1][j],
+ p->tonecurves[i+1][j],.5);*/
+ min_curve(p->tonecurves[i][j],p->tonecurves[i+1][j]);
+ /*min_curve(p->tonecurves[i][j],p->tonecurves[i-1][j]);*/
+ }
+
+ /*for(i=0;i<P_BANDS-1;i++)
+ for(j=4;j<P_LEVELS;j+=2)
+ min_curve(p->tonecurves[i][j],p->tonecurves[i+1][j]);*/
+
+ /* set up the final curves */
+ for(i=0;i<P_BANDS;i++)
+ setup_curve(p->tonecurves[i],i,vi->toneatt[i]);
+
+ /* set up attenuation levels */
+ for(i=0;i<P_BANDS;i++)
+ for(j=0;j<P_LEVELS;j++){
+ p->peakatt[i][j]=fromdB(p->vi->peakatt[i][j]);
+ p->noiseatt[i][j]=fromdB(p->vi->noiseatt[i][j]);
+ }
+
+}
+
+void _vp_psy_clear(vorbis_look_psy *p){
+ int i,j;
+ if(p){
+ if(p->ath)free(p->ath);
+ if(p->octave)free(p->octave);
+ if(p->tonecurves){
+ for(i=0;i<P_BANDS;i++){
+ for(j=0;j<P_LEVELS;j++){
+ free(p->tonecurves[i][j]);
+ }
+ free(p->noiseatt[i]);
+ free(p->tonecurves[i]);
+ free(p->peakatt[i]);
+ }
+ free(p->tonecurves);
+ free(p->noiseatt);
+ free(p->peakatt);
+ }
+ memset(p,0,sizeof(vorbis_look_psy));
+ }
+}
+
+static void compute_decay_fixed(vorbis_look_psy *p,float *f, float *decay, int n){
+ /* handle decay */
+ int i;
+ float decscale=fromdB(p->vi->decay_coeff*n);
+ float attscale=1./fromdB(p->vi->attack_coeff);
+
+ for(i=10;i<n;i++){
+ float pre=decay[i];
+ if(decay[i]){
+ float val=decay[i]*decscale;
+ float att=fabs(f[i]/val);
+
+ if(att>attscale)
+ decay[i]=fabs(f[i]/attscale);
+ else
+ decay[i]=val;
+ }else{
+ decay[i]=fabs(f[i]/attscale);
+ }
+ if(pre>f[i])f[i]=pre;
+ }
+}
+
+static long _eights[EHMER_MAX+1]={
+ 981,1069,1166,1272,
+ 1387,1512,1649,1798,
+ 1961,2139,2332,2543,
+ 2774,3025,3298,3597,
+ 3922,4277,4664,5087,
+ 5547,6049,6597,7194,
+ 7845,8555,9329,10173,
+ 11094,12098,13193,14387,
+ 15689,17109,18658,20347,
+ 22188,24196,26386,28774,
+ 31379,34219,37316,40693,
+ 44376,48393,52772,57549,
+ 62757,68437,74631,81386,
+ 88752,96785,105545,115097,
+ 125515};
+
+static int seed_curve(float *flr,
+ float **curves,
+ float amp,float specmax,
+ int x,int n,float specatt,
+ int maxEH){
+ int i;
+ float *curve;
+
+ /* make this attenuation adjustable */
+ int choice=(int)((todB(amp)-specmax+specatt)/10.+.5);
+ choice=max(choice,0);
+ choice=min(choice,P_LEVELS-1);
+
+ for(i=maxEH;i>=0;i--)
+ if(((x*_eights[i])>>12)<n)break;
+ maxEH=i;
+ curve=curves[choice];
+
+ for(;i>=0;i--)
+ if(curve[i]>0.)break;
+
+ for(;i>=0;i--){
+ float lin=curve[i];
+ if(lin>0.){
+ float *fp=flr+((x*_eights[i])>>12);
+ lin*=amp;
+ if(*fp<lin)*fp=lin;
+ }else break;
+ }
+ return(maxEH);
+}
+
+static void seed_peak(float *flr,
+ float *att,
+ float amp,float specmax,
+ int x,int n,float specatt){
+ int prevx=(x*_eights[16])>>12;
+
+ /* make this attenuation adjustable */
+ int choice=rint((todB(amp)-specmax+specatt)/10.+.5);
+ if(choice<0)choice=0;
+ if(choice>=P_LEVELS)choice=P_LEVELS-1;
+
+ if(prevx<n){
+ float lin=att[choice];
+ if(lin){
+ lin*=amp;
+ if(flr[prevx]<lin)flr[prevx]=lin;
+ }
+ }
+}
+
+static void seed_generic(vorbis_look_psy *p,
+ float ***curves,
+ float *f,
+ float *flr,
+ float *seeds,
+ float specmax){
+ vorbis_info_psy *vi=p->vi;
+ long n=p->n,i;
+ int maxEH=EHMER_MAX-1;
+
+ /* prime the working vector with peak values */
+ /* Use the 125 Hz curve up to 125 Hz and 8kHz curve after 8kHz. */
+ for(i=0;i<n;i++)
+ if(f[i]>flr[i])
+ maxEH=seed_curve(seeds,curves[p->octave[i]],
+ f[i],specmax,i,n,vi->max_curve_dB,maxEH);
+}
+
+static void seed_att(vorbis_look_psy *p,
+ float **att,
+ float *f,
+ float *flr,
+ float specmax){
+ vorbis_info_psy *vi=p->vi;
+ long n=p->n,i;
+
+ for(i=0;i<n;i++)
+ if(f[i]>flr[i])
+ seed_peak(flr,att[p->octave[i]],f[i],
+ specmax,i,n,vi->max_curve_dB);
+}
+
+static void seed_point(vorbis_look_psy *p,
+ float **att,
+ float *f,
+ float *flr,
+ float specmax){
+ vorbis_info_psy *vi=p->vi;
+ long n=p->n,i;
+
+ for(i=0;i<n;i++){
+ /* make this attenuation adjustable */
+ int choice=rint((todB(f[i])-specmax+vi->max_curve_dB)/10.+.5);
+ float lin;
+ if(choice<0)choice=0;
+ if(choice>=P_LEVELS)choice=P_LEVELS-1;
+ lin=att[p->octave[i]][choice]*f[i];
+ if(flr[i]<lin)flr[i]=lin;
+ }
+}
+
+/* bleaugh, this is more complicated than it needs to be */
+static void max_seeds(vorbis_look_psy *p,float *seeds,float *flr){
+ long n=p->n,i,j;
+ long *posstack=alloca(n*sizeof(long));
+ float *ampstack=alloca(n*sizeof(float));
+ long stack=0;
+
+ for(i=0;i<n;i++){
+ if(stack<2){
+ posstack[stack]=i;
+ ampstack[stack++]=seeds[i];
+ }else{
+ while(1){
+ if(seeds[i]<ampstack[stack-1]){
+ posstack[stack]=i;
+ ampstack[stack++]=seeds[i];
+ break;
+ }else{
+ if(i<posstack[stack-1]*1.0905077080){
+ if(stack>1 && ampstack[stack-1]<ampstack[stack-2] &&
+ i<posstack[stack-2]*1.0905077080){
+ /* we completely overlap, making stack-1 irrelevant. pop it */
+ stack--;
+ continue;
+ }
+ }
+ posstack[stack]=i;
+ ampstack[stack++]=seeds[i];
+ break;
+
+ }
+ }
+ }
+ }
+
+ /* the stack now contains only the positions that are relevant. Scan
+ 'em straight through */
+ {
+ long pos=0;
+ for(i=0;i<stack;i++){
+ long endpos;
+ if(i<stack-1 && ampstack[i+1]>ampstack[i]){
+ endpos=posstack[i+1];
+ }else{
+ endpos=posstack[i]*1.0905077080+1; /* +1 is important, else bin 0 is
+ discarded in short frames */
+ }
+ if(endpos>n)endpos=n;
+ for(j=pos;j<endpos;j++)
+ if(flr[j]<ampstack[i])
+ flr[j]=ampstack[i];
+ pos=endpos;
+ }
+ }
+
+ /* there. Linear time. I now remember this was on a problem set I
+ had in Grad Skool... I didn't solve it at the time ;-) */
+}
+
+static void bark_noise(long n,float *b,float *f,float *noise){
+ long i=1,lo=0,hi=2;
+ float acc=0.,val,del=0.;
+
+ float *norm=alloca(n*sizeof(float));
+
+ memset(noise,0,n*sizeof(float));
+ memset(norm,0,n*sizeof(float));
+
+ while(hi<n){
+ val=todB_nn(f[i]*f[i])+400.;
+ del=1./(i-lo);
+ noise[lo]+=val*del;
+ noise[i]-=val*del;
+ norm[lo]+=del;
+ norm[i]-=del;
+
+ del=1./(hi-i);
+ noise[i]-=val*del;
+ noise[hi]+=val*del;
+ norm[hi]+=del;
+ norm[i]-=del;
+
+
+ i++;
+ for(;hi<n && b[hi]-.3<b[i];hi++);
+ for(;lo<i-1 && b[lo]+.3<b[i];lo++);
+ if(i==hi)hi++;
+ }
+
+ {
+ long ilo=i-lo;
+ long hii=hi-i;
+
+ for(;i<n;i++){
+ val=todB_nn(f[i]*f[i])+400.;
+ del=1./(hii);
+ noise[i]-=val*del;
+ norm[i]-=del;
+
+ del=1./(ilo);
+ noise[i-ilo]+=val*del;
+ noise[i]-=val*del;
+ norm[i-ilo]+=del;
+ norm[i]-=del;
+ }
+ for(i=1,lo=n-ilo;lo<n;lo++,i++){
+ val=todB_nn(f[n-i]*f[n-i])+400.;
+ del=1./ilo;
+ noise[lo]+=val*del;
+ norm[lo]+=del;
+ }
+ }
+
+
+ acc=0;
+ val=0;
+
+ for(i=0;i<n;i++){
+ val+=norm[i];
+ norm[i]=val;
+ acc+=noise[i];
+ noise[i]=acc;
+ }
+
+ val=0;
+ acc=0;
+ for(i=0;i<n;i++){
+ val+=norm[i];
+ acc+=noise[i];
+ if(val==0){
+ noise[i]=0.;
+ norm[i]=0;
+ }else{
+ float v=acc/val-400;
+ noise[i]=sqrt(fromdB(v));
+ }
+ }
+}
+
+void _vp_compute_mask(vorbis_look_psy *p,float *f,
+ float *flr,
+ float *decay){
+ float *smooth=alloca(sizeof(float)*p->n);
+ int i,n=p->n;
+ float specmax=0.;
+
+ float *seed=alloca(sizeof(float)*p->n);
+ float *seed2=alloca(sizeof(float)*p->n);
+
+ memset(flr,0,n*sizeof(float));
+
+ /* noise masking */
+ if(p->vi->noisemaskp){
+ memset(seed,0,n*sizeof(float));
+ bark_noise(n,p->bark,f,seed);
+ seed_point(p,p->noiseatt,seed,flr,specmax);
+
+ }
+
+ /* smooth the data is that's called for ********************************/
+ for(i=0;i<n;i++)smooth[i]=fabs(f[i]);
+ if(p->vi->smoothp){
+ /* compute power^.5 of three neighboring bins to smooth for peaks
+ that get split twixt bins/peaks that nail the bin. This evens
+ out treatment as we're not doing additive masking any longer. */
+ float acc=smooth[0]*smooth[0]+smooth[1]*smooth[1];
+ float prev=smooth[0];
+
+ smooth[0]=sqrt(acc);
+ for(i=1;i<n-1;i++){
+ float this=smooth[i];
+ acc+=smooth[i+1]*smooth[i+1];
+ if(acc<0)acc=0; /* it can happen due to finite precision */
+ smooth[i]=sqrt(acc);
+ acc-=prev*prev;
+ prev=this;
+ }
+ if(acc<0)acc=0; /* in case it happens on the final iteration */
+ smooth[n-1]=sqrt(acc);
+ }
+
+ /* find the highest peak so we know the limits *************************/
+ for(i=0;i<n;i++){
+ if(smooth[i]>specmax)specmax=smooth[i];
+ }
+ specmax=todB(specmax);
+
+ /* set the ATH (floating below specmax by a specified att) */
+ if(p->vi->athp){
+ float att=specmax+p->vi->ath_adjatt;
+ if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
+ att=fromdB(att);
+
+ for(i=0;i<n;i++){
+ float av=p->ath[i]*att;
+ if(av>flr[i])flr[i]=av;
+ }
+ }
+
+ /* peak attenuation ******/
+ if(p->vi->peakattp){
+ memset(seed,0,n*sizeof(float));
+ seed_att(p,p->peakatt,smooth,seed,specmax);
+ max_seeds(p,seed,flr);
+ }
+
+ /* tone masking */
+ if(p->vi->tonemaskp){
+ memset(seed,0,n*sizeof(float));
+ memset(seed2,0,n*sizeof(float));
+
+ seed_generic(p,p->tonecurves,smooth,flr,seed2,specmax);
+ max_seeds(p,seed2,seed2);
+
+ for(i=0;i<n;i++)if(seed2[i]<flr[i])seed2[i]=flr[i];
+ for(i=0;i<n;i++)if(seed2[i]<decay[i])seed2[i]=decay[i];
+
+ seed_generic(p,p->tonecurves,smooth,seed2,seed,specmax);
+ max_seeds(p,seed,seed);
+
+ if(p->vi->decayp)
+ compute_decay_fixed(p,seed,decay,n);
+
+ for(i=0;i<n;i++)if(flr[i]<seed[i])flr[i]=seed[i];
+
+ }
+
+ /* doing this here is clean, but we need to find a faster way to do
+ it than to just tack it on */
+
+ for(i=0;i<n;i++)if(2.*f[i]>flr[i] || -2.*f[i]>flr[i])break;
+ if(i==n)memset(flr,0,sizeof(float)*n);
+
+}
+
+
+/* this applies the floor and (optionally) tries to preserve noise
+ energy in low resolution portions of the spectrum */
+/* f and flr are *linear* scale, not dB */
+void _vp_apply_floor(vorbis_look_psy *p,float *f, float *flr){
+ float *work=alloca(p->n*sizeof(float));
+ int j;
+
+ /* subtract the floor */
+ for(j=0;j<p->n;j++){
+ if(flr[j]<=0)
+ work[j]=0.;
+ else
+ work[j]=f[j]/flr[j];
+ }
+
+ memcpy(f,work,p->n*sizeof(float));
+}
+
+
diff --git a/lib/psy.h b/lib/psy.h
new file mode 100644
index 00000000..8e024aae
--- /dev/null
+++ b/lib/psy.h
@@ -0,0 +1,90 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: random psychoacoustics (not including preecho)
+ last mod: $Id: psy.h,v 1.15.2.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_PSY_H_
+#define _V_PSY_H_
+#include "smallft.h"
+
+#ifndef EHMER_MAX
+#define EHMER_MAX 56
+#endif
+
+/* psychoacoustic setup ********************************************/
+#define MAX_BARK 27
+#define P_BANDS 17
+#define P_LEVELS 11
+typedef struct vorbis_info_psy{
+ int athp;
+ int decayp;
+ int smoothp;
+
+ int noisecullp;
+ float noisecull_barkwidth;
+
+ float ath_adjatt;
+ float ath_maxatt;
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+ /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+
+ int tonemaskp;
+ float toneatt[P_BANDS][P_LEVELS];
+
+ int peakattp;
+ float peakatt[P_BANDS][P_LEVELS];
+
+ int noisemaskp;
+ float noiseatt[P_BANDS][P_LEVELS];
+
+ float max_curve_dB;
+
+ /* decay setup */
+ float attack_coeff;
+ float decay_coeff;
+} vorbis_info_psy;
+
+typedef struct {
+ int n;
+ struct vorbis_info_psy *vi;
+
+ float ***tonecurves;
+ float **peakatt;
+ float **noiseatt;
+
+ float *ath;
+ int *octave;
+ float *bark;
+
+} vorbis_look_psy;
+
+extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,int n,long rate);
+extern void _vp_psy_clear(vorbis_look_psy *p);
+extern void *_vi_psy_dup(void *source);
+
+extern void _vi_psy_free(vorbis_info_psy *i);
+extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i);
+
+extern void _vp_compute_mask(vorbis_look_psy *p,float *f,
+ float *floor,
+ float *decay);
+extern void _vp_apply_floor(vorbis_look_psy *p,float *f,float *flr);
+
+#endif
+
+
diff --git a/lib/registry.h b/lib/registry.h
new file mode 100644
index 00000000..e7424df5
--- /dev/null
+++ b/lib/registry.h
@@ -0,0 +1,36 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: registry for time, floor, res backends and channel mappings
+ last mod: $Id: registry.h,v 1.2.14.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+#ifndef _V_REG_H_
+#define _V_REG_H_
+
+#include "backends.h"
+
+#define VI_TRANSFORMB 1
+#define VI_WINDOWB 1
+#define VI_TIMEB 1
+#define VI_FLOORB 1
+#define VI_RESB 1
+#define VI_MAPB 1
+
+extern vorbis_func_time *_time_P[];
+extern vorbis_func_floor *_floor_P[];
+extern vorbis_func_residue *_residue_P[];
+extern vorbis_func_mapping *_mapping_P[];
+
+#endif
diff --git a/lib/res0.c b/lib/res0.c
new file mode 100644
index 00000000..a855ea1f
--- /dev/null
+++ b/lib/res0.c
@@ -0,0 +1,398 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: residue backend 0 implementation
+ last mod: $Id: res0.c,v 1.18.2.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+/* Slow, slow, slow, simpleminded and did I mention it was slow? The
+ encode/decode loops are coded for clarity and performance is not
+ yet even a nagging little idea lurking in the shadows. Oh and BTW,
+ it's slow. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "codebook.h"
+#include "misc.h"
+#include "os.h"
+
+typedef struct {
+ vorbis_info_residue0 *info;
+ int map;
+
+ int parts;
+ codebook *phrasebook;
+ codebook ***partbooks;
+
+ int partvals;
+ int **decodemap;
+} vorbis_look_residue0;
+
+vorbis_info_residue *res0_copy_info(vorbis_info_residue *vr){
+ vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
+ vorbis_info_residue0 *ret=malloc(sizeof(vorbis_info_residue0));
+ memcpy(ret,info,sizeof(vorbis_info_residue0));
+ return(ret);
+}
+
+void res0_free_info(vorbis_info_residue *i){
+ if(i){
+ memset(i,0,sizeof(vorbis_info_residue0));
+ free(i);
+ }
+}
+
+void res0_free_look(vorbis_look_residue *i){
+ int j;
+ if(i){
+ vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
+ for(j=0;j<look->parts;j++)
+ if(look->partbooks[j])free(look->partbooks[j]);
+ free(look->partbooks);
+ for(j=0;j<look->partvals;j++)
+ free(look->decodemap[j]);
+ free(look->decodemap);
+ memset(i,0,sizeof(vorbis_look_residue0));
+ free(i);
+ }
+}
+
+void res0_pack(vorbis_info_residue *vr,oggpack_buffer *opb){
+ vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
+ int j,acc=0;
+ oggpack_write(opb,info->begin,24);
+ oggpack_write(opb,info->end,24);
+
+ oggpack_write(opb,info->grouping-1,24); /* residue vectors to group and
+ code with a partitioned book */
+ oggpack_write(opb,info->partitions-1,6); /* possible partition choices */
+ oggpack_write(opb,info->groupbook,8); /* group huffman book */
+ for(j=0;j<info->partitions;j++){
+ oggpack_write(opb,info->secondstages[j],4); /* zero *is* a valid choice */
+ acc+=info->secondstages[j];
+ }
+ for(j=0;j<acc;j++)
+ oggpack_write(opb,info->booklist[j],8);
+
+}
+
+/* vorbis_info is for range checking */
+vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){
+ int j,acc=0;
+ vorbis_info_residue0 *info=calloc(1,sizeof(vorbis_info_residue0));
+ codec_setup_info *ci=vi->codec_setup;
+
+ info->begin=oggpack_read(opb,24);
+ info->end=oggpack_read(opb,24);
+ info->grouping=oggpack_read(opb,24)+1;
+ info->partitions=oggpack_read(opb,6)+1;
+ info->groupbook=oggpack_read(opb,8);
+ for(j=0;j<info->partitions;j++){
+ int cascade=info->secondstages[j]=oggpack_read(opb,4);
+ if(cascade>1)goto errout; /* temporary! when cascading gets
+ reworked and actually used, we don't
+ want old code to DTWT */
+ acc+=cascade;
+ }
+ for(j=0;j<acc;j++)
+ info->booklist[j]=oggpack_read(opb,8);
+
+ if(info->groupbook>=ci->books)goto errout;
+ for(j=0;j<acc;j++)
+ if(info->booklist[j]>=ci->books)goto errout;
+
+ return(info);
+ errout:
+ res0_free_info(info);
+ return(NULL);
+}
+
+vorbis_look_residue *res0_look (vorbis_dsp_state *vd,vorbis_info_mode *vm,
+ vorbis_info_residue *vr){
+ vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
+ vorbis_look_residue0 *look=calloc(1,sizeof(vorbis_look_residue0));
+ backend_lookup_state *be=vd->backend_state;
+
+ int j,k,acc=0;
+ int dim;
+ look->info=info;
+ look->map=vm->mapping;
+
+ look->parts=info->partitions;
+ look->phrasebook=be->fullbooks+info->groupbook;
+ dim=look->phrasebook->dim;
+
+ look->partbooks=calloc(look->parts,sizeof(codebook **));
+
+ for(j=0;j<look->parts;j++){
+ int stages=info->secondstages[j];
+ if(stages){
+ look->partbooks[j]=malloc(stages*sizeof(codebook *));
+ for(k=0;k<stages;k++)
+ look->partbooks[j][k]=be->fullbooks+info->booklist[acc++];
+ }
+ }
+
+ look->partvals=rint(pow(look->parts,dim));
+ look->decodemap=malloc(look->partvals*sizeof(int *));
+ for(j=0;j<look->partvals;j++){
+ long val=j;
+ long mult=look->partvals/look->parts;
+ look->decodemap[j]=malloc(dim*sizeof(int));
+ for(k=0;k<dim;k++){
+ long deco=val/mult;
+ val-=deco*mult;
+ mult/=look->parts;
+ look->decodemap[j][k]=deco;
+ }
+ }
+
+ return(look);
+}
+
+
+/* does not guard against invalid settings; eg, a subn of 16 and a
+ subgroup request of 32. Max subn of 128 */
+static int _testhack(float *vec,int n,vorbis_look_residue0 *look,
+ int auxparts,int auxpartnum){
+ vorbis_info_residue0 *info=look->info;
+ int i,j=0;
+ float max,localmax=0.;
+ float temp[128];
+ float entropy[8];
+
+ /* setup */
+ for(i=0;i<n;i++)temp[i]=fabs(vec[i]);
+
+ /* handle case subgrp==1 outside */
+ for(i=0;i<n;i++)
+ if(temp[i]>localmax)localmax=temp[i];
+ max=localmax;
+
+ for(i=0;i<n;i++)temp[i]=rint(temp[i]);
+
+ while(1){
+ entropy[j]=localmax;
+ n>>=1;
+ j++;
+
+ if(n<=0)break;
+ for(i=0;i<n;i++){
+ temp[i]+=temp[i+n];
+ }
+ localmax=0.;
+ for(i=0;i<n;i++)
+ if(temp[i]>localmax)localmax=temp[i];
+ }
+
+ for(i=0;i<auxparts-1;i++)
+ if(auxpartnum<info->blimit[i] &&
+ entropy[info->subgrp[i]]<=info->entmax[i] &&
+ max<=info->ampmax[i])
+ break;
+
+ return(i);
+}
+
+static int _encodepart(oggpack_buffer *opb,float *vec, int n,
+ int stages, codebook **books,int mode,int part){
+ int i,j,bits=0;
+
+ for(j=0;j<stages;j++){
+ int dim=books[j]->dim;
+ int step=n/dim;
+ for(i=0;i<step;i++){
+ int entry=vorbis_book_besterror(books[j],vec+i,step,0);
+#ifdef TRAIN_RESENT
+ {
+ char buf[80];
+ FILE *f;
+ sprintf(buf,"res0_%da%d_%d.vqd",mode,j,part);
+ f=fopen(buf,"a");
+ fprintf(f,"%d\n",entry);
+ fclose(f);
+ }
+#endif
+ bits+=vorbis_book_encode(books[j],entry,opb);
+ }
+ }
+
+ return(bits);
+}
+
+static int _decodepart(oggpack_buffer *opb,float *work,float *vec, int n,
+ int stages, codebook **books){
+ int i;
+
+ memset(work,0,sizeof(float)*n);
+ for(i=0;i<stages;i++){
+ int dim=books[i]->dim;
+ int step=n/dim;
+ if(s_vorbis_book_decodevs(books[i],work,opb,step,0)==-1)
+ return(-1);
+ }
+
+ for(i=0;i<n;i++)
+ vec[i]*=work[i];
+
+ return(0);
+}
+
+int res0_forward(vorbis_block *vb,vorbis_look_residue *vl,
+ float **in,int ch){
+ long i,j,k,l;
+ vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+ vorbis_info_residue0 *info=look->info;
+
+ /* move all this setup out later */
+ int samples_per_partition=info->grouping;
+ int possible_partitions=info->partitions;
+ int partitions_per_word=look->phrasebook->dim;
+ int n=info->end-info->begin;
+ long phrasebits=0,resbitsT=0;
+ long *resbits=alloca(sizeof(long)*possible_partitions);
+ long *resvals=alloca(sizeof(long)*possible_partitions);
+
+ int partvals=n/samples_per_partition;
+ int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+ long **partword=_vorbis_block_alloc(vb,ch*sizeof(long *));
+
+ partvals=partwords*partitions_per_word;
+
+ /* we find the patition type for each partition of each
+ channel. We'll go back and do the interleaved encoding in a
+ bit. For now, clarity */
+
+ memset(resbits,0,sizeof(long)*possible_partitions);
+ memset(resvals,0,sizeof(long)*possible_partitions);
+
+ for(i=0;i<ch;i++){
+ partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(long));
+ memset(partword[i],0,n/samples_per_partition*sizeof(long));
+ }
+
+ for(i=info->begin,l=0;i<info->end;i+=samples_per_partition,l++){
+ for(j=0;j<ch;j++)
+ /* do the partition decision based on the number of 'bits'
+ needed to encode the block */
+ partword[j][l]=
+ _testhack(in[j]+i,samples_per_partition,look,possible_partitions,l);
+
+ }
+ /* we code the partition words for each channel, then the residual
+ words for a partition per channel until we've written all the
+ residual words for that partition word. Then write the next
+ partition channel words... */
+
+ for(i=info->begin,l=0;i<info->end;){
+ /* first we encode a partition codeword for each channel */
+ for(j=0;j<ch;j++){
+ long val=partword[j][l];
+ for(k=1;k<partitions_per_word;k++)
+ val= val*possible_partitions+partword[j][l+k];
+ phrasebits+=vorbis_book_encode(look->phrasebook,val,&vb->opb);
+ }
+ /* now we encode interleaved residual values for the partitions */
+ for(k=0;k<partitions_per_word;k++,l++,i+=samples_per_partition)
+ for(j=0;j<ch;j++){
+ resbits[partword[j][l]]+=
+ _encodepart(&vb->opb,in[j]+i,samples_per_partition,
+ info->secondstages[partword[j][l]],
+ look->partbooks[partword[j][l]],look->map,partword[j][l]);
+ resvals[partword[j][l]]+=samples_per_partition;
+ }
+
+ }
+
+ for(i=0;i<possible_partitions;i++)resbitsT+=resbits[i];
+ /*fprintf(stderr,
+ "Encoded %ld res vectors in %ld phrasing and %ld res bits\n\t",
+ ch*(info->end-info->begin),phrasebits,resbitsT);
+ for(i=0;i<possible_partitions;i++)
+ fprintf(stderr,"%ld(%ld):%ld ",i,resvals[i],resbits[i]);
+ fprintf(stderr,"\n");*/
+
+ return(0);
+}
+
+/* a truncated packet here just means 'stop working'; it's not an error */
+int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,float **in,int ch){
+ long i,j,k,l,transend=vb->pcmend/2;
+ vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+ vorbis_info_residue0 *info=look->info;
+
+ /* move all this setup out later */
+ int samples_per_partition=info->grouping;
+ int partitions_per_word=look->phrasebook->dim;
+ int n=info->end-info->begin;
+
+ int partvals=n/samples_per_partition;
+ int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+ int **partword=alloca(ch*sizeof(long *));
+ float *work=alloca(sizeof(float)*samples_per_partition);
+ partvals=partwords*partitions_per_word;
+
+ /* make sure we're zeroed up to the start */
+ for(j=0;j<ch;j++)
+ memset(in[j],0,sizeof(float)*info->begin);
+
+ for(i=info->begin,l=0;i<info->end;){
+ /* fetch the partition word for each channel */
+ for(j=0;j<ch;j++){
+ int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
+ if(temp==-1)goto eopbreak;
+ partword[j]=look->decodemap[temp];
+ if(partword[j]==NULL)goto errout;
+ }
+
+ /* now we decode interleaved residual values for the partitions */
+ for(k=0;k<partitions_per_word;k++,l++,i+=samples_per_partition)
+ for(j=0;j<ch;j++){
+ int part=partword[j][k];
+ if(_decodepart(&vb->opb,work,in[j]+i,samples_per_partition,
+ info->secondstages[part],
+ look->partbooks[part])==-1)goto eopbreak;
+ }
+ }
+
+ eopbreak:
+ if(i<transend){
+ for(j=0;j<ch;j++)
+ memset(in[j]+i,0,sizeof(float)*(transend-i));
+ }
+
+ return(0);
+
+ errout:
+ for(j=0;j<ch;j++)
+ memset(in[j],0,sizeof(float)*transend);
+ return(0);
+}
+
+vorbis_func_residue residue0_exportbundle={
+ &res0_pack,
+ &res0_unpack,
+ &res0_look,
+ &res0_copy_info,
+ &res0_free_info,
+ &res0_free_look,
+ &res0_forward,
+ &res0_inverse
+};
diff --git a/lib/sharedbook.c b/lib/sharedbook.c
new file mode 100644
index 00000000..b9657c68
--- /dev/null
+++ b/lib/sharedbook.c
@@ -0,0 +1,655 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: sharedbook.c,v 1.9.2.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <ogg/ogg.h>
+#include "os.h"
+#include "vorbis/codec.h"
+#include "codebook.h"
+#include "scales.h"
+
+/**** pack/unpack helpers ******************************************/
+int _ilog(unsigned int v){
+ int ret=0;
+ while(v){
+ ret++;
+ v>>=1;
+ }
+ return(ret);
+}
+
+/* 32 bit float (not IEEE; nonnormalized mantissa +
+ biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm
+ Why not IEEE? It's just not that important here. */
+
+#define VQ_FEXP 10
+#define VQ_FMAN 21
+#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */
+
+/* doesn't currently guard under/overflow */
+long _float32_pack(float val){
+ int sign=0;
+ long exp;
+ long mant;
+ if(val<0){
+ sign=0x80000000;
+ val= -val;
+ }
+ exp= floor(log(val)/log(2));
+ mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
+ exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
+
+ return(sign|exp|mant);
+}
+
+float _float32_unpack(long val){
+ float mant=val&0x1fffff;
+ float sign=val&0x80000000;
+ float exp =(val&0x7fe00000)>>VQ_FMAN;
+ if(sign)mant= -mant;
+ return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS));
+}
+
+/* given a list of word lengths, generate a list of codewords. Works
+ for length ordered or unordered, always assigns the lowest valued
+ codewords first. Extended to handle unused entries (length 0) */
+long *_make_words(long *l,long n){
+ long i,j;
+ long marker[33];
+ long *r=malloc(n*sizeof(long));
+ memset(marker,0,sizeof(marker));
+
+ for(i=0;i<n;i++){
+ long length=l[i];
+ if(length>0){
+ long entry=marker[length];
+
+ /* when we claim a node for an entry, we also claim the nodes
+ below it (pruning off the imagined tree that may have dangled
+ from it) as well as blocking the use of any nodes directly
+ above for leaves */
+
+ /* update ourself */
+ if(length<32 && (entry>>length)){
+ /* error condition; the lengths must specify an overpopulated tree */
+ free(r);
+ return(NULL);
+ }
+ r[i]=entry;
+
+ /* Look to see if the next shorter marker points to the node
+ above. if so, update it and repeat. */
+ {
+ for(j=length;j>0;j--){
+
+ if(marker[j]&1){
+ /* have to jump branches */
+ if(j==1)
+ marker[1]++;
+ else
+ marker[j]=marker[j-1]<<1;
+ break; /* invariant says next upper marker would already
+ have been moved if it was on the same path */
+ }
+ marker[j]++;
+ }
+ }
+
+ /* prune the tree; the implicit invariant says all the longer
+ markers were dangling from our just-taken node. Dangle them
+ from our *new* node. */
+ for(j=length+1;j<33;j++)
+ if((marker[j]>>1) == entry){
+ entry=marker[j];
+ marker[j]=marker[j-1]<<1;
+ }else
+ break;
+ }
+ }
+
+ /* bitreverse the words because our bitwise packer/unpacker is LSb
+ endian */
+ for(i=0;i<n;i++){
+ long temp=0;
+ for(j=0;j<l[i];j++){
+ temp<<=1;
+ temp|=(r[i]>>j)&1;
+ }
+ r[i]=temp;
+ }
+
+ return(r);
+}
+
+/* build the decode helper tree from the codewords */
+decode_aux *_make_decode_tree(codebook *c){
+ const static_codebook *s=c->c;
+ long top=0,i,j,n;
+ decode_aux *t=malloc(sizeof(decode_aux));
+ long *ptr0=t->ptr0=calloc(c->entries*2,sizeof(long));
+ long *ptr1=t->ptr1=calloc(c->entries*2,sizeof(long));
+ long *codelist=_make_words(s->lengthlist,s->entries);
+
+ if(codelist==NULL)return(NULL);
+ t->aux=c->entries*2;
+
+ for(i=0;i<c->entries;i++){
+ if(s->lengthlist[i]>0){
+ long ptr=0;
+ for(j=0;j<s->lengthlist[i]-1;j++){
+ int bit=(codelist[i]>>j)&1;
+ if(!bit){
+ if(!ptr0[ptr])
+ ptr0[ptr]= ++top;
+ ptr=ptr0[ptr];
+ }else{
+ if(!ptr1[ptr])
+ ptr1[ptr]= ++top;
+ ptr=ptr1[ptr];
+ }
+ }
+ if(!((codelist[i]>>j)&1))
+ ptr0[ptr]=-i;
+ else
+ ptr1[ptr]=-i;
+ }
+ }
+ free(codelist);
+
+ t->tabn = _ilog(c->entries)-4; /* this is magic */
+ if(t->tabn<5)t->tabn=5;
+ n = 1<<t->tabn;
+ t->tab = malloc(n*sizeof(long));
+ t->tabl = malloc(n*sizeof(int));
+ for (i = 0; i < n; i++) {
+ long p = 0;
+ for (j = 0; j < t->tabn && (p > 0 || j == 0); j++) {
+ if (i & (1 << j))
+ p = ptr1[p];
+ else
+ p = ptr0[p];
+ }
+ /* now j == length, and p == -code */
+ t->tab[i] = p;
+ t->tabl[i] = j;
+ }
+
+ return(t);
+}
+
+/* there might be a straightforward one-line way to do the below
+ that's portable and totally safe against roundoff, but I haven't
+ thought of it. Therefore, we opt on the side of caution */
+long _book_maptype1_quantvals(const static_codebook *b){
+ long vals=floor(pow(b->entries,1./b->dim));
+
+ /* the above *should* be reliable, but we'll not assume that FP is
+ ever reliable when bitstream sync is at stake; verify via integer
+ means that vals really is the greatest value of dim for which
+ vals^b->bim <= b->entries */
+ /* treat the above as an initial guess */
+ while(1){
+ long acc=1;
+ long acc1=1;
+ int i;
+ for(i=0;i<b->dim;i++){
+ acc*=vals;
+ acc1*=vals+1;
+ }
+ if(acc<=b->entries && acc1>b->entries){
+ return(vals);
+ }else{
+ if(acc>b->entries){
+ vals--;
+ }else{
+ vals++;
+ }
+ }
+ }
+}
+
+/* unpack the quantized list of values for encode/decode ***********/
+/* we need to deal with two map types: in map type 1, the values are
+ generated algorithmically (each column of the vector counts through
+ the values in the quant vector). in map type 2, all the values came
+ in in an explicit list. Both value lists must be unpacked */
+float *_book_unquantize(const static_codebook *b){
+ long j,k;
+ if(b->maptype==1 || b->maptype==2){
+ int quantvals;
+ float mindel=_float32_unpack(b->q_min);
+ float delta=_float32_unpack(b->q_delta);
+ float *r=calloc(b->entries*b->dim,sizeof(float));
+
+ /* maptype 1 and 2 both use a quantized value vector, but
+ different sizes */
+ switch(b->maptype){
+ case 1:
+ /* most of the time, entries%dimensions == 0, but we need to be
+ well defined. We define that the possible vales at each
+ scalar is values == entries/dim. If entries%dim != 0, we'll
+ have 'too few' values (values*dim<entries), which means that
+ we'll have 'left over' entries; left over entries use zeroed
+ values (and are wasted). So don't generate codebooks like
+ that */
+ quantvals=_book_maptype1_quantvals(b);
+ for(j=0;j<b->entries;j++){
+ float last=0.;
+ int indexdiv=1;
+ for(k=0;k<b->dim;k++){
+ int index= (j/indexdiv)%quantvals;
+ float val=b->quantlist[index];
+ val=fabs(val)*delta+mindel+last;
+ if(b->q_sequencep)last=val;
+ r[j*b->dim+k]=val;
+ indexdiv*=quantvals;
+ }
+ }
+ break;
+ case 2:
+ for(j=0;j<b->entries;j++){
+ float last=0.;
+ for(k=0;k<b->dim;k++){
+ float val=b->quantlist[j*b->dim+k];
+ val=fabs(val)*delta+mindel+last;
+ if(b->q_sequencep)last=val;
+ r[j*b->dim+k]=val;
+ }
+ }
+ }
+ return(r);
+ }
+ return(NULL);
+}
+
+void vorbis_staticbook_clear(static_codebook *b){
+ if(b->allocedp){
+ if(b->quantlist)free(b->quantlist);
+ if(b->lengthlist)free(b->lengthlist);
+ if(b->nearest_tree){
+ free(b->nearest_tree->ptr0);
+ free(b->nearest_tree->ptr1);
+ free(b->nearest_tree->p);
+ free(b->nearest_tree->q);
+ memset(b->nearest_tree,0,sizeof(encode_aux_nearestmatch));
+ free(b->nearest_tree);
+ }
+ if(b->thresh_tree){
+ free(b->thresh_tree->quantthresh);
+ free(b->thresh_tree->quantmap);
+ memset(b->thresh_tree,0,sizeof(encode_aux_threshmatch));
+ free(b->thresh_tree);
+ }
+
+ memset(b,0,sizeof(static_codebook));
+ }
+}
+
+void vorbis_staticbook_destroy(static_codebook *b){
+ if(b->allocedp){
+ vorbis_staticbook_clear(b);
+ free(b);
+ }
+}
+
+void vorbis_book_clear(codebook *b){
+ /* static book is not cleared; we're likely called on the lookup and
+ the static codebook belongs to the info struct */
+ if(b->decode_tree){
+ free(b->decode_tree->ptr0);
+ free(b->decode_tree->ptr1);
+ memset(b->decode_tree,0,sizeof(decode_aux));
+ free(b->decode_tree);
+ }
+ if(b->valuelist)free(b->valuelist);
+ if(b->codelist)free(b->codelist);
+ memset(b,0,sizeof(codebook));
+}
+
+int vorbis_book_init_encode(codebook *c,const static_codebook *s){
+ memset(c,0,sizeof(codebook));
+ c->c=s;
+ c->entries=s->entries;
+ c->dim=s->dim;
+ c->codelist=_make_words(s->lengthlist,s->entries);
+ c->valuelist=_book_unquantize(s);
+ return(0);
+}
+
+int vorbis_book_init_decode(codebook *c,const static_codebook *s){
+ memset(c,0,sizeof(codebook));
+ c->c=s;
+ c->entries=s->entries;
+ c->dim=s->dim;
+ c->valuelist=_book_unquantize(s);
+ c->decode_tree=_make_decode_tree(c);
+ if(c->decode_tree==NULL)goto err_out;
+ return(0);
+ err_out:
+ vorbis_book_clear(c);
+ return(-1);
+}
+
+static float _dist(int el,float *ref, float *b,int step){
+ int i;
+ float acc=0.;
+ for(i=0;i<el;i++){
+ float val=(ref[i]-b[i*step]);
+ acc+=val*val;
+ }
+ return(acc);
+}
+
+#include <stdio.h>
+int _best(codebook *book, float *a, int step){
+ encode_aux_nearestmatch *nt=book->c->nearest_tree;
+ encode_aux_threshmatch *tt=book->c->thresh_tree;
+ encode_aux_pigeonhole *pt=book->c->pigeon_tree;
+ int dim=book->dim;
+ int ptr=0,k,o;
+ /*int savebest=-1;
+ float saverr;*/
+
+ /* do we have a threshhold encode hint? */
+ if(tt){
+ int index=0;
+ /* find the quant val of each scalar */
+ for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
+ int i;
+ /* linear search the quant list for now; it's small and although
+ with > 8 entries, it would be faster to bisect, this would be
+ a misplaced optimization for now */
+ for(i=0;i<tt->threshvals-1;i++)
+ if(a[o]<tt->quantthresh[i])break;
+
+ index=(index*tt->quantvals)+tt->quantmap[i];
+ }
+ /* regular lattices are easy :-) */
+ if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll
+ use a decision tree after all
+ and fall through*/
+ return(index);
+ }
+
+ /* do we have a pigeonhole encode hint? */
+ if(pt){
+ const static_codebook *c=book->c;
+ int i,besti=-1;
+ float best;
+ int entry=0;
+
+ /* dealing with sequentialness is a pain in the ass */
+ if(c->q_sequencep){
+ int pv;
+ long mul=1;
+ float qlast=0;
+ for(k=0,o=0;k<dim;k++,o+=step){
+ pv=(int)((a[o]-qlast-pt->min)/pt->del);
+ if(pv<0 || pv>=pt->mapentries)break;
+ entry+=pt->pigeonmap[pv]*mul;
+ mul*=pt->quantvals;
+ qlast+=pv*pt->del+pt->min;
+ }
+ }else{
+ for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
+ int pv=(int)((a[o]-pt->min)/pt->del);
+ if(pv<0 || pv>=pt->mapentries)break;
+ entry=entry*pt->quantvals+pt->pigeonmap[pv];
+ }
+ }
+
+ /* must be within the pigeonholable range; if we quant outside (or
+ in an entry that we define no list for), brute force it */
+ if(k==dim && pt->fitlength[entry]){
+ /* search the abbreviated list */
+ long *list=pt->fitlist+pt->fitmap[entry];
+ for(i=0;i<pt->fitlength[entry];i++){
+ float this=_dist(dim,book->valuelist+list[i]*dim,a,step);
+ if(besti==-1 || this<best){
+ best=this;
+ besti=list[i];
+ }
+ }
+
+ return(besti);
+ }
+ }
+
+ if(nt){
+ /* optimized using the decision tree */
+ while(1){
+ float c=0.;
+ float *p=book->valuelist+nt->p[ptr];
+ float *q=book->valuelist+nt->q[ptr];
+
+ for(k=0,o=0;k<dim;k++,o+=step)
+ c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
+
+ if(c>0.) /* in A */
+ ptr= -nt->ptr0[ptr];
+ else /* in B */
+ ptr= -nt->ptr1[ptr];
+ if(ptr<=0)break;
+ }
+ return(-ptr);
+ }
+
+ /* brute force it! */
+ {
+ const static_codebook *c=book->c;
+ int i,besti=-1;
+ float best;
+ float *e=book->valuelist;
+ for(i=0;i<book->entries;i++){
+ if(c->lengthlist[i]>0){
+ float this=_dist(dim,e,a,step);
+ if(besti==-1 || this<best){
+ best=this;
+ besti=i;
+ }
+ }
+ e+=dim;
+ }
+
+ /*if(savebest!=-1 && savebest!=besti){
+ fprintf(stderr,"brute force/pigeonhole disagreement:\n"
+ "original:");
+ for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]);
+ fprintf(stderr,"\n"
+ "pigeonhole (entry %d, err %g):",savebest,saverr);
+ for(i=0;i<dim;i++)fprintf(stderr,"%g,",
+ (book->valuelist+savebest*dim)[i]);
+ fprintf(stderr,"\n"
+ "bruteforce (entry %d, err %g):",besti,best);
+ for(i=0;i<dim;i++)fprintf(stderr,"%g,",
+ (book->valuelist+besti*dim)[i]);
+ fprintf(stderr,"\n");
+ }*/
+ return(besti);
+ }
+}
+
+/* returns the entry number and *modifies a* to the remainder value ********/
+int vorbis_book_besterror(codebook *book,float *a,int step,int addmul){
+ int dim=book->dim,i,o;
+ int best=_best(book,a,step);
+ switch(addmul){
+ case 0:
+ for(i=0,o=0;i<dim;i++,o+=step)
+ a[o]-=(book->valuelist+best*dim)[i];
+ break;
+ case 1:
+ for(i=0,o=0;i<dim;i++,o+=step){
+ float val=(book->valuelist+best*dim)[i];
+ if(val==0){
+ a[o]=0;
+ }else{
+ a[o]/=val;
+ }
+ }
+ break;
+ }
+ return(best);
+}
+
+long vorbis_book_codeword(codebook *book,int entry){
+ return book->codelist[entry];
+}
+
+long vorbis_book_codelen(codebook *book,int entry){
+ return book->c->lengthlist[entry];
+}
+
+#ifdef _V_SELFTEST
+
+/* Unit tests of the dequantizer; this stuff will be OK
+ cross-platform, I simply want to be sure that special mapping cases
+ actually work properly; a bug could go unnoticed for a while */
+
+#include <stdio.h>
+
+/* cases:
+
+ no mapping
+ full, explicit mapping
+ algorithmic mapping
+
+ nonsequential
+ sequential
+*/
+
+static long full_quantlist1[]={0,1,2,3, 4,5,6,7, 8,3,6,1};
+static long partial_quantlist1[]={0,7,2};
+
+/* no mapping */
+static_codebook test1={
+ 4,16,
+ NULL,
+ 0,
+ 0,0,0,0,
+ NULL,
+ NULL,NULL
+};
+static float *test1_result=NULL;
+
+/* linear, full mapping, nonsequential */
+static_codebook test2={
+ 4,3,
+ NULL,
+ 2,
+ -533200896,1611661312,4,0,
+ full_quantlist1,
+ NULL,NULL
+};
+static float test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2};
+
+/* linear, full mapping, sequential */
+static_codebook test3={
+ 4,3,
+ NULL,
+ 2,
+ -533200896,1611661312,4,1,
+ full_quantlist1,
+ NULL,NULL
+};
+static float test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6};
+
+/* linear, algorithmic mapping, nonsequential */
+static_codebook test4={
+ 3,27,
+ NULL,
+ 1,
+ -533200896,1611661312,4,0,
+ partial_quantlist1,
+ NULL,NULL
+};
+static float test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3,
+ -3, 4,-3, 4, 4,-3, -1, 4,-3,
+ -3,-1,-3, 4,-1,-3, -1,-1,-3,
+ -3,-3, 4, 4,-3, 4, -1,-3, 4,
+ -3, 4, 4, 4, 4, 4, -1, 4, 4,
+ -3,-1, 4, 4,-1, 4, -1,-1, 4,
+ -3,-3,-1, 4,-3,-1, -1,-3,-1,
+ -3, 4,-1, 4, 4,-1, -1, 4,-1,
+ -3,-1,-1, 4,-1,-1, -1,-1,-1};
+
+/* linear, algorithmic mapping, sequential */
+static_codebook test5={
+ 3,27,
+ NULL,
+ 1,
+ -533200896,1611661312,4,1,
+ partial_quantlist1,
+ NULL,NULL
+};
+static float test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7,
+ -3, 1,-2, 4, 8, 5, -1, 3, 0,
+ -3,-4,-7, 4, 3, 0, -1,-2,-5,
+ -3,-6,-2, 4, 1, 5, -1,-4, 0,
+ -3, 1, 5, 4, 8,12, -1, 3, 7,
+ -3,-4, 0, 4, 3, 7, -1,-2, 2,
+ -3,-6,-7, 4, 1, 0, -1,-4,-5,
+ -3, 1, 0, 4, 8, 7, -1, 3, 2,
+ -3,-4,-5, 4, 3, 2, -1,-2,-3};
+
+void run_test(static_codebook *b,float *comp){
+ float *out=_book_unquantize(b);
+ int i;
+
+ if(comp){
+ if(!out){
+ fprintf(stderr,"_book_unquantize incorrectly returned NULL\n");
+ exit(1);
+ }
+
+ for(i=0;i<b->entries*b->dim;i++)
+ if(fabs(out[i]-comp[i])>.0001){
+ fprintf(stderr,"disagreement in unquantized and reference data:\n"
+ "position %d, %g != %g\n",i,out[i],comp[i]);
+ exit(1);
+ }
+
+ }else{
+ if(out){
+ fprintf(stderr,"_book_unquantize returned a value array: \n"
+ " correct result should have been NULL\n");
+ exit(1);
+ }
+ }
+}
+
+int main(){
+ /* run the nine dequant tests, and compare to the hand-rolled results */
+ fprintf(stderr,"Dequant test 1... ");
+ run_test(&test1,test1_result);
+ fprintf(stderr,"OK\nDequant test 2... ");
+ run_test(&test2,test2_result);
+ fprintf(stderr,"OK\nDequant test 3... ");
+ run_test(&test3,test3_result);
+ fprintf(stderr,"OK\nDequant test 4... ");
+ run_test(&test4,test4_result);
+ fprintf(stderr,"OK\nDequant test 5... ");
+ run_test(&test5,test5_result);
+ fprintf(stderr,"OK\n\n");
+
+ return(0);
+}
+
+#endif
diff --git a/lib/synthesis.c b/lib/synthesis.c
index de23bc8d..5b06822d 100644
--- a/lib/synthesis.c
+++ b/lib/synthesis.c
@@ -12,7 +12,7 @@
********************************************************************
function: single-block PCM synthesis
- last mod: $Id: synthesis.c,v 1.18.2.1 2000/10/14 03:14:07 xiphmont Exp $
+ last mod: $Id: synthesis.c,v 1.18.2.2 2000/11/03 10:05:48 xiphmont Exp $
********************************************************************/
@@ -24,10 +24,12 @@
#include "os.h"
int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
- vorbis_dsp_state *vd=vb->vd;
- vorbis_info *vi=vd->vi;
- oggpack_buffer *opb=&vb->opb;
- int type,mode,i;
+ vorbis_dsp_state *vd=vb->vd;
+ backend_lookup_state *b=vd->backend_state;
+ vorbis_info *vi=vd->vi;
+ codec_setup_info *ci=vi->codec_setup;
+ oggpack_buffer *opb=&vb->opb;
+ int type,mode,i;
/* first things first. Make sure decode is ready */
_vorbis_block_ripcord(vb);
@@ -40,11 +42,11 @@ int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
}
/* read our mode and pre/post windowsize */
- mode=oggpack_read(opb,vd->modebits);
+ mode=oggpack_read(opb,b->modebits);
if(mode==-1)return(OV_EBADPACKET);
vb->mode=mode;
- vb->W=vi->mode_param[mode]->blockflag;
+ vb->W=ci->mode_param[mode]->blockflag;
if(vb->W){
vb->lW=oggpack_read(opb,1);
vb->nW=oggpack_read(opb,1);
@@ -60,15 +62,15 @@ int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
vb->eofflag=op->e_o_s;
/* alloc pcm passback storage */
- vb->pcmend=vi->blocksizes[vb->W];
+ vb->pcmend=ci->blocksizes[vb->W];
vb->pcm=_vorbis_block_alloc(vb,sizeof(float *)*vi->channels);
for(i=0;i<vi->channels;i++)
vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(float));
/* unpack_header enforces range checking */
- type=vi->map_type[vi->mode_param[mode]->mapping];
+ type=ci->map_type[ci->mode_param[mode]->mapping];
- return(_mapping_P[type]->inverse(vb,vd->mode[mode]));
+ return(_mapping_P[type]->inverse(vb,b->mode[mode]));
}
diff --git a/lib/time0.c b/lib/time0.c
new file mode 100644
index 00000000..b7164c2c
--- /dev/null
+++ b/lib/time0.c
@@ -0,0 +1,55 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
+ * PLEASE READ THESE TERMS DISTRIBUTING. *
+ * *
+ * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 *
+ * by Monty <monty@xiph.org> and The XIPHOPHORUS Company *
+ * http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: time backend 0 (dummy)
+ last mod: $Id: time0.c,v 1.6.2.1 2000/11/03 10:05:48 xiphmont Exp $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include "vorbis/codec.h"
+#include "registry.h"
+#include "misc.h"
+
+static void time0_pack (vorbis_info_time *i,oggpack_buffer *opb){
+}
+static vorbis_info_time *time0_unpack (vorbis_info *vi,oggpack_buffer *opb){
+ return "";
+
+}
+static vorbis_info_time *time0_copy_info (vorbis_info_time *vi){
+ return "";
+}
+static vorbis_look_time *time0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
+ vorbis_info_time *i){
+ return "";
+}
+static void time0_free_info(vorbis_info_time *i){
+}
+static void time0_free_look(vorbis_look_time *i){
+}
+static int time0_forward(vorbis_block *vb,vorbis_look_time *i,
+ float *in,float *out){
+ return(0);
+}
+static int time0_inverse(vorbis_block *vb,vorbis_look_time *i,
+ float *in,float *out){
+ return(0);
+}
+
+/* export hooks */
+vorbis_func_time time0_exportbundle={
+ &time0_pack,&time0_unpack,&time0_look,&time0_copy_info,&time0_free_info,
+ &time0_free_look,&time0_forward,&time0_inverse
+};
diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
index 3799786a..08594930 100644
--- a/lib/vorbisfile.c
+++ b/lib/vorbisfile.c
@@ -12,7 +12,7 @@
********************************************************************
function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.c,v 1.30.2.2 2000/10/19 10:21:02 xiphmont Exp $
+ last mod: $Id: vorbisfile.c,v 1.30.2.3 2000/11/03 10:05:48 xiphmont Exp $
********************************************************************/
@@ -20,7 +20,6 @@
#include <stdio.h>
#include <string.h>
#include <math.h>
-#include <assert.h>
#include "vorbis/codec.h"
#include "vorbis/vorbisfile.h"
diff --git a/vq/bookutil.c b/vq/bookutil.c
index a157e07c..f0df46f4 100644
--- a/vq/bookutil.c
+++ b/vq/bookutil.c
@@ -12,7 +12,7 @@
********************************************************************
function: utility functions for loading .vqh and .vqd files
- last mod: $Id: bookutil.c,v 1.17.2.1 2000/10/31 08:25:17 xiphmont Exp $
+ last mod: $Id: bookutil.c,v 1.17.2.2 2000/11/03 10:06:07 xiphmont Exp $
********************************************************************/
@@ -736,7 +736,7 @@ void write_codebook(FILE *out,char *name,const static_codebook *c){
else
fprintf(out,"\tNULL,\n");
- fprintf(out,"};\n\n");
+ fprintf(out,"\t0\n};\n\n");
fprintf(out,"\n#endif\n");
}
diff --git a/vq/huffbuild.c b/vq/huffbuild.c
index 1de087eb..3b5968f1 100644
--- a/vq/huffbuild.c
+++ b/vq/huffbuild.c
@@ -12,7 +12,7 @@
********************************************************************
function: hufftree builder
- last mod: $Id: huffbuild.c,v 1.5.2.1 2000/10/31 08:25:17 xiphmont Exp $
+ last mod: $Id: huffbuild.c,v 1.5.2.2 2000/11/03 10:06:08 xiphmont Exp $
********************************************************************/
@@ -183,7 +183,7 @@ int main(int argc, char *argv[]){
fprintf(file,"\tNULL,\n");
fprintf(file,"\tNULL,\n");
fprintf(file,"\tNULL,\n");
- fprintf(file,"};\n\n");
+ fprintf(file,"\t0\n};\n\n");
fprintf(file,"\n#endif\n");
fclose(file);