diff options
author | Monty <xiphmont@xiph.org> | 2000-11-03 10:06:08 +0000 |
---|---|---|
committer | Monty <xiphmont@xiph.org> | 2000-11-03 10:06:08 +0000 |
commit | b58f0d442954f98a58b384a7c8bdfc723b421b27 (patch) | |
tree | 694039082bb7b1cd9cc42300de38cbf36c539297 | |
parent | f9572aa5c9a74e1394e08b1282eb27d499f42257 (diff) | |
download | libvorbis-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
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 +}; + + @@ -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); } @@ -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); |